From 9d9284417cbed40a5a90caf1d3b0a94dfa5b6b63 Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza Date: Wed, 16 Sep 2026 12:27:59 -0300 Subject: [PATCH] fix(cli): translate the CLI for every locale (38 catalogs were nearly empty) (#13892) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sync-ui-keys --catalog=cli + blocking i18n:check-keys:cli gate; 65 CLI catalogs synced (52,000 strings, 0 __MISSING__, all 830 keys, placeholders verified). ⚠️ base-red inherited: #12732 --- .github/workflows/ci.yml | 5 + bin/cli/locales/am.json | 13 +- bin/cli/locales/ar.json | 1312 +++++++++++++++- bin/cli/locales/az.json | 1312 +++++++++++++++- bin/cli/locales/bg.json | 1312 +++++++++++++++- bin/cli/locales/bn.json | 1335 ++++++++++++++++ bin/cli/locales/cs.json | 1312 +++++++++++++++- bin/cli/locales/da.json | 1312 +++++++++++++++- bin/cli/locales/de.json | 1312 +++++++++++++++- bin/cli/locales/el.json | 13 +- bin/cli/locales/es.json | 1312 +++++++++++++++- bin/cli/locales/et.json | 13 +- bin/cli/locales/fa.json | 1312 +++++++++++++++- bin/cli/locales/fi.json | 1312 +++++++++++++++- bin/cli/locales/fr.json | 1312 +++++++++++++++- bin/cli/locales/ga.json | 11 + bin/cli/locales/gu.json | 1335 ++++++++++++++++ bin/cli/locales/ha.json | 13 +- bin/cli/locales/he.json | 1335 ++++++++++++++++ bin/cli/locales/hi.json | 1312 +++++++++++++++- bin/cli/locales/hr.json | 11 + bin/cli/locales/hu.json | 1312 +++++++++++++++- bin/cli/locales/hy.json | 11 + bin/cli/locales/id.json | 1312 +++++++++++++++- bin/cli/locales/ig.json | 11 + bin/cli/locales/it.json | 1312 +++++++++++++++- bin/cli/locales/ja.json | 1312 +++++++++++++++- bin/cli/locales/ka.json | 11 + bin/cli/locales/km.json | 15 +- bin/cli/locales/kn.json | 11 + bin/cli/locales/ko.json | 1312 +++++++++++++++- bin/cli/locales/lt.json | 11 + bin/cli/locales/lv.json | 11 + bin/cli/locales/ml.json | 11 + bin/cli/locales/mr.json | 1335 ++++++++++++++++ bin/cli/locales/ms.json | 1335 ++++++++++++++++ bin/cli/locales/mt.json | 11 + bin/cli/locales/my.json | 29 +- bin/cli/locales/ne.json | 15 +- bin/cli/locales/nl.json | 1312 +++++++++++++++- bin/cli/locales/no.json | 1312 +++++++++++++++- bin/cli/locales/or.json | 11 + bin/cli/locales/pa.json | 11 + bin/cli/locales/phi.json | 1337 ++++++++++++++++- bin/cli/locales/pl.json | 1312 +++++++++++++++- bin/cli/locales/pt-BR.json | 27 +- bin/cli/locales/pt.json | 1312 +++++++++++++++- bin/cli/locales/ro.json | 1312 +++++++++++++++- bin/cli/locales/ru.json | 1312 +++++++++++++++- bin/cli/locales/si.json | 13 +- bin/cli/locales/sk.json | 1312 +++++++++++++++- bin/cli/locales/sl.json | 11 + bin/cli/locales/sr.json | 15 +- bin/cli/locales/sv.json | 1312 +++++++++++++++- bin/cli/locales/sw.json | 1335 ++++++++++++++++ bin/cli/locales/ta.json | 1335 ++++++++++++++++ bin/cli/locales/te.json | 1335 ++++++++++++++++ bin/cli/locales/th.json | 1312 +++++++++++++++- bin/cli/locales/tr.json | 1312 +++++++++++++++- bin/cli/locales/uk-UA.json | 1312 +++++++++++++++- bin/cli/locales/ur.json | 1335 ++++++++++++++++ bin/cli/locales/uz.json | 11 + bin/cli/locales/vi.json | 1312 +++++++++++++++- bin/cli/locales/yo.json | 11 + bin/cli/locales/zh-CN.json | 68 +- bin/cli/locales/zh-TW.json | 68 +- .../fixes/13892-cli-catalogs-all-locales.md | 1 + docs/architecture/QUALITY_GATES.md | 2 + docs/guides/I18N.md | 1 + package.json | 3 +- scripts/i18n/check-key-completeness.mjs | 40 +- scripts/i18n/sync-ui-keys.mjs | 33 +- scripts/i18n/untranslatable-cli-keys.json | 4 + tests/unit/i18n-key-completeness.test.ts | 12 +- tests/unit/i18n-sync-ui-keys-catalog.test.ts | 22 + 75 files changed, 50506 insertions(+), 172 deletions(-) create mode 100644 changelog.d/fixes/13892-cli-catalogs-all-locales.md create mode 100644 scripts/i18n/untranslatable-cli-keys.json create mode 100644 tests/unit/i18n-sync-ui-keys-catalog.test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9937d3512d..7b4e3da4de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -542,6 +542,11 @@ jobs: # in eight. Fix is `sync-ui-keys --locale= --translate-markers`. - name: i18n key completeness (every locale carries every en.json key) run: node scripts/i18n/check-key-completeness.mjs + # Same gate for the CLI catalogs (bin/cli/locales). check:cli-i18n only compares + # pt-BR / zh-CN / zh-TW; 38 locales shipped with 1–24 of 830 keys for months + # (audit 2026-09-16) and the CLI silently fell back to English for them. + - name: i18n key completeness (CLI catalogs) + run: node scripts/i18n/check-key-completeness.mjs --catalog=cli # #8038: cheap glossary/protected-terms consistency gate — # complements i18n-ui-coverage (key parity) and the ICU `i18n` job below diff --git a/bin/cli/locales/am.json b/bin/cli/locales/am.json index dd6e69c790..0253b9fcf9 100644 --- a/bin/cli/locales/am.json +++ b/bin/cli/locales/am.json @@ -30,7 +30,7 @@ "opencode": "ከOpenCode ጋር የተካተተውን @omniroute/opencode-plugin ጫን እና አዋቅር" }, "doctor": { - "title": "OmniRoute Doctor", + "title": "OmniRoute ዶክተር", "dbOk": "የውሂብ ጎታ፦ ደህና ({path})", "dbMissing": "የውሂብ ጎታ፦ አልተጀመረም — `omniroute setup` ያስኪዱ", "portOk": "ወደብ {port}፦ ይገኛል", @@ -256,6 +256,7 @@ "max_restarts": "ከመተው በፊት በ30s ውስጥ የሚፈቀደው ከፍተኛ የብልሽት ዳግም መጀመር ብዛት (ነባሪ፦ 2)", "tray": "በስርዓት ትሪ ውስጥ አስጀምር (ለዴስክቶፕ ብቻ፣ በፈቃድ)", "no_tray": "የስርዓት ትሪ አዶን አሰናክል", + "ready_timeout": "የዝግጁነት ምርመራ ጊዜ ማብቂያ በሚሊሰከንድ (እንዲሁም OMNIROUTE_READY_TIMEOUT_MS፣ ነባሪ 60000)", "tls_cert": "HTTPSን ለማቅረብ የTLS ሰርተፍኬት (PEM) ዱካ (OMNIROUTE_TLS_CERTም ጭምር)", "tls_key": "HTTPSን ለማቅረብ የTLS የግል ቁልፍ (PEM) ዱካ (OMNIROUTE_TLS_KEYም ጭምር)" }, @@ -347,6 +348,16 @@ "running": "MCP ሰርቨር እየሰራ ነው ({transport})", "stopped": "MCP ሰርቨር ቆሟል።", "restarted": "MCP ሰርቨር እንደገና ተጀምሯል።", + "stoppedHint": "ለማብራት `omniroute mcp enable`ን ያሂዱ።", + "enabled": "MCP አገልጋይ ነቅቷል።", + "disabled": "MCP አገልጋይ ተሰናክሏል።", + "enable": { + "description": "MCP አገልጋዩን አንቃ", + "transport": "ጥቅም ላይ የሚውል ማጓጓዣ፦ stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP አገልጋዩን አሰናክል" + }, "call": { "description": "የMCP መሣሪያን በቀጥታ ይጥሩ", "args": "የJSON ነጋሪ እሴቶች ኦብጀክት (በቦታው)", diff --git a/bin/cli/locales/ar.json b/bin/cli/locales/ar.json index 28b375c5d4..8b8b53daac 100644 --- a/bin/cli/locales/ar.json +++ b/bin/cli/locales/ar.json @@ -14,6 +14,812 @@ "jsonOpt": "إخراج بتنسيق JSON", "yesOpt": "تخطي رسالة التأكيد" }, + "setup": { + "title": "إعداد OmniRoute", + "passwordPrompt": "كلمة مرور المسؤول", + "providerPrompt": "المزوّد الافتراضي (اتركه فارغًا للتخطي)", + "done": "اكتمل الإعداد", + "passwordSet": "تم تكوين كلمة مرور المسؤول", + "providerSet": "تم تكوين المزوّد: {name}", + "testingProvider": "جارٍ اختبار الاتصال بالمزوّد: {name}", + "testPassed": "نجح اختبار المزوّد", + "testFailed": "فشل اختبار المزوّد: {error}", + "loginEnabled": "تسجيل الدخول: مفعّل (تم تحديث كلمة المرور)", + "loginDisabled": "تسجيل الدخول: معطّل", + "providerInfo": "المزوّد: {info}", + "opencode": "ثبّت وعيّن إعدادات @omniroute/opencode-plugin المضمّنة لـ OpenCode" + }, + "doctor": { + "title": "أداة تشخيص OmniRoute", + "dbOk": "قاعدة البيانات: سليمة ({path})", + "dbMissing": "قاعدة البيانات: غير مهيأة — شغّل `omniroute setup`", + "portOk": "المنفذ {port}: متاح", + "portConflict": "المنفذ {port}: مستخدم بواسطة عملية أخرى", + "encryptionOk": "مفتاح التشفير: تم تكوينه", + "encryptionMissing": "مفتاح التشفير مفقود — شغّل `omniroute setup`", + "allGood": "نجحت جميع عمليات التحقق.", + "warnings": "{count} تحذير — انظر أعلاه." + }, + "providers": { + "title": "المزوّدون", + "noProviders": "لم يتم تكوين أي مزوّدين. شغّل: omniroute setup", + "testing": "جارٍ اختبار {name}...", + "available": "عدد المزوّدين المتاحين: {count}", + "connected": "متصل", + "disconnected": "غير متصل", + "validationFailed": "فشل التحقق: {error}", + "metrics": { + "description": "اعرض مقاييس أداء المزوّد (زمن الاستجابة، معدل النجاح، التكلفة)", + "provider": "صفِّ حسب معرّف المزوّد", + "connection_id": "صفِّ حسب معرّف الاتصال", + "period": "الفترة الزمنية: 1h|6h|24h|7d|30d (الافتراضي: 24h)", + "metric": "ركّز على حقل مقياس محدد", + "sort": "رتّب حسب الحقل (تنازليًا)", + "limit": "الحد الأقصى للصفوف (الافتراضي: 50)", + "watch": "حدّث كل 5s (الوضع المباشر)", + "compare": "معرّفات المزوّدين المفصولة بفواصل للمقارنة جنبًا إلى جنب" + }, + "metric_single": { + "description": "احصل على قيمة مقياس واحدة لاتصال محدد" + }, + "rotate": { + "description": "استبدل مفتاح API الرئيسي لاتصال المزوّد", + "newKeyOpt": "قيمة مفتاح API الجديدة (تجنّب ذلك: يُفضّل استخدام --from-env)", + "fromEnvOpt": "قراءة المفتاح الجديد من متغير البيئة VAR", + "oauthOpt": "تشغيل تدفق إعادة المصادقة عبر OAuth بدلاً من ذلك", + "skipTestOpt": "تخطي اختبار الاتصال بعد التدوير", + "dryRunOpt": "عرض ما سيتغير دون كتابة", + "confirmPrompt": "استبدال مفتاح API للاتصال \"{name}\" ({id})؟ [y/N]", + "dryRunResult": "[dry-run] سيتم تدوير مفتاح \"{name}\" ({id}). لم تُجرَ أي تغييرات.", + "oauthHint": "اتصال OAuth — شغّل: omniroute oauth {provider}", + "envVarEmpty": "متغير البيئة {var} غير معيّن أو فارغ.", + "success": "تم تدوير مفتاح \"{name}\". شغّل `providers test {id}` للتحقق.", + "testPassed": "نجح اختبار ما بعد التدوير.", + "testFailed": "فشل اختبار ما بعد التدوير: {error}" + }, + "status": { + "description": "عرض حالة المفاتيح لجميع اتصالات موفّري الخدمة (العمر، انتهاء الصلاحية، فترة الانتظار)", + "providerOpt": "التصفية حسب اسم موفّر الخدمة", + "header": "المعرّف موفّر الخدمة الاسم حالة الانتهاء حالة الاختبار انتهاء فترة الانتظار", + "noData": "لا تتوفر بيانات لاتصالات موفّري الخدمة.", + "requiresServer": "يتطلب providers status أن يكون خادم OmniRoute قيد التشغيل." + } + }, + "keys": { + "title": "مفاتيح API", + "addDescription": "إضافة مفتاح API لموفّر خدمة أو تحديثه", + "listDescription": "عرض جميع مفاتيح API المهيّأة", + "removeDescription": "إزالة مفتاح API لموفّر خدمة", + "regenerateDescription": "إعادة إنشاء مفتاح API خاص بـ OmniRoute", + "revokeDescription": "إلغاء مفتاح API خاص بـ OmniRoute", + "revealDescription": "إظهار قيمة مفتاح API غير المحجوبة", + "usageDescription": "عرض الاستخدام الأخير لمفتاح API", + "usageLimitOpt": "عدد الطلبات الأخيرة", + "rotateDescription": "إنشاء مفتاح جديد وإبطال المفتاح القديم", + "graceOpt": "فترة السماح (ms) قبل إبطال المفتاح القديم", + "stdinOpt": "قراءة مفتاح API من stdin بدلاً من الوسيطة", + "added": "تمت إضافة المفتاح لـ {provider}.", + "removed": "تمت إزالة المفتاح.", + "listed": "{count} مفتاح/مفاتيح.", + "noKeys": "لا توجد مفاتيح مهيّأة.", + "noUsage": "لم يتم العثور على بيانات استخدام.", + "confirmRemove": "إزالة المفتاح {id}؟", + "confirmRegenerate": "إعادة إنشاء المفتاح {id}؟", + "confirmRevoke": "إلغاء المفتاح {id}؟", + "confirmRotate": "تدوير المفتاح {id}؟ (سيتم إبطال المفتاح القديم بعد فترة السماح)", + "regenerated": "تمت إعادة الإنشاء. المفتاح الجديد: {key}", + "revoked": "تم إلغاء المفتاح {id}.", + "rotated": "تم تدوير المفتاح {id}. معرّف المفتاح الجديد: {newId}", + "revealWarning": "⚠ سيؤدي هذا إلى عرض المفتاح كاملًا دون إخفاء. تأكد من أن شاشتك خاصة.", + "providerRequired": "المزوّد مطلوب.", + "keyRequired": "مفتاح API مطلوب.", + "stdinEmpty": "لم يتم توفير مفتاح API عبر stdin.", + "unknownProvider": "مزوّد غير معروف: {provider}", + "policy": { + "title": "سياسة المفتاح", + "showDescription": "عرض سياسة المعدّل/التكلفة لمفتاح", + "setDescription": "تعيين سياسة المعدّل/التكلفة لمفتاح", + "rateLimitOpt": "الحد الأقصى للطلبات في الدقيقة", + "maxCostOpt": "الحد الأقصى للتكلفة اليومية (USD)", + "allowedModelsOpt": "قائمة بالنماذج المسموح بها مفصولة بفواصل", + "nothingToSet": "لم يتم توفير أي حقول للسياسة. استخدم --rate-limit أو --max-cost أو --allowed-models.", + "updated": "تم تحديث السياسة." + }, + "expiration": { + "title": "انتهاء صلاحية المفتاح", + "listDescription": "عرض المفاتيح التي ستنتهي صلاحيتها قريبًا", + "daysOpt": "عرض المفاتيح التي ستنتهي صلاحيتها خلال N يومًا", + "none": "لا توجد مفاتيح ستنتهي صلاحيتها خلال {days} يومًا.", + "listTitle": "المفاتيح التي ستنتهي صلاحيتها خلال {days} يومًا:" + } + }, + "authExport": { + "description": "تصدير بيانات اعتماد المزوّد بعد فك تشفيرها (محلي فقط، ومخرجات بنص صريح)", + "idOpt": "تصدير الاتصال المطابق لهذا المعرّف/الاسم/المزوّد فقط", + "formatOpt": "تنسيق الإخراج: json أو env", + "outOpt": "كتابة المخرجات إلى ملف بدلًا من stdout (سيُكتب بأذونات 0600)", + "forceOpt": "أكّد أنك تدرك أن هذا يطبع/يكتب الأسرار بنص صريح", + "warning": "⚠ يؤدي هذا إلى طباعة/كتابة مفاتيح API ورموز OAuth بعد فك تشفيرها بنص صريح. تأكد من الحفاظ على خصوصية شاشتك وسجل الصدفة وأي ملف مخرجات.", + "confirmHeading": "⚠ تحذير: يؤدي هذا إلى تصدير بيانات اعتماد المزوّد بعد فك تشفيرها بنص صريح", + "confirmBody": "يفك هذا الأمر تشفير apiKey وaccessToken وrefreshToken و\nidToken ويطبعها/يكتبها للاتصال (أو الاتصالات) المحدد. تعامل مع المخرجات باعتبارها سرًا.", + "confirmFooter": "للتأكيد، شغّل:\n omniroute auth export --force", + "missingKey": "يلزم STORAGE_ENCRYPTION_KEY لتصدير بيانات الاعتماد.", + "notFound": "لم يتم العثور على الاتصال: {id}", + "invalidFormat": "تنسيق غير صالح: {format}. استخدم json أو env." + }, + "stream": { + "description": "بث استجابة محادثة باستخدام أوضاع فحص SSE", + "file": "قراءة المطالبة من ملف", + "stdin": "قراءة المطالبة من stdin", + "model": "معرّف النموذج (الافتراضي: auto)", + "system": "مطالبة النظام", + "combo": "فرض مجموعة محددة بالاسم", + "max_tokens": "الحد الأقصى للرموز المميزة في الاستجابة", + "responses_api": "استخدام /v1/responses بدلًا من /v1/chat/completions", + "raw": "طباعة أسطر SSE الأولية كما تم استلامها", + "debug": "طباعة معلومات توقيت كل جزء إلى stderr", + "save": "حفظ جميع أحداث SSE في ملف .jsonl", + "error": { + "empty_prompt": "خطأ: نص المطالبة مطلوب (وسيطة موضعية، أو --file، أو --stdin)" + } + }, + "usage": { + "description": "تحليلات الاستخدام والميزانيات والحصص والسجلات", + "analytics": { + "description": "عرض تحليلات الاستخدام المجمّعة", + "period": "النطاق الزمني: 1d|7d|30d|90d|ytd|all (الافتراضي: 30d)", + "provider": "التصفية حسب معرّف المزوّد" + }, + "budget": { + "description": "إدارة ميزانيات التكلفة", + "set": { + "scope": "نطاق الميزانية (الافتراضي: global)", + "period": "فترة الميزانية: daily|weekly|monthly (الافتراضي: monthly)" + } + }, + "quota": { + "description": "عرض استخدام حصة المزوّد", + "provider": "التصفية حسب معرّف المزوّد", + "check": "عرض ما إذا كانت الحصة متاحة لطلب جديد" + }, + "logs": { + "description": "عرض سجلات استدعاءات الطلبات", + "limit": "عدد إدخالات السجل المطلوب إرجاعها (الافتراضي: 100)", + "search": "استعلام البحث لتصفية السجلات", + "since": "إرجاع السجلات منذ هذا الطابع الزمني", + "follow": "متابعة إدخالات السجل الجديدة باستمرار", + "api_key": "تصفية السجلات حسب مفتاح API" + }, + "utilization": { + "description": "عرض مقاييس استخدام مفتاح API", + "api_key": "التصفية حسب مفتاح API" + }, + "history": { + "description": "عرض سجل الطلبات", + "limit": "عدد إدخالات السجل التاريخي (الافتراضي: 100)" + }, + "proxy_logs": { + "description": "عرض سجلات الطلبات على مستوى الوكيل", + "limit": "عدد إدخالات سجل الوكيل (الافتراضي: 100)" + } + }, + "cost": { + "description": "عرض تقرير التكلفة مع تفصيل حسب المزوّد أو النموذج أو التركيبة أو مفتاح API", + "period": "النطاق الزمني: 1d|7d|30d|90d|ytd|all (الافتراضي: 30d)", + "since": "تاريخ البدء (بتنسيق ISO، مثل 2026-01-01) — يتجاوز --period", + "until": "تاريخ الانتهاء (بتنسيق ISO)", + "group_by": "تجميع النتائج حسب: provider|model|api-key|combo|day (الافتراضي: provider)", + "api_key_filter": "التصفية حسب مفتاح API محدد", + "limit": "الحد الأقصى لعدد الصفوف المعروضة (الافتراضي: 100)" + }, + "simulate": { + "description": "محاكاة توجيه تجريبية — عرض المزوّدين الذين سيُحدَّدون دون استدعاء الجهة المنبع", + "file": "تحميل نص الطلب الكامل من ملف JSON", + "model": "معرّف النموذج (الافتراضي: auto)", + "combo": "فرض تركيبة محددة بالاسم", + "reasoning": "مستوى جهد الاستدلال (low|medium|high)", + "thinking": "ميزانية الرموز للتفكير الممتد", + "explain": "طباعة شجرة الخيارات الاحتياطية ونطاق التكلفة إلى stderr", + "noCombo": "لم يتم العثور على تركيبة مطابقة. اضبط واحدة باستخدام: omniroute combo create" + }, + "chat": { + "description": "أرسل مطالبة دردشة لمرة واحدة إلى OmniRoute", + "file": "اقرأ المطالبة من ملف", + "stdin": "اقرأ المطالبة من stdin", + "system": "مطالبة النظام", + "model": "معرّف النموذج (الافتراضي: auto)", + "max_tokens": "الحد الأقصى لعدد الرموز في الاستجابة", + "temperature": "درجة حرارة أخذ العينات (0–2)", + "top_p": "أخذ عينات النواة Top-p", + "reasoning_effort": "مستوى جهد الاستدلال (low|medium|high)", + "thinking_budget": "ميزانية رموز التفكير الموسّع", + "combo": "فرض تركيبة محددة بالاسم", + "responses_api": "استخدم /v1/responses بدلاً من /v1/chat/completions", + "stream": "بث الاستجابة تدريجيًا", + "no_history": "عدم الحفظ في ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "خطأ: المطالبة مطلوبة (وسيط موضعي، أو --file، أو --stdin)" + } + }, + "serve": { + "description": "بدء تشغيل خادم OmniRoute (الإجراء الافتراضي)", + "starting": "جارٍ بدء تشغيل خادم OmniRoute على المنفذ {port}...", + "ready": "جاهز على http://localhost:{port}", + "stopping": "جارٍ إيقاف الخادم (PID {pid})...", + "stopped": "تم إيقاف الخادم.", + "notRunning": "الخادم غير قيد التشغيل.", + "port": "المنفذ الذي سيتم الاستماع عليه (الافتراضي: 20128)", + "no_open": "عدم فتح المتصفح تلقائيًا", + "daemon": "تشغيل الخادم كخدمة خلفية", + "log": "عرض سجلات الخادم مباشرةً", + "no_recovery": "تعطيل إعادة التشغيل التلقائي عند التعطل (وضع تصحيح الأخطاء)", + "max_restarts": "الحد الأقصى لإعادات التشغيل بعد التعطل خلال 30 ثانية قبل التوقف عن المحاولة (الافتراضي: 2)", + "tray": "البدء في علبة النظام (سطح المكتب فقط، باشتراك اختياري)", + "no_tray": "تعطيل أيقونة علبة النظام", + "ready_timeout": "مهلة فحص الجاهزية بالمللي ثانية (أيضًا OMNIROUTE_READY_TIMEOUT_MS، الافتراضي 60000)", + "tls_cert": "مسار شهادة TLS ‏(PEM) لتقديم HTTPS (أيضًا OMNIROUTE_TLS_CERT)", + "tls_key": "مسار مفتاح TLS الخاص ‏(PEM) لتقديم HTTPS (أيضًا OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "نسخة احتياطية", + "description": "إنشاء نسخة احتياطية من بيانات OmniRoute", + "creating": "جارٍ إنشاء النسخة الاحتياطية...", + "done": "حُفظت النسخة الاحتياطية في {path}", + "noFiles": "لا توجد ملفات لنسخها احتياطيًا (لم تتم تهيئة قاعدة البيانات)", + "failed": "فشل النسخ الاحتياطي: {error}", + "restoring": "جارٍ الاستعادة من {path}...", + "restored": "اكتملت الاستعادة.", + "restoreDescription": "الاستعادة من نسخة احتياطية", + "listTitle": "النسخ الاحتياطية المتاحة", + "noBackups": "لم يتم العثور على نسخ احتياطية.", + "notFound": "لم يتم العثور على النسخة الاحتياطية: {name}", + "confirmRestore": "هل تريد استبدال البيانات الحالية بالنسخة الاحتياطية المنشأة في {ts}؟", + "createDescription": "إنشاء نسخة احتياطية من بيانات OmniRoute", + "nameOpt": "اسم مخصص للنسخة الاحتياطية", + "cloudOpt": "رفع النسخة الاحتياطية إلى التخزين السحابي", + "encryptOpt": "تشفير النسخة الاحتياطية باستخدام AES-256-GCM", + "keyFileOpt": "مسار الملف الذي يحتوي على عبارة مرور التشفير", + "excludeOpt": "استبعاد ملف يطابق النمط (قابل للتكرار)", + "retentionOpt": "الاحتفاظ بآخر N نسخة احتياطية فقط", + "passphrasePrompt": "عبارة مرور التشفير:", + "noPassphrase": "عبارة المرور مطلوبة للنسخة الاحتياطية المشفرة.", + "cloudFailed": "تحذير: فشل الرفع إلى السحابة. تم حفظ النسخة الاحتياطية محليًا.", + "cloudUploaded": "تم رفع النسخة الاحتياطية إلى السحابة: {url}", + "auto": { + "title": "جدول النسخ الاحتياطي", + "enableDescription": "تمكين النسخ الاحتياطي التلقائي المجدول", + "disableDescription": "تعطيل النسخ الاحتياطي التلقائي المجدول", + "statusDescription": "عرض حالة جدول النسخ الاحتياطي الحالية", + "cronOpt": "تعبير Cron للجدولة (الافتراضي: يوميًا في الساعة 3 صباحًا)", + "enabled": "تم تمكين النسخ الاحتياطي التلقائي (Cron: {cron}).", + "hint": "تتم قراءة الجدول بواسطة omniroute serve عند بدء التشغيل.", + "disabled": "تم تعطيل النسخ الاحتياطي التلقائي.", + "notConfigured": "لم تتم تهيئة جدول للنسخ الاحتياطي." + } + }, + "health": { + "description": "التحقق من سلامة الخادم وحالة المكونات", + "noServer": "الخادم لا يعمل. ابدأ تشغيله باستخدام: omniroute serve", + "title": "السلامة", + "status": "الحالة: {status}", + "uptime": "مدة التشغيل: {uptime}", + "requests": "الطلبات (24 ساعة): {count}", + "cost": "التكلفة (24 ساعة): ${cost}" + }, + "quota": { + "description": "عرض استخدام الحصة لدى مزود الخدمة", + "noServer": "الخادم لا يعمل. ابدأ تشغيله باستخدام: omniroute serve", + "noData": "لا تتوفر معلومات عن الحصة." + }, + "cache": { + "description": "إدارة ذاكرة التخزين المؤقت للاستجابات", + "noServer": "الخادم لا يعمل. ابدأ تشغيله باستخدام: omniroute serve", + "cleared": "تم مسح ذاكرة التخزين المؤقت.", + "clearFailed": "فشل مسح ذاكرة التخزين المؤقت." + }, + "redis": { + "description": "تشغيل حاوية Redis محلية بضغطة واحدة (Podman أو Docker) لتخزين التخزين المؤقت وتتبع الحصة في OmniRoute" + }, + "test": { + "description": "اختبار الاتصال بمزود الخدمة", + "noServer": "الخادم لا يعمل. شغّله باستخدام: omniroute serve", + "testing": "جارٍ اختبار {provider} / {model}...", + "passed": "تم الاتصال بنجاح!", + "failed": "فشل الاتصال: {error}", + "allProvidersOpt": "اختبار جميع المزوّدين الذين تم إعدادهم", + "latencyOpt": "عرض قياسات زمن الاستجابة (المتوسط/الحد الأدنى/الحد الأقصى بالمللي ثانية)", + "repeatOpt": "تكرار الاختبار N مرة وتجميع النتائج", + "compareOpt": "النماذج المراد مقارنتها مفصولة بفواصل (مثال: gpt-4o,claude-3-5-sonnet)", + "saveOpt": "حفظ النتائج في ملف JSON", + "saved": "تم حفظ النتائج في {path}", + "compareTitle": "مقارنة النماذج", + "compareMinTwo": "يلزم نموذجان على الأقل لاستخدام --compare (مفصولان بفواصل)", + "noProviders": "لم يتم إعداد أي مزوّدين. أضف مزوّدًا باستخدام: omniroute keys add" + }, + "update": { + "checking": "جارٍ التحقق من وجود تحديثات...", + "upToDate": "أنت تستخدم أحدث إصدار بالفعل ({version}).", + "available": "يتوفر تحديث: {current} → {latest}", + "installing": "جارٍ تثبيت {latest}...", + "done": "تم التحديث إلى {latest}. أعد تشغيل الخادم لتطبيق التحديث." + }, + "mcp": { + "title": "خادم MCP", + "running": "خادم MCP قيد التشغيل ({transport})", + "stopped": "تم إيقاف خادم MCP.", + "restarted": "تمت إعادة تشغيل خادم MCP.", + "stoppedHint": "شغّل `omniroute mcp enable` لتفعيله.", + "enabled": "تم تفعيل خادم MCP.", + "disabled": "تم تعطيل خادم MCP.", + "enable": { + "description": "تفعيل خادم MCP", + "transport": "وسيلة النقل المطلوب استخدامها: stdio|sse|streamable-http" + }, + "disable": { + "description": "تعطيل خادم MCP" + }, + "call": { + "description": "استدعاء أداة MCP مباشرةً", + "args": "كائن وسيطات JSON (مضمّن)", + "args_file": "مسار ملف وسيطات JSON", + "stream": "استخدام نقطة النهاية للبث (/api/mcp/stream)", + "scope": "النطاق المطلوب (قابل للتكرار، مثال: read:health)" + }, + "scopes": { + "description": "عرض نطاقات MCP المتاحة", + "tool": "عرض النطاقات المطلوبة لأداة محددة" + }, + "tools": { + "description": "فحص أدوات MCP", + "list": { + "description": "عرض جميع أدوات MCP", + "scope": "التصفية حسب النطاق" + }, + "info": { + "description": "عرض البيانات الوصفية لأداة MCP" + }, + "schema": { + "description": "عرض مخطط JSON للمدخلات/المخرجات الخاص بأداة MCP", + "io": "نوع المخطط: input|output (الافتراضي: input)" + } + }, + "audit": { + "description": "سجل تدقيق MCP (اسم مستعار لـ audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "عرض مهارات A2A المتاحة من بطاقة الوكيل" + }, + "invoke": { + "description": "استدعاء مهارة A2A وإرجاع معرّف المهمة", + "input": "كائن إدخال JSON", + "input_file": "المسار إلى ملف إدخال JSON", + "wait": "انتظار اكتمال المهمة قبل الإرجاع", + "timeout": "مهلة انتظار الاكتمال بالمللي ثانية (الافتراضي: 60000)" + }, + "tasks": { + "description": "إدارة مهام A2A", + "list": { + "status": "التصفية حسب الحالة", + "skill": "التصفية حسب معرّف المهارة" + }, + "watch": { + "description": "استطلاع حالة المهمة حتى اكتمالها" + }, + "stream": { + "description": "بث أحداث تنفيذ المهمة عبر SSE" + }, + "logs": { + "description": "عرض رسائل المهمة والعناصر الناتجة" + } + } + }, + "policy": { + "description": "إدارة سياسات التخويل في OmniRoute", + "list": { + "description": "عرض السياسات", + "kind": "التصفية حسب النوع (allow|deny|rate-limit|cost-cap)", + "scope": "التصفية حسب النطاق (global|api-key|provider)" + }, + "get": { + "description": "الحصول على تفاصيل السياسة حسب المعرّف" + }, + "create": { + "description": "إنشاء سياسة من ملف JSON", + "file": "المسار إلى ملف JSON للسياسة" + }, + "update": { + "description": "تحديث سياسة من ملف JSON", + "file": "المسار إلى ملف JSON للسياسة" + }, + "delete": { + "description": "حذف سياسة حسب المعرّف", + "yes": "تخطي مطالبة التأكيد" + }, + "evaluate": { + "description": "تقييم تجريبي للسياسة (رمز الخروج 0=مسموح، 4=مرفوض)", + "api_key": "مفتاح API المراد تقييمه", + "action": "الإجراء المراد التحقق منه (مثل chat وembed وadmin)", + "resource": "مسار المورد أو معرّفه", + "context": "سياق إضافي على هيئة كائن JSON" + }, + "export": { + "description": "تصدير جميع السياسات إلى ملف JSON" + }, + "import": { + "description": "استيراد السياسات من ملف JSON", + "overwrite": "الكتابة فوق السياسات الحالية التي تحمل المعرّف نفسه" + } + }, + "compression": { + "description": "تهيئة مسار الضغط في OmniRoute وفحصه", + "status": { + "description": "عرض حالة الضغط وإعداداته الحالية" + }, + "configure": { + "description": "تهيئة إعدادات الضغط", + "engine": "محرك الضغط (caveman|rtk|hybrid|none)", + "caveman_agg": "مستوى شدة Caveman من 0.0 إلى 1.0", + "rtk_budget": "ميزانية رموز RTK", + "language_pack": "حزمة اللغة المراد تفعيلها" + }, + "engine": { + "description": "الحصول على محرك الضغط النشط أو تعيينه" + }, + "combos": { + "description": "إدارة إحصاءات مجموعات الضغط" + }, + "rules": { + "description": "إدارة قواعد الضغط", + "add": { + "pattern": "النمط المطلوب مطابقته (regex أو field:pattern)", + "action": "الإجراء: drop|shrink|replace" + } + }, + "language_packs": { + "description": "عرض حزم لغات الضغط المتاحة" + }, + "preview": { + "description": "معاينة تأثير الضغط على طلب", + "file": "مسار ملف JSON الخاص بالطلب" + } + }, + "tunnel": { + "title": "الأنفاق", + "listDescription": "عرض الأنفاق النشطة", + "createDescription": "إنشاء نفق", + "created": "تم إنشاء النفق: {url}", + "stopped": "تم إيقاف النفق.", + "confirmStop": "هل تريد إيقاف النفق {id}؟", + "stopDescription": "إيقاف نفق", + "statusDescription": "عرض الحالة التفصيلية لنفق", + "logsDescription": "عرض سجلات نفق", + "infoDescription": "عرض تفاصيل إعدادات نفق", + "rotateDescription": "إنشاء عنوان URL جديد للنفق", + "tailOpt": "عدد أسطر السجل المطلوب عرضها", + "typeRequired": "نوع النفق مطلوب.", + "noLogs": "لا توجد سجلات متاحة.", + "notAvailable": "معلومات النفق غير متاحة.", + "noTunnels": "لا توجد أنفاق نشطة.", + "infoTitle": "معلومات النفق: {type}", + "rotated": "تم تبديل عنوان URL للنفق: {url}", + "confirmRotate": "هل تريد تبديل عنوان URL للنفق {type}؟ (سيتم إنشاء عنوان URL جديد)" + }, + "stop": { + "description": "إيقاف خادم OmniRoute", + "stopping": "جارٍ إيقاف الخادم (PID {pid})...", + "stopped": "تم إيقاف الخادم.", + "notRunning": "لا يوجد خادم قيد التشغيل.", + "portFallback": "لم يتم العثور على ملف PID، جارٍ محاولة الإيقاف استنادًا إلى المنفذ..." + }, + "restart": { + "description": "إعادة تشغيل خادم OmniRoute", + "restarting": "جارٍ إعادة تشغيل خادم OmniRoute..." + }, + "dashboard": { + "description": "فتح لوحة معلومات OmniRoute في متصفح", + "opening": "جارٍ فتح لوحة المعلومات على {url}", + "urlOnly": "طباعة عنوان URL للوحة المعلومات دون فتح المتصفح", + "tui": "فتح لوحة معلومات TUI التفاعلية (واجهة طرفية، 7 علامات تبويب)" + }, + "models": { + "description": "عرض النماذج المتاحة (يتطلب الخادم)", + "search": "تصفية النماذج حسب المعرّف أو الاسم أو المزوّد أو الوصف", + "noServer": "الخادم لا يعمل. ابدأ باستخدام: omniroute serve", + "noModels": "لم يتم العثور على نماذج." + }, + "audit": { + "description": "الوصول إلى سجلات تدقيق الامتثال وMCP", + "source": "مصدر السجل: all|compliance|mcp (الافتراضي: all)", + "since": "إرجاع الإدخالات منذ هذا الطابع الزمني (ISO 8601)", + "until": "إرجاع الإدخالات حتى هذا الطابع الزمني (ISO 8601)", + "tail": { + "description": "عرض إدخالات سجل التدقيق الأخيرة", + "follow": "متابعة الإدخالات الجديدة باستمرار (استطلاع كل 2s)", + "limit": "الحد الأقصى للإدخالات المعروضة (الافتراضي: 100)" + }, + "search": { + "description": "البحث في إدخالات سجل التدقيق حسب الكلمة المفتاحية", + "limit": "الحد الأقصى للنتائج (الافتراضي: 200)", + "actor": "التصفية حسب معرّف الجهة الفاعلة", + "action": "التصفية حسب اسم الإجراء" + }, + "export": { + "description": "تصدير سجل التدقيق إلى ملف", + "format": "تنسيق الإخراج: jsonl|csv (الافتراضي: jsonl)" + }, + "stats": { + "description": "عرض إحصاءات سجل التدقيق", + "period": "الفترة الزمنية: 1d|7d|30d (الافتراضي: 7d)" + }, + "get": { + "description": "الحصول على إدخال واحد من سجل التدقيق حسب المعرّف" + } + }, + "skills": { + "description": "إدارة مهارات OmniRoute (sandbox، builtin، custom، hybrid، skillssh)", + "list": { + "description": "عرض قائمة المهارات المثبّتة", + "type": "التصفية حسب النوع (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "عرض المهارات المفعّلة فقط", + "disabled": "عرض المهارات المعطّلة فقط", + "api_key": "التصفية حسب مفتاح API" + }, + "get": { + "description": "الحصول على تفاصيل مهارة حسب المعرّف" + }, + "install": { + "description": "تثبيت مهارة من ملف أو URL", + "from_file": "مسار ملف تعريف المهارة بصيغة JSON", + "from_url": "URL لتعريف المهارة البعيدة", + "type": "نوع المهارة (sandbox|custom|hybrid)", + "enable": "تفعيل المهارة بعد التثبيت" + }, + "enable": { + "description": "تفعيل مهارة حسب المعرّف" + }, + "disable": { + "description": "تعطيل مهارة حسب المعرّف", + "yes": "تخطي مطالبة التأكيد" + }, + "delete": { + "description": "حذف مهارة حسب المعرّف", + "yes": "تخطي مطالبة التأكيد" + }, + "execute": { + "description": "تنفيذ مهارة حسب المعرّف", + "input": "كائن إدخال JSON", + "input_file": "مسار ملف إدخال JSON", + "timeout": "مهلة التنفيذ بالمللي ثانية (الافتراضي: 30000)" + }, + "executions": { + "description": "عرض سجل تنفيذ المهارات", + "skill": "تصفية حسب معرّف المهارة", + "limit": "الحد الأقصى للنتائج (الافتراضي: 50)", + "status": "تصفية حسب الحالة (running|completed|failed)" + }, + "skillssh": { + "description": "إدارة المهارات المثبّتة عبر SSH" + }, + "marketplace": { + "description": "تصفّح المهارات وتثبيتها من السوق" + }, + "mp": { + "search": { + "description": "البحث في حزم السوق", + "category": "تصفية حسب الفئة", + "tag": "تصفية حسب الوسم", + "limit": "الحد الأقصى للنتائج (الافتراضي: 30)", + "sort": "الترتيب حسب: downloads|rating|recent" + }, + "info": { + "description": "عرض تفاصيل الحزمة وملف readme" + }, + "install": { + "description": "تثبيت حزمة من السوق", + "version": "إصدار الحزمة (الافتراضي: latest)", + "enable": "التفعيل بعد التثبيت", + "yes": "تخطي مطالبة التأكيد" + }, + "categories": { + "description": "عرض فئات السوق" + }, + "featured": { + "description": "عرض حزم السوق المميزة" + } + } + }, + "memory": { + "description": "إدارة الذاكرة الحوارية في OmniRoute ‏(FTS5 + vector)", + "search": { + "description": "البحث في إدخالات الذاكرة باستخدام استعلام دلالي", + "type": "تصفية حسب نوع الذاكرة (user|feedback|project|reference)", + "limit": "الحد الأقصى للنتائج (الافتراضي: 20)", + "api_key": "تصفية حسب مفتاح API", + "token_budget": "تقييد إجمالي الرموز المميزة في النتائج" + }, + "add": { + "description": "إضافة إدخال جديد إلى الذاكرة", + "content": "المحتوى النصي للذاكرة", + "file": "قراءة المحتوى من ملف", + "type": "نوع الذاكرة (الافتراضي: user)", + "metadata": "كائن بيانات وصفية بتنسيق JSON", + "api_key": "ربطه بمفتاح API" + }, + "clear": { + "description": "حذف إدخالات الذاكرة المطابقة لعوامل التصفية", + "type": "تصفية حسب النوع", + "older": "حذف الإدخالات الأقدم من المدة المحددة (30d, 6m, 1y)", + "api_key": "تصفية حسب مفتاح API", + "yes": "تخطي مطالبة التأكيد" + }, + "list": { + "description": "عرض إدخالات الذاكرة دون ترتيب حسب صلة البحث", + "type": "تصفية حسب النوع", + "limit": "الحد الأقصى للنتائج (الافتراضي: 100)", + "api_key": "تصفية حسب مفتاح API" + }, + "get": { + "description": "الحصول على إدخال ذاكرة واحد حسب المعرّف" + }, + "delete": { + "description": "حذف إدخال ذاكرة حسب المعرّف", + "yes": "تخطي مطالبة التأكيد" + }, + "health": { + "description": "عرض حالة النظام الفرعي للذاكرة (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "إدارة اتصالات موفّري OAuth", + "providers": { + "description": "سرد الموفّرين الداعمين لـ OAuth وأنواع تدفقاتهم" + }, + "start": { + "description": "بدء تدفق تفويض OAuth لموفّر", + "provider": "معرّف الموفّر (gemini, copilot, cursor, …)", + "no_browser": "طباعة عنوان URL فقط — دون فتح المتصفح", + "import_system": "استيراد بيانات الاعتماد تلقائيًا من إعدادات النظام المحلي", + "social": "موفّر تسجيل الدخول الاجتماعي (google|github) — مطلوب لـ kiro", + "timeout": "مهلة انتظار التفويض بالمللي ثانية (الافتراضي: 300000)" + }, + "status": { + "description": "سرد اتصالات OAuth النشطة", + "provider": "التصفية حسب معرّف الموفّر" + }, + "revoke": { + "description": "إلغاء اتصال OAuth", + "provider": "معرّف الموفّر المراد إلغاؤه", + "connection_id": "إلغاء اتصال محدد حسب المعرّف", + "yes": "تخطي مطالبة التأكيد" + } + }, + "cloud": { + "description": "إدارة مهام وكلاء الذكاء الاصطناعي السحابيين (codex, devin, jules)", + "agents": { + "description": "سرد الوكلاء السحابيين المتاحين" + }, + "agent": { + "description": "إدارة مهام الوكيل السحابي {agent}", + "auth": { + "description": "تفويض {agent} عبر OAuth" + } + }, + "task": { + "description": "إدارة مهام الوكلاء السحابيين", + "create": { + "description": "إنشاء مهمة وكيل جديدة", + "title": "عنوان المهمة (يُضبط افتراضيًا على أول 80 حرفًا من المطالبة)", + "prompt": "نص مطالبة المهمة", + "prompt_file": "قراءة المطالبة من ملف", + "repo": "عنوان URL للمستودع المراد استنساخه للمهمة", + "branch": "اسم الفرع المراد استخدامه", + "metadata": "كائن بيانات وصفية بتنسيق JSON" + }, + "list": { + "description": "سرد مهام الوكيل", + "status": "التصفية حسب الحالة (running|completed|failed|cancelled)", + "limit": "الحد الأقصى للنتائج (الافتراضي: 50)" + }, + "get": { + "description": "الحصول على تفاصيل المهمة حسب المعرّف" + }, + "status": { + "description": "طباعة حالة المهمة (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "إلغاء مهمة قيد التشغيل", + "yes": "تخطي مطالبة التأكيد" + }, + "approve": { + "description": "الموافقة على خطة الوكيل لبدء التنفيذ" + }, + "message": { + "description": "إرسال رسالة إلى مهمة قيد التشغيل" + } + }, + "sources": { + "description": "سرد ملفات المصدر التي أنشأتها مهمة" + } + }, + "eval": { + "description": "إدارة حزم التقييم وعمليات تشغيلها", + "suites": { + "description": "إدارة حزم التقييم", + "list": { + "description": "عرض مجموعات التقييم" + }, + "get": { + "description": "الحصول على تفاصيل مجموعة التقييم حسب المعرّف" + }, + "create": { + "description": "إنشاء مجموعة تقييم من ملف JSON", + "file": "مسار ملف JSON لتعريف المجموعة" + } + }, + "run": { + "description": "بدء تشغيل تقييم لمجموعة", + "model": "معرّف النموذج المراد تقييمه (الافتراضي: auto)", + "combo": "فرض تركيبة محددة بالاسم", + "concurrency": "عدد العينات المتزامنة (الافتراضي: 4)", + "tag": "إضافة وسم إلى هذا التشغيل لتصفيته لاحقًا", + "watch": "مراقبة تقدم التشغيل حتى اكتماله" + }, + "list": { + "description": "عرض عمليات تشغيل التقييم", + "suite": "التصفية حسب معرّف المجموعة", + "status": "التصفية حسب الحالة", + "since": "إرجاع عمليات التشغيل منذ هذا الطابع الزمني", + "limit": "الحد الأقصى للنتائج (الافتراضي: 50)" + }, + "get": { + "description": "الحصول على تفاصيل تشغيل التقييم حسب المعرّف" + }, + "results": { + "description": "عرض نتائج العينات لتشغيل تقييم", + "failed": "عرض العينات الفاشلة فقط" + }, + "cancel": { + "description": "إلغاء تشغيل تقييم قيد التنفيذ", + "yes": "تخطي مطالبة التأكيد" + }, + "scorecard": { + "description": "عرض بطاقة النتائج لتشغيل تقييم مكتمل" + } + }, + "webhooks": { + "description": "إدارة خطافات الويب في OmniRoute", + "events": { + "description": "عرض جميع أنواع أحداث خطافات الويب المتاحة" + }, + "list": { + "description": "عرض خطافات الويب المُعدّة" + }, + "get": { + "description": "الحصول على تفاصيل خطاف الويب حسب المعرّف" + }, + "add": { + "description": "تسجيل خطاف ويب جديد", + "url": "عنوان URL للوجهة", + "events": "قائمة أنواع الأحداث مفصولة بفواصل", + "secret": "سر توقيع HMAC", + "header": "ترويسة إضافية بتنسيق key=value (قابلة للتكرار)", + "no_enabled": "إنشاء خطاف الويب في حالة معطّلة" + }, + "update": { + "description": "تحديث خطاف ويب موجود", + "enabled": "تعيين حالة التمكين (true|false)" + }, + "remove": { + "description": "حذف خطاف ويب", + "yes": "تخطي مطالبة التأكيد" + }, + "test": { + "description": "إرسال حدث اختباري إلى خطاف ويب", + "event": "نوع الحدث المراد محاكاته (الافتراضي: request.completed)" + } + }, "program": { "description": "OmniRoute — جهاز توجيه الذكاء الاصطناعي مع التبديل التلقائي", "version": "عرض الإصدار والخروج", @@ -26,7 +832,509 @@ "context": "سياق/ملف تعريف الخادم المستخدم في هذا الأمر", "lang": "تعيين لغة عرض CLI (يتجاوز OMNIROUTE_LANG)" }, - "redis": { - "description": "تشغيل حاوية Redis محلية بضغطة واحدة (Podman أو Docker) لتخزين التخزين المؤقت وتتبع الحصة في OmniRoute" + "files": { + "description": "إدارة الملفات (رفع، عرض، الحصول، تنزيل، حذف)", + "list": { + "purpose": "التصفية حسب الغرض", + "limit": "الحد الأقصى للنتائج" + }, + "get": { + "description": "الحصول على بيانات الملف الوصفية" + }, + "upload": { + "description": "رفع ملف", + "purpose": "الغرض من الملف (batch، assistants، fine-tune)" + }, + "content": { + "description": "تنزيل محتوى الملف", + "out": "الحفظ في مسار (الافتراضي: stdout)" + }, + "delete": { + "yes": "تخطي التأكيد" + } + }, + "batches": { + "description": "إدارة مهام الدُفعات المتوافقة مع OpenAI", + "list": { + "status": "التصفية حسب الحالة", + "limit": "الحد الأقصى للنتائج" + }, + "create": { + "description": "إنشاء مهمة دُفعة", + "inputFile": "معرّف ملف الإدخال", + "endpoint": "نقطة النهاية المستهدفة", + "window": "مهلة الإكمال", + "metadata": "إضافة بيانات وصفية key=value" + }, + "submit": { + "description": "رفع ملف JSONL وإنشاء دُفعة", + "jsonl": "مسار ملف JSONL", + "endpoint": "نقطة النهاية المستهدفة", + "wait": "انتظار الإكمال" + }, + "cancel": { + "yes": "تخطي التأكيد" + }, + "wait": { + "timeout": "المهلة بالمللي ثانية" + }, + "output": { + "out": "حفظ المخرجات في مسار" + }, + "errors": { + "out": "حفظ الأخطاء في مسار" + } + }, + "translator": { + "description": "ترجمة نصوص الطلبات بين تنسيقات LLM", + "detect": { + "description": "اكتشاف تنسيق النص" + }, + "translate": { + "description": "تحويل النص من تنسيق إلى آخر" + }, + "send": { + "description": "الترجمة والإرسال إلى المصدر الرئيسي" + }, + "stream": { + "description": "ترجمة نص الطلب المتدفق" + }, + "from": "تنسيق المصدر (openai|anthropic|gemini|cohere)", + "to": "التنسيق المستهدف (openai|anthropic|gemini|cohere)", + "file": "مسار ملف JSON لنص الطلب", + "out": "حفظ المخرجات في ملف", + "model": "تجاوز النموذج", + "history": { + "limit": "الحد الأقصى للنتائج" + } + }, + "pricing": { + "description": "إدارة بيانات تسعير النماذج", + "sync": { + "description": "مزامنة الأسعار من المصادر الرئيسية", + "provider": "التصفية حسب المزوّد", + "force": "فرض إعادة المزامنة" + }, + "list": { + "provider": "التصفية حسب المزوّد", + "model": "التصفية حسب النموذج", + "limit": "الحد الأقصى للنتائج" + }, + "defaults": { + "description": "إدارة التسعير الافتراضي", + "input": "تكلفة الإدخال لكل مليون رمز (USD)", + "output": "تكلفة الإخراج لكل مليون رمز (USD)", + "cacheRead": "تكلفة قراءة ذاكرة التخزين المؤقت لكل مليون رمز (USD)", + "cacheWrite": "تكلفة الكتابة إلى ذاكرة التخزين المؤقت لكل مليون رمز (USD)" + }, + "diff": { + "description": "إظهار الاختلاف عن الأسعار الأصلية", + "model": "التصفية حسب النموذج" + } + }, + "radar": { + "description": "فحص موجزات كتالوج Radar المحلية ومزامنتها", + "status": "إظهار إعدادات Radar المحلية وحالة ذاكرة التخزين المؤقت للموجزات", + "sync": "مزامنة الكتالوج والإحالات والعروض وIntel عبر الخادم المحلي" + }, + "resilience": { + "description": "فحص آليات المرونة وإدارتها", + "status": { + "provider": "التصفية حسب المزوّد" + }, + "breakers": { + "provider": "التصفية حسب المزوّد" + }, + "cooldowns": { + "provider": "التصفية حسب المزوّد", + "connectionId": "التصفية حسب معرّف الاتصال" + }, + "lockouts": { + "provider": "التصفية حسب المزوّد", + "model": "التصفية حسب النموذج" + }, + "reset": { + "description": "إعادة تعيين حالة قاطع الدائرة/فترة الانتظار", + "provider": "المزوّد المطلوب إعادة تعيينه", + "connectionId": "معرّف الاتصال المطلوب إعادة تعيينه", + "model": "النموذج المطلوب إعادة تعيين حظره", + "allCooldowns": "إعادة تعيين جميع فترات الانتظار للمزوّد", + "yes": "تخطي التأكيد" + }, + "profile": { + "description": "إدارة ملف تعريف المرونة", + "name": "اسم ملف التعريف" + }, + "config": { + "description": "إدارة إعدادات المرونة", + "threshold": "حد الإخفاقات", + "resetTimeout": "مهلة إعادة التعيين بالمللي ثانية", + "baseCooldown": "فترة الانتظار الأساسية بالمللي ثانية" + } + }, + "nodes": { + "description": "إدارة عُقد المزوّدين (نقاط النهاية)", + "list": { + "provider": "التصفية حسب المزوّد", + "enabled": "إظهار العُقد المفعّلة فقط" + }, + "add": { + "provider": "اسم المزوّد", + "baseUrl": "عنوان URL الأساسي للعقدة", + "name": "اسم العقدة", + "weight": "وزن موازنة الحمل", + "region": "وسم المنطقة", + "authHeader": "ترويسة مصادقة مخصصة (key=value)" + }, + "update": { + "baseUrl": "عنوان URL الأساسي الجديد", + "name": "الاسم الجديد", + "weight": "وزن جديد", + "region": "منطقة جديدة", + "enabled": "تمكين أو تعطيل (true|false)" + }, + "remove": { + "yes": "تخطي التأكيد" + }, + "validate": { + "baseUrl": "عنوان URL المراد التحقق منه", + "provider": "المزوّد الذي سيتم التحقق بالمقارنة معه" + }, + "test": { + "description": "إرسال طلب اختباري إلى العقدة" + }, + "metrics": { + "description": "عرض مقاييس العقدة", + "period": "الفترة الزمنية (مثلاً 24h، 7d)" + } + }, + "context": { + "description": "تهيئة مسار هندسة السياق (Caveman، RTK)", + "analytics": { + "period": "الفترة الزمنية (مثلاً 7d، 30d)" + }, + "caveman": { + "description": "إدارة ضاغط السياق Caveman", + "config": { + "description": "عرض إعدادات Caveman أو تحديثها", + "aggressiveness": "مستوى الشدة 0.0–1.0", + "maxShrinkPct": "النسبة المئوية القصوى للتقليص", + "preserveTags": "وسوم مفصولة بفواصل للاحتفاظ بها" + } + }, + "rtk": { + "description": "إدارة محسّن السياق RTK", + "config": { + "description": "عرض إعدادات RTK أو تحديثها", + "tokenBudget": "ميزانية الرموز لـ RTK", + "reservePct": "نسبة الاحتياطي" + }, + "filters": { + "description": "إدارة عوامل تصفية RTK", + "pattern": "نمط عامل التصفية (regex)", + "priority": "أولوية عامل التصفية (الافتراضي: 100)", + "action": "إجراء عامل التصفية: drop|shrink|replace", + "yes": "تخطي التأكيد" + }, + "test": { + "file": "مسار ملف JSON للطلب" + } + }, + "combos": { + "description": "إدارة المجموعات المراعية للسياق" + } + }, + "sessions": { + "description": "فحص الجلسات النشطة وإدارتها", + "list": { + "user": "التصفية حسب المستخدم", + "kind": "التصفية حسب النوع (dashboard|api-key|mcp|a2a)", + "active": "عرض الجلسات النشطة فقط", + "limit": "الحد الأقصى للنتائج (الافتراضي: 100)" + }, + "expire": { + "yes": "تخطي التأكيد" + }, + "expireAll": { + "user": "المستخدم المراد إنهاء صلاحية جلساته", + "yes": "تخطي التأكيد" + } + }, + "tags": { + "description": "إدارة وسوم الموارد", + "add": { + "color": "لون الوسم (قيمة hex أو اسم)", + "description": "وصف الوسم" + }, + "remove": { + "yes": "تخطي التأكيد" + }, + "assign": { + "tag": "اسم الوسم", + "to": "المورد المستهدف بالصيغة type:id (مثال: provider:openai)" + }, + "unassign": { + "tag": "اسم الوسم", + "from": "المورد المصدر بالصيغة type:id" + } + }, + "openapi": { + "description": "الوصول إلى مواصفات OmniRoute OpenAPI واختبارها", + "dump": { + "description": "تفريغ مواصفات OpenAPI إلى stdout أو ملف", + "format": "تنسيق الإخراج: yaml|json (الافتراضي: yaml)", + "out": "الحفظ في مسار ملف" + }, + "validate": { + "description": "التحقق من صحة مواصفات OpenAPI" + }, + "try": { + "description": "اختبار نقطة نهاية API عبر المواصفات", + "method": "طريقة HTTP (الافتراضية: GET)", + "body": "مسار ملف JSON الذي يحتوي على نص الطلب", + "query": "مُعامل استعلام بالصيغة key=value (قابل للتكرار)", + "header": "ترويسة بالصيغة key=value (قابلة للتكرار)" + }, + "endpoints": { + "description": "عرض جميع نقاط نهاية API", + "search": "التصفية حسب المسار أو الملخص" + }, + "paths": { + "description": "عرض جميع مسارات API" + } + }, + "combo": { + "title": "التركيبات", + "switched": "التركيبة النشطة: {name}", + "created": "تم إنشاء التركيبة: {name}", + "deleted": "تم حذف التركيبة: {name}", + "noCombos": "لم يتم تكوين أي تركيبات.", + "confirmDelete": "هل تريد حذف التركيبة {name}؟", + "suggest": { + "description": "اقتراح أفضل تركيبة لمهمة باستخدام تقييم الذكاء الاصطناعي", + "task": "وصف المهمة", + "maxCost": "الحد الأقصى لتكلفة كل طلب بالدولار الأمريكي", + "maxLatencyMs": "الحد الأقصى لزمن الاستجابة بالمللي ثانية", + "weights": "أوزان التقييم بصيغة JSON، مثال: {\"latency\":0.7,\"cost\":0.3}", + "top": "عدد أفضل المرشحين المراد عرضهم (الافتراضي: 5)", + "explain": "طباعة المبررات إلى stderr", + "switch": "تفعيل التركيبة الأعلى تصنيفًا" + } + }, + "oneproxy": { + "description": "إدارة مجموعة المصادر العليا في OneProxy", + "stats": { + "provider": "التصفية حسب المزوّد", + "period": "الفترة الزمنية (الافتراضية: 24h)" + }, + "fetch": { + "description": "جلب الوكلاء من المجموعة", + "count": "عدد الوكلاء المراد جلبهم (الافتراضي: 1)", + "type": "نوع الوكيل: http|socks5 (الافتراضي: http)" + }, + "rotate": { + "description": "فرض تدوير الوكيل", + "provider": "المزوّد المراد إجراء التدوير له", + "connectionId": "معرّف الاتصال المحدد المراد تدويره" + }, + "config": { + "description": "عرض إعدادات OneProxy أو تحديثها", + "enabled": "تمكين تجمّع الوكلاء (true|false)", + "poolSize": "حجم التجمّع", + "providerSource": "عنوان URL لمزوّد الوكيل", + "rotationPolicy": "سياسة التدوير: sticky|per-request|periodic" + }, + "pool": { + "description": "عرض تجمّع الوكلاء الحالي مع المقاييس" + } + }, + "open": { + "description": "فتح صفحة محددة من لوحة معلومات OmniRoute في المتصفح", + "url": "طباعة عنوان URL فقط، دون فتح المتصفح" + }, + "telemetry": { + "description": "الوصول إلى بيانات القياس عن بُعد المجمّعة", + "summary": { + "description": "عرض ملخص القياس عن بُعد المجمّع", + "period": "الفترة الزمنية: 24h|7d|30d (الافتراضي: 24h)", + "compareTo": "المقارنة بالفترة السابقة" + }, + "export": { + "description": "تصدير أحداث القياس عن بُعد إلى JSONL", + "out": "مسار ملف الإخراج (الافتراضي: telemetry.jsonl)", + "period": "الفترة الزمنية للتصدير (الافتراضي: 7d)" + } + }, + "sync": { + "description": "مزامنة الإعدادات بين مثيلات OmniRoute", + "push": { + "description": "دفع الإعدادات إلى السحابة أو إلى مثيل بعيد", + "target": "الهدف (cloud أو context:name)", + "bundle": "أجزاء الحزمة المراد مزامنتها", + "dryRun": "المعاينة دون تطبيق" + }, + "pull": { + "description": "سحب الإعدادات من السحابة أو من مثيل بعيد", + "source": "المصدر (cloud أو context:name)", + "merge": "الدمج مع الإعدادات الحالية", + "replace": "استبدال الإعدادات الحالية", + "dryRun": "المعاينة دون تطبيق" + }, + "diff": { + "source": "سياق المصدر", + "target": "سياق الهدف" + }, + "bundle": { + "description": "تصدير الإعدادات كملف حزمة", + "include": "الأجزاء المراد تضمينها (مفصولة بفواصل)" + }, + "import": { + "description": "استيراد ملف حزمة", + "dryRun": "التحقق دون تطبيق" + }, + "initialize": { + "fromCloud": "التهيئة من نسخة احتياطية سحابية" + }, + "tokens": { + "description": "إدارة رموز المزامنة", + "create": { + "name": "اسم الرمز", + "scope": "نطاق الرمز", + "ttl": "مدة صلاحية الرمز (مثل 30d)" + }, + "revoke": { + "yes": "تخطي التأكيد" + } + }, + "resolve": { + "description": "حل تعارضات المزامنة تفاعليًا" + } + }, + "config": { + "contexts": { + "description": "إدارة سياقات/ملفات تعريف الخادم (إضافة، استخدام، عرض القائمة، عرض التفاصيل، إزالة، إعادة تسمية، تصدير، استيراد)" + }, + "lang": { + "description": "إدارة لغة عرض CLI", + "getDescription": "عرض رمز اللغة النشطة حاليًا", + "setDescription": "تعيين لغة العرض وحفظها في الإعدادات", + "listDescription": "عرض جميع اللغات المتاحة", + "listTitle": "اللغات المتاحة", + "current": "اللغة: {code} ({name})", + "saved": "تم تعيين اللغة إلى {code} ({name}).", + "noCode": "رمز اللغة مطلوب. شغّل 'omniroute config lang list' لعرض الرموز المتاحة.", + "unknown": "رمز لغة غير معروف: {code}. شغّل 'omniroute config lang list' لعرض الرموز المتاحة.", + "alreadySet": "اللغة معيّنة بالفعل إلى {code}.", + "envHint": "تلميح: يمكنك أيضًا تعيين OMNIROUTE_LANG={code} في بيئتك." + } + }, + "completion": { + "description": "إنشاء أو تثبيت نصوص الإكمال التلقائي للصدفة", + "zsh": "طباعة نص الإكمال التلقائي لـ zsh", + "bash": "طباعة نص الإكمال التلقائي لـ bash", + "fish": "طباعة نص الإكمال التلقائي لـ fish", + "install": "تثبيت نص الإكمال التلقائي بشكل عام للصدفة المكتشفة", + "refresh": "تحديث ذاكرة التخزين المؤقت للتركيبات/المزوّدين/النماذج" + }, + "logs": { + "description": "بث سجلات الطلبات أو تصديرها", + "follow": "بث السجلات في الوقت الفعلي", + "filter": "التصفية حسب المستوى (error,warn,info) — مفصولة بفواصل", + "lines": "عدد الأسطر المطلوب جلبها", + "timeout": "مهلة الاتصال بالمللي ثانية", + "baseUrl": "عنوان URL الأساسي لواجهة OmniRoute API", + "requestId": "التصفية حسب معرّف الطلب", + "apiKey": "التصفية حسب مفتاح API", + "combo": "التصفية حسب اسم التركيبة", + "status": "التصفية حسب رمز حالة HTTP", + "durationMin": "الحد الأدنى لمدة الطلب بالمللي ثانية", + "durationMax": "الحد الأقصى لمدة الطلب بالمللي ثانية", + "export": "حفظ السجلات في ملف (json/jsonl/csv)", + "exported": "تم حفظ السجلات في {path}", + "stopped": "تم إيقاف بث السجلات.", + "streamError": "خطأ في بث السجلات: {message}" + }, + "tray": { + "description": "التحكم في أيقونة علبة النظام", + "show": "إظهار أيقونة علبة النظام (إذا كان الخادم يعمل مع --tray)", + "hide": "إخفاء أيقونة علبة النظام", + "quit": "إنهاء OmniRoute عبر علبة النظام" + }, + "autostart": { + "description": "إدارة التشغيل التلقائي لـ OmniRoute عند الإقلاع (Linux: خدمة مستخدم systemd)", + "enable": "تمكين التشغيل التلقائي عند الإقلاع", + "disable": "تعطيل التشغيل التلقائي عند الإقلاع", + "toggle": "تبديل حالة التشغيل التلقائي عند الإقلاع", + "status": "عرض حالة التشغيل التلقائي" + }, + "runtime": { + "description": "إدارة تبعيات وقت التشغيل الأصلية", + "check": "التحقق من حالة التبعيات الأصلية في دليل وقت التشغيل", + "repair": "إعادة تثبيت التبعيات الأصلية في دليل وقت التشغيل", + "repair_force": "فرض إعادة التثبيت حتى إن كانت صالحة", + "clean": "إزالة دليل وقت التشغيل (يحرر مساحة على القرص)", + "clean_yes": "تخطي التأكيد" + }, + "repl": { + "description": "بيئة REPL تفاعلية متعددة الجولات مع LLM", + "model": "النموذج المراد استخدامه (الافتراضي: auto)", + "combo": "اسم المجموعة المراد استخدامها", + "system": "موجّه النظام", + "resume": "استئناف جلسة محفوظة حسب الاسم" + }, + "plugin": { + "description": "إدارة إضافات CLI ‏(omniroute-cmd-*)", + "list": "عرض الإضافات المثبتة", + "install": "تثبيت إضافة من npm أو من مسار محلي", + "remove": "إزالة إضافة مثبتة", + "info": "عرض تفاصيل إضافة مثبتة", + "search": "البحث في سجل npm عن الإضافات المتاحة", + "update": "تحديث الإضافات المثبتة", + "scaffold": "إنشاء هيكل أولي لإضافة جديدة" + }, + "launch": { + "description": "تشغيل Claude Code موجّهًا إلى OmniRoute (محليًا أو عن بُعد، باستخدام --profile)", + "token": "الرمز المميز الذي يجب أن يرسله عميل Claude ‏(ANTHROPIC_AUTH_TOKEN)", + "notRunning": "يتعذر الوصول إلى OmniRoute على {port}. شغّله باستخدام 'omniroute serve'.", + "notFound": "لم يتم العثور على واجهة CLI المسماة 'claude' في PATH." + }, + "run": { + "description": "تشغيل هدف CLI مدعوم عبر OmniRoute" + }, + "setupClaude": { + "description": "إنشاء ملفات تعريف Claude Code في ~/.claude/profiles من كتالوج نماذج OmniRoute" + }, + "connect": { + "description": "الاتصال بخادم OmniRoute بعيد والدخول إلى الوضع البعيد" + }, + "tokens": { + "description": "إدارة رموز وصول CLI محددة النطاق (الوضع البعيد)" + }, + "configure": { + "description": "اختيار موفّر ونموذج من الخادم النشط وتهيئة CLI محلية مدعومة" + }, + "launchCodex": { + "description": "تشغيل Codex CLI موجّهًا إلى OmniRoute (محليًا أو على VPS بعيد)" + }, + "setupCodex": { + "description": "إنشاء ملفات تعريف في ~/.codex من كتالوج نماذج OmniRoute المباشر" + }, + "packs": { + "description": "إدارة حزم وقت التشغيل الاختيارية (ML / أتمتة المتصفح)", + "listDescription": "عرض الحزم الاختيارية وحالة تثبيتها", + "installDescription": "تثبيت حزمة اختيارية في DATA_DIR", + "verifyDescription": "التحقق من الحزم المثبتة بمقارنتها مع فهرس المجاميع الاختبارية المرفق", + "removeDescription": "إزالة حزمة اختيارية مثبتة", + "sourceOpt": "الدليل الذي يحتوي على محتويات الحزم وفهرس الحزم", + "warnNoIndex": "لم يتم العثور على optional-packs.index.json — التثبيت/التحقق غير متاحين في نسخة المستودع هذه (حزم سطح المكتب تتضمنه)", + "errUnknown": "حزمة غير معروفة: {name}", + "errNoIndex": "لم يتم العثور على فهرس الحزم؛ مرّر --source الذي يحتوي على محتويات الحزمة (تتضمنه حزم سطح المكتب بجوار التطبيق)", + "installed": "تم تثبيت الحزمة \"{name}\" والتحقق منها في {dir}", + "restartHint": "أعد تشغيل خادم OmniRoute (أو تطبيق سطح المكتب) ليتمكن وقت التشغيل من التعرّف على الحزمة", + "removed": "تمت إزالة الحزمة \"{name}\"", + "notInstalled": "لم تكن الحزمة \"{name}\" مثبّتة", + "verifyOk": "تم التحقق من جميع الحزم المثبّتة", + "verifyFailed": "فشل التحقق من {count} حزمة", + "noneInstalled": "لا توجد حزم اختيارية مثبّتة" } } diff --git a/bin/cli/locales/az.json b/bin/cli/locales/az.json index ba1be5d346..675e7d0099 100644 --- a/bin/cli/locales/az.json +++ b/bin/cli/locales/az.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON formatında çıxış", "yesOpt": "Təsdiq sorğusunu keç" }, + "setup": { + "title": "OmniRoute Quraşdırılması", + "passwordPrompt": "Admin parolu", + "providerPrompt": "Standart provayder (ötürmək üçün boş saxlayın)", + "done": "Quraşdırma tamamlandı", + "passwordSet": "Admin parolu konfiqurasiya edildi", + "providerSet": "Provayder konfiqurasiya edildi: {name}", + "testingProvider": "Provayder bağlantısı sınaqdan keçirilir: {name}", + "testPassed": "Provayder sınağı uğurla keçdi", + "testFailed": "Provayder sınağı uğursuz oldu: {error}", + "loginEnabled": "Giriş: aktivdir (parol yeniləndi)", + "loginDisabled": "Giriş: deaktivdir", + "providerInfo": "Provayder: {info}", + "opencode": "OpenCode üçün paketə daxil olan @omniroute/opencode-plugin plaginini quraşdırın və konfiqurasiya edin" + }, + "doctor": { + "title": "OmniRoute Diaqnostikası", + "dbOk": "Verilənlər bazası: OK ({path})", + "dbMissing": "Verilənlər bazası başladılmayıb — `omniroute setup` əmrini icra edin", + "portOk": "Port {port}: əlçatandır", + "portConflict": "Port {port}: başqa proses tərəfindən istifadə olunur", + "encryptionOk": "Şifrələmə açarı: konfiqurasiya edilib", + "encryptionMissing": "Şifrələmə açarı yoxdur — `omniroute setup` əmrini icra edin", + "allGood": "Bütün yoxlamalar uğurla keçdi.", + "warnings": "{count} xəbərdarlıq — yuxarıya baxın." + }, + "providers": { + "title": "Provayderlər", + "noProviders": "Heç bir provayder konfiqurasiya edilməyib. İcra edin: omniroute setup", + "testing": "{name} sınaqdan keçirilir...", + "available": "{count} provayder əlçatandır", + "connected": "Qoşulub", + "disconnected": "Bağlantı kəsilib", + "validationFailed": "Doğrulama uğursuz oldu: {error}", + "metrics": { + "description": "Provayderin performans göstəricilərini göstərin (gecikmə, uğur faizi, xərc)", + "provider": "Provayder ID-sinə görə filtrləyin", + "connection_id": "Bağlantı ID-sinə görə filtrləyin", + "period": "Vaxt müddəti: 1h|6h|24h|7d|30d (standart: 24h)", + "metric": "Konkret metrik sahəsinə fokuslanın", + "sort": "Sahəyə görə çeşidləyin (azalan sıra ilə)", + "limit": "Maksimum sətir sayı (standart: 50)", + "watch": "Hər 5 saniyədən bir yeniləyin (canlı rejim)", + "compare": "Yan-yana müqayisə etmək üçün vergüllə ayrılmış provayder ID-ləri" + }, + "metric_single": { + "description": "Konkret bağlantı üçün tək metrik dəyəri əldə edin" + }, + "rotate": { + "description": "Provayder bağlantısı üçün yuxarı axın API açarını rotasiya edin", + "newKeyOpt": "Yeni API açarı dəyəri (çəkinin: --from-env seçiminə üstünlük verin)", + "fromEnvOpt": "Yeni açarı VAR mühit dəyişənindən oxuyun", + "oauthOpt": "Əvəzində OAuth ilə yenidən autentifikasiya prosesini başladın", + "skipTestOpt": "Rotasiyadan sonrakı bağlantı testini ötürün", + "dryRunOpt": "Heç nə yazmadan nələrin dəyişəcəyini göstərin", + "confirmPrompt": "\"{name}\" ({id}) bağlantısı üçün API açarı dəyişdirilsin? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) üçün açar rotasiya ediləcəkdi. Heç bir dəyişiklik edilmədi.", + "oauthHint": "OAuth bağlantısı — icra edin: omniroute oauth {provider}", + "envVarEmpty": "{var} mühit dəyişəni təyin edilməyib və ya boşdur.", + "success": "\"{name}\" üçün açar rotasiya edildi. Yoxlamaq üçün `providers test {id}` əmrini icra edin.", + "testPassed": "Rotasiyadan sonrakı test uğurla keçdi.", + "testFailed": "Rotasiyadan sonrakı test uğursuz oldu: {error}" + }, + "status": { + "description": "Bütün provayder bağlantıları üçün açarların vəziyyətini göstərin (yaş, bitmə vaxtı, gözləmə müddəti)", + "providerOpt": "Provayder adına görə filtrləyin", + "header": "ID Provayder Ad Bitmə vəziyyəti Test vəziyyəti Gözləmə müddətinin bitməsi", + "noData": "Provayder bağlantısı barədə məlumat mövcud deyil.", + "requiresServer": "providers status üçün OmniRoute serveri işlək olmalıdır." + } + }, + "keys": { + "title": "API açarları", + "addDescription": "Provayder üçün API açarı əlavə edin və ya yeniləyin", + "listDescription": "Konfiqurasiya edilmiş bütün API açarlarını siyahıya alın", + "removeDescription": "Provayder üçün API açarını silin", + "regenerateDescription": "OmniRoute API açarını yenidən yaradın", + "revokeDescription": "OmniRoute API açarını ləğv edin", + "revealDescription": "Maskalanmamış API açarı dəyərini göstərin", + "usageDescription": "API açarı üçün son istifadə məlumatlarını göstərin", + "usageLimitOpt": "Son sorğuların sayı", + "rotateDescription": "Yeni açar yaradın və köhnəsini etibarsız edin", + "graceOpt": "Köhnə açarın etibarsız edilməsindən əvvəlki güzəşt müddəti (ms)", + "stdinOpt": "API açarını arqument əvəzinə stdin-dən oxuyun", + "added": "{provider} üçün açar əlavə edildi.", + "removed": "Açar silindi.", + "listed": "{count} açar.", + "noKeys": "Heç bir açar konfiqurasiya edilməyib.", + "noUsage": "İstifadə məlumatı tapılmadı.", + "confirmRemove": "{id} açarı silinsin?", + "confirmRegenerate": "{id} açarı yenidən yaradılsın?", + "confirmRevoke": "{id} açarı ləğv edilsin?", + "confirmRotate": "{id} açarı rotasiya edilsin? (köhnə açar güzəşt müddətindən sonra etibarsız ediləcək)", + "regenerated": "Yenidən yaradıldı. Yeni açar: {key}", + "revoked": "{id} açarı ləğv edildi.", + "rotated": "Açar {id} yeniləndi. Yeni açar ID-si: {newId}", + "revealWarning": "⚠ Bu, maskalanmamış açarı tam şəkildə göstərəcək. Ekranınızın məxfi olduğuna əmin olun.", + "providerRequired": "Provayder tələb olunur.", + "keyRequired": "API açarı tələb olunur.", + "stdinEmpty": "stdin vasitəsilə API açarı təqdim edilməyib.", + "unknownProvider": "Naməlum provayder: {provider}", + "policy": { + "title": "Açar siyasəti", + "showDescription": "Açar üçün sorğu tezliyi/xərc siyasətini göstər", + "setDescription": "Açar üçün sorğu tezliyi/xərc siyasətini təyin et", + "rateLimitOpt": "Dəqiqədə maksimum sorğu sayı", + "maxCostOpt": "Gündəlik maksimum xərc (USD)", + "allowedModelsOpt": "İcazə verilən modellərin vergüllə ayrılmış siyahısı", + "nothingToSet": "Heç bir siyasət sahəsi təqdim edilməyib. --rate-limit, --max-cost və ya --allowed-models istifadə edin.", + "updated": "Siyasət yeniləndi." + }, + "expiration": { + "title": "Açarın etibarlılıq müddəti", + "listDescription": "Etibarlılıq müddəti tezliklə bitəcək açarları siyahıla", + "daysOpt": "Etibarlılıq müddəti N gün ərzində bitəcək açarları göstər", + "none": "{days} gün ərzində etibarlılıq müddəti bitəcək açar yoxdur.", + "listTitle": "{days} gün ərzində etibarlılıq müddəti bitəcək açarlar:" + } + }, + "authExport": { + "description": "ŞİFRİ AÇILMIŞ provayder giriş məlumatlarını ixrac et (yalnız lokal, açıq mətn çıxışı)", + "idOpt": "Yalnız bu ID/ad/provayderə uyğun bağlantını ixrac et", + "formatOpt": "Çıxış formatı: json və ya env", + "outOpt": "Çıxışı stdout əvəzinə fayla yaz (0600 icazələri ilə yazılacaq)", + "forceOpt": "Bunun açıq mətn şəklində məxfi məlumatları göstərdiyini/yazdığını anladığınızı təsdiqləyin", + "warning": "⚠ Bu, ŞİFRİ AÇILMIŞ API açarlarını və OAuth tokenlərini açıq mətn şəklində göstərir/yazır. Ekranınızın, shell tarixçənizin və istənilən çıxış faylının məxfi qaldığına əmin olun.", + "confirmHeading": "⚠ XƏBƏRDARLIQ: bu, ŞİFRİ AÇILMIŞ provayder giriş məlumatlarını açıq mətn şəklində ixrac edir", + "confirmBody": "Bu əmr seçilmiş bağlantı(lar) üçün apiKey, accessToken, refreshToken və\nidToken dəyərlərinin şifrini açır və onları göstərir/yazır. Çıxışa məxfi məlumat kimi yanaşın.", + "confirmFooter": "Təsdiqləmək üçün bunu icra edin:\n omniroute auth export --force", + "missingKey": "Giriş məlumatlarını ixrac etmək üçün STORAGE_ENCRYPTION_KEY tələb olunur.", + "notFound": "Bağlantı tapılmadı: {id}", + "invalidFormat": "Yanlış format: {format}. json və ya env istifadə edin." + }, + "stream": { + "description": "SSE yoxlama rejimləri ilə çat cavabını axın şəklində ötür", + "file": "Sorğunu fayldan oxu", + "stdin": "Sorğunu stdin-dən oxu", + "model": "Model ID-si (standart: auto)", + "system": "Sistem sorğusu", + "combo": "Adına görə konkret kombinasiyanı məcburi seç", + "max_tokens": "Cavabdakı maksimum token sayı", + "responses_api": "/v1/chat/completions əvəzinə /v1/responses istifadə et", + "raw": "Qəbul edilən xam SSE sətirlərini çap et", + "debug": "Hər hissə üzrə vaxt məlumatını stderr-ə çıxar", + "save": "Bütün SSE hadisələrini .jsonl faylına yadda saxla", + "error": { + "empty_prompt": "Xəta: prompt tələb olunur (mövqeli arqument, --file və ya --stdin)" + } + }, + "usage": { + "description": "İstifadə analitikası, büdcələr, kvotalar və jurnallar", + "analytics": { + "description": "Ümumiləşdirilmiş istifadə analitikasını göstər", + "period": "Vaxt aralığı: 1d|7d|30d|90d|ytd|all (standart: 30d)", + "provider": "Provayder ID-sinə görə filtrlə" + }, + "budget": { + "description": "Xərc büdcələrini idarə et", + "set": { + "scope": "Büdcənin əhatə dairəsi (standart: global)", + "period": "Büdcə dövrü: daily|weekly|monthly (standart: monthly)" + } + }, + "quota": { + "description": "Provayder kvotasının istifadəsini göstər", + "provider": "Provayder ID-sinə görə filtrlə", + "check": "Yeni sorğu üçün kvotanın mövcud olub-olmadığını göstər" + }, + "logs": { + "description": "Sorğu çağırışlarının jurnallarını göstər", + "limit": "Qaytarılacaq jurnal qeydlərinin sayı (standart: 100)", + "search": "Jurnalları filtrləmək üçün axtarış sorğusu", + "since": "Bu vaxt möhüründən sonrakı jurnalları qaytar", + "follow": "Yeni jurnal qeydlərini davamlı izlə", + "api_key": "Jurnalları API açarına görə filtrlə" + }, + "utilization": { + "description": "API açarından istifadə göstəricilərini göstər", + "api_key": "API açarına görə filtrlə" + }, + "history": { + "description": "Sorğu tarixçəsini göstər", + "limit": "Tarixçə qeydlərinin sayı (standart: 100)" + }, + "proxy_logs": { + "description": "Proksi səviyyəli sorğu jurnallarını göstər", + "limit": "Proksi jurnal qeydlərinin sayı (standart: 100)" + } + }, + "cost": { + "description": "Provayder, model, kombinasiya və ya API açarı üzrə bölgü ilə xərc hesabatını göstər", + "period": "Vaxt aralığı: 1d|7d|30d|90d|ytd|all (standart: 30d)", + "since": "Başlama tarixi (ISO formatı, məsələn, 2026-01-01) — --period parametrini üstələyir", + "until": "Bitmə tarixi (ISO formatı)", + "group_by": "Nəticələri bunlara görə qruplaşdır: provider|model|api-key|combo|day (standart: provider)", + "api_key_filter": "Konkret API açarına görə filtrlə", + "limit": "Göstəriləcək maksimum sətir sayı (standart: 100)" + }, + "simulate": { + "description": "Quru icra marşrutlaşdırma simulyasiyası — yuxarı axın çağırılmadan hansı provayderlərin seçiləcəyini göstər", + "file": "Tam sorğu gövdəsini JSON faylından yüklə", + "model": "Model ID-si (standart: auto)", + "combo": "Ada görə konkret kombinasiyanı məcburi seç", + "reasoning": "Əsaslandırma səyi səviyyəsi (low|medium|high)", + "thinking": "Genişləndirilmiş düşünmə tokeni büdcəsi", + "explain": "Ehtiyat keçid ağacını və xərc aralığını stderr-ə çıxar", + "noCombo": "Uyğun kombinasiya tapılmadı. Bu əmrlə birini konfiqurasiya edin: omniroute combo create" + }, + "chat": { + "description": "OmniRoute-a birdəfəlik söhbət sorğusu göndərin", + "file": "Sorğunu fayldan oxuyun", + "stdin": "Sorğunu stdin-dən oxuyun", + "system": "Sistem sorğusu", + "model": "Model ID-si (standart: auto)", + "max_tokens": "Cavabdakı maksimum token sayı", + "temperature": "Seçmə temperaturu (0–2)", + "top_p": "Top-p nüvə seçməsi", + "reasoning_effort": "Düşünmə səyi səviyyəsi (low|medium|high)", + "thinking_budget": "Genişləndirilmiş düşünmə üçün token büdcəsi", + "combo": "Adına görə konkret kombinasiyanı məcburi seçin", + "responses_api": "/v1/chat/completions əvəzinə /v1/responses istifadə edin", + "stream": "Cavabı mərhələli şəkildə yayımlayın", + "no_history": "~/.omniroute/cli-history.jsonl faylında saxlamayın", + "error": { + "empty_prompt": "Xəta: sorğu tələb olunur (mövqeli arqument, --file və ya --stdin)" + } + }, + "serve": { + "description": "OmniRoute serverini başladın (standart əməliyyat)", + "starting": "OmniRoute serveri {port} portunda başladılır...", + "ready": "http://localhost:{port} ünvanında hazırdır", + "stopping": "Server dayandırılır (PID {pid})...", + "stopped": "Server dayandırıldı.", + "notRunning": "Server işləmir.", + "port": "Dinləniləcək port (standart: 20128)", + "no_open": "Brauzeri avtomatik açmayın", + "daemon": "Serveri arxa plan demonu kimi işə salın", + "log": "Server jurnallarını daxildə göstərin", + "no_recovery": "Qəza zamanı avtomatik yenidən başlatmanı deaktiv edin (sazlama rejimi)", + "max_restarts": "İmtina etməzdən əvvəl 30 saniyə ərzində qəza sonrası maksimum yenidən başlatma sayı (standart: 2)", + "tray": "Sistem treyində başladın (yalnız masaüstü, istifadəçi seçimi ilə)", + "no_tray": "Sistem treyi ikonunu deaktiv edin", + "ready_timeout": "Hazırlıq yoxlamasının ms ilə gözləmə müddəti (həmçinin OMNIROUTE_READY_TIMEOUT_MS, standart 60000)", + "tls_cert": "HTTPS xidməti üçün TLS sertifikatına (PEM) yol (həmçinin OMNIROUTE_TLS_CERT)", + "tls_key": "HTTPS xidməti üçün TLS şəxsi açarına (PEM) yol (həmçinin OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Ehtiyat nüsxə", + "description": "OmniRoute məlumatlarının ehtiyat nüsxəsini yaradın", + "creating": "Ehtiyat nüsxə yaradılır...", + "done": "Ehtiyat nüsxə {path} yolunda saxlanıldı", + "noFiles": "Ehtiyat nüsxəsi çıxarılacaq fayl yoxdur (verilənlər bazası başladılmayıb)", + "failed": "Ehtiyat nüsxənin yaradılması uğursuz oldu: {error}", + "restoring": "{path} yolundan bərpa edilir...", + "restored": "Bərpa tamamlandı.", + "restoreDescription": "Ehtiyat nüsxədən bərpa et", + "listTitle": "Mövcud ehtiyat nüsxələr", + "noBackups": "Ehtiyat nüsxə tapılmadı.", + "notFound": "Ehtiyat nüsxə tapılmadı: {name}", + "confirmRestore": "Cari məlumatlar {ts} tarixli ehtiyat nüsxə ilə əvəz edilsin?", + "createDescription": "OmniRoute məlumatlarının ehtiyat nüsxəsini yarat", + "nameOpt": "Fərdi ehtiyat nüsxə adı", + "cloudOpt": "Ehtiyat nüsxəni bulud yaddaşına yüklə", + "encryptOpt": "Ehtiyat nüsxəni AES-256-GCM ilə şifrələ", + "keyFileOpt": "Şifrələmə parolunu ehtiva edən fayla gedən yol", + "excludeOpt": "Nümunəyə uyğun faylı istisna et (təkrarlana bilər)", + "retentionOpt": "Yalnız son N ehtiyat nüsxəni saxla", + "passphrasePrompt": "Şifrələmə parolu:", + "noPassphrase": "Şifrələnmiş ehtiyat nüsxə üçün parol tələb olunur.", + "cloudFailed": "Xəbərdarlıq: buluda yükləmə uğursuz oldu. Lokal ehtiyat nüsxə saxlanıldı.", + "cloudUploaded": "Bulud ehtiyat nüsxəsi yükləndi: {url}", + "auto": { + "title": "Ehtiyat nüsxələmə cədvəli", + "enableDescription": "Planlaşdırılmış avtomatik ehtiyat nüsxələməni aktivləşdir", + "disableDescription": "Planlaşdırılmış avtomatik ehtiyat nüsxələməni deaktiv et", + "statusDescription": "Cari ehtiyat nüsxələmə cədvəlinin statusunu göstər", + "cronOpt": "Cədvəl üçün cron ifadəsi (standart: hər gün saat 03:00-da)", + "enabled": "Avtomatik ehtiyat nüsxələmə aktivləşdirildi (cron: {cron}).", + "hint": "Cədvəl işə salınarkən omniroute serve tərəfindən oxunur.", + "disabled": "Avtomatik ehtiyat nüsxələmə deaktiv edildi.", + "notConfigured": "Ehtiyat nüsxələmə cədvəli konfiqurasiya edilməyib." + } + }, + "health": { + "description": "Serverin sağlamlığını və komponentlərin statusunu yoxla", + "noServer": "Server işləmir. Bu əmrlə başladın: omniroute serve", + "title": "Sağlamlıq", + "status": "Status: {status}", + "uptime": "İşləmə müddəti: {uptime}", + "requests": "Sorğular (24 saat): {count}", + "cost": "Xərc (24 saat): ${cost}" + }, + "quota": { + "description": "Provayder kvotasının istifadəsini göstər", + "noServer": "Server işləmir. Bu əmrlə başladın: omniroute serve", + "noData": "Kvota məlumatı mövcud deyil." + }, + "cache": { + "description": "Cavab keşini idarə et", + "noServer": "Server işləmir. Bu əmrlə başladın: omniroute serve", + "cleared": "Keş təmizləndi.", + "clearFailed": "Keşi təmizləmək alınmadı." + }, + "redis": { + "description": "OmniRoute keşfi və kvota izləmə üçün 1 kliklə yerli Redis konteynerini (Podman və ya Docker) işə salın" + }, + "test": { + "description": "Provayder bağlantısını sına", + "noServer": "Server işləmir. Bu əmrlə başladın: omniroute serve", + "testing": "{provider} / {model} sınaqdan keçirilir...", + "passed": "Bağlantı uğurludur!", + "failed": "Bağlantı uğursuz oldu: {error}", + "allProvidersOpt": "Bütün konfiqurasiya edilmiş provayderləri sınaqdan keçirin", + "latencyOpt": "Gecikmə ölçmələrini göstərin (orta/min/maks ms)", + "repeatOpt": "Sınağı N dəfə təkrarlayın və nəticələri ümumiləşdirin", + "compareOpt": "Müqayisə ediləcək vergüllə ayrılmış modellər (məs., gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Nəticələri JSON faylında saxlayın", + "saved": "Nəticələr {path} yolunda saxlanıldı", + "compareTitle": "Model müqayisəsi", + "compareMinTwo": "--compare üçün ən azı iki model tələb olunur (vergüllə ayrılmış)", + "noProviders": "Heç bir provayder konfiqurasiya edilməyib. Bu əmrlə əlavə edin: omniroute keys add" + }, + "update": { + "checking": "Yeniləmələr yoxlanılır...", + "upToDate": "Artıq ən son versiyadır ({version}).", + "available": "Yeniləmə mövcuddur: {current} → {latest}", + "installing": "{latest} quraşdırılır...", + "done": "{latest} versiyasına yeniləndi. Tətbiq etmək üçün serveri yenidən başladın." + }, + "mcp": { + "title": "MCP serveri", + "running": "MCP serveri işləyir ({transport})", + "stopped": "MCP serveri dayandırıldı.", + "restarted": "MCP serveri yenidən başladıldı.", + "stoppedHint": "Onu aktivləşdirmək üçün `omniroute mcp enable` əmrini icra edin.", + "enabled": "MCP serveri aktivləşdirildi.", + "disabled": "MCP serveri deaktivləşdirildi.", + "enable": { + "description": "MCP serverini aktivləşdirin", + "transport": "İstifadə ediləcək nəqliyyat: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP serverini deaktivləşdirin" + }, + "call": { + "description": "MCP alətini birbaşa çağırın", + "args": "JSON arqumentlər obyekti (sətirdaxili)", + "args_file": "JSON arqumentlər faylına gedən yol", + "stream": "Axın son nöqtəsindən istifadə edin (/api/mcp/stream)", + "scope": "Tələb olunan əhatə dairəsi (təkrarlana bilər, məs., read:health)" + }, + "scopes": { + "description": "Mövcud MCP əhatə dairələrini sadalayın", + "tool": "Konkret alət üçün tələb olunan əhatə dairələrini göstərin" + }, + "tools": { + "description": "MCP alətlərini yoxlayın", + "list": { + "description": "Bütün MCP alətlərini sadalayın", + "scope": "Əhatə dairəsinə görə filtrləyin" + }, + "info": { + "description": "MCP aləti üçün metadatanı göstərin" + }, + "schema": { + "description": "MCP aləti üçün giriş/çıxış JSON sxemini göstərin", + "io": "Sxem növü: input|output (standart: input)" + } + }, + "audit": { + "description": "MCP audit jurnalı (audit --source mcp üçün alias)" + } + }, + "a2a": { + "skills": { + "description": "Agent kartındakı mövcud A2A bacarıqlarını siyahıya alın" + }, + "invoke": { + "description": "A2A bacarığını çağırın və tapşırıq ID-sini qaytarın", + "input": "JSON giriş obyekti", + "input_file": "JSON giriş faylına yol", + "wait": "Qayıtmazdan əvvəl tapşırığın tamamlanmasını gözləyin", + "timeout": "Tamamlanmanı gözləmə müddəti, ms ilə (standart: 60000)" + }, + "tasks": { + "description": "A2A tapşırıqlarını idarə edin", + "list": { + "status": "Statusa görə filtrləyin", + "skill": "Bacarıq ID-sinə görə filtrləyin" + }, + "watch": { + "description": "Tamamlanana qədər tapşırıq statusunu yoxlayın" + }, + "stream": { + "description": "Tapşırığın icra hadisələrini SSE vasitəsilə yayımlayın" + }, + "logs": { + "description": "Tapşırıq mesajlarını və artefaktlarını göstərin" + } + } + }, + "policy": { + "description": "OmniRoute avtorizasiya siyasətlərini idarə edin", + "list": { + "description": "Siyasətləri siyahıya alın", + "kind": "Növə görə filtrləyin (allow|deny|rate-limit|cost-cap)", + "scope": "Əhatə dairəsinə görə filtrləyin (global|api-key|provider)" + }, + "get": { + "description": "ID-yə görə siyasət təfərrüatlarını əldə edin" + }, + "create": { + "description": "JSON faylından siyasət yaradın", + "file": "Siyasət JSON faylına yol" + }, + "update": { + "description": "Siyasəti JSON faylından yeniləyin", + "file": "Siyasət JSON faylına yol" + }, + "delete": { + "description": "Siyasəti ID-yə görə silin", + "yes": "Təsdiq sorğusunu keçin" + }, + "evaluate": { + "description": "Siyasət qiymətləndirməsini sınaq rejimində aparın (çıxış kodu 0=icazə verilib, 4=rədd edilib)", + "api_key": "Qiymətləndiriləcək API açarı", + "action": "Yoxlanılacaq əməl (məs., chat, embed, admin)", + "resource": "Resurs yolu və ya identifikatoru", + "context": "JSON obyekti kimi əlavə kontekst" + }, + "export": { + "description": "Bütün siyasətləri JSON faylına ixrac edin" + }, + "import": { + "description": "Siyasətləri JSON faylından idxal edin", + "overwrite": "Eyni ID-li mövcud siyasətlərin üzərinə yazın" + } + }, + "compression": { + "description": "OmniRoute sıxılma konveyerini konfiqurasiya və yoxlayın", + "status": { + "description": "Cari sıxılma statusunu və parametrlərini göstərin" + }, + "configure": { + "description": "Sıxılma parametrlərini konfiqurasiya edin", + "engine": "Sıxılma mühərriki (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman aqressivliyi 0.0–1.0", + "rtk_budget": "RTK token büdcəsi", + "language_pack": "Aktivləşdiriləcək dil paketi" + }, + "engine": { + "description": "Aktiv sıxılma mühərrikini əldə edin və ya təyin edin" + }, + "combos": { + "description": "Sıxılma kombinasiyalarının statistikasını idarə edin" + }, + "rules": { + "description": "Sıxılma qaydalarını idarə edin", + "add": { + "pattern": "Uyğunlaşdırılacaq nümunə (regex və ya field:pattern)", + "action": "Əməl: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Mövcud sıxılma dil paketlərini sadalayın" + }, + "preview": { + "description": "Sorğu üzərində sıxılma effektinə önbaxış edin", + "file": "Sorğu JSON faylına gedən yol" + } + }, + "tunnel": { + "title": "Tunellər", + "listDescription": "Aktiv tunelləri sadalayın", + "createDescription": "Tunel yaradın", + "created": "Tunel yaradıldı: {url}", + "stopped": "Tunel dayandırıldı.", + "confirmStop": "{id} tuneli dayandırılsın?", + "stopDescription": "Tuneli dayandırın", + "statusDescription": "Tunelin ətraflı statusunu göstərin", + "logsDescription": "Tunelin jurnallarını göstərin", + "infoDescription": "Tunelin konfiqurasiya təfərrüatlarını göstərin", + "rotateDescription": "Yeni tunel URL-i yaradın", + "tailOpt": "Göstəriləcək jurnal sətirlərinin sayı", + "typeRequired": "Tunel növü tələb olunur.", + "noLogs": "Heç bir jurnal mövcud deyil.", + "notAvailable": "Tunel məlumatı mövcud deyil.", + "noTunnels": "Aktiv tunel yoxdur.", + "infoTitle": "Tunel məlumatı: {type}", + "rotated": "Tunel URL-i yeniləndi: {url}", + "confirmRotate": "{type} tuneli yenilənsin? (yeni URL yaradılacaq)" + }, + "stop": { + "description": "OmniRoute serverini dayandırın", + "stopping": "Server dayandırılır (PID {pid})...", + "stopped": "Server dayandırıldı.", + "notRunning": "Heç bir server işləmir.", + "portFallback": "PID faylı tapılmadı, port əsasında dayandırmağa cəhd edilir..." + }, + "restart": { + "description": "OmniRoute serverini yenidən başladın", + "restarting": "OmniRoute serveri yenidən başladılır..." + }, + "dashboard": { + "description": "OmniRoute idarəetmə panelini brauzerdə açın", + "opening": "İdarəetmə paneli {url} ünvanında açılır", + "urlOnly": "Brauzeri açmadan idarəetmə panelinin URL-ini çap edin", + "tui": "İnteraktiv TUI idarəetmə panelini açın (terminal interfeysi, 7 tab)" + }, + "models": { + "description": "Mövcud modelləri sadalayın (server tələb olunur)", + "search": "Modelləri id, ad, provayder və ya təsvirə görə filtrləyin", + "noServer": "Server işləmir. Bu əmrlə başladın: omniroute serve", + "noModels": "Heç bir model tapılmadı." + }, + "audit": { + "description": "Uyğunluq və MCP audit jurnallarına daxil olun", + "source": "Jurnal mənbəyi: all|compliance|mcp (standart: all)", + "since": "Bu vaxt damğasından sonrakı qeydləri qaytarın (ISO 8601)", + "until": "Bu vaxt damğasına qədər olan qeydləri qaytarın (ISO 8601)", + "tail": { + "description": "Son audit jurnalı qeydlərini göstərin", + "follow": "Yeni qeydləri davamlı izləyin (2s sorğu intervalı)", + "limit": "Göstəriləcək maksimum qeyd sayı (standart: 100)" + }, + "search": { + "description": "Audit jurnalı qeydlərində açar söz üzrə axtarış aparın", + "limit": "Maksimum nəticə sayı (standart: 200)", + "actor": "İcraçı ID-si üzrə filtrləyin", + "action": "Əməliyyat adına görə filtrləyin" + }, + "export": { + "description": "Audit jurnalını fayla ixrac edin", + "format": "Çıxış formatı: jsonl|csv (standart: jsonl)" + }, + "stats": { + "description": "Audit jurnalı statistikasını göstərin", + "period": "Vaxt müddəti: 1d|7d|30d (standart: 7d)" + }, + "get": { + "description": "ID üzrə tək audit jurnalı qeydini əldə edin" + } + }, + "skills": { + "description": "OmniRoute bacarıqlarını idarə edin (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Quraşdırılmış bacarıqları sadalayın", + "type": "Növ üzrə filtrləyin (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Yalnız aktiv bacarıqları göstərin", + "disabled": "Yalnız deaktiv bacarıqları göstərin", + "api_key": "API açarı üzrə filtrləyin" + }, + "get": { + "description": "ID üzrə bacarıq təfərrüatlarını əldə edin" + }, + "install": { + "description": "Fayldan və ya URL-dən bacarıq quraşdırın", + "from_file": "Bacarıq üçün JSON tərif faylının yolu", + "from_url": "Uzaq bacarıq tərifinin URL-si", + "type": "Bacarıq növü (sandbox|custom|hybrid)", + "enable": "Quraşdırmadan sonra bacarığı aktivləşdirin" + }, + "enable": { + "description": "Bacarıq ID-si üzrə bacarığı aktivləşdirin" + }, + "disable": { + "description": "Bacarıq ID-si üzrə bacarığı deaktivləşdirin", + "yes": "Təsdiq sorğusunu keçin" + }, + "delete": { + "description": "Bacarıq ID-si üzrə bacarığı silin", + "yes": "Təsdiq sorğusunu keçin" + }, + "execute": { + "description": "Bacarıq ID-si üzrə bacarığı icra edin", + "input": "JSON giriş obyekti", + "input_file": "JSON giriş faylının yolu", + "timeout": "İcra vaxtı limiti, ms ilə (standart: 30000)" + }, + "executions": { + "description": "Bacarıqların icra tarixçəsini sadalayın", + "skill": "Bacarıq ID-sinə görə filtrlə", + "limit": "Maksimum nəticə sayı (standart: 50)", + "status": "Statusa görə filtrlə (running|completed|failed)" + }, + "skillssh": { + "description": "SSH vasitəsilə quraşdırılmış bacarıqları idarə et" + }, + "marketplace": { + "description": "Marketpleysdəki bacarıqlara bax və onları quraşdır" + }, + "mp": { + "search": { + "description": "Marketpleys paketlərini axtar", + "category": "Kateqoriyaya görə filtrlə", + "tag": "Teqə görə filtrlə", + "limit": "Maksimum nəticə sayı (standart: 30)", + "sort": "Sırala: downloads|rating|recent" + }, + "info": { + "description": "Paket təfərrüatlarını və readme faylını göstər" + }, + "install": { + "description": "Marketpleys paketini quraşdır", + "version": "Paket versiyası (standart: latest)", + "enable": "Quraşdırıldıqdan sonra aktivləşdir", + "yes": "Təsdiq sorğusunu ötür" + }, + "categories": { + "description": "Marketpleys kateqoriyalarını sadala" + }, + "featured": { + "description": "Seçilmiş marketpleys paketlərini göstər" + } + } + }, + "memory": { + "description": "OmniRoute danışıq yaddaşını idarə et (FTS5 + vector)", + "search": { + "description": "Yaddaş qeydlərini semantik sorğu ilə axtar", + "type": "Yaddaş növünə görə filtrlə (user|feedback|project|reference)", + "limit": "Maksimum nəticə sayı (standart: 20)", + "api_key": "API açarına görə filtrlə", + "token_budget": "Nəticələrdəki ümumi token sayını məhdudlaşdır" + }, + "add": { + "description": "Yeni yaddaş qeydi əlavə et", + "content": "Yaddaşın mətn məzmunu", + "file": "Məzmunu fayldan oxu", + "type": "Yaddaş növü (standart: user)", + "metadata": "JSON metadata obyekti", + "api_key": "API açarı ilə əlaqələndir" + }, + "clear": { + "description": "Filtrlərə uyğun yaddaş qeydlərini sil", + "type": "Növə görə filtrlə", + "older": "Müddətdən daha köhnə qeydləri sil (30d, 6m, 1y)", + "api_key": "API açarına görə filtrlə", + "yes": "Təsdiq sorğusunu ötür" + }, + "list": { + "description": "Yaddaş qeydlərini axtarış sıralaması olmadan sadala", + "type": "Növə görə filtrlə", + "limit": "Maksimum nəticə sayı (standart: 100)", + "api_key": "API açarına görə filtrlə" + }, + "get": { + "description": "ID əsasında tək yaddaş qeydini əldə et" + }, + "delete": { + "description": "Yaddaş qeydini ID əsasında sil", + "yes": "Təsdiq sorğusunu ötür" + }, + "health": { + "description": "Yaddaş alt sisteminin vəziyyətini göstər (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth provayder bağlantılarını idarə et", + "providers": { + "description": "OAuth dəstəkləyən provayderləri və onların axın növlərini siyahıla" + }, + "start": { + "description": "Provayder üçün OAuth avtorizasiya axınını başlat", + "provider": "Provayder ID-si (gemini, copilot, cursor, …)", + "no_browser": "Yalnız URL-ni göstər — brauzeri açma", + "import_system": "Giriş məlumatlarını lokal sistem konfiqurasiyasından avtomatik idxal et", + "social": "Sosial giriş provayderi (google|github) — kiro üçün tələb olunur", + "timeout": "Avtorizasiyanı gözləmə müddəti, ms ilə (standart: 300000)" + }, + "status": { + "description": "Aktiv OAuth bağlantılarını siyahıla", + "provider": "Provayder ID-sinə görə filtrlə" + }, + "revoke": { + "description": "OAuth bağlantısını ləğv et", + "provider": "Ləğv ediləcək provayder ID-si", + "connection_id": "ID-yə görə konkret bağlantını ləğv et", + "yes": "Təsdiq sorğusunu ötür" + } + }, + "cloud": { + "description": "Bulud süni intellekt agenti tapşırıqlarını idarə et (codex, devin, jules)", + "agents": { + "description": "Mövcud bulud agentlərini siyahıla" + }, + "agent": { + "description": "{agent} bulud agentinin tapşırıqlarını idarə et", + "auth": { + "description": "{agent} üçün OAuth vasitəsilə avtorizasiya et" + } + }, + "task": { + "description": "Bulud agenti tapşırıqlarını idarə et", + "create": { + "description": "Yeni agent tapşırığı yarat", + "title": "Tapşırığın başlığı (standart olaraq sorğunun ilk 80 simvolu)", + "prompt": "Tapşırıq sorğusunun mətni", + "prompt_file": "Sorğunu fayldan oxu", + "repo": "Tapşırıq üçün klonlanacaq repozitoriyanın URL-si", + "branch": "İstifadə ediləcək budağın adı", + "metadata": "JSON metadata obyekti" + }, + "list": { + "description": "Agent tapşırıqlarını siyahıla", + "status": "Statusa görə filtrlə (running|completed|failed|cancelled)", + "limit": "Maksimum nəticə sayı (standart: 50)" + }, + "get": { + "description": "ID-yə görə tapşırıq təfərrüatlarını əldə et" + }, + "status": { + "description": "Tapşırıq statusunu göstər (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "İcra olunan tapşırığı ləğv et", + "yes": "Təsdiq sorğusunu ötür" + }, + "approve": { + "description": "İcraya başlamaq üçün agent planını təsdiqlə" + }, + "message": { + "description": "İcra olunan tapşırığa mesaj göndər" + } + }, + "sources": { + "description": "Tapşırıq tərəfindən yaradılmış mənbə fayllarını siyahıla" + } + }, + "eval": { + "description": "Qiymətləndirmə paketlərini və icralarını idarə et", + "suites": { + "description": "Qiymətləndirmə paketlərini idarə et", + "list": { + "description": "Qiymətləndirmə dəstlərini siyahıya al" + }, + "get": { + "description": "Qiymətləndirmə dəstinin təfərrüatlarını ID üzrə əldə et" + }, + "create": { + "description": "JSON faylından qiymətləndirmə dəsti yarat", + "file": "Dəst tərifinin JSON faylına gedən yol" + } + }, + "run": { + "description": "Dəst üçün qiymətləndirmə icrasını başlat", + "model": "Qiymətləndiriləcək model ID-si (standart: auto)", + "combo": "Adına görə konkret kombinasiyanı məcburi seç", + "concurrency": "Paralel nümunələrin sayı (standart: 4)", + "tag": "Sonradan filtrləmək üçün bu icranı teqlə", + "watch": "İcra tamamlanana qədər gedişatını izlə" + }, + "list": { + "description": "Qiymətləndirmə icralarını siyahıya al", + "suite": "Dəst ID-sinə görə filtrlə", + "status": "Statusa görə filtrlə", + "since": "Bu vaxt möhüründən sonrakı icraları qaytar", + "limit": "Maksimum nəticə sayı (standart: 50)" + }, + "get": { + "description": "Qiymətləndirmə icrasının təfərrüatlarını ID üzrə əldə et" + }, + "results": { + "description": "Qiymətləndirmə icrası üçün nümunə nəticələrini göstər", + "failed": "Yalnız uğursuz nümunələri göstər" + }, + "cancel": { + "description": "Davam edən qiymətləndirməni ləğv et", + "yes": "Təsdiq sorğusunu keç" + }, + "scorecard": { + "description": "Tamamlanmış qiymətləndirmə icrası üçün qiymət cədvəlini göstər" + } + }, + "webhooks": { + "description": "OmniRoute vebhuklarını idarə et", + "events": { + "description": "Bütün mövcud vebhuk hadisə növlərini siyahıya al" + }, + "list": { + "description": "Konfiqurasiya edilmiş vebhukları siyahıya al" + }, + "get": { + "description": "Vebhuk təfərrüatlarını ID üzrə əldə et" + }, + "add": { + "description": "Yeni vebhuk qeydiyyatdan keçir", + "url": "Təyinat URL-i", + "events": "Vergüllə ayrılmış hadisə növlərinin siyahısı", + "secret": "HMAC imzalama sirri", + "header": "key=value formatında əlavə başlıq (təkrarlana bilər)", + "no_enabled": "Vebhuku deaktiv vəziyyətdə yarat" + }, + "update": { + "description": "Mövcud vebhuku yenilə", + "enabled": "Aktivlik vəziyyətini təyin et (true|false)" + }, + "remove": { + "description": "Vebhuku sil", + "yes": "Təsdiq sorğusunu keç" + }, + "test": { + "description": "Vebhuka sınaq hadisəsi göndər", + "event": "Simulyasiya ediləcək hadisə növü (standart: request.completed)" + } + }, "program": { "description": "OmniRoute — Avtomatik Fallback ilə Ağıllı AI Marşrutlaşdırıcısı", "version": "Versiyasını çap et və çıx", @@ -26,7 +832,509 @@ "context": "Bu əmr üçün server konteksti/profili", "lang": "CLI ekran dilini təyin edin (OMNIROUTE_LANG-ı keçir)" }, - "redis": { - "description": "OmniRoute keşfi və kvota izləmə üçün 1 kliklə yerli Redis konteynerini (Podman və ya Docker) işə salın" + "files": { + "description": "Faylları idarə et (yüklə, siyahıya al, əldə et, endir, sil)", + "list": { + "purpose": "Təyinata görə filtrlə", + "limit": "Maksimum nəticə sayı" + }, + "get": { + "description": "Fayl metadatasını əldə edin" + }, + "upload": { + "description": "Fayl yükləyin", + "purpose": "Faylın təyinatı (batch, assistants, fine-tune)" + }, + "content": { + "description": "Fayl məzmununu endirin", + "out": "Yaddaş yolu (standart: stdout)" + }, + "delete": { + "yes": "Təsdiqi keçin" + } + }, + "batches": { + "description": "OpenAI-uyğun paket tapşırıqlarını idarə edin", + "list": { + "status": "Statusa görə filtrləyin", + "limit": "Maksimum nəticə sayı" + }, + "create": { + "description": "Paket tapşırığı yaradın", + "inputFile": "Giriş faylının ID-si", + "endpoint": "Hədəf son nöqtə", + "window": "Tamamlanma müddəti", + "metadata": "Metadata əlavə edin: key=value" + }, + "submit": { + "description": "JSONL faylını yükləyib paket yaradın", + "jsonl": "JSONL faylının yolu", + "endpoint": "Hədəf son nöqtə", + "wait": "Tamamlanmasını gözləyin" + }, + "cancel": { + "yes": "Təsdiqi keçin" + }, + "wait": { + "timeout": "Taymaut, ms ilə" + }, + "output": { + "out": "Çıxışı göstərilən yolda yadda saxlayın" + }, + "errors": { + "out": "Xətaları göstərilən yolda yadda saxlayın" + } + }, + "translator": { + "description": "Sorğu gövdələrini LLM formatları arasında çevirin", + "detect": { + "description": "Gövdə formatını müəyyənləşdirin" + }, + "translate": { + "description": "Gövdəni bir formatdan digərinə çevirin" + }, + "send": { + "description": "Çevirin və yuxarı axına göndərin" + }, + "stream": { + "description": "Sorğu gövdəsini axın rejimində çevirin" + }, + "from": "Mənbə formatı (openai|anthropic|gemini|cohere)", + "to": "Hədəf formatı (openai|anthropic|gemini|cohere)", + "file": "Sorğu gövdəsinin JSON faylına gedən yol", + "out": "Çıxışı faylda yadda saxlayın", + "model": "Modeli əvəz edin", + "history": { + "limit": "Maksimum nəticə sayı" + } + }, + "pricing": { + "description": "Modellər üçün qiymət məlumatlarını idarə edin", + "sync": { + "description": "Qiymətləri yuxarı axın mənbələri ilə sinxronlaşdırın", + "provider": "Provayderə görə filtrləyin", + "force": "Məcburi yenidən sinxronlaşdırın" + }, + "list": { + "provider": "Provayderə görə filtrləyin", + "model": "Modelə görə filtrləyin", + "limit": "Maksimum nəticə sayı" + }, + "defaults": { + "description": "Standart qiymətləndirməni idarə et", + "input": "1 milyon token üçün giriş xərci (USD)", + "output": "1 milyon token üçün çıxış xərci (USD)", + "cacheRead": "1 milyon token üçün keşdən oxuma xərci (USD)", + "cacheWrite": "1 milyon token üçün keşə yazma xərci (USD)" + }, + "diff": { + "description": "Yuxarı mənbədəki qiymətlərdən fərqi göstər", + "model": "Modelə görə filtrlə" + } + }, + "radar": { + "description": "Lokal Radar kataloq lentlərini yoxla və sinxronlaşdır", + "status": "Lokal Radar parametrlərini və lent keşinin vəziyyətini göstər", + "sync": "Kataloqu, yönləndirmələri, təklifləri və Intel-i lokal server vasitəsilə sinxronlaşdır" + }, + "resilience": { + "description": "Dayanıqlılıq mexanizmlərini yoxla və idarə et", + "status": { + "provider": "Provayderə görə filtrlə" + }, + "breakers": { + "provider": "Provayderə görə filtrlə" + }, + "cooldowns": { + "provider": "Provayderə görə filtrlə", + "connectionId": "Bağlantı ID-sinə görə filtrlə" + }, + "lockouts": { + "provider": "Provayderə görə filtrlə", + "model": "Modelə görə filtrlə" + }, + "reset": { + "description": "Kəsici/gözləmə vəziyyətini sıfırla", + "provider": "Sıfırlanacaq provayder", + "connectionId": "Sıfırlanacaq bağlantı ID-si", + "model": "Bloklanması sıfırlanacaq model", + "allCooldowns": "Provayder üçün bütün gözləmə müddətlərini sıfırla", + "yes": "Təsdiqi keç" + }, + "profile": { + "description": "Dayanıqlılıq profilini idarə et", + "name": "Profil adı" + }, + "config": { + "description": "Dayanıqlılıq konfiqurasiyasını idarə et", + "threshold": "Uğursuzluq həddi", + "resetTimeout": "Sıfırlama taymautu, ms", + "baseCooldown": "Əsas gözləmə müddəti, ms" + } + }, + "nodes": { + "description": "Provayder qovşaqlarını (son nöqtələri) idarə et", + "list": { + "provider": "Provayderə görə filtrlə", + "enabled": "Yalnız aktiv qovşaqları göstər" + }, + "add": { + "provider": "Provayder adı", + "baseUrl": "Qovşaq üçün baza URL-si", + "name": "Qovşağın adı", + "weight": "Yük balanslaşdırma çəkisi", + "region": "Region teqi", + "authHeader": "Fərdi autentifikasiya başlığı (key=value)" + }, + "update": { + "baseUrl": "Yeni baza URL-si", + "name": "Yeni ad", + "weight": "Yeni çəki", + "region": "Yeni region", + "enabled": "Aktivləşdirin və ya deaktivləşdirin (true|false)" + }, + "remove": { + "yes": "Təsdiqi keçin" + }, + "validate": { + "baseUrl": "Yoxlanılacaq URL", + "provider": "Yoxlamanın aparılacağı provayder" + }, + "test": { + "description": "Qovşağa test sorğusu göndərin" + }, + "metrics": { + "description": "Qovşaq metrikalarını göstərin", + "period": "Vaxt müddəti (məs. 24h, 7d)" + } + }, + "context": { + "description": "Kontekst mühəndisliyi konveyerini konfiqurasiya edin (Caveman, RTK)", + "analytics": { + "period": "Vaxt müddəti (məs. 7d, 30d)" + }, + "caveman": { + "description": "Caveman kontekst sıxlaşdırıcısını idarə edin", + "config": { + "description": "Caveman konfiqurasiyasını göstərin və ya yeniləyin", + "aggressiveness": "Aqressivlik 0.0–1.0", + "maxShrinkPct": "Maksimum kiçiltmə faizi", + "preserveTags": "Qorunacaq vergüllə ayrılmış teqlər" + } + }, + "rtk": { + "description": "RTK kontekst optimallaşdırıcısını idarə edin", + "config": { + "description": "RTK konfiqurasiyasını göstərin və ya yeniləyin", + "tokenBudget": "RTK üçün token büdcəsi", + "reservePct": "Ehtiyat faizi" + }, + "filters": { + "description": "RTK filtrlərini idarə edin", + "pattern": "Filtr nümunəsi (regex)", + "priority": "Filtr prioriteti (standart: 100)", + "action": "Filtr əməli: drop|shrink|replace", + "yes": "Təsdiqi keçin" + }, + "test": { + "file": "Sorğu JSON faylına yol" + } + }, + "combos": { + "description": "Kontekstdən xəbərdar kombinasiya idarəetməsi" + } + }, + "sessions": { + "description": "Aktiv sessiyaları yoxlayın və idarə edin", + "list": { + "user": "İstifadəçiyə görə filtrləyin", + "kind": "Növə görə filtrləyin (dashboard|api-key|mcp|a2a)", + "active": "Yalnız aktiv sessiyaları göstərin", + "limit": "Maksimum nəticə sayı (standart: 100)" + }, + "expire": { + "yes": "Təsdiqi keçin" + }, + "expireAll": { + "user": "Sessiyaları bitiriləcək istifadəçi", + "yes": "Təsdiqi keçin" + } + }, + "tags": { + "description": "Resurs teqlərini idarə edin", + "add": { + "color": "Teq rəngi (hex və ya ad)", + "description": "Teq təsviri" + }, + "remove": { + "yes": "Təsdiqi keçin" + }, + "assign": { + "tag": "Teq adı", + "to": "Hədəf resursu type:id formatında (məs., provider:openai)" + }, + "unassign": { + "tag": "Teq adı", + "from": "Mənbə resursu type:id formatında" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI spesifikasiyasına daxil olun və onu sınaqdan keçirin", + "dump": { + "description": "OpenAPI spesifikasiyasını stdout-a və ya fayla çıxarın", + "format": "Çıxış formatı: yaml|json (standart: yaml)", + "out": "Fayl yolunda saxlayın" + }, + "validate": { + "description": "OpenAPI spesifikasiyasını doğrulayın" + }, + "try": { + "description": "Spesifikasiya vasitəsilə API son nöqtəsini sınaqdan keçirin", + "method": "HTTP metodu (standart: GET)", + "body": "Sorğu gövdəsinin JSON faylına gedən yol", + "query": "Sorğu parametri key=value formatında (təkrarlana bilər)", + "header": "Başlıq key=value formatında (təkrarlana bilər)" + }, + "endpoints": { + "description": "Bütün API son nöqtələrini siyahıya alın", + "search": "Yola və ya xülasəyə görə filtrləyin" + }, + "paths": { + "description": "Bütün API yollarını siyahıya alın" + } + }, + "combo": { + "title": "Kombinasiyalar", + "switched": "Aktiv kombinasiya: {name}", + "created": "Kombinasiya yaradıldı: {name}", + "deleted": "Kombinasiya silindi: {name}", + "noCombos": "Heç bir kombinasiya konfiqurasiya edilməyib.", + "confirmDelete": "{name} kombinasiyası silinsin?", + "suggest": { + "description": "Süni intellekt qiymətləndirməsindən istifadə edərək tapşırıq üçün ən yaxşı kombinasiyanı təklif edin", + "task": "Tapşırığın təsviri", + "maxCost": "Hər sorğu üçün ABŞ dolları ilə maksimum xərc", + "maxLatencyMs": "Millisaniyə ilə maksimum gecikmə", + "weights": "JSON qiymətləndirmə çəkiləri, məsələn, {\"latency\":0.7,\"cost\":0.3}", + "top": "Göstəriləcək ən yaxşı namizədlərin sayı (standart: 5)", + "explain": "Əsaslandırmanı stderr-ə çıxarın", + "switch": "Ən yüksək reytinqli kombinasiyanı aktivləşdirin" + } + }, + "oneproxy": { + "description": "OneProxy yuxarı axın hovuzunu idarə edin", + "stats": { + "provider": "Provayderə görə filtrləyin", + "period": "Vaxt müddəti (standart: 24h)" + }, + "fetch": { + "description": "Hovuzdan proksiləri əldə edin", + "count": "Əldə ediləcək proksilərin sayı (standart: 1)", + "type": "Proksi növü: http|socks5 (standart: http)" + }, + "rotate": { + "description": "Proksinin məcburi rotasiyası", + "provider": "Rotasiya ediləcək provayder", + "connectionId": "Rotasiya ediləcək konkret bağlantı ID-si" + }, + "config": { + "description": "OneProxy konfiqurasiyasını göstərin və ya yeniləyin", + "enabled": "Proksi hovuzunu aktivləşdir (true|false)", + "poolSize": "Hovuz ölçüsü", + "providerSource": "Proksi provayderinin URL-i", + "rotationPolicy": "Rotasiya siyasəti: sticky|per-request|periodic" + }, + "pool": { + "description": "Cari proksi hovuzunu metrikalarla birlikdə siyahıla" + } + }, + "open": { + "description": "OmniRoute idarəetmə panelinin müəyyən səhifəsini brauzerdə aç", + "url": "Yalnız URL-i çap et, brauzeri açma" + }, + "telemetry": { + "description": "Ümumiləşdirilmiş telemetriya məlumatlarına giriş əldə et", + "summary": { + "description": "Ümumiləşdirilmiş telemetriya xülasəsini göstər", + "period": "Vaxt dövrü: 24h|7d|30d (standart: 24h)", + "compareTo": "Əvvəlki dövrlə müqayisə et" + }, + "export": { + "description": "Telemetriya hadisələrini JSONL formatında ixrac et", + "out": "Çıxış faylının yolu (standart: telemetry.jsonl)", + "period": "İxrac üçün vaxt dövrü (standart: 7d)" + } + }, + "sync": { + "description": "Konfiqurasiyanı OmniRoute instansiyaları arasında sinxronlaşdır", + "push": { + "description": "Konfiqurasiyanı buluda və ya uzaq instansiyaya göndər", + "target": "Hədəf (cloud və ya context:name)", + "bundle": "Sinxronlaşdırılacaq paket hissələri", + "dryRun": "Tətbiq etmədən önizlə" + }, + "pull": { + "description": "Konfiqurasiyanı buluddan və ya uzaq instansiyadan əldə et", + "source": "Mənbə (cloud və ya context:name)", + "merge": "Mövcud konfiqurasiya ilə birləşdir", + "replace": "Mövcud konfiqurasiyanı əvəz et", + "dryRun": "Tətbiq etmədən önizlə" + }, + "diff": { + "source": "Mənbə konteksti", + "target": "Hədəf konteksti" + }, + "bundle": { + "description": "Konfiqurasiyanı paket faylı kimi ixrac et", + "include": "Daxil ediləcək hissələr (vergüllə ayrılmış)" + }, + "import": { + "description": "Paket faylını idxal et", + "dryRun": "Tətbiq etmədən doğrula" + }, + "initialize": { + "fromCloud": "Bulud ehtiyat nüsxəsindən ilkin quraşdırma et" + }, + "tokens": { + "description": "Sinxronlaşdırma tokenlərini idarə et", + "create": { + "name": "Token adı", + "scope": "Token əhatə dairəsi", + "ttl": "Tokenin TTL müddəti (məs. 30d)" + }, + "revoke": { + "yes": "Təsdiqi keç" + } + }, + "resolve": { + "description": "Sinxronlaşdırma ziddiyyətlərini interaktiv şəkildə həll et" + } + }, + "config": { + "contexts": { + "description": "Server kontekstlərini/profillərini idarə et (əlavə et, istifadə et, siyahıla, göstər, sil, adını dəyiş, ixrac et, idxal et)" + }, + "lang": { + "description": "CLI ekran dilini idarə et", + "getDescription": "Hazırda aktiv olan dil kodunu göstər", + "setDescription": "Göstəriş dilini təyin edin və konfiqurasiyada saxlayın", + "listDescription": "Bütün mövcud dilləri sadalayın", + "listTitle": "Mövcud dillər", + "current": "Dil: {code} ({name})", + "saved": "Dil {code} ({name}) olaraq təyin edildi.", + "noCode": "Dil kodu tələb olunur. Mövcud kodları görmək üçün 'omniroute config lang list' əmrini işə salın.", + "unknown": "Naməlum dil kodu: {code}. Mövcud kodları görmək üçün 'omniroute config lang list' əmrini işə salın.", + "alreadySet": "Dil artıq {code} olaraq təyin edilib.", + "envHint": "İpucu: mühitinizdə OMNIROUTE_LANG={code} dəyişənini də təyin edə bilərsiniz." + } + }, + "completion": { + "description": "Komanda qabığı üçün avtomatik tamamlama skriptlərini yaradın və ya quraşdırın", + "zsh": "zsh avtomatik tamamlama skriptini çıxışa verin", + "bash": "bash avtomatik tamamlama skriptini çıxışa verin", + "fish": "fish avtomatik tamamlama skriptini çıxışa verin", + "install": "Avtomatik aşkarlanmış komanda qabığı üçün tamamlama skriptini qlobal olaraq quraşdırın", + "refresh": "Kombinasiyalar/provayderlər/modellər keşini yeniləyin" + }, + "logs": { + "description": "Sorğu jurnallarını real vaxtda yayımlayın və ya ixrac edin", + "follow": "Jurnalları real vaxtda yayımlayın", + "filter": "Səviyyəyə görə filtrləyin (error,warn,info) — vergüllə ayrılmış", + "lines": "Gətiriləcək sətirlərin sayı", + "timeout": "Bağlantı vaxt aşımı, ms ilə", + "baseUrl": "OmniRoute API baza URL-si", + "requestId": "Sorğu ID-sinə görə filtrləyin", + "apiKey": "API açarına görə filtrləyin", + "combo": "Kombinasiya adına görə filtrləyin", + "status": "HTTP status koduna görə filtrləyin", + "durationMin": "Minimum sorğu müddəti, ms ilə", + "durationMax": "Maksimum sorğu müddəti, ms ilə", + "export": "Jurnalları faylda saxlayın (json/jsonl/csv)", + "exported": "Jurnallar {path} ünvanında saxlanıldı", + "stopped": "Jurnal yayımı dayandırıldı.", + "streamError": "Jurnal yayımı xətası: {message}" + }, + "tray": { + "description": "Sistem treyi ikonunu idarə edin", + "show": "Trey ikonunu göstərin (server --tray ilə işləyirsə)", + "hide": "Trey ikonunu gizlədin", + "quit": "OmniRoute-dan trey vasitəsilə çıxın" + }, + "autostart": { + "description": "OmniRoute-un sistem açılarkən avtomatik işə salınmasını idarə edin (Linux: systemd istifadəçi xidməti)", + "enable": "Sistem açılarkən avtomatik işə salınmanı aktivləşdirin", + "disable": "Sistem açılarkən avtomatik işə salınmanı deaktivləşdirin", + "toggle": "Sistem açılarkən avtomatik işə salınmanı dəyişdirin", + "status": "Avtomatik işə salınma statusunu göstərin" + }, + "runtime": { + "description": "Yerli icra mühiti asılılıqlarını idarə edin", + "check": "İcra mühiti qovluğundakı yerli asılılıqların vəziyyətini yoxlayın", + "repair": "İcra mühiti qovluğundakı yerli asılılıqları yenidən quraşdırın", + "repair_force": "Etibarlı olsa belə, məcburi şəkildə yenidən quraşdırın", + "clean": "İcra mühiti qovluğunu silin (disk sahəsini boşaldır)", + "clean_yes": "Təsdiqi ötürün" + }, + "repl": { + "description": "LLM ilə interaktiv, çoxmərhələli REPL", + "model": "İstifadə ediləcək model (standart: auto)", + "combo": "İstifadə ediləcək kombinasiya adı", + "system": "Sistem sorğusu", + "resume": "Saxlanılmış sessiyanı adına görə davam etdirin" + }, + "plugin": { + "description": "CLI plaginlərini idarə edin (omniroute-cmd-*)", + "list": "Quraşdırılmış plaginləri siyahıya alın", + "install": "npm-dən və ya lokal yoldan plagin quraşdırın", + "remove": "Quraşdırılmış plagini silin", + "info": "Quraşdırılmış plagin haqqında ətraflı məlumat göstərin", + "search": "Mövcud plaginlər üçün npm reyestrində axtarış aparın", + "update": "Quraşdırılmış plagin(lər)i yeniləyin", + "scaffold": "Yeni plagin üçün başlanğıc şablonu yaradın" + }, + "launch": { + "description": "OmniRoute-a yönləndirilmiş Claude Code-u işə salın (lokal və ya uzaqdan, --profile ilə)", + "token": "Claude klientinin göndərməli olduğu token (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute {port} portunda əlçatan deyil. Onu 'omniroute serve' ilə başladın.", + "notFound": "'claude' CLI PATH-də tapılmadı." + }, + "run": { + "description": "Dəstəklənən CLI hədəfini OmniRoute vasitəsilə işə salın" + }, + "setupClaude": { + "description": "OmniRoute model kataloqundan ~/.claude/profiles Claude Code profilləri yaradın" + }, + "connect": { + "description": "Uzaq OmniRoute serverinə qoşulun və uzaq rejimə keçin" + }, + "tokens": { + "description": "Əhatə dairəsi məhdudlaşdırılmış CLI giriş tokenlərini idarə edin (uzaq rejim)" + }, + "configure": { + "description": "Aktiv serverdən provider+model seçin və dəstəklənən lokal CLI-ni konfiqurasiya edin" + }, + "launchCodex": { + "description": "OmniRoute-a yönləndirilmiş Codex CLI-ni işə salın (lokal və ya uzaq VPS)" + }, + "setupCodex": { + "description": "OmniRoute-un canlı model kataloqundan ~/.codex profil faylları yaradın" + }, + "packs": { + "description": "Əlavə icra mühiti paketlərini idarə edin (ML / brauzer avtomatlaşdırması)", + "listDescription": "Əlavə paketləri və onların quraşdırılma vəziyyətini siyahıya alın", + "installDescription": "Əlavə paketi DATA_DIR daxilində quraşdırın", + "verifyDescription": "Quraşdırılmış paketləri təqdim edilən yoxlama cəmi indeksi ilə yoxlayın", + "removeDescription": "Quraşdırılmış əlavə paketi silin", + "sourceOpt": "Paket məzmunlarını və paket indeksini saxlayan qovluq", + "warnNoIndex": "optional-packs.index.json tapılmadı — bu mənbə nüsxəsində quraşdırma/yoxlama əlçatan deyil (masaüstü paketlərdə bu fayl mövcuddur)", + "errUnknown": "naməlum paket: {name}", + "errNoIndex": "paket indeksi tapılmadı; paket məzmununun yerləşdiyi qovluğu --source ilə göstərin (masaüstü paketlərdə o, tətbiqin yanında təqdim edilir)", + "installed": "\"{name}\" paketi {dir} qovluğunda quraşdırıldı və yoxlanıldı", + "restartHint": "icra mühitinin paketi tanıması üçün OmniRoute serverini (və ya masaüstü tətbiqini) yenidən başladın", + "removed": "\"{name}\" paketi silindi", + "notInstalled": "\"{name}\" paketi quraşdırılmamışdı", + "verifyOk": "bütün quraşdırılmış paketlər yoxlanıldı", + "verifyFailed": "{count} paket yoxlamadan keçmədi", + "noneInstalled": "heç bir əlavə paket quraşdırılmayıb" } } diff --git a/bin/cli/locales/bg.json b/bin/cli/locales/bg.json index 16cd004ce8..b560fc2c8a 100644 --- a/bin/cli/locales/bg.json +++ b/bin/cli/locales/bg.json @@ -14,6 +14,812 @@ "jsonOpt": "Изход като JSON", "yesOpt": "Пропускане на потвърждение" }, + "setup": { + "title": "Настройка на OmniRoute", + "passwordPrompt": "Администраторска парола", + "providerPrompt": "Доставчик по подразбиране (оставете празно, за да пропуснете)", + "done": "Настройката е завършена", + "passwordSet": "Администраторската парола е конфигурирана", + "providerSet": "Конфигуриран доставчик: {name}", + "testingProvider": "Тестване на връзката с доставчика: {name}", + "testPassed": "Тестът на доставчика е успешен", + "testFailed": "Тестът на доставчика е неуспешен: {error}", + "loginEnabled": "Вход: активиран (паролата е актуализирана)", + "loginDisabled": "Вход: деактивиран", + "providerInfo": "Доставчик: {info}", + "opencode": "Инсталиране и конфигуриране на включения @omniroute/opencode-plugin за OpenCode" + }, + "doctor": { + "title": "Диагностика на OmniRoute", + "dbOk": "База данни: ОК ({path})", + "dbMissing": "База данни: не е инициализирана — изпълнете `omniroute setup`", + "portOk": "Порт {port}: свободен", + "portConflict": "Порт {port}: използва се от друг процес", + "encryptionOk": "Ключ за шифроване: конфигуриран", + "encryptionMissing": "Липсва ключ за шифроване — изпълнете `omniroute setup`", + "allGood": "Всички проверки са успешни.", + "warnings": "{count} предупреждение(я) — вижте по-горе." + }, + "providers": { + "title": "Доставчици", + "noProviders": "Няма конфигурирани доставчици. Изпълнете: omniroute setup", + "testing": "Тестване на {name}...", + "available": "Налични доставчици: {count}", + "connected": "Свързан", + "disconnected": "Несвързан", + "validationFailed": "Неуспешна проверка: {error}", + "metrics": { + "description": "Показване на показатели за производителността на доставчиците (латентност, процент на успеваемост, цена)", + "provider": "Филтриране по ИД на доставчик", + "connection_id": "Филтриране по ИД на връзка", + "period": "Период от време: 1h|6h|24h|7d|30d (по подразбиране: 24h)", + "metric": "Фокусиране върху конкретно поле на показател", + "sort": "Сортиране по поле (низходящо)", + "limit": "Максимален брой редове (по подразбиране: 50)", + "watch": "Опресняване на всеки 5s (режим на живо)", + "compare": "Разделени със запетаи ИД на доставчици за паралелно сравнение" + }, + "metric_single": { + "description": "Получаване на единична стойност на показател за конкретна връзка" + }, + "rotate": { + "description": "Подмяна на upstream API ключа за връзка с доставчик", + "newKeyOpt": "Нова стойност на API ключа (избягвайте: предпочитайте --from-env)", + "fromEnvOpt": "Прочитане на новия ключ от променливата на средата VAR", + "oauthOpt": "Вместо това стартиране на процеса за повторно OAuth удостоверяване", + "skipTestOpt": "Пропускане на теста за свързаност след ротацията", + "dryRunOpt": "Показване какво би се променило, без записване", + "confirmPrompt": "Да се замени ли API ключът за връзката „{name}“ ({id})? [y/N]", + "dryRunResult": "[dry-run] Ключът за „{name}“ ({id}) би бил сменен. Не са направени промени.", + "oauthHint": "OAuth връзка — изпълнете: omniroute oauth {provider}", + "envVarEmpty": "Променливата на средата {var} не е зададена или е празна.", + "success": "Ключът за „{name}“ е сменен. Изпълнете `providers test {id}` за проверка.", + "testPassed": "Тестът след ротацията е успешен.", + "testFailed": "Тестът след ротацията е неуспешен: {error}" + }, + "status": { + "description": "Показване на състоянието на ключовете за всички връзки с доставчици (възраст, изтичане, период на изчакване)", + "providerOpt": "Филтриране по име на доставчик", + "header": "ИД Доставчик Име Статус на изтичане Статус на теста Изчакване до", + "noData": "Няма налични данни за връзки с доставчици.", + "requiresServer": "providers status изисква OmniRoute сървърът да работи." + } + }, + "keys": { + "title": "API ключове", + "addDescription": "Добавяне или актуализиране на API ключ за доставчик", + "listDescription": "Показване на всички конфигурирани API ключове", + "removeDescription": "Премахване на API ключ за доставчик", + "regenerateDescription": "Повторно генериране на OmniRoute API ключ", + "revokeDescription": "Отмяна на OmniRoute API ключ", + "revealDescription": "Показване на немаскираната стойност на API ключа", + "usageDescription": "Показване на скорошната употреба на API ключ", + "usageLimitOpt": "Брой скорошни заявки", + "rotateDescription": "Генериране на нов ключ и обезсилване на стария", + "graceOpt": "Гратисен период (ms), преди старият ключ да бъде обезсилен", + "stdinOpt": "Прочитане на API ключа от stdin вместо от аргумент", + "added": "Добавен е ключ за {provider}.", + "removed": "Ключът е премахнат.", + "listed": "{count} ключ(а).", + "noKeys": "Няма конфигурирани ключове.", + "noUsage": "Не са намерени данни за употреба.", + "confirmRemove": "Да се премахне ли ключът {id}?", + "confirmRegenerate": "Да се генерира ли повторно ключът {id}?", + "confirmRevoke": "Да се отмени ли ключът {id}?", + "confirmRotate": "Да се смени ли ключът {id}? (старият ключ ще бъде обезсилен след гратисния период)", + "regenerated": "Генериран повторно. Нов ключ: {key}", + "revoked": "Ключът {id} е отменен.", + "rotated": "Ключът {id} е подменен. Идентификатор на новия ключ: {newId}", + "revealWarning": "⚠ Това ще покаже целия немаскиран ключ. Уверете се, че екранът ви не се вижда от други хора.", + "providerRequired": "Доставчикът е задължителен.", + "keyRequired": "API ключът е задължителен.", + "stdinEmpty": "Не е предоставен API ключ чрез stdin.", + "unknownProvider": "Неизвестен доставчик: {provider}", + "policy": { + "title": "Политика за ключа", + "showDescription": "Показване на политиката за честота/разходи за даден ключ", + "setDescription": "Задаване на политика за честота/разходи за даден ключ", + "rateLimitOpt": "Максимален брой заявки в минута", + "maxCostOpt": "Максимален разход на ден (USD)", + "allowedModelsOpt": "Списък с разрешени модели, разделени със запетаи", + "nothingToSet": "Не са предоставени полета за политиката. Използвайте --rate-limit, --max-cost или --allowed-models.", + "updated": "Политиката е актуализирана." + }, + "expiration": { + "title": "Изтичане на валидността на ключа", + "listDescription": "Показване на ключовете с предстоящо изтичане", + "daysOpt": "Показване на ключовете, чиято валидност изтича в рамките на N дни", + "none": "Няма ключове, чиято валидност изтича в рамките на {days} дни.", + "listTitle": "Ключове, чиято валидност изтича в рамките на {days} дни:" + } + }, + "authExport": { + "description": "Експортиране на ДЕКРИПТИРАНИ идентификационни данни за доставчика (само локално, изход като обикновен текст)", + "idOpt": "Експортиране само на връзката, съответстваща на този идентификатор/име/доставчик", + "formatOpt": "Формат на изхода: json или env", + "outOpt": "Записване на изхода във файл вместо в stdout (с права 0600)", + "forceOpt": "Потвърдете, че разбирате, че това извежда/записва тайни като обикновен текст", + "warning": "⚠ Това извежда/записва ДЕКРИПТИРАНИ API ключове и OAuth токени като обикновен текст. Уверете се, че екранът, историята на shell и всички изходни файлове остават поверителни.", + "confirmHeading": "⚠ ПРЕДУПРЕЖДЕНИЕ: това експортира ДЕКРИПТИРАНИ идентификационни данни за доставчика като обикновен текст", + "confirmBody": "Тази команда декриптира и извежда/записва apiKey, accessToken, refreshToken и\nidToken за избраната връзка или връзки. Третирайте изхода като тайна.", + "confirmFooter": "За потвърждение изпълнете:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY е задължителен за експортиране на идентификационни данни.", + "notFound": "Връзката не е намерена: {id}", + "invalidFormat": "Невалиден формат: {format}. Използвайте json или env." + }, + "stream": { + "description": "Поточно предаване на отговор от чат с режими за проверка на SSE", + "file": "Прочитане на подкана от файл", + "stdin": "Прочитане на подкана от stdin", + "model": "Идентификатор на модел (по подразбиране: auto)", + "system": "Системна подкана", + "combo": "Принудително използване на конкретна комбинация по име", + "max_tokens": "Максимален брой токени в отговора", + "responses_api": "Използване на /v1/responses вместо /v1/chat/completions", + "raw": "Извеждане на необработените SSE редове във вида, в който са получени", + "debug": "Извеждане на информация за времето за всеки фрагмент в stderr", + "save": "Запазване на всички SSE събития във файл .jsonl", + "error": { + "empty_prompt": "Грешка: изисква се подкана (позиционен аргумент, --file или --stdin)" + } + }, + "usage": { + "description": "Анализи на използването, бюджети, квоти и регистрационни файлове", + "analytics": { + "description": "Показване на обобщени анализи на използването", + "period": "Период: 1d|7d|30d|90d|ytd|all (по подразбиране: 30d)", + "provider": "Филтриране по ID на доставчик" + }, + "budget": { + "description": "Управление на бюджетите за разходи", + "set": { + "scope": "Обхват на бюджета (по подразбиране: глобален)", + "period": "Период на бюджета: daily|weekly|monthly (по подразбиране: monthly)" + } + }, + "quota": { + "description": "Показване на използването на квотата на доставчика", + "provider": "Филтриране по ID на доставчик", + "check": "Показване дали има налична квота за нова заявка" + }, + "logs": { + "description": "Показване на регистрационните файлове за извикванията на заявки", + "limit": "Брой записи от регистрационния файл за връщане (по подразбиране: 100)", + "search": "Заявка за търсене за филтриране на регистрационните файлове", + "since": "Връщане на регистрационни записи след този времеви маркер", + "follow": "Непрекъснато проследяване на новите регистрационни записи", + "api_key": "Филтриране на регистрационните файлове по API ключ" + }, + "utilization": { + "description": "Показване на показатели за използването на API ключове", + "api_key": "Филтриране по API ключ" + }, + "history": { + "description": "Показване на хронологията на заявките", + "limit": "Брой записи в хронологията (по подразбиране: 100)" + }, + "proxy_logs": { + "description": "Показване на регистрационните файлове за заявки на ниво прокси", + "limit": "Брой записи от регистрационния файл на проксито (по подразбиране: 100)" + } + }, + "cost": { + "description": "Показване на отчет за разходите с разбивка по доставчик, модел, комбинация или API ключ", + "period": "Период: 1d|7d|30d|90d|ytd|all (по подразбиране: 30d)", + "since": "Начална дата (ISO формат, напр. 2026-01-01) — замества --period", + "until": "Крайна дата (ISO формат)", + "group_by": "Групиране на резултатите по: provider|model|api-key|combo|day (по подразбиране: provider)", + "api_key_filter": "Филтриране по конкретен API ключ", + "limit": "Максимален брой редове за показване (по подразбиране: 100)" + }, + "simulate": { + "description": "Симулация на маршрутизирането без изпълнение — показва кои доставчици биха били избрани, без да се извиква услугата нагоре по веригата", + "file": "Зареждане на пълното тяло на заявката от JSON файл", + "model": "ID на модела (по подразбиране: auto)", + "combo": "Принудително използване на конкретна комбинация по име", + "reasoning": "Ниво на усилие за разсъждение (low|medium|high)", + "thinking": "Бюджет от токени за разширено разсъждение", + "explain": "Извеждане на дървото за резервни варианти и диапазона на разходите в stderr", + "noCombo": "Не е намерена съответстваща комбинация. Конфигурирайте такава с: omniroute combo create" + }, + "chat": { + "description": "Изпращане на еднократна чат подкана към OmniRoute", + "file": "Прочитане на подканата от файл", + "stdin": "Прочитане на подканата от stdin", + "system": "Системна подкана", + "model": "ID на модела (по подразбиране: auto)", + "max_tokens": "Максимален брой токени в отговора", + "temperature": "Температура на семплиране (0–2)", + "top_p": "Top-p ядрено семплиране", + "reasoning_effort": "Ниво на усилие за разсъждение (low|medium|high)", + "thinking_budget": "Бюджет от токени за разширено разсъждение", + "combo": "Принудително използване на конкретна комбинация по име", + "responses_api": "Използване на /v1/responses вместо /v1/chat/completions", + "stream": "Поточно предаване на отговора на части", + "no_history": "Да не се записва в ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Грешка: изисква се подкана (позиционен аргумент, --file или --stdin)" + } + }, + "serve": { + "description": "Стартиране на сървъра на OmniRoute (действие по подразбиране)", + "starting": "Сървърът на OmniRoute се стартира на порт {port}...", + "ready": "Готов на http://localhost:{port}", + "stopping": "Сървърът се спира (PID {pid})...", + "stopped": "Сървърът е спрян.", + "notRunning": "Сървърът не работи.", + "port": "Порт за слушане (по подразбиране: 20128)", + "no_open": "Да не се отваря браузърът автоматично", + "daemon": "Стартиране на сървъра като фонов демон", + "log": "Показване на сървърните регистрационни записи на място", + "no_recovery": "Деактивиране на автоматичното рестартиране при срив (режим за отстраняване на грешки)", + "max_restarts": "Максимален брой рестартирания след срив в рамките на 30 сек., преди отказване (по подразбиране: 2)", + "tray": "Стартиране в системната област (само за настолни системи, по избор)", + "no_tray": "Деактивиране на иконата в системната област", + "ready_timeout": "Време за изчакване на проверката за готовност в мс (също OMNIROUTE_READY_TIMEOUT_MS, по подразбиране 60000)", + "tls_cert": "Път до TLS сертификат (PEM) за обслужване чрез HTTPS (също OMNIROUTE_TLS_CERT)", + "tls_key": "Път до частния TLS ключ (PEM) за обслужване чрез HTTPS (също OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Архивиране", + "description": "Създаване на резервно копие на данните на OmniRoute", + "creating": "Създава се резервно копие...", + "done": "Резервното копие е запазено в {path}", + "noFiles": "Няма файлове за архивиране (базата данни не е инициализирана)", + "failed": "Архивирането е неуспешно: {error}", + "restoring": "Възстановяване от {path}...", + "restored": "Възстановяването завърши.", + "restoreDescription": "Възстановяване от резервно копие", + "listTitle": "Налични резервни копия", + "noBackups": "Няма намерени резервни копия.", + "notFound": "Резервното копие не е намерено: {name}", + "confirmRestore": "Да се презапишат ли текущите данни с резервното копие от {ts}?", + "createDescription": "Създаване на резервно копие на данните на OmniRoute", + "nameOpt": "Персонализирано име на резервното копие", + "cloudOpt": "Качване на резервното копие в облачно хранилище", + "encryptOpt": "Шифроване на резервното копие с AES-256-GCM", + "keyFileOpt": "Път до файла, съдържащ паролата за шифроване", + "excludeOpt": "Изключване на файлове, съответстващи на шаблон (може да се повтаря)", + "retentionOpt": "Запазване само на последните N резервни копия", + "passphrasePrompt": "Парола за шифроване:", + "noPassphrase": "За шифровано резервно копие е необходима парола.", + "cloudFailed": "Предупреждение: качването в облака е неуспешно. Локалното резервно копие беше запазено.", + "cloudUploaded": "Резервното копие е качено в облака: {url}", + "auto": { + "title": "График за резервни копия", + "enableDescription": "Активиране на автоматичните резервни копия по график", + "disableDescription": "Деактивиране на автоматичните резервни копия по график", + "statusDescription": "Показване на текущото състояние на графика за резервни копия", + "cronOpt": "Cron израз за графика (по подразбиране: всеки ден в 3 ч.)", + "enabled": "Автоматичното архивиране е активирано (cron: {cron}).", + "hint": "Графикът се прочита от omniroute serve при стартиране.", + "disabled": "Автоматичното архивиране е деактивирано.", + "notConfigured": "Няма конфигуриран график за резервни копия." + } + }, + "health": { + "description": "Проверка на изправността на сървъра и състоянието на компонентите", + "noServer": "Сървърът не работи. Стартирайте го с: omniroute serve", + "title": "Изправност", + "status": "Състояние: {status}", + "uptime": "Време на работа: {uptime}", + "requests": "Заявки (24 ч.): {count}", + "cost": "Разходи (24 ч.): ${cost}" + }, + "quota": { + "description": "Показване на използваната квота на доставчика", + "noServer": "Сървърът не работи. Стартирайте го с: omniroute serve", + "noData": "Няма налична информация за квотата." + }, + "cache": { + "description": "Управление на кеша за отговори", + "noServer": "Сървърът не работи. Стартирайте го с: omniroute serve", + "cleared": "Кешът е изчистен.", + "clearFailed": "Кешът не можа да бъде изчистен." + }, + "redis": { + "description": "Стартиране на локален Redis контейнер с едно щракване (Podman или Docker) за кеширане и проследяване на квота в OmniRoute" + }, + "test": { + "description": "Тестване на връзката с доставчик", + "noServer": "Сървърът не работи. Стартирайте го с: omniroute serve", + "testing": "Тестване на {provider} / {model}...", + "passed": "Връзката е успешна!", + "failed": "Неуспешна връзка: {error}", + "allProvidersOpt": "Тестване на всички конфигурирани доставчици", + "latencyOpt": "Показване на измерванията на латентността (ср./мин./макс. ms)", + "repeatOpt": "Повтаряне на теста N пъти и обобщаване на резултатите", + "compareOpt": "Модели за сравнение, разделени със запетаи (напр. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Запазване на резултатите в JSON файл", + "saved": "Резултатите са запазени в {path}", + "compareTitle": "Сравнение на модели", + "compareMinTwo": "За --compare са необходими поне два модела (разделени със запетаи)", + "noProviders": "Няма конфигурирани доставчици. Добавете такъв с: omniroute keys add" + }, + "update": { + "checking": "Проверка за актуализации...", + "upToDate": "Вече използвате най-новата версия ({version}).", + "available": "Налична е актуализация: {current} → {latest}", + "installing": "Инсталиране на {latest}...", + "done": "Актуализирано до {latest}. Рестартирайте сървъра, за да приложите актуализацията." + }, + "mcp": { + "title": "MCP сървър", + "running": "MCP сървърът работи ({transport})", + "stopped": "MCP сървърът е спрян.", + "restarted": "MCP сървърът е рестартиран.", + "stoppedHint": "Изпълнете `omniroute mcp enable`, за да го включите.", + "enabled": "MCP сървърът е активиран.", + "disabled": "MCP сървърът е деактивиран.", + "enable": { + "description": "Активиране на MCP сървъра", + "transport": "Транспорт за използване: stdio|sse|streamable-http" + }, + "disable": { + "description": "Деактивиране на MCP сървъра" + }, + "call": { + "description": "Директно извикване на MCP инструмент", + "args": "Обект с JSON аргументи (директно подаден)", + "args_file": "Път до файла с JSON аргументи", + "stream": "Използване на крайна точка за поточно предаване (/api/mcp/stream)", + "scope": "Необходим обхват (може да се повтаря, напр. read:health)" + }, + "scopes": { + "description": "Показване на наличните MCP обхвати", + "tool": "Показване на обхватите, изисквани от конкретен инструмент" + }, + "tools": { + "description": "Преглед на MCP инструментите", + "list": { + "description": "Показване на всички MCP инструменти", + "scope": "Филтриране по обхват" + }, + "info": { + "description": "Показване на метаданните за MCP инструмент" + }, + "schema": { + "description": "Показване на входната/изходната JSON схема за MCP инструмент", + "io": "Тип на схемата: input|output (по подразбиране: input)" + } + }, + "audit": { + "description": "Дневник за одит на MCP (псевдоним за audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Извеждане на наличните A2A умения от картата на агента" + }, + "invoke": { + "description": "Извикване на A2A умение и връщане на идентификатора на задачата", + "input": "Входен JSON обект", + "input_file": "Път до входния JSON файл", + "wait": "Изчакване на завършването на задачата преди връщане", + "timeout": "Време за изчакване на завършването в ms (по подразбиране: 60000)" + }, + "tasks": { + "description": "Управление на A2A задачи", + "list": { + "status": "Филтриране по състояние", + "skill": "Филтриране по идентификатор на умение" + }, + "watch": { + "description": "Проверяване на състоянието на задачата до завършването ѝ" + }, + "stream": { + "description": "Поточно предаване на събитията от изпълнението на задачата чрез SSE" + }, + "logs": { + "description": "Показване на съобщенията и артефактите на задачата" + } + } + }, + "policy": { + "description": "Управление на политиките за оторизация на OmniRoute", + "list": { + "description": "Извеждане на политиките", + "kind": "Филтриране по вид (allow|deny|rate-limit|cost-cap)", + "scope": "Филтриране по обхват (global|api-key|provider)" + }, + "get": { + "description": "Получаване на подробности за политика по идентификатор" + }, + "create": { + "description": "Създаване на политика от JSON файл", + "file": "Път до JSON файла с политиката" + }, + "update": { + "description": "Актуализиране на политика от JSON файл", + "file": "Път до JSON файла с политиката" + }, + "delete": { + "description": "Изтриване на политика по идентификатор", + "yes": "Пропускане на подканата за потвърждение" + }, + "evaluate": { + "description": "Пробна оценка на политика (код при изход 0=разрешено, 4=отказано)", + "api_key": "API ключ за оценяване", + "action": "Действие за проверка (напр. chat, embed, admin)", + "resource": "Път или идентификатор на ресурса", + "context": "Допълнителен контекст като JSON обект" + }, + "export": { + "description": "Експортиране на всички политики в JSON файл" + }, + "import": { + "description": "Импортиране на политики от JSON файл", + "overwrite": "Презаписване на съществуващи политики със същия идентификатор" + } + }, + "compression": { + "description": "Конфигуриране и преглед на конвейера за компресиране на OmniRoute", + "status": { + "description": "Показване на текущото състояние и настройките за компресиране" + }, + "configure": { + "description": "Конфигуриране на настройките за компресиране", + "engine": "Механизъм за компресиране (caveman|rtk|hybrid|none)", + "caveman_agg": "Агресивност на Caveman 0.0–1.0", + "rtk_budget": "Бюджет от токени за RTK", + "language_pack": "Езиков пакет за активиране" + }, + "engine": { + "description": "Получаване или задаване на активния механизъм за компресиране" + }, + "combos": { + "description": "Управление на статистиката за комбинациите при компресиране" + }, + "rules": { + "description": "Управление на правилата за компресиране", + "add": { + "pattern": "Шаблон за съвпадение (regex или поле:шаблон)", + "action": "Действие: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Показване на наличните езикови пакети за компресиране" + }, + "preview": { + "description": "Предварителен преглед на ефекта от компресирането върху заявка", + "file": "Път до JSON файла със заявката" + } + }, + "tunnel": { + "title": "Тунели", + "listDescription": "Показване на активните тунели", + "createDescription": "Създаване на тунел", + "created": "Тунелът е създаден: {url}", + "stopped": "Тунелът е спрян.", + "confirmStop": "Да се спре ли тунелът {id}?", + "stopDescription": "Спиране на тунел", + "statusDescription": "Показване на подробното състояние на тунел", + "logsDescription": "Показване на регистрационните записи за тунел", + "infoDescription": "Показване на подробностите за конфигурацията на тунел", + "rotateDescription": "Генериране на нов URL адрес на тунела", + "tailOpt": "Брой редове от регистрационния файл за показване", + "typeRequired": "Типът на тунела е задължителен.", + "noLogs": "Няма налични регистрационни записи.", + "notAvailable": "Няма налична информация за тунела.", + "noTunnels": "Няма активни тунели.", + "infoTitle": "Информация за тунела: {type}", + "rotated": "URL адресът на тунела е сменен: {url}", + "confirmRotate": "Да се смени ли URL адресът на тунела {type}? (ще бъде генериран нов URL адрес)" + }, + "stop": { + "description": "Спиране на сървъра на OmniRoute", + "stopping": "Сървърът се спира (PID {pid})...", + "stopped": "Сървърът е спрян.", + "notRunning": "Няма работещ сървър.", + "portFallback": "Не е намерен PID файл, опит за спиране чрез порта..." + }, + "restart": { + "description": "Рестартиране на сървъра на OmniRoute", + "restarting": "Сървърът на OmniRoute се рестартира..." + }, + "dashboard": { + "description": "Отваряне на таблото за управление на OmniRoute в браузър", + "opening": "Таблото за управление се отваря на адрес {url}", + "urlOnly": "Извеждане на URL адреса на таблото за управление, без отваряне на браузър", + "tui": "Отваряне на интерактивното TUI табло за управление (терминален интерфейс, 7 раздела)" + }, + "models": { + "description": "Показване на наличните модели (изисква сървър)", + "search": "Филтриране на моделите по идентификатор, име, доставчик или описание", + "noServer": "Сървърът не работи. Стартирайте го с: omniroute serve", + "noModels": "Не са намерени модели." + }, + "audit": { + "description": "Достъп до журналите за съответствие и одит на MCP", + "source": "Източник на журнала: all|compliance|mcp (по подразбиране: all)", + "since": "Връщане на записи след този времеви печат (ISO 8601)", + "until": "Връщане на записи до този времеви печат (ISO 8601)", + "tail": { + "description": "Показване на последните записи в одитния журнал", + "follow": "Непрекъснато проследяване на новите записи (проверка на всеки 2s)", + "limit": "Максимален брой записи за показване (по подразбиране: 100)" + }, + "search": { + "description": "Търсене по ключова дума в записите на одитния журнал", + "limit": "Максимален брой резултати (по подразбиране: 200)", + "actor": "Филтриране по ID на извършителя", + "action": "Филтриране по име на действието" + }, + "export": { + "description": "Експортиране на одитния журнал във файл", + "format": "Изходен формат: jsonl|csv (по подразбиране: jsonl)" + }, + "stats": { + "description": "Показване на статистика за одитния журнал", + "period": "Период от време: 1d|7d|30d (по подразбиране: 7d)" + }, + "get": { + "description": "Получаване на отделен запис от одитния журнал по ID" + } + }, + "skills": { + "description": "Управление на уменията на OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Показване на инсталираните умения", + "type": "Филтриране по тип (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Показване само на активираните умения", + "disabled": "Показване само на деактивираните умения", + "api_key": "Филтриране по API ключ" + }, + "get": { + "description": "Получаване на подробности за умение по ID" + }, + "install": { + "description": "Инсталиране на умение от файл или URL", + "from_file": "Път до JSON файла с дефиницията на умението", + "from_url": "URL на отдалечената дефиниция на умението", + "type": "Тип на умението (sandbox|custom|hybrid)", + "enable": "Активиране на умението след инсталирането" + }, + "enable": { + "description": "Активиране на умение по ID" + }, + "disable": { + "description": "Деактивиране на умение по ID", + "yes": "Пропускане на подканата за потвърждение" + }, + "delete": { + "description": "Изтриване на умение по ID", + "yes": "Пропускане на подканата за потвърждение" + }, + "execute": { + "description": "Изпълнение на умение по ID", + "input": "Входен JSON обект", + "input_file": "Път до JSON файла с входните данни", + "timeout": "Изчакване за изпълнение в ms (по подразбиране: 30000)" + }, + "executions": { + "description": "Показване на хронологията на изпълнение на уменията", + "skill": "Филтриране по ID на умение", + "limit": "Максимален брой резултати (по подразбиране: 50)", + "status": "Филтриране по състояние (running|completed|failed)" + }, + "skillssh": { + "description": "Управление на умения, инсталирани чрез SSH" + }, + "marketplace": { + "description": "Преглед и инсталиране на умения от marketplace" + }, + "mp": { + "search": { + "description": "Търсене на пакети в marketplace", + "category": "Филтриране по категория", + "tag": "Филтриране по етикет", + "limit": "Максимален брой резултати (по подразбиране: 30)", + "sort": "Сортиране по: downloads|rating|recent" + }, + "info": { + "description": "Показване на подробности за пакета и readme" + }, + "install": { + "description": "Инсталиране на пакет от marketplace", + "version": "Версия на пакета (по подразбиране: latest)", + "enable": "Активиране след инсталиране", + "yes": "Пропускане на подканата за потвърждение" + }, + "categories": { + "description": "Показване на категориите в marketplace" + }, + "featured": { + "description": "Показване на препоръчаните пакети в marketplace" + } + } + }, + "memory": { + "description": "Управление на разговорната памет на OmniRoute (FTS5 + вектор)", + "search": { + "description": "Търсене в записите в паметта чрез семантична заявка", + "type": "Филтриране по тип памет (user|feedback|project|reference)", + "limit": "Максимален брой резултати (по подразбиране: 20)", + "api_key": "Филтриране по API ключ", + "token_budget": "Ограничаване на общия брой токени в резултатите" + }, + "add": { + "description": "Добавяне на нов запис в паметта", + "content": "Текстово съдържание на паметта", + "file": "Прочитане на съдържание от файл", + "type": "Тип памет (по подразбиране: user)", + "metadata": "Обект с JSON метаданни", + "api_key": "Свързване с API ключ" + }, + "clear": { + "description": "Изтриване на записи в паметта, отговарящи на филтрите", + "type": "Филтриране по тип", + "older": "Изтриване на записи, по-стари от зададения период (30d, 6m, 1y)", + "api_key": "Филтриране по API ключ", + "yes": "Пропускане на подканата за потвърждение" + }, + "list": { + "description": "Показване на записите в паметта без класиране по търсене", + "type": "Филтриране по тип", + "limit": "Максимален брой резултати (по подразбиране: 100)", + "api_key": "Филтриране по API ключ" + }, + "get": { + "description": "Получаване на отделен запис в паметта по ID" + }, + "delete": { + "description": "Изтриване на запис в паметта по ID", + "yes": "Пропускане на подкана за потвърждение" + }, + "health": { + "description": "Показване на състоянието на подсистемата за памет (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Управление на връзките с OAuth доставчици", + "providers": { + "description": "Показване на доставчиците с поддръжка на OAuth и типовете им потоци" + }, + "start": { + "description": "Стартиране на OAuth поток за упълномощаване за доставчик", + "provider": "ИД на доставчика (gemini, copilot, cursor, …)", + "no_browser": "Отпечатване само на URL адреса — без отваряне на браузър", + "import_system": "Автоматично импортиране на идентификационни данни от локалната системна конфигурация", + "social": "Доставчик за вход чрез социална мрежа (google|github) — задължителен за kiro", + "timeout": "Време за изчакване на упълномощаването в мс (по подразбиране: 300000)" + }, + "status": { + "description": "Показване на активните OAuth връзки", + "provider": "Филтриране по ИД на доставчик" + }, + "revoke": { + "description": "Отмяна на OAuth връзка", + "provider": "ИД на доставчика за отмяна", + "connection_id": "Отмяна на конкретна връзка по ИД", + "yes": "Пропускане на подкана за потвърждение" + } + }, + "cloud": { + "description": "Управление на задачи на облачни AI агенти (codex, devin, jules)", + "agents": { + "description": "Показване на наличните облачни агенти" + }, + "agent": { + "description": "Управление на задачите на облачния агент {agent}", + "auth": { + "description": "Упълномощаване на {agent} чрез OAuth" + } + }, + "task": { + "description": "Управление на задачи на облачни агенти", + "create": { + "description": "Създаване на нова задача за агент", + "title": "Заглавие на задачата (по подразбиране първите 80 знака от подканата)", + "prompt": "Текст на подканата за задачата", + "prompt_file": "Прочитане на подканата от файл", + "repo": "URL адрес на хранилището за клониране за задачата", + "branch": "Име на клона, който да се използва", + "metadata": "JSON обект с метаданни" + }, + "list": { + "description": "Показване на задачите на агентите", + "status": "Филтриране по състояние (running|completed|failed|cancelled)", + "limit": "Максимален брой резултати (по подразбиране: 50)" + }, + "get": { + "description": "Получаване на подробности за задача по ИД" + }, + "status": { + "description": "Отпечатване на състоянието на задачата (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Отмяна на изпълняваща се задача", + "yes": "Пропускане на подкана за потвърждение" + }, + "approve": { + "description": "Одобряване на плана на агента за стартиране на изпълнението" + }, + "message": { + "description": "Изпращане на съобщение до изпълняваща се задача" + } + }, + "sources": { + "description": "Показване на файловете с изходен код, създадени от задача" + } + }, + "eval": { + "description": "Управление на набори за оценяване и изпълнения", + "suites": { + "description": "Управление на набори за оценяване", + "list": { + "description": "Списък с набори за оценяване" + }, + "get": { + "description": "Получаване на подробности за набор за оценяване по ID" + }, + "create": { + "description": "Създаване на набор за оценяване от JSON файл", + "file": "Път до JSON файла с дефиницията на набора" + } + }, + "run": { + "description": "Стартиране на оценяване за набор", + "model": "ID на модела за оценяване (по подразбиране: auto)", + "combo": "Принудително използване на конкретна комбинация по име", + "concurrency": "Брой едновременно обработвани извадки (по подразбиране: 4)", + "tag": "Добавяне на етикет към това изпълнение за последващо филтриране", + "watch": "Проследяване на напредъка на изпълнението до завършване" + }, + "list": { + "description": "Списък с изпълнения за оценяване", + "suite": "Филтриране по ID на набор", + "status": "Филтриране по статус", + "since": "Връщане на изпълнения след този времеви маркер", + "limit": "Максимален брой резултати (по подразбиране: 50)" + }, + "get": { + "description": "Получаване на подробности за изпълнение за оценяване по ID" + }, + "results": { + "description": "Показване на резултатите от извадките за изпълнение за оценяване", + "failed": "Показване само на неуспешните извадки" + }, + "cancel": { + "description": "Отмяна на текущо оценяване", + "yes": "Пропускане на подканата за потвърждение" + }, + "scorecard": { + "description": "Показване на картата с оценки за завършено изпълнение за оценяване" + } + }, + "webhooks": { + "description": "Управление на уебхуковете на OmniRoute", + "events": { + "description": "Списък с всички налични типове събития за уебхукове" + }, + "list": { + "description": "Списък с конфигурираните уебхукове" + }, + "get": { + "description": "Получаване на подробности за уебхук по ID" + }, + "add": { + "description": "Регистриране на нов уебхук", + "url": "Целеви URL", + "events": "Списък с типове събития, разделени със запетаи", + "secret": "Секретен ключ за HMAC подписване", + "header": "Допълнителна заглавка във формат key=value (може да се повтаря)", + "no_enabled": "Създаване на уебхук в деактивирано състояние" + }, + "update": { + "description": "Актуализиране на съществуващ уебхук", + "enabled": "Задаване на състояние на активиране (true|false)" + }, + "remove": { + "description": "Изтриване на уебхук", + "yes": "Пропускане на подканата за потвърждение" + }, + "test": { + "description": "Изпращане на тестово събитие към уебхук", + "event": "Тип събитие за симулиране (по подразбиране: request.completed)" + } + }, "program": { "description": "OmniRoute — Интелигентен AI рутер с автоматично превключване", "version": "Покажи версията и излез", @@ -26,7 +832,509 @@ "context": "Контекст/профил на сървъра за тази команда", "lang": "Задай език на CLI (замества OMNIROUTE_LANG)" }, - "redis": { - "description": "Стартиране на локален Redis контейнер с едно щракване (Podman или Docker) за кеширане и проследяване на квота в OmniRoute" + "files": { + "description": "Управление на файлове (качване, изброяване, получаване, изтегляне, изтриване)", + "list": { + "purpose": "Филтриране по предназначение", + "limit": "Максимален брой резултати" + }, + "get": { + "description": "Получаване на метаданните на файла" + }, + "upload": { + "description": "Качване на файл", + "purpose": "Предназначение на файла (batch, assistants, fine-tune)" + }, + "content": { + "description": "Изтегляне на съдържанието на файла", + "out": "Запазване в път (по подразбиране: stdout)" + }, + "delete": { + "yes": "Пропускане на потвърждението" + } + }, + "batches": { + "description": "Управление на пакетни задачи, съвместими с OpenAI", + "list": { + "status": "Филтриране по състояние", + "limit": "Максимален брой резултати" + }, + "create": { + "description": "Създаване на пакетна задача", + "inputFile": "ИД на входния файл", + "endpoint": "Целева крайна точка", + "window": "Времеви прозорец за завършване", + "metadata": "Добавяне на метаданни key=value" + }, + "submit": { + "description": "Качване на JSONL файл и създаване на пакетна задача", + "jsonl": "Път до JSONL файла", + "endpoint": "Целева крайна точка", + "wait": "Изчакване на завършването" + }, + "cancel": { + "yes": "Пропускане на потвърждението" + }, + "wait": { + "timeout": "Време за изчакване в ms" + }, + "output": { + "out": "Запазване на изходните данни в път" + }, + "errors": { + "out": "Запазване на грешките в път" + } + }, + "translator": { + "description": "Преобразуване на телата на заявките между LLM формати", + "detect": { + "description": "Откриване на формата на тялото" + }, + "translate": { + "description": "Преобразуване на тялото от един формат в друг" + }, + "send": { + "description": "Преобразуване и изпращане към upstream" + }, + "stream": { + "description": "Поточно преобразуване на тялото на заявката" + }, + "from": "Изходен формат (openai|anthropic|gemini|cohere)", + "to": "Целеви формат (openai|anthropic|gemini|cohere)", + "file": "Път до JSON файла с тялото на заявката", + "out": "Запазване на изходните данни във файл", + "model": "Замяна на модела", + "history": { + "limit": "Максимален брой резултати" + } + }, + "pricing": { + "description": "Управление на ценовите данни за моделите", + "sync": { + "description": "Синхронизиране на цените от upstream източници", + "provider": "Филтриране по доставчик", + "force": "Принудително повторно синхронизиране" + }, + "list": { + "provider": "Филтриране по доставчик", + "model": "Филтриране по модел", + "limit": "Максимален брой резултати" + }, + "defaults": { + "description": "Управление на ценообразуването по подразбиране", + "input": "Цена на входа за 1 млн. токена (USD)", + "output": "Цена на изхода за 1 млн. токена (USD)", + "cacheRead": "Цена за четене от кеша за 1 млн. токена (USD)", + "cacheWrite": "Цена за запис в кеша за 1 млн. токена (USD)" + }, + "diff": { + "description": "Показване на отклонението от цените на източника", + "model": "Филтриране по модел" + } + }, + "radar": { + "description": "Преглед и синхронизиране на локалните каталожни канали на Radar", + "status": "Показване на локалните настройки на Radar и състоянието на кеша на каналите", + "sync": "Синхронизиране на каталога, препоръките, офертите и Intel чрез локалния сървър" + }, + "resilience": { + "description": "Преглед и управление на механизмите за устойчивост", + "status": { + "provider": "Филтриране по доставчик" + }, + "breakers": { + "provider": "Филтриране по доставчик" + }, + "cooldowns": { + "provider": "Филтриране по доставчик", + "connectionId": "Филтриране по идентификатор на връзката" + }, + "lockouts": { + "provider": "Филтриране по доставчик", + "model": "Филтриране по модел" + }, + "reset": { + "description": "Нулиране на състоянието на прекъсвача/периода на изчакване", + "provider": "Доставчик за нулиране", + "connectionId": "Идентификатор на връзката за нулиране", + "model": "Модел за нулиране на блокировката", + "allCooldowns": "Нулиране на всички периоди на изчакване за доставчика", + "yes": "Пропускане на потвърждението" + }, + "profile": { + "description": "Управление на профила за устойчивост", + "name": "Име на профила" + }, + "config": { + "description": "Управление на конфигурацията за устойчивост", + "threshold": "Праг на неуспехите", + "resetTimeout": "Време за нулиране в ms", + "baseCooldown": "Основен период на изчакване в ms" + } + }, + "nodes": { + "description": "Управление на възлите на доставчика (крайни точки)", + "list": { + "provider": "Филтриране по доставчик", + "enabled": "Показване само на активираните възли" + }, + "add": { + "provider": "Име на доставчика", + "baseUrl": "Базов URL адрес на възела", + "name": "Име на възела", + "weight": "Тегло при балансиране на натоварването", + "region": "Етикет на региона", + "authHeader": "Персонализирана заглавка за удостоверяване (key=value)" + }, + "update": { + "baseUrl": "Нов базов URL адрес", + "name": "Ново име", + "weight": "Ново тегло", + "region": "Нов регион", + "enabled": "Активиране или деактивиране (true|false)" + }, + "remove": { + "yes": "Пропускане на потвърждението" + }, + "validate": { + "baseUrl": "URL за валидиране", + "provider": "Доставчик, спрямо когото да се валидира" + }, + "test": { + "description": "Изпращане на тестова заявка към възел" + }, + "metrics": { + "description": "Показване на метриките на възела", + "period": "Период от време (напр. 24h, 7d)" + } + }, + "context": { + "description": "Конфигуриране на конвейера за обработка на контекст (Caveman, RTK)", + "analytics": { + "period": "Период от време (напр. 7d, 30d)" + }, + "caveman": { + "description": "Управление на компресора на контекст Caveman", + "config": { + "description": "Показване или актуализиране на конфигурацията на Caveman", + "aggressiveness": "Агресивност 0.0–1.0", + "maxShrinkPct": "Максимален процент на свиване", + "preserveTags": "Разделени със запетая тагове за запазване" + } + }, + "rtk": { + "description": "Управление на оптимизатора на контекст RTK", + "config": { + "description": "Показване или актуализиране на конфигурацията на RTK", + "tokenBudget": "Бюджет от токени за RTK", + "reservePct": "Процент за резерв" + }, + "filters": { + "description": "Управление на филтрите на RTK", + "pattern": "Шаблон на филтъра (regex)", + "priority": "Приоритет на филтъра (по подразбиране: 100)", + "action": "Действие на филтъра: drop|shrink|replace", + "yes": "Пропускане на потвърждението" + }, + "test": { + "file": "Път до JSON файла със заявката" + } + }, + "combos": { + "description": "Управление на комбинации, съобразено с контекста" + } + }, + "sessions": { + "description": "Преглед и управление на активните сесии", + "list": { + "user": "Филтриране по потребител", + "kind": "Филтриране по вид (dashboard|api-key|mcp|a2a)", + "active": "Показване само на активните сесии", + "limit": "Максимален брой резултати (по подразбиране: 100)" + }, + "expire": { + "yes": "Пропускане на потвърждението" + }, + "expireAll": { + "user": "Потребител, чиито сесии да бъдат прекратени", + "yes": "Пропускане на потвърждението" + } + }, + "tags": { + "description": "Управление на таговете на ресурсите", + "add": { + "color": "Цвят на тага (hex или име)", + "description": "Описание на тага" + }, + "remove": { + "yes": "Пропускане на потвърждението" + }, + "assign": { + "tag": "Име на тага", + "to": "Целеви ресурс като type:id (напр. provider:openai)" + }, + "unassign": { + "tag": "Име на етикета", + "from": "Ресурс източник като type:id" + } + }, + "openapi": { + "description": "Достъп и тестване на OpenAPI спецификацията на OmniRoute", + "dump": { + "description": "Извеждане на OpenAPI спецификацията в stdout или файл", + "format": "Изходен формат: yaml|json (по подразбиране: yaml)", + "out": "Запазване в път до файл" + }, + "validate": { + "description": "Валидиране на OpenAPI спецификацията" + }, + "try": { + "description": "Тестване на API крайна точка чрез спецификацията", + "method": "HTTP метод (по подразбиране: GET)", + "body": "Път до JSON файл с тялото на заявката", + "query": "Параметър на заявката като key=value (може да се повтаря)", + "header": "Заглавка като key=value (може да се повтаря)" + }, + "endpoints": { + "description": "Показване на всички API крайни точки", + "search": "Филтриране по път или обобщение" + }, + "paths": { + "description": "Показване на всички API пътища" + } + }, + "combo": { + "title": "Комбинации", + "switched": "Активна комбинация: {name}", + "created": "Комбинацията е създадена: {name}", + "deleted": "Комбинацията е изтрита: {name}", + "noCombos": "Няма конфигурирани комбинации.", + "confirmDelete": "Да се изтрие ли комбинацията {name}?", + "suggest": { + "description": "Предлагане на най-добрата комбинация за задача чрез оценяване с AI", + "task": "Описание на задачата", + "maxCost": "Максимална цена на заявка в USD", + "maxLatencyMs": "Максимално закъснение в милисекунди", + "weights": "JSON тегла за оценяване, напр. {\"latency\":0.7,\"cost\":0.3}", + "top": "Брой водещи кандидати за показване (по подразбиране: 5)", + "explain": "Извеждане на обосновката в stderr", + "switch": "Активиране на най-високо класираната комбинация" + } + }, + "oneproxy": { + "description": "Управление на upstream пула на OneProxy", + "stats": { + "provider": "Филтриране по доставчик", + "period": "Период от време (по подразбиране: 24h)" + }, + "fetch": { + "description": "Извличане на проксита от пула", + "count": "Брой проксита за извличане (по подразбиране: 1)", + "type": "Тип прокси: http|socks5 (по подразбиране: http)" + }, + "rotate": { + "description": "Принудителна ротация на проксито", + "provider": "Доставчик, за когото да се извърши ротацията", + "connectionId": "Конкретен ID на връзката за ротация" + }, + "config": { + "description": "Показване или актуализиране на конфигурацията на OneProxy", + "enabled": "Активиране на прокси пул (true|false)", + "poolSize": "Размер на пула", + "providerSource": "URL на доставчика на прокси услуги", + "rotationPolicy": "Политика за ротация: sticky|per-request|periodic" + }, + "pool": { + "description": "Показване на текущия прокси пул с метрики" + } + }, + "open": { + "description": "Отваряне на конкретна страница от таблото на OmniRoute в браузъра", + "url": "Извеждане само на URL, без отваряне на браузъра" + }, + "telemetry": { + "description": "Достъп до обобщени телеметрични данни", + "summary": { + "description": "Показване на обобщение на телеметричните данни", + "period": "Период: 24h|7d|30d (по подразбиране: 24h)", + "compareTo": "Сравняване с предходния период" + }, + "export": { + "description": "Експортиране на телеметрични събития в JSONL", + "out": "Път до изходния файл (по подразбиране: telemetry.jsonl)", + "period": "Период за експортиране (по подразбиране: 7d)" + } + }, + "sync": { + "description": "Синхронизиране на конфигурацията между инстанции на OmniRoute", + "push": { + "description": "Изпращане на конфигурацията към облака или отдалечена инстанция", + "target": "Цел (cloud или context:name)", + "bundle": "Части от пакета за синхронизиране", + "dryRun": "Предварителен преглед без прилагане" + }, + "pull": { + "description": "Изтегляне на конфигурацията от облака или отдалечена инстанция", + "source": "Източник (cloud или context:name)", + "merge": "Обединяване със съществуващата конфигурация", + "replace": "Замяна на съществуващата конфигурация", + "dryRun": "Предварителен преглед без прилагане" + }, + "diff": { + "source": "Контекст източник", + "target": "Целеви контекст" + }, + "bundle": { + "description": "Експортиране на конфигурацията като пакетен файл", + "include": "Части за включване (разделени със запетаи)" + }, + "import": { + "description": "Импортиране на пакетен файл", + "dryRun": "Валидиране без прилагане" + }, + "initialize": { + "fromCloud": "Инициализиране от резервно копие в облака" + }, + "tokens": { + "description": "Управление на токени за синхронизация", + "create": { + "name": "Име на токена", + "scope": "Обхват на токена", + "ttl": "TTL на токена (напр. 30d)" + }, + "revoke": { + "yes": "Пропускане на потвърждението" + } + }, + "resolve": { + "description": "Интерактивно разрешаване на конфликти при синхронизация" + } + }, + "config": { + "contexts": { + "description": "Управление на сървърни контексти/профили (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Управление на езика за показване в CLI", + "getDescription": "Показване на кода на текущо активния език", + "setDescription": "Задаване на езика за показване и запазването му в конфигурацията", + "listDescription": "Показване на всички налични езици", + "listTitle": "Налични езици", + "current": "Език: {code} ({name})", + "saved": "Езикът е зададен на {code} ({name}).", + "noCode": "Изисква се код на език. Изпълнете 'omniroute config lang list', за да видите наличните кодове.", + "unknown": "Неизвестен код на език: {code}. Изпълнете 'omniroute config lang list', за да видите наличните кодове.", + "alreadySet": "Езикът вече е зададен на {code}.", + "envHint": "Съвет: можете също да зададете OMNIROUTE_LANG={code} във вашата среда." + } + }, + "completion": { + "description": "Генериране или инсталиране на скриптове за автоматично допълване в обвивката", + "zsh": "Извеждане на скрипта за автоматично допълване за zsh", + "bash": "Извеждане на скрипта за автоматично допълване за bash", + "fish": "Извеждане на скрипта за автоматично допълване за fish", + "install": "Глобално инсталиране на скрипта за автоматично допълване за откритата обвивка", + "refresh": "Обновяване на кеша на комбинациите, доставчиците и моделите" + }, + "logs": { + "description": "Поточно предаване или експортиране на журналите на заявките", + "follow": "Поточно предаване на журналите в реално време", + "filter": "Филтриране по ниво (error,warn,info) — разделено със запетаи", + "lines": "Брой редове за извличане", + "timeout": "Време за изчакване на връзката в ms", + "baseUrl": "Базов URL адрес на OmniRoute API", + "requestId": "Филтриране по идентификатор на заявката", + "apiKey": "Филтриране по API ключ", + "combo": "Филтриране по име на комбинацията", + "status": "Филтриране по HTTP код на състоянието", + "durationMin": "Минимална продължителност на заявката в ms", + "durationMax": "Максимална продължителност на заявката в ms", + "export": "Запазване на журналите във файл (json/jsonl/csv)", + "exported": "Журналите са запазени в {path}", + "stopped": "Поточното предаване на журналите е спряно.", + "streamError": "Грешка при поточното предаване на журналите: {message}" + }, + "tray": { + "description": "Управление на иконата в системната област", + "show": "Показване на иконата в системната област (ако сървърът работи с --tray)", + "hide": "Скриване на иконата в системната област", + "quit": "Изход от OmniRoute чрез системната област" + }, + "autostart": { + "description": "Управление на автоматичното стартиране на OmniRoute при зареждане (Linux: потребителска услуга на systemd)", + "enable": "Активиране на автоматичното стартиране при зареждане", + "disable": "Деактивиране на автоматичното стартиране при зареждане", + "toggle": "Превключване на автоматичното стартиране при зареждане", + "status": "Показване на състоянието на автоматичното стартиране" + }, + "runtime": { + "description": "Управление на собствените зависимости на средата за изпълнение", + "check": "Проверка на състоянието на собствените зависимости в директорията на средата за изпълнение", + "repair": "Преинсталиране на собствените зависимости в директорията на средата за изпълнение", + "repair_force": "Принудително преинсталиране дори ако са валидни", + "clean": "Премахване на директорията на средата за изпълнение (освобождава дисково пространство)", + "clean_yes": "Пропускане на потвърждението" + }, + "repl": { + "description": "Интерактивен многоходов REPL с LLM", + "model": "Модел за използване (по подразбиране: auto)", + "combo": "Име на комбинацията за използване", + "system": "Системна подкана", + "resume": "Продължаване на запазена сесия по име" + }, + "plugin": { + "description": "Управление на CLI приставки (omniroute-cmd-*)", + "list": "Списък с инсталираните приставки", + "install": "Инсталиране на приставка от npm или локален път", + "remove": "Премахване на инсталирана приставка", + "info": "Показване на подробности за инсталирана приставка", + "search": "Търсене на налични приставки в регистъра на npm", + "update": "Актуализиране на инсталирани приставки", + "scaffold": "Създаване на шаблон за нова приставка" + }, + "launch": { + "description": "Стартиране на Claude Code, насочен към OmniRoute (локално или отдалечено, с --profile)", + "token": "Токенът, който клиентът Claude трябва да изпрати (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute не е достъпен на {port}. Стартирайте го с 'omniroute serve'.", + "notFound": "CLI инструментът 'claude' не беше намерен в PATH." + }, + "run": { + "description": "Стартиране на поддържана CLI цел чрез OmniRoute" + }, + "setupClaude": { + "description": "Генериране на профили за Claude Code в ~/.claude/profiles от каталога с модели на OmniRoute" + }, + "connect": { + "description": "Свързване с отдалечен сървър на OmniRoute и влизане в отдалечен режим" + }, + "tokens": { + "description": "Управление на CLI токени с ограничен обхват за достъп (отдалечен режим)" + }, + "configure": { + "description": "Избор на доставчик+модел от активния сървър и конфигуриране на поддържан локален CLI" + }, + "launchCodex": { + "description": "Стартиране на Codex CLI, насочен към OmniRoute (локално или на отдалечен VPS)" + }, + "setupCodex": { + "description": "Генериране на профилни файлове в ~/.codex от актуалния каталог с модели на OmniRoute" + }, + "packs": { + "description": "Управление на незадължителни пакети за средата за изпълнение (ML / автоматизация на браузър)", + "listDescription": "Списък с незадължителните пакети и състоянието на инсталацията им", + "installDescription": "Инсталиране на незадължителен пакет в DATA_DIR", + "verifyDescription": "Проверка на инсталираните пакети спрямо предоставения индекс с контролни суми", + "removeDescription": "Премахване на инсталиран незадължителен пакет", + "sourceOpt": "Директорията, съдържаща данните на пакетите и индекса им", + "warnNoIndex": "optional-packs.index.json не е намерен — инсталирането/проверката не са налични в това работно копие (настолните пакети го включват)", + "errUnknown": "неизвестен пакет: {name}", + "errNoIndex": "индексът на пакетите не е намерен; подайте --source , съдържаща данните на пакета (настолните пакети го включват до приложението)", + "installed": "пакетът „{name}“ е инсталиран и проверен в {dir}", + "restartHint": "рестартирайте сървъра на OmniRoute (или настолното приложение), за да може средата за изпълнение да зареди пакета", + "removed": "пакетът „{name}“ е премахнат", + "notInstalled": "пакетът „{name}“ не е инсталиран", + "verifyOk": "всички инсталирани пакети са проверени", + "verifyFailed": "{count} пакет(а) не преминаха проверката", + "noneInstalled": "няма инсталирани незадължителни пакети" } } diff --git a/bin/cli/locales/bn.json b/bin/cli/locales/bn.json index 6555a37aae..50054ff252 100644 --- a/bin/cli/locales/bn.json +++ b/bin/cli/locales/bn.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "ত্রুটি: {message}", + "serverOffline": "OmniRoute সার্ভার অফলাইনে আছে। এটি চালু করুন: omniroute serve", + "authRequired": "প্রমাণীকরণ প্রয়োজন। OMNIROUTE_API_KEY সেট করুন অথবা চালান: omniroute setup", + "rateLimited": "রেট সীমা অতিক্রম করেছে। {seconds}s পরে আবার চেষ্টা করুন।", + "timeout": "{ms}ms পরে অনুরোধের সময়সীমা শেষ হয়েছে।", + "success": "সম্পন্ন।", + "yes": "হ্যাঁ", + "no": "না", + "confirm": "আপনি কি নিশ্চিত? (হ্যাঁ/না)", + "dryRun": "[dry-run] {action} করা হতো", + "cancelled": "বাতিল করা হয়েছে।", + "jsonOpt": "JSON হিসেবে আউটপুট দিন", + "yesOpt": "নিশ্চিতকরণের প্রম্পট এড়িয়ে যান" + }, + "setup": { + "title": "OmniRoute সেটআপ", + "passwordPrompt": "অ্যাডমিন পাসওয়ার্ড", + "providerPrompt": "ডিফল্ট প্রোভাইডার (এড়িয়ে যেতে খালি রাখুন)", + "done": "সেটআপ সম্পন্ন হয়েছে", + "passwordSet": "অ্যাডমিন পাসওয়ার্ড কনফিগার করা হয়েছে", + "providerSet": "প্রোভাইডার কনফিগার করা হয়েছে: {name}", + "testingProvider": "প্রোভাইডার সংযোগ পরীক্ষা করা হচ্ছে: {name}", + "testPassed": "প্রোভাইডার পরীক্ষায় উত্তীর্ণ হয়েছে", + "testFailed": "প্রোভাইডার পরীক্ষা ব্যর্থ হয়েছে: {error}", + "loginEnabled": "লগইন: সক্রিয় (পাসওয়ার্ড আপডেট করা হয়েছে)", + "loginDisabled": "লগইন: নিষ্ক্রিয়", + "providerInfo": "প্রোভাইডার: {info}", + "opencode": "OpenCode-এর জন্য অন্তর্ভুক্ত @omniroute/opencode-plugin ইনস্টল ও কনফিগার করুন" + }, + "doctor": { + "title": "OmniRoute ডক্টর", + "dbOk": "ডেটাবেস: ঠিক আছে ({path})", + "dbMissing": "ডেটাবেস: ইনিশিয়ালাইজ করা হয়নি — `omniroute setup` চালান", + "portOk": "পোর্ট {port}: উপলভ্য", + "portConflict": "পোর্ট {port}: অন্য একটি প্রক্রিয়া ব্যবহার করছে", + "encryptionOk": "এনক্রিপশন কী: কনফিগার করা হয়েছে", + "encryptionMissing": "এনক্রিপশন কী অনুপস্থিত — `omniroute setup` চালান", + "allGood": "সব পরীক্ষা সফল হয়েছে।", + "warnings": "{count}টি সতর্কতা — উপরে দেখুন।" + }, + "providers": { + "title": "প্রোভাইডারসমূহ", + "noProviders": "কোনো প্রোভাইডার কনফিগার করা নেই। চালান: omniroute setup", + "testing": "{name} পরীক্ষা করা হচ্ছে...", + "available": "{count}টি প্রোভাইডার উপলভ্য", + "connected": "সংযুক্ত", + "disconnected": "সংযোগ বিচ্ছিন্ন", + "validationFailed": "যাচাইকরণ ব্যর্থ হয়েছে: {error}", + "metrics": { + "description": "প্রোভাইডারের কর্মক্ষমতার মেট্রিক্স দেখান (লেটেন্সি, সাফল্যের হার, খরচ)", + "provider": "প্রোভাইডার ID অনুযায়ী ফিল্টার করুন", + "connection_id": "সংযোগ ID অনুযায়ী ফিল্টার করুন", + "period": "সময়কাল: 1h|6h|24h|7d|30d (ডিফল্ট: 24h)", + "metric": "একটি নির্দিষ্ট মেট্রিক ফিল্ডে ফোকাস করুন", + "sort": "ফিল্ড অনুযায়ী সাজান (অবরোহী)", + "limit": "সর্বাধিক সারি (ডিফল্ট: 50)", + "watch": "প্রতি 5s-এ রিফ্রেশ করুন (লাইভ মোড)", + "compare": "পাশাপাশি তুলনা করার জন্য কমা দিয়ে পৃথক করা প্রোভাইডার ID-সমূহ" + }, + "metric_single": { + "description": "একটি নির্দিষ্ট সংযোগের জন্য একটি মেট্রিক মান পান" + }, + "rotate": { + "description": "একটি প্রোভাইডার সংযোগের আপস্ট্রিম API কী ঘুরিয়ে পরিবর্তন করুন", + "newKeyOpt": "নতুন API কী-এর মান (এড়িয়ে চলুন: --from-env ব্যবহার করা শ্রেয়)", + "fromEnvOpt": "এনভায়রনমেন্ট ভেরিয়েবল VAR থেকে নতুন কী পড়ুন", + "oauthOpt": "পরিবর্তে OAuth পুনরায় প্রমাণীকরণ প্রবাহ চালু করুন", + "skipTestOpt": "কী পরিবর্তনের পরের সংযোগ পরীক্ষা এড়িয়ে যান", + "dryRunOpt": "কোনো কিছু না লিখে কী পরিবর্তন হবে তা দেখান", + "confirmPrompt": "সংযোগ \"{name}\" ({id})-এর API কী প্রতিস্থাপন করবেন? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id})-এর কী ঘুরিয়ে পরিবর্তন করা হতো। কোনো পরিবর্তন করা হয়নি।", + "oauthHint": "OAuth সংযোগ — চালান: omniroute oauth {provider}", + "envVarEmpty": "এনভায়রনমেন্ট ভেরিয়েবল {var} সেট করা নেই অথবা খালি।", + "success": "\"{name}\"-এর কী ঘুরিয়ে পরিবর্তন করা হয়েছে। যাচাই করতে `providers test {id}` চালান।", + "testPassed": "কী পরিবর্তনের পরের পরীক্ষা সফল হয়েছে।", + "testFailed": "কী পরিবর্তনের পরের পরীক্ষা ব্যর্থ হয়েছে: {error}" + }, + "status": { + "description": "সব প্রোভাইডার সংযোগের কী-এর অবস্থা দেখান (বয়স, মেয়াদোত্তীর্ণ হওয়ার সময়, কুলডাউন)", + "providerOpt": "প্রোভাইডারের নাম অনুযায়ী ফিল্টার করুন", + "header": "ID প্রোভাইডার নাম মেয়াদের অবস্থা পরীক্ষার অবস্থা কুলডাউন শেষ হবে", + "noData": "কোনো প্রোভাইডার সংযোগের ডেটা উপলভ্য নেই।", + "requiresServer": "providers status ব্যবহার করতে OmniRoute সার্ভারটি চালু থাকতে হবে।" + } + }, + "keys": { + "title": "API কীসমূহ", + "addDescription": "একটি প্রোভাইডারের জন্য API কী যোগ বা আপডেট করুন", + "listDescription": "কনফিগার করা সব API কী তালিকাভুক্ত করুন", + "removeDescription": "একটি প্রোভাইডারের API কী সরান", + "regenerateDescription": "একটি OmniRoute API কী পুনরায় তৈরি করুন", + "revokeDescription": "একটি OmniRoute API কী প্রত্যাহার করুন", + "revealDescription": "মাস্ক না করা API কী-এর মান প্রকাশ করুন", + "usageDescription": "একটি API কী-এর সাম্প্রতিক ব্যবহার দেখান", + "usageLimitOpt": "সাম্প্রতিক অনুরোধের সংখ্যা", + "rotateDescription": "একটি নতুন কী তৈরি করুন এবং পুরোনোটি অকার্যকর করুন", + "graceOpt": "পুরোনো কী অবৈধ করার আগের গ্রেস পিরিয়ড (ms)", + "stdinOpt": "আর্গুমেন্টের পরিবর্তে stdin থেকে API কী পড়ুন", + "added": "{provider}-এর জন্য কী যোগ করা হয়েছে।", + "removed": "কী সরানো হয়েছে।", + "listed": "{count}টি কী।", + "noKeys": "কোনো কী কনফিগার করা নেই।", + "noUsage": "কোনো ব্যবহারসংক্রান্ত ডেটা পাওয়া যায়নি।", + "confirmRemove": "কী {id} সরাবেন?", + "confirmRegenerate": "কী {id} পুনরায় তৈরি করবেন?", + "confirmRevoke": "কী {id} প্রত্যাহার করবেন?", + "confirmRotate": "কী {id} রোটেট করবেন? (গ্রেস পিরিয়ডের পরে পুরোনো কী অবৈধ হয়ে যাবে)", + "regenerated": "পুনরায় তৈরি করা হয়েছে। নতুন কী: {key}", + "revoked": "কী {id} প্রত্যাহার করা হয়েছে।", + "rotated": "কী {id} রোটেট করা হয়েছে। নতুন কী ID: {newId}", + "revealWarning": "⚠ এটি সম্পূর্ণ আনমাস্কড কী প্রদর্শন করবে। নিশ্চিত করুন আপনার স্ক্রিনটি ব্যক্তিগত।", + "providerRequired": "প্রোভাইডার আবশ্যক।", + "keyRequired": "API কী আবশ্যক।", + "stdinEmpty": "stdin-এর মাধ্যমে কোনো API কী দেওয়া হয়নি।", + "unknownProvider": "অজানা প্রোভাইডার: {provider}", + "policy": { + "title": "কী নীতি", + "showDescription": "একটি কী-এর রেট/খরচ নীতি দেখান", + "setDescription": "একটি কী-এর রেট/খরচ নীতি সেট করুন", + "rateLimitOpt": "প্রতি মিনিটে সর্বোচ্চ অনুরোধের সংখ্যা", + "maxCostOpt": "প্রতিদিনের সর্বোচ্চ খরচ (USD)", + "allowedModelsOpt": "অনুমোদিত মডেলগুলোর কমা-বিভাজিত তালিকা", + "nothingToSet": "কোনো নীতি ফিল্ড দেওয়া হয়নি। --rate-limit, --max-cost, অথবা --allowed-models ব্যবহার করুন।", + "updated": "নীতি আপডেট করা হয়েছে।" + }, + "expiration": { + "title": "কী-এর মেয়াদ শেষ হওয়া", + "listDescription": "শিগগিরই মেয়াদ শেষ হবে এমন কীগুলোর তালিকা দেখান", + "daysOpt": "N দিনের মধ্যে মেয়াদ শেষ হবে এমন কীগুলো দেখান", + "none": "{days} দিনের মধ্যে কোনো কী-এর মেয়াদ শেষ হচ্ছে না।", + "listTitle": "{days} দিনের মধ্যে মেয়াদ শেষ হবে এমন কীগুলো:" + } + }, + "authExport": { + "description": "ডিক্রিপ্ট করা প্রোভাইডার ক্রেডেনশিয়াল এক্সপোর্ট করুন (শুধু লোকাল, প্লেইনটেক্সট আউটপুট)", + "idOpt": "শুধু এই id/name/provider-এর সঙ্গে মিলে যাওয়া সংযোগটি এক্সপোর্ট করুন", + "formatOpt": "আউটপুট ফরম্যাট: json অথবা env", + "outOpt": "stdout-এর পরিবর্তে একটি ফাইলে আউটপুট লিখুন (0600 অনুমতি সহ লেখা হবে)", + "forceOpt": "নিশ্চিত করুন যে আপনি বুঝতে পেরেছেন এটি প্লেইনটেক্সট সিক্রেট প্রিন্ট/রাইট করে", + "warning": "⚠ এটি ডিক্রিপ্ট করা প্লেইনটেক্সট API কী এবং OAuth টোকেন প্রিন্ট/রাইট করে। আপনার স্ক্রিন, শেল হিস্ট্রি এবং যেকোনো আউটপুট ফাইল ব্যক্তিগত রাখুন।", + "confirmHeading": "⚠ সতর্কতা: এটি ডিক্রিপ্ট করা প্রোভাইডার ক্রেডেনশিয়াল প্লেইনটেক্সটে এক্সপোর্ট করে", + "confirmBody": "এই কমান্ডটি নির্বাচিত সংযোগগুলোর apiKey, accessToken, refreshToken এবং\nidToken ডিক্রিপ্ট করে প্রিন্ট/রাইট করে। আউটপুটটিকে একটি সিক্রেট হিসেবে বিবেচনা করুন।", + "confirmFooter": "নিশ্চিত করতে চালান:\n omniroute auth export --force", + "missingKey": "ক্রেডেনশিয়াল এক্সপোর্ট করতে STORAGE_ENCRYPTION_KEY প্রয়োজন।", + "notFound": "সংযোগ পাওয়া যায়নি: {id}", + "invalidFormat": "অবৈধ ফরম্যাট: {format}। json অথবা env ব্যবহার করুন।" + }, + "stream": { + "description": "SSE পরিদর্শন মোডসহ একটি চ্যাট প্রতিক্রিয়া স্ট্রিম করুন", + "file": "ফাইল থেকে প্রম্পট পড়ুন", + "stdin": "stdin থেকে প্রম্পট পড়ুন", + "model": "মডেল ID (ডিফল্ট: auto)", + "system": "সিস্টেম প্রম্পট", + "combo": "নাম অনুযায়ী একটি নির্দিষ্ট কম্বো বাধ্যতামূলকভাবে ব্যবহার করুন", + "max_tokens": "প্রতিক্রিয়ায় সর্বাধিক টোকেন", + "responses_api": "/v1/chat/completions-এর পরিবর্তে /v1/responses ব্যবহার করুন", + "raw": "প্রাপ্ত কাঁচা SSE লাইনগুলো প্রিন্ট করুন", + "debug": "প্রতি-চাঙ্ক টাইমিং তথ্য stderr-এ প্রিন্ট করুন", + "save": "সব SSE ইভেন্ট একটি .jsonl ফাইলে সংরক্ষণ করুন", + "error": { + "empty_prompt": "ত্রুটি: প্রম্পট আবশ্যক (পজিশনাল আর্গুমেন্ট, --file, অথবা --stdin)" + } + }, + "usage": { + "description": "ব্যবহার বিশ্লেষণ, বাজেট, কোটা এবং লগ", + "analytics": { + "description": "সমন্বিত ব্যবহার বিশ্লেষণ দেখান", + "period": "সময়সীমা: 1d|7d|30d|90d|ytd|all (ডিফল্ট: 30d)", + "provider": "প্রোভাইডার ID অনুযায়ী ফিল্টার করুন" + }, + "budget": { + "description": "ব্যয় বাজেট পরিচালনা করুন", + "set": { + "scope": "বাজেটের পরিধি (ডিফল্ট: global)", + "period": "বাজেটের সময়কাল: daily|weekly|monthly (ডিফল্ট: monthly)" + } + }, + "quota": { + "description": "প্রোভাইডারের কোটা ব্যবহার দেখান", + "provider": "প্রোভাইডার ID অনুযায়ী ফিল্টার করুন", + "check": "একটি নতুন অনুরোধের জন্য কোটা উপলভ্য কি না তা দেখান" + }, + "logs": { + "description": "অনুরোধ কল লগ দেখান", + "limit": "ফেরত দেওয়া লগ এন্ট্রির সংখ্যা (ডিফল্ট: 100)", + "search": "লগ ফিল্টার করার জন্য অনুসন্ধান কুয়েরি", + "since": "এই টাইমস্ট্যাম্পের পরের লগগুলো ফেরত দিন", + "follow": "নতুন লগ এন্ট্রিগুলো ধারাবাহিকভাবে টেইল করুন", + "api_key": "API কী অনুযায়ী লগ ফিল্টার করুন" + }, + "utilization": { + "description": "API কী ব্যবহারের মেট্রিক্স দেখান", + "api_key": "API কী অনুযায়ী ফিল্টার করুন" + }, + "history": { + "description": "অনুরোধের ইতিহাস দেখান", + "limit": "ইতিহাস এন্ট্রির সংখ্যা (ডিফল্ট: 100)" + }, + "proxy_logs": { + "description": "প্রক্সি-স্তরের অনুরোধ লগ দেখান", + "limit": "প্রক্সি লগ এন্ট্রির সংখ্যা (ডিফল্ট: 100)" + } + }, + "cost": { + "description": "প্রোভাইডার, মডেল, কম্বো অথবা API কী অনুযায়ী বিভাজনসহ ব্যয় প্রতিবেদন দেখান", + "period": "সময়সীমা: 1d|7d|30d|90d|ytd|all (ডিফল্ট: 30d)", + "since": "শুরুর তারিখ (ISO ফরম্যাট, যেমন 2026-01-01) — --period ওভাররাইড করে", + "until": "শেষের তারিখ (ISO ফরম্যাট)", + "group_by": "ফলাফল যেভাবে গ্রুপ করা হবে: provider|model|api-key|combo|day (ডিফল্ট: provider)", + "api_key_filter": "নির্দিষ্ট API key দিয়ে ফিল্টার করুন", + "limit": "দেখানোর জন্য সারির সর্বোচ্চ সংখ্যা (ডিফল্ট: 100)" + }, + "simulate": { + "description": "ড্রাই-রান রাউটিং সিমুলেশন — upstream-এ কল না করেই কোন provider-গুলো নির্বাচিত হবে তা দেখান", + "file": "JSON ফাইল থেকে সম্পূর্ণ request body লোড করুন", + "model": "Model ID (ডিফল্ট: auto)", + "combo": "নাম অনুযায়ী নির্দিষ্ট combo ব্যবহার করতে বাধ্য করুন", + "reasoning": "Reasoning effort-এর মাত্রা (low|medium|high)", + "thinking": "Extended thinking token-এর বাজেট", + "explain": "fallback tree এবং খরচের পরিসর stderr-এ প্রিন্ট করুন", + "noCombo": "কোনো মিলে যাওয়া combo পাওয়া যায়নি। এটি দিয়ে একটি কনফিগার করুন: omniroute combo create" + }, + "chat": { + "description": "OmniRoute-এ একটি ওয়ান-শট chat prompt পাঠান", + "file": "ফাইল থেকে prompt পড়ুন", + "stdin": "stdin থেকে prompt পড়ুন", + "system": "System prompt", + "model": "Model ID (ডিফল্ট: auto)", + "max_tokens": "response-এ token-এর সর্বোচ্চ সংখ্যা", + "temperature": "Sampling temperature (0–2)", + "top_p": "Top-p nucleus sampling", + "reasoning_effort": "Reasoning effort-এর মাত্রা (low|medium|high)", + "thinking_budget": "Extended thinking token-এর বাজেট", + "combo": "নাম অনুযায়ী নির্দিষ্ট combo ব্যবহার করতে বাধ্য করুন", + "responses_api": "/v1/chat/completions-এর পরিবর্তে /v1/responses ব্যবহার করুন", + "stream": "response ধাপে ধাপে stream করুন", + "no_history": "~/.omniroute/cli-history.jsonl-এ সংরক্ষণ করবেন না", + "error": { + "empty_prompt": "ত্রুটি: prompt আবশ্যক (positional arg, --file, অথবা --stdin)" + } + }, + "serve": { + "description": "OmniRoute server চালু করুন (ডিফল্ট অ্যাকশন)", + "starting": "{port} পোর্টে OmniRoute server চালু হচ্ছে...", + "ready": "http://localhost:{port}-এ প্রস্তুত", + "stopping": "server বন্ধ করা হচ্ছে (PID {pid})...", + "stopped": "server বন্ধ হয়েছে।", + "notRunning": "server চলছে না।", + "port": "যে পোর্টে listen করবে (ডিফল্ট: 20128)", + "no_open": "browser স্বয়ংক্রিয়ভাবে খুলবেন না", + "daemon": "server-কে background daemon হিসেবে চালান", + "log": "server log-গুলো inline দেখান", + "no_recovery": "crash হলে auto-restart নিষ্ক্রিয় করুন (debugging mode)", + "max_restarts": "হাল ছাড়ার আগে 30s-এর মধ্যে crash-এর পর restart-এর সর্বোচ্চ সংখ্যা (ডিফল্ট: 2)", + "tray": "সিস্টেম ট্রেতে চালু করুন (শুধু ডেস্কটপ, ঐচ্ছিক)", + "no_tray": "সিস্টেম ট্রে আইকন নিষ্ক্রিয় করুন", + "ready_timeout": "রেডিনেস প্রোবের সময়সীমা মিলিসেকেন্ডে (এছাড়াও OMNIROUTE_READY_TIMEOUT_MS, ডিফল্ট 60000)", + "tls_cert": "HTTPS পরিবেশনের জন্য TLS সার্টিফিকেটের (PEM) পাথ (এছাড়াও OMNIROUTE_TLS_CERT)", + "tls_key": "HTTPS পরিবেশনের জন্য TLS প্রাইভেট কী-এর (PEM) পাথ (এছাড়াও OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "ব্যাকআপ", + "description": "OmniRoute ডেটার একটি ব্যাকআপ তৈরি করুন", + "creating": "ব্যাকআপ তৈরি করা হচ্ছে...", + "done": "ব্যাকআপ {path}-এ সংরক্ষিত হয়েছে", + "noFiles": "ব্যাকআপ করার মতো কোনো ফাইল নেই (ডেটাবেস আরম্ভ করা হয়নি)", + "failed": "ব্যাকআপ ব্যর্থ হয়েছে: {error}", + "restoring": "{path} থেকে পুনরুদ্ধার করা হচ্ছে...", + "restored": "পুনরুদ্ধার সম্পন্ন হয়েছে।", + "restoreDescription": "একটি ব্যাকআপ থেকে পুনরুদ্ধার করুন", + "listTitle": "উপলভ্য ব্যাকআপসমূহ", + "noBackups": "কোনো ব্যাকআপ পাওয়া যায়নি।", + "notFound": "ব্যাকআপ পাওয়া যায়নি: {name}", + "confirmRestore": "{ts}-এর ব্যাকআপ দিয়ে বর্তমান ডেটা ওভাররাইট করবেন?", + "createDescription": "OmniRoute ডেটার একটি ব্যাকআপ তৈরি করুন", + "nameOpt": "কাস্টম ব্যাকআপ নাম", + "cloudOpt": "ক্লাউড স্টোরেজে ব্যাকআপ আপলোড করুন", + "encryptOpt": "AES-256-GCM দিয়ে ব্যাকআপ এনক্রিপ্ট করুন", + "keyFileOpt": "এনক্রিপশন পাসফ্রেজ-সংবলিত ফাইলের পাথ", + "excludeOpt": "প্যাটার্নের সঙ্গে মিলে যাওয়া ফাইল বাদ দিন (পুনরাবৃত্তিযোগ্য)", + "retentionOpt": "শুধু সর্বশেষ Nটি ব্যাকআপ রাখুন", + "passphrasePrompt": "এনক্রিপশন পাসফ্রেজ:", + "noPassphrase": "এনক্রিপ্ট করা ব্যাকআপের জন্য পাসফ্রেজ আবশ্যক।", + "cloudFailed": "সতর্কতা: ক্লাউডে আপলোড ব্যর্থ হয়েছে। স্থানীয় ব্যাকআপ সংরক্ষিত হয়েছে।", + "cloudUploaded": "ক্লাউড ব্যাকআপ আপলোড করা হয়েছে: {url}", + "auto": { + "title": "ব্যাকআপ সময়সূচি", + "enableDescription": "নির্ধারিত স্বয়ংক্রিয় ব্যাকআপ সক্ষম করুন", + "disableDescription": "নির্ধারিত স্বয়ংক্রিয় ব্যাকআপ নিষ্ক্রিয় করুন", + "statusDescription": "বর্তমান ব্যাকআপ সময়সূচির স্থিতি দেখান", + "cronOpt": "সময়সূচির জন্য Cron এক্সপ্রেশন (ডিফল্ট: প্রতিদিন রাত ৩টায়)", + "enabled": "স্বয়ংক্রিয় ব্যাকআপ সক্ষম করা হয়েছে (cron: {cron})।", + "hint": "সূচনাকালে omniroute serve সময়সূচিটি পড়ে।", + "disabled": "স্বয়ংক্রিয় ব্যাকআপ নিষ্ক্রিয় করা হয়েছে।", + "notConfigured": "কোনো ব্যাকআপ সময়সূচি কনফিগার করা নেই।" + } + }, + "health": { + "description": "সার্ভারের স্বাস্থ্য ও কম্পোনেন্টের স্থিতি পরীক্ষা করুন", + "noServer": "সার্ভার চলছে না। এটি দিয়ে চালু করুন: omniroute serve", + "title": "স্বাস্থ্য", + "status": "স্থিতি: {status}", + "uptime": "চালু থাকার সময়: {uptime}", + "requests": "অনুরোধ (২৪ ঘণ্টা): {count}", + "cost": "খরচ (২৪ ঘণ্টা): ${cost}" + }, + "quota": { + "description": "প্রোভাইডারের কোটা ব্যবহার দেখান", + "noServer": "সার্ভার চলছে না। এটি দিয়ে চালু করুন: omniroute serve", + "noData": "কোনো কোটা-সংক্রান্ত তথ্য উপলভ্য নেই।" + }, + "cache": { + "description": "রেসপন্স ক্যাশ পরিচালনা করুন", + "noServer": "সার্ভার চলছে না। এটি দিয়ে চালু করুন: omniroute serve", + "cleared": "ক্যাশ সাফ করা হয়েছে।", + "clearFailed": "ক্যাশ সাফ করা যায়নি।" + }, "redis": { "description": "OmniRoute ক্যাশিং এবং কোটা ট্র্যাকিংয়ের জন্য এক ক্লিকে স্থানীয় Redis কন্টেইনার (Podman বা Docker) চালু করুন" + }, + "test": { + "description": "একটি প্রোভাইডার সংযোগ পরীক্ষা করুন", + "noServer": "সার্ভার চলছে না। এটি দিয়ে চালু করুন: omniroute serve", + "testing": "{provider} / {model} পরীক্ষা করা হচ্ছে...", + "passed": "সংযোগ সফল হয়েছে!", + "failed": "সংযোগ ব্যর্থ হয়েছে: {error}", + "allProvidersOpt": "কনফিগার করা সব প্রোভাইডার পরীক্ষা করুন", + "latencyOpt": "লেটেন্সির পরিমাপ দেখান (গড়/সর্বনিম্ন/সর্বোচ্চ ms)", + "repeatOpt": "পরীক্ষাটি N বার পুনরাবৃত্তি করে ফলাফল একত্রিত করুন", + "compareOpt": "তুলনা করার জন্য কমা দিয়ে পৃথক করা মডেলসমূহ (যেমন gpt-4o,claude-3-5-sonnet)", + "saveOpt": "ফলাফল একটি JSON ফাইলে সংরক্ষণ করুন", + "saved": "ফলাফল {path}-এ সংরক্ষণ করা হয়েছে", + "compareTitle": "মডেল তুলনা", + "compareMinTwo": "--compare-এর জন্য কমপক্ষে দুটি মডেল প্রয়োজন (কমা দিয়ে পৃথক করা)", + "noProviders": "কোনো প্রোভাইডার কনফিগার করা নেই। এটি দিয়ে একটি যোগ করুন: omniroute keys add" + }, + "update": { + "checking": "আপডেট পরীক্ষা করা হচ্ছে...", + "upToDate": "ইতোমধ্যেই হালনাগাদ ({version})।", + "available": "আপডেট উপলভ্য: {current} → {latest}", + "installing": "{latest} ইনস্টল করা হচ্ছে...", + "done": "{latest}-এ আপডেট করা হয়েছে। প্রয়োগ করতে সার্ভার পুনরায় চালু করুন।" + }, + "mcp": { + "title": "MCP সার্ভার", + "running": "MCP সার্ভার চলছে ({transport})", + "stopped": "MCP সার্ভার বন্ধ করা হয়েছে।", + "restarted": "MCP সার্ভার পুনরায় চালু করা হয়েছে।", + "stoppedHint": "এটি চালু করতে `omniroute mcp enable` চালান।", + "enabled": "MCP সার্ভার সক্রিয় করা হয়েছে।", + "disabled": "MCP সার্ভার নিষ্ক্রিয় করা হয়েছে।", + "enable": { + "description": "MCP সার্ভার সক্রিয় করুন", + "transport": "ব্যবহারের ট্রান্সপোর্ট: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP সার্ভার নিষ্ক্রিয় করুন" + }, + "call": { + "description": "সরাসরি একটি MCP টুল আহ্বান করুন", + "args": "JSON আর্গুমেন্ট অবজেক্ট (ইনলাইন)", + "args_file": "JSON আর্গুমেন্ট ফাইলের পাথ", + "stream": "স্ট্রিমিং এন্ডপয়েন্ট ব্যবহার করুন (/api/mcp/stream)", + "scope": "প্রয়োজনীয় স্কোপ (পুনরাবৃত্তিযোগ্য, যেমন read:health)" + }, + "scopes": { + "description": "উপলভ্য MCP স্কোপগুলোর তালিকা দেখান", + "tool": "নির্দিষ্ট একটি টুলের জন্য প্রয়োজনীয় স্কোপগুলো দেখান" + }, + "tools": { + "description": "MCP টুলগুলো পরিদর্শন করুন", + "list": { + "description": "সব MCP টুলের তালিকা দেখান", + "scope": "স্কোপ অনুযায়ী ফিল্টার করুন" + }, + "info": { + "description": "একটি MCP টুলের মেটাডেটা দেখান" + }, + "schema": { + "description": "একটি MCP টুলের ইনপুট/আউটপুট JSON স্কিমা দেখান", + "io": "স্কিমার ধরন: input|output (ডিফল্ট: input)" + } + }, + "audit": { + "description": "MCP অডিট লগ (audit --source mcp-এর উপনাম)" + } + }, + "a2a": { + "skills": { + "description": "এজেন্ট কার্ড থেকে উপলভ্য A2A স্কিলগুলোর তালিকা দেখান" + }, + "invoke": { + "description": "একটি A2A স্কিল আহ্বান করুন এবং টাস্ক ID ফেরত দিন", + "input": "JSON ইনপুট অবজেক্ট", + "input_file": "JSON ইনপুট ফাইলের পাথ", + "wait": "ফেরত দেওয়ার আগে টাস্ক সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন", + "timeout": "সম্পূর্ণ হওয়ার জন্য অপেক্ষার সময়সীমা ms-এ (ডিফল্ট: 60000)" + }, + "tasks": { + "description": "A2A টাস্ক পরিচালনা করুন", + "list": { + "status": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন", + "skill": "স্কিল ID অনুযায়ী ফিল্টার করুন" + }, + "watch": { + "description": "সম্পূর্ণ না হওয়া পর্যন্ত টাস্কের স্ট্যাটাস পোল করুন" + }, + "stream": { + "description": "SSE-এর মাধ্যমে টাস্ক নির্বাহের ইভেন্টগুলো স্ট্রিম করুন" + }, + "logs": { + "description": "টাস্কের বার্তা ও আর্টিফ্যাক্টগুলো দেখান" + } + } + }, + "policy": { + "description": "OmniRoute অনুমোদন নীতিগুলো পরিচালনা করুন", + "list": { + "description": "নীতিগুলোর তালিকা দেখান", + "kind": "ধরন অনুযায়ী ফিল্টার করুন (allow|deny|rate-limit|cost-cap)", + "scope": "স্কোপ অনুযায়ী ফিল্টার করুন (global|api-key|provider)" + }, + "get": { + "description": "ID দিয়ে নীতির বিস্তারিত তথ্য পান" + }, + "create": { + "description": "একটি JSON ফাইল থেকে নীতি তৈরি করুন", + "file": "নীতি JSON ফাইলের পাথ" + }, + "update": { + "description": "একটি JSON ফাইল থেকে নীতি আপডেট করুন", + "file": "নীতি JSON ফাইলের পাথ" + }, + "delete": { + "description": "ID দিয়ে একটি নীতি মুছুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "evaluate": { + "description": "নীতির পরীক্ষামূলক মূল্যায়ন (প্রস্থান 0=অনুমোদিত, 4=প্রত্যাখ্যাত)", + "api_key": "মূল্যায়নের জন্য API কী", + "action": "যে অ্যাকশন পরীক্ষা করা হবে (যেমন chat, embed, admin)", + "resource": "রিসোর্সের পাথ বা শনাক্তকারী", + "context": "JSON অবজেক্ট হিসেবে অতিরিক্ত প্রসঙ্গ" + }, + "export": { + "description": "সব নীতি একটি JSON ফাইলে এক্সপোর্ট করুন" + }, + "import": { + "description": "একটি JSON ফাইল থেকে নীতি ইমপোর্ট করুন", + "overwrite": "একই ID-সহ বিদ্যমান নীতিগুলো ওভাররাইট করুন" + } + }, + "compression": { + "description": "OmniRoute কম্প্রেশন পাইপলাইন কনফিগার ও পরিদর্শন করুন", + "status": { + "description": "বর্তমান কম্প্রেশন স্ট্যাটাস ও সেটিংস দেখান" + }, + "configure": { + "description": "কম্প্রেশন সেটিংস কনফিগার করুন", + "engine": "কম্প্রেশন ইঞ্জিন (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-এর আক্রমণাত্মকতার মাত্রা 0.0–1.0", + "rtk_budget": "RTK টোকেন বাজেট", + "language_pack": "সক্রিয় করার জন্য ভাষা প্যাক" + }, + "engine": { + "description": "সক্রিয় কম্প্রেশন ইঞ্জিন দেখুন বা সেট করুন" + }, + "combos": { + "description": "কম্প্রেশন কম্বোর পরিসংখ্যান পরিচালনা করুন" + }, + "rules": { + "description": "কম্প্রেশন নিয়ম পরিচালনা করুন", + "add": { + "pattern": "মেলানোর প্যাটার্ন (regex বা field:pattern)", + "action": "অ্যাকশন: drop|shrink|replace" + } + }, + "language_packs": { + "description": "উপলভ্য কম্প্রেশন ভাষা প্যাকের তালিকা দেখান" + }, + "preview": { + "description": "একটি রিকোয়েস্টে কম্প্রেশনের প্রভাবের প্রিভিউ দেখুন", + "file": "রিকোয়েস্টের JSON ফাইলের পাথ" + } + }, + "tunnel": { + "title": "টানেলসমূহ", + "listDescription": "সক্রিয় টানেলের তালিকা দেখান", + "createDescription": "একটি টানেল তৈরি করুন", + "created": "টানেল তৈরি হয়েছে: {url}", + "stopped": "টানেল বন্ধ করা হয়েছে।", + "confirmStop": "টানেল {id} বন্ধ করবেন?", + "stopDescription": "একটি টানেল বন্ধ করুন", + "statusDescription": "একটি টানেলের বিস্তারিত স্ট্যাটাস দেখান", + "logsDescription": "একটি টানেলের লগ দেখান", + "infoDescription": "একটি টানেলের কনফিগারেশনের বিস্তারিত দেখান", + "rotateDescription": "একটি নতুন টানেল URL তৈরি করুন", + "tailOpt": "প্রদর্শনযোগ্য লগ লাইনের সংখ্যা", + "typeRequired": "টানেলের ধরন আবশ্যক।", + "noLogs": "কোনো লগ উপলভ্য নেই।", + "notAvailable": "টানেলের তথ্য উপলভ্য নেই।", + "noTunnels": "কোনো সক্রিয় টানেল নেই।", + "infoTitle": "টানেলের তথ্য: {type}", + "rotated": "টানেলের URL পরিবর্তিত হয়েছে: {url}", + "confirmRotate": "{type} টানেলের URL পরিবর্তন করবেন? (একটি নতুন URL তৈরি হবে)" + }, + "stop": { + "description": "OmniRoute সার্ভার বন্ধ করুন", + "stopping": "সার্ভার বন্ধ করা হচ্ছে (PID {pid})...", + "stopped": "সার্ভার বন্ধ হয়েছে।", + "notRunning": "কোনো সার্ভার চলছে না।", + "portFallback": "কোনো PID ফাইল পাওয়া যায়নি, পোর্টের ভিত্তিতে বন্ধ করার চেষ্টা করা হচ্ছে..." + }, + "restart": { + "description": "OmniRoute সার্ভার পুনরায় চালু করুন", + "restarting": "OmniRoute সার্ভার পুনরায় চালু করা হচ্ছে..." + }, + "dashboard": { + "description": "ব্রাউজারে OmniRoute ড্যাশবোর্ড খুলুন", + "opening": "{url}-এ ড্যাশবোর্ড খোলা হচ্ছে", + "urlOnly": "ব্রাউজার না খুলে ড্যাশবোর্ডের URL দেখান", + "tui": "ইন্টার্যাক্টিভ TUI ড্যাশবোর্ড খুলুন (টার্মিনাল UI, ৭টি ট্যাব)" + }, + "models": { + "description": "উপলভ্য মডেলগুলোর তালিকা দেখান (সার্ভার প্রয়োজন)", + "search": "আইডি, নাম, প্রোভাইডার বা বিবরণ অনুযায়ী মডেল ফিল্টার করুন", + "noServer": "সার্ভার চলছে না। এটি দিয়ে চালু করুন: omniroute serve", + "noModels": "কোনো মডেল পাওয়া যায়নি।" + }, + "audit": { + "description": "কমপ্লায়েন্স এবং MCP অডিট লগ অ্যাক্সেস করুন", + "source": "লগের উৎস: all|compliance|mcp (ডিফল্ট: all)", + "since": "এই টাইমস্ট্যাম্পের পরের এন্ট্রিগুলো ফেরত দিন (ISO 8601)", + "until": "এই টাইমস্ট্যাম্প পর্যন্ত এন্ট্রিগুলো ফেরত দিন (ISO 8601)", + "tail": { + "description": "সাম্প্রতিক অডিট লগ এন্ট্রিগুলো দেখান", + "follow": "নতুন এন্ট্রিগুলো ধারাবাহিকভাবে দেখান (২ সেকেন্ড অন্তর পোল)", + "limit": "সর্বাধিক যতগুলো এন্ট্রি দেখানো হবে (ডিফল্ট: ১০০)" + }, + "search": { + "description": "কীওয়ার্ড দিয়ে অডিট লগ এন্ট্রি খুঁজুন", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: ২০০)", + "actor": "অ্যাক্টর ID অনুযায়ী ফিল্টার করুন", + "action": "অ্যাকশনের নাম অনুযায়ী ফিল্টার করুন" + }, + "export": { + "description": "অডিট লগ ফাইলে এক্সপোর্ট করুন", + "format": "আউটপুট ফরম্যাট: jsonl|csv (ডিফল্ট: jsonl)" + }, + "stats": { + "description": "অডিট লগের পরিসংখ্যান দেখান", + "period": "সময়কাল: 1d|7d|30d (ডিফল্ট: 7d)" + }, + "get": { + "description": "ID দিয়ে একটি নির্দিষ্ট অডিট লগ এন্ট্রি পান" + } + }, + "skills": { + "description": "OmniRoute স্কিল পরিচালনা করুন (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "ইনস্টল করা স্কিলগুলোর তালিকা দেখান", + "type": "ধরন অনুযায়ী ফিল্টার করুন (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "শুধু সক্রিয় স্কিলগুলো দেখান", + "disabled": "শুধু নিষ্ক্রিয় স্কিলগুলো দেখান", + "api_key": "API কী অনুযায়ী ফিল্টার করুন" + }, + "get": { + "description": "ID দিয়ে একটি স্কিলের বিস্তারিত তথ্য পান" + }, + "install": { + "description": "ফাইল বা URL থেকে একটি স্কিল ইনস্টল করুন", + "from_file": "স্কিলের JSON ডেফিনিশন ফাইলের পাথ", + "from_url": "রিমোট স্কিল সংজ্ঞার URL", + "type": "স্কিলের ধরন (sandbox|custom|hybrid)", + "enable": "ইনস্টলের পর স্কিল সক্রিয় করুন" + }, + "enable": { + "description": "ID দিয়ে একটি স্কিল সক্রিয় করুন" + }, + "disable": { + "description": "ID দিয়ে একটি স্কিল নিষ্ক্রিয় করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "delete": { + "description": "ID দিয়ে একটি স্কিল মুছুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "execute": { + "description": "ID দিয়ে একটি স্কিল চালান", + "input": "JSON ইনপুট অবজেক্ট", + "input_file": "JSON ইনপুট ফাইলের পাথ", + "timeout": "এক্সিকিউশনের সময়সীমা ms-এ (ডিফল্ট: 30000)" + }, + "executions": { + "description": "স্কিল এক্সিকিউশনের ইতিহাসের তালিকা দেখান", + "skill": "স্কিল ID অনুযায়ী ফিল্টার করুন", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 50)", + "status": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন (running|completed|failed)" + }, + "skillssh": { + "description": "SSH-এর মাধ্যমে ইনস্টল করা স্কিল পরিচালনা করুন" + }, + "marketplace": { + "description": "মার্কেটপ্লেস থেকে স্কিল ব্রাউজ ও ইনস্টল করুন" + }, + "mp": { + "search": { + "description": "মার্কেটপ্লেস প্যাকেজ অনুসন্ধান করুন", + "category": "ক্যাটাগরি অনুযায়ী ফিল্টার করুন", + "tag": "ট্যাগ অনুযায়ী ফিল্টার করুন", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 30)", + "sort": "সাজানোর মানদণ্ড: downloads|rating|recent" + }, + "info": { + "description": "প্যাকেজের বিস্তারিত তথ্য ও readme দেখান" + }, + "install": { + "description": "একটি মার্কেটপ্লেস প্যাকেজ ইনস্টল করুন", + "version": "প্যাকেজ সংস্করণ (ডিফল্ট: latest)", + "enable": "ইনস্টলের পর সক্রিয় করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "categories": { + "description": "মার্কেটপ্লেস ক্যাটাগরির তালিকা দেখান" + }, + "featured": { + "description": "নির্বাচিত মার্কেটপ্লেস প্যাকেজগুলো দেখান" + } + } + }, + "memory": { + "description": "OmniRoute-এর কথোপকথনমূলক মেমরি পরিচালনা করুন (FTS5 + vector)", + "search": { + "description": "সিমান্টিক কোয়েরির মাধ্যমে মেমরি এন্ট্রি অনুসন্ধান করুন", + "type": "মেমরির ধরন অনুযায়ী ফিল্টার করুন (user|feedback|project|reference)", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 20)", + "api_key": "API কী অনুযায়ী ফিল্টার করুন", + "token_budget": "ফলাফলের মোট টোকেন সীমিত করুন" + }, + "add": { + "description": "একটি নতুন মেমরি এন্ট্রি যোগ করুন", + "content": "মেমরির টেক্সট কনটেন্ট", + "file": "ফাইল থেকে কনটেন্ট পড়ুন", + "type": "মেমরির ধরন (ডিফল্ট: user)", + "metadata": "JSON মেটাডেটা অবজেক্ট", + "api_key": "API কী-এর সঙ্গে সংযুক্ত করুন" + }, + "clear": { + "description": "ফিল্টারের সঙ্গে মিলে যাওয়া মেমরি এন্ট্রিগুলো মুছুন", + "type": "ধরন অনুযায়ী ফিল্টার করুন", + "older": "নির্দিষ্ট সময়কালের চেয়ে পুরোনো এন্ট্রি মুছুন (30d, 6m, 1y)", + "api_key": "API কী অনুযায়ী ফিল্টার করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "list": { + "description": "সার্চ র্যাঙ্কিং ছাড়াই মেমরি এন্ট্রিগুলো তালিকাভুক্ত করুন", + "type": "ধরন অনুযায়ী ফিল্টার করুন", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 100)", + "api_key": "API কী অনুযায়ী ফিল্টার করুন" + }, + "get": { + "description": "ID দিয়ে একটি মেমরি এন্ট্রি পান" + }, + "delete": { + "description": "ID দিয়ে একটি মেমরি এন্ট্রি মুছুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "health": { + "description": "মেমরি সাবসিস্টেমের স্বাস্থ্য দেখান (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth প্রোভাইডার সংযোগ পরিচালনা করুন", + "providers": { + "description": "OAuth-সক্ষম প্রোভাইডার এবং তাদের ফ্লোর ধরন তালিকাভুক্ত করুন" + }, + "start": { + "description": "কোনো প্রোভাইডারের জন্য OAuth অনুমোদন ফ্লো শুরু করুন", + "provider": "প্রোভাইডার ID (gemini, copilot, cursor, …)", + "no_browser": "শুধু URL প্রিন্ট করুন — ব্রাউজার খুলবেন না", + "import_system": "স্থানীয় সিস্টেম কনফিগ থেকে স্বয়ংক্রিয়ভাবে ক্রেডেনশিয়াল ইমপোর্ট করুন", + "social": "সোশ্যাল লগইন প্রোভাইডার (google|github) — kiro-এর জন্য আবশ্যক", + "timeout": "অনুমোদনের জন্য অপেক্ষার সময়সীমা, ms-এ (ডিফল্ট: 300000)" + }, + "status": { + "description": "সক্রিয় OAuth সংযোগগুলো তালিকাভুক্ত করুন", + "provider": "প্রোভাইডার ID অনুযায়ী ফিল্টার করুন" + }, + "revoke": { + "description": "একটি OAuth সংযোগ বাতিল করুন", + "provider": "বাতিল করার জন্য প্রোভাইডার ID", + "connection_id": "ID দিয়ে একটি নির্দিষ্ট সংযোগ বাতিল করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + } + }, + "cloud": { + "description": "ক্লাউড AI এজেন্ট টাস্ক পরিচালনা করুন (codex, devin, jules)", + "agents": { + "description": "উপলভ্য ক্লাউড এজেন্টগুলো তালিকাভুক্ত করুন" + }, + "agent": { + "description": "{agent} ক্লাউড এজেন্টের টাস্ক পরিচালনা করুন", + "auth": { + "description": "OAuth-এর মাধ্যমে {agent}-কে অনুমোদন দিন" + } + }, + "task": { + "description": "ক্লাউড এজেন্ট টাস্ক পরিচালনা করুন", + "create": { + "description": "একটি নতুন এজেন্ট টাস্ক তৈরি করুন", + "title": "টাস্কের শিরোনাম (ডিফল্টভাবে প্রম্পটের প্রথম 80টি অক্ষর)", + "prompt": "টাস্ক প্রম্পটের টেক্সট", + "prompt_file": "ফাইল থেকে প্রম্পট পড়ুন", + "repo": "টাস্কের জন্য ক্লোন করার রিপোজিটরি URL", + "branch": "ব্যবহারের জন্য ব্রাঞ্চের নাম", + "metadata": "JSON মেটাডেটা অবজেক্ট" + }, + "list": { + "description": "এজেন্টের টাস্কগুলোর তালিকা দেখান", + "status": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন (running|completed|failed|cancelled)", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 50)" + }, + "get": { + "description": "ID দিয়ে টাস্কের বিস্তারিত তথ্য পান" + }, + "status": { + "description": "টাস্কের স্ট্যাটাস প্রিন্ট করুন (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "চলমান টাস্ক বাতিল করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "approve": { + "description": "এক্সিকিউশন শুরু করতে এজেন্টের পরিকল্পনা অনুমোদন করুন" + }, + "message": { + "description": "চলমান টাস্কে একটি বার্তা পাঠান" + } + }, + "sources": { + "description": "একটি টাস্ক থেকে তৈরি সোর্স ফাইলগুলোর তালিকা দেখান" + } + }, + "eval": { + "description": "ইভ্যালুয়েশন স্যুট ও রান পরিচালনা করুন", + "suites": { + "description": "ইভ্যালুয়েশন স্যুট পরিচালনা করুন", + "list": { + "description": "ইভ্যালুয়েশন স্যুটগুলোর তালিকা দেখান" + }, + "get": { + "description": "ID দিয়ে ইভ্যালুয়েশন স্যুটের বিস্তারিত তথ্য পান" + }, + "create": { + "description": "একটি JSON ফাইল থেকে ইভ্যালুয়েশন স্যুট তৈরি করুন", + "file": "স্যুট ডেফিনিশনের JSON ফাইলের পাথ" + } + }, + "run": { + "description": "একটি স্যুটের জন্য ইভ্যালুয়েশন রান শুরু করুন", + "model": "মূল্যায়নের জন্য মডেল ID (ডিফল্ট: auto)", + "combo": "নাম দিয়ে একটি নির্দিষ্ট কম্বো বাধ্যতামূলক করুন", + "concurrency": "সমবর্তী স্যাম্পলের সংখ্যা (ডিফল্ট: 4)", + "tag": "পরে ফিল্টার করার জন্য এই রানটিতে ট্যাগ দিন", + "watch": "সম্পূর্ণ না হওয়া পর্যন্ত রানের অগ্রগতি পর্যবেক্ষণ করুন" + }, + "list": { + "description": "ইভ্যালুয়েশন রানগুলোর তালিকা দেখান", + "suite": "স্যুট ID অনুযায়ী ফিল্টার করুন", + "status": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন", + "since": "এই টাইমস্ট্যাম্পের পরের রানগুলো ফেরত দিন", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 50)" + }, + "get": { + "description": "ID দিয়ে ইভ্যালুয়েশন রানের বিস্তারিত তথ্য পান" + }, + "results": { + "description": "একটি ইভ্যালুয়েশন রানের স্যাম্পল ফলাফল দেখান", + "failed": "শুধু ব্যর্থ স্যাম্পলগুলো দেখান" + }, + "cancel": { + "description": "চলমান ইভ্যালুয়েশন বাতিল করুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "scorecard": { + "description": "সম্পন্ন ইভ্যালুয়েশন রানের স্কোরকার্ড দেখান" + } + }, + "webhooks": { + "description": "OmniRoute ওয়েবহুক পরিচালনা করুন", + "events": { + "description": "সব উপলভ্য ওয়েবহুক ইভেন্ট টাইপের তালিকা দেখান" + }, + "list": { + "description": "কনফিগার করা ওয়েবহুকগুলোর তালিকা দেখান" + }, + "get": { + "description": "ID দিয়ে ওয়েবহুকের বিস্তারিত তথ্য পান" + }, + "add": { + "description": "একটি নতুন ওয়েবহুক নিবন্ধন করুন", + "url": "গন্তব্য URL", + "events": "কমা দিয়ে পৃথক করা ইভেন্ট টাইপের তালিকা", + "secret": "HMAC সাইনিং সিক্রেট", + "header": "key=value ফরম্যাটে অতিরিক্ত হেডার (পুনরাবৃত্তিযোগ্য)", + "no_enabled": "নিষ্ক্রিয় অবস্থায় ওয়েবহুক তৈরি করুন" + }, + "update": { + "description": "বিদ্যমান ওয়েবহুক আপডেট করুন", + "enabled": "সক্রিয় অবস্থা সেট করুন (true|false)" + }, + "remove": { + "description": "একটি ওয়েবহুক মুছুন", + "yes": "নিশ্চিতকরণ প্রম্পট এড়িয়ে যান" + }, + "test": { + "description": "একটি ওয়েবহুকে পরীক্ষামূলক ইভেন্ট পাঠান", + "event": "সিমুলেট করার জন্য ইভেন্ট টাইপ (ডিফল্ট: request.completed)" + } + }, + "program": { + "description": "OmniRoute — স্বয়ংক্রিয় ফলব্যাকসহ স্মার্ট AI রাউটার", + "version": "সংস্করণ প্রিন্ট করে প্রস্থান করুন", + "output": "আউটপুট ফরম্যাট (table, json, jsonl, csv)", + "quiet": "অপ্রয়োজনীয় আউটপুট দমন করুন", + "no_color": "রঙিন আউটপুট নিষ্ক্রিয় করুন", + "timeout": "মিলিসেকেন্ডে HTTP অনুরোধের সময়সীমা", + "api_key": "OmniRoute সার্ভারের API কী", + "base_url": "OmniRoute সার্ভারের বেস URL", + "context": "এই কমান্ডের জন্য ব্যবহারযোগ্য সার্ভার কনটেক্সট/প্রোফাইল", + "lang": "CLI প্রদর্শনের ভাষা সেট করুন (OMNIROUTE_LANG ওভাররাইড করে)" + }, + "files": { + "description": "ফাইল পরিচালনা করুন (আপলোড, তালিকা, তথ্য পাওয়া, ডাউনলোড, মুছে ফেলা)", + "list": { + "purpose": "উদ্দেশ্য অনুযায়ী ফিল্টার করুন", + "limit": "সর্বোচ্চ ফলাফলের সংখ্যা" + }, + "get": { + "description": "ফাইলের মেটাডেটা পান" + }, + "upload": { + "description": "একটি ফাইল আপলোড করুন", + "purpose": "ফাইলের উদ্দেশ্য (batch, assistants, fine-tune)" + }, + "content": { + "description": "ফাইলের কনটেন্ট ডাউনলোড করুন", + "out": "পাথে সংরক্ষণ করুন (ডিফল্ট: stdout)" + }, + "delete": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + } + }, + "batches": { + "description": "OpenAI-সামঞ্জস্যপূর্ণ ব্যাচ জব পরিচালনা করুন", + "list": { + "status": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন", + "limit": "সর্বোচ্চ ফলাফলের সংখ্যা" + }, + "create": { + "description": "একটি ব্যাচ জব তৈরি করুন", + "inputFile": "ইনপুট ফাইল ID", + "endpoint": "লক্ষ্য এন্ডপয়েন্ট", + "window": "সম্পন্ন করার সময়সীমা", + "metadata": "মেটাডেটা key=value যোগ করুন" + }, + "submit": { + "description": "JSONL ফাইল আপলোড করে ব্যাচ তৈরি করুন", + "jsonl": "JSONL ফাইলের পাথ", + "endpoint": "লক্ষ্য এন্ডপয়েন্ট", + "wait": "সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন" + }, + "cancel": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "wait": { + "timeout": "মিলিসেকেন্ডে টাইমআউট" + }, + "output": { + "out": "আউটপুট পাথে সংরক্ষণ করুন" + }, + "errors": { + "out": "ত্রুটিগুলো পাথে সংরক্ষণ করুন" + } + }, + "translator": { + "description": "LLM ফরম্যাটগুলোর মধ্যে রিকোয়েস্ট বডি অনুবাদ করুন", + "detect": { + "description": "বডির ফরম্যাট শনাক্ত করুন" + }, + "translate": { + "description": "বডি এক ফরম্যাট থেকে অন্য ফরম্যাটে রূপান্তর করুন" + }, + "send": { + "description": "অনুবাদ করে আপস্ট্রিমে পাঠান" + }, + "stream": { + "description": "রিকোয়েস্ট বডি স্ট্রিমিং পদ্ধতিতে অনুবাদ করুন" + }, + "from": "সোর্স ফরম্যাট (openai|anthropic|gemini|cohere)", + "to": "টার্গেট ফরম্যাট (openai|anthropic|gemini|cohere)", + "file": "রিকোয়েস্ট বডির JSON ফাইলের পাথ", + "out": "আউটপুট ফাইলে সংরক্ষণ করুন", + "model": "মডেল ওভাররাইড করুন", + "history": { + "limit": "ফলাফলের সর্বোচ্চ সংখ্যা" + } + }, + "pricing": { + "description": "মডেলগুলোর মূল্য-সংক্রান্ত ডেটা পরিচালনা করুন", + "sync": { + "description": "আপস্ট্রিম সোর্স থেকে মূল্য সিঙ্ক করুন", + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "force": "জোরপূর্বক পুনরায় সিঙ্ক করুন" + }, + "list": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "model": "মডেল অনুযায়ী ফিল্টার করুন", + "limit": "ফলাফলের সর্বোচ্চ সংখ্যা" + }, + "defaults": { + "description": "ডিফল্ট মূল্য পরিচালনা করুন", + "input": "প্রতি 1M টোকেনের ইনপুট খরচ (USD)", + "output": "প্রতি 1M টোকেনের আউটপুট খরচ (USD)", + "cacheRead": "প্রতি 1M টোকেনের ক্যাশ রিড খরচ (USD)", + "cacheWrite": "প্রতি 1M টোকেনের ক্যাশ রাইট খরচ (USD)" + }, + "diff": { + "description": "আপস্ট্রিম মূল্য থেকে পার্থক্য দেখান", + "model": "মডেল অনুযায়ী ফিল্টার করুন" + } + }, + "radar": { + "description": "স্থানীয় Radar ক্যাটালগ ফিড পরিদর্শন ও সিঙ্ক্রোনাইজ করুন", + "status": "স্থানীয় Radar সেটিংস ও ফিড ক্যাশের অবস্থা দেখান", + "sync": "স্থানীয় সার্ভারের মাধ্যমে ক্যাটালগ, রেফারেল, অফার ও Intel সিঙ্ক্রোনাইজ করুন" + }, + "resilience": { + "description": "স্থিতিস্থাপকতা ব্যবস্থা পরিদর্শন ও পরিচালনা করুন", + "status": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন" + }, + "breakers": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন" + }, + "cooldowns": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "connectionId": "কানেকশন ID অনুযায়ী ফিল্টার করুন" + }, + "lockouts": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "model": "মডেল অনুযায়ী ফিল্টার করুন" + }, + "reset": { + "description": "ব্রেকার/কুলডাউন অবস্থা রিসেট করুন", + "provider": "রিসেট করার প্রোভাইডার", + "connectionId": "রিসেট করার সংযোগ ID", + "model": "লকআউট রিসেট করার মডেল", + "allCooldowns": "প্রোভাইডারের সব কুলডাউন রিসেট করুন", + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "profile": { + "description": "স্থিতিস্থাপকতা প্রোফাইল পরিচালনা করুন", + "name": "প্রোফাইলের নাম" + }, + "config": { + "description": "স্থিতিস্থাপকতা কনফিগ পরিচালনা করুন", + "threshold": "ব্যর্থতার সীমা", + "resetTimeout": "রিসেট টাইমআউট, ms-এ", + "baseCooldown": "বেস কুলডাউন, ms-এ" + } + }, + "nodes": { + "description": "প্রোভাইডার নোড (এন্ডপয়েন্ট) পরিচালনা করুন", + "list": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "enabled": "শুধু সক্রিয় নোডগুলো দেখান" + }, + "add": { + "provider": "প্রোভাইডারের নাম", + "baseUrl": "নোডের বেস URL", + "name": "নোডের নাম", + "weight": "লোড ব্যালান্সিং ওজন", + "region": "অঞ্চল ট্যাগ", + "authHeader": "কাস্টম অথ হেডার (key=value)" + }, + "update": { + "baseUrl": "নতুন বেস URL", + "name": "নতুন নাম", + "weight": "নতুন ওজন", + "region": "নতুন অঞ্চল", + "enabled": "সক্রিয় বা নিষ্ক্রিয় করুন (true|false)" + }, + "remove": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "validate": { + "baseUrl": "যাচাই করার URL", + "provider": "যে প্রোভাইডারের বিপরীতে যাচাই করতে হবে" + }, + "test": { + "description": "নোডে পরীক্ষামূলক অনুরোধ পাঠান" + }, + "metrics": { + "description": "নোডের মেট্রিক্স দেখান", + "period": "সময়কাল (যেমন 24h, 7d)" + } + }, + "context": { + "description": "কনটেক্সট ইঞ্জিনিয়ারিং পাইপলাইন কনফিগার করুন (Caveman, RTK)", + "analytics": { + "period": "সময়কাল (যেমন 7d, 30d)" + }, + "caveman": { + "description": "Caveman কনটেক্সট কম্প্রেসর পরিচালনা করুন", + "config": { + "description": "Caveman কনফিগ দেখুন বা আপডেট করুন", + "aggressiveness": "আক্রমণাত্মকতার মাত্রা 0.0–1.0", + "maxShrinkPct": "সর্বোচ্চ সংকোচনের শতাংশ", + "preserveTags": "সংরক্ষণের জন্য কমা দিয়ে পৃথক করা ট্যাগ" + } + }, + "rtk": { + "description": "RTK কনটেক্সট অপ্টিমাইজার পরিচালনা করুন", + "config": { + "description": "RTK কনফিগ দেখান বা আপডেট করুন", + "tokenBudget": "RTK-এর টোকেন বাজেট", + "reservePct": "সংরক্ষিত শতাংশ" + }, + "filters": { + "description": "RTK ফিল্টার পরিচালনা করুন", + "pattern": "ফিল্টার প্যাটার্ন (regex)", + "priority": "ফিল্টারের অগ্রাধিকার (ডিফল্ট: 100)", + "action": "ফিল্টার অ্যাকশন: drop|shrink|replace", + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "test": { + "file": "অনুরোধের JSON ফাইলের পাথ" + } + }, + "combos": { + "description": "কনটেক্সট-সচেতন কম্বো ব্যবস্থাপনা" + } + }, + "sessions": { + "description": "সক্রিয় সেশন পরিদর্শন ও পরিচালনা করুন", + "list": { + "user": "ব্যবহারকারী অনুযায়ী ফিল্টার করুন", + "kind": "ধরন অনুযায়ী ফিল্টার করুন (dashboard|api-key|mcp|a2a)", + "active": "শুধু সক্রিয় সেশন দেখান", + "limit": "সর্বাধিক ফলাফল (ডিফল্ট: 100)" + }, + "expire": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "expireAll": { + "user": "যে ব্যবহারকারীর সেশনগুলোর মেয়াদ শেষ করতে হবে", + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + } + }, + "tags": { + "description": "রিসোর্স ট্যাগ পরিচালনা করুন", + "add": { + "color": "ট্যাগের রং (hex বা নাম)", + "description": "ট্যাগের বিবরণ" + }, + "remove": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "assign": { + "tag": "ট্যাগের নাম", + "to": "type:id হিসেবে লক্ষ্য রিসোর্স (যেমন provider:openai)" + }, + "unassign": { + "tag": "ট্যাগের নাম", + "from": "type:id হিসেবে উৎস রিসোর্স" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI স্পেক অ্যাক্সেস ও পরীক্ষা করুন", + "dump": { + "description": "OpenAPI স্পেক stdout বা ফাইলে ডাম্প করুন", + "format": "আউটপুট ফরম্যাট: yaml|json (ডিফল্ট: yaml)", + "out": "ফাইল পাথে সংরক্ষণ করুন" + }, + "validate": { + "description": "OpenAPI স্পেক যাচাই করুন" + }, + "try": { + "description": "স্পেকের মাধ্যমে একটি API এন্ডপয়েন্ট পরীক্ষা করুন", + "method": "HTTP মেথড (ডিফল্ট: GET)", + "body": "রিকোয়েস্ট বডির JSON ফাইলের পাথ", + "query": "key=value হিসেবে কোয়েরি প্যারামিটার (পুনরাবৃত্তিযোগ্য)", + "header": "key=value হিসেবে হেডার (পুনরাবৃত্তিযোগ্য)" + }, + "endpoints": { + "description": "সব API এন্ডপয়েন্টের তালিকা দেখান", + "search": "পাথ বা সারাংশ অনুযায়ী ফিল্টার করুন" + }, + "paths": { + "description": "সব API পাথের তালিকা দেখান" + } + }, + "combo": { + "title": "কম্বো", + "switched": "সক্রিয় কম্বো: {name}", + "created": "কম্বো তৈরি হয়েছে: {name}", + "deleted": "কম্বো মুছে ফেলা হয়েছে: {name}", + "noCombos": "কোনো কম্বো কনফিগার করা নেই।", + "confirmDelete": "{name} কম্বোটি মুছবেন?", + "suggest": { + "description": "AI স্কোরিং ব্যবহার করে একটি কাজের জন্য সেরা কম্বোর পরামর্শ দিন", + "task": "কাজের বিবরণ", + "maxCost": "প্রতি অনুরোধের সর্বোচ্চ খরচ, USD-তে", + "maxLatencyMs": "সর্বোচ্চ ল্যাটেন্সি, মিলিসেকেন্ডে", + "weights": "JSON স্কোরিং ওজন, যেমন {\"latency\":0.7,\"cost\":0.3}", + "top": "প্রদর্শনের জন্য শীর্ষ প্রার্থীর সংখ্যা (ডিফল্ট: 5)", + "explain": "stderr-এ যুক্তি প্রিন্ট করুন", + "switch": "শীর্ষস্থানীয় কম্বোটি সক্রিয় করুন" + } + }, + "oneproxy": { + "description": "OneProxy আপস্ট্রিম পুল পরিচালনা করুন", + "stats": { + "provider": "প্রোভাইডার অনুযায়ী ফিল্টার করুন", + "period": "সময়কাল (ডিফল্ট: 24h)" + }, + "fetch": { + "description": "পুল থেকে প্রক্সি আনুন", + "count": "আনার জন্য প্রক্সির সংখ্যা (ডিফল্ট: 1)", + "type": "প্রক্সির ধরন: http|socks5 (ডিফল্ট: http)" + }, + "rotate": { + "description": "প্রক্সি রোটেশন বাধ্যতামূলক করুন", + "provider": "যে প্রোভাইডারের জন্য রোটেট করতে হবে", + "connectionId": "রোটেট করার জন্য নির্দিষ্ট সংযোগ ID" + }, + "config": { + "description": "OneProxy কনফিগ দেখান বা আপডেট করুন", + "enabled": "প্রক্সি পুল সক্রিয় করুন (true|false)", + "poolSize": "পুলের আকার", + "providerSource": "প্রক্সি প্রোভাইডারের URL", + "rotationPolicy": "রোটেশন নীতি: sticky|per-request|periodic" + }, + "pool": { + "description": "মেট্রিক্সসহ বর্তমান প্রক্সি পুলের তালিকা দেখান" + } + }, + "open": { + "description": "ব্রাউজারে একটি নির্দিষ্ট OmniRoute ড্যাশবোর্ড পৃষ্ঠা খুলুন", + "url": "শুধু URL প্রিন্ট করুন, ব্রাউজার খুলবেন না" + }, + "telemetry": { + "description": "সমন্বিত টেলিমেট্রি ডেটা অ্যাক্সেস করুন", + "summary": { + "description": "সমন্বিত টেলিমেট্রি সারসংক্ষেপ দেখান", + "period": "সময়কাল: 24h|7d|30d (ডিফল্ট: 24h)", + "compareTo": "পূর্ববর্তী সময়কালের সঙ্গে তুলনা করুন" + }, + "export": { + "description": "টেলিমেট্রি ইভেন্টগুলো JSONL-এ এক্সপোর্ট করুন", + "out": "আউটপুট ফাইল পাথ (ডিফল্ট: telemetry.jsonl)", + "period": "এক্সপোর্টের সময়কাল (ডিফল্ট: 7d)" + } + }, + "sync": { + "description": "OmniRoute ইনস্ট্যান্সগুলোর মধ্যে কনফিগারেশন সিঙ্ক করুন", + "push": { + "description": "কনফিগ ক্লাউড বা রিমোট ইনস্ট্যান্সে পুশ করুন", + "target": "লক্ষ্য (cloud বা context:name)", + "bundle": "সিঙ্ক করার জন্য বান্ডেলের অংশসমূহ", + "dryRun": "প্রয়োগ না করে পূর্বরূপ দেখুন" + }, + "pull": { + "description": "ক্লাউড বা রিমোট থেকে কনফিগ আনুন", + "source": "উৎস (ক্লাউড বা context:name)", + "merge": "বিদ্যমান কনফিগের সঙ্গে মার্জ করুন", + "replace": "বিদ্যমান কনফিগ প্রতিস্থাপন করুন", + "dryRun": "প্রয়োগ না করে পূর্বরূপ দেখুন" + }, + "diff": { + "source": "উৎস কনটেক্সট", + "target": "লক্ষ্য কনটেক্সট" + }, + "bundle": { + "description": "কনফিগ একটি বান্ডেল ফাইল হিসেবে এক্সপোর্ট করুন", + "include": "অন্তর্ভুক্ত করার অংশসমূহ (কমা দিয়ে পৃথক করা)" + }, + "import": { + "description": "একটি বান্ডেল ফাইল ইমপোর্ট করুন", + "dryRun": "প্রয়োগ না করে যাচাই করুন" + }, + "initialize": { + "fromCloud": "ক্লাউড ব্যাকআপ থেকে শুরু করুন" + }, + "tokens": { + "description": "সিঙ্ক টোকেন পরিচালনা করুন", + "create": { + "name": "টোকেনের নাম", + "scope": "টোকেনের স্কোপ", + "ttl": "টোকেনের TTL (যেমন 30d)" + }, + "revoke": { + "yes": "নিশ্চিতকরণ এড়িয়ে যান" + } + }, + "resolve": { + "description": "ইন্টারঅ্যাক্টিভভাবে সিঙ্ক দ্বন্দ্ব সমাধান করুন" + } + }, + "config": { + "contexts": { + "description": "সার্ভার কনটেক্সট/প্রোফাইল পরিচালনা করুন (যোগ, ব্যবহার, তালিকা, প্রদর্শন, অপসারণ, পুনঃনামকরণ, এক্সপোর্ট, ইমপোর্ট)" + }, + "lang": { + "description": "CLI-এর প্রদর্শন ভাষা পরিচালনা করুন", + "getDescription": "বর্তমানে সক্রিয় ভাষার কোড দেখান", + "setDescription": "প্রদর্শন ভাষা সেট করে কনফিগে সংরক্ষণ করুন", + "listDescription": "উপলভ্য সব ভাষার তালিকা দেখান", + "listTitle": "উপলভ্য ভাষাসমূহ", + "current": "ভাষা: {code} ({name})", + "saved": "ভাষা {code} ({name})-এ সেট করা হয়েছে।", + "noCode": "ভাষার কোড আবশ্যক। উপলভ্য কোড দেখতে 'omniroute config lang list' চালান।", + "unknown": "অজানা ভাষার কোড: {code}। উপলভ্য কোড দেখতে 'omniroute config lang list' চালান।", + "alreadySet": "ভাষা ইতিমধ্যেই {code}-এ সেট করা আছে।", + "envHint": "পরামর্শ: আপনার এনভায়রনমেন্টে OMNIROUTE_LANG={code} সেট করেও এটি করা যায়।" + } + }, + "completion": { + "description": "শেল কমপ্লিশন স্ক্রিপ্ট তৈরি বা ইনস্টল করুন", + "zsh": "zsh কমপ্লিশন স্ক্রিপ্ট প্রিন্ট করুন", + "bash": "bash কমপ্লিশন স্ক্রিপ্ট প্রিন্ট করুন", + "fish": "fish কমপ্লিশন স্ক্রিপ্ট প্রিন্ট করুন", + "install": "শনাক্ত করা শেলের জন্য কমপ্লিশন স্ক্রিপ্টটি গ্লোবালি ইনস্টল করুন", + "refresh": "কম্বো/প্রোভাইডার/মডেলের ক্যাশ রিফ্রেশ করুন" + }, + "logs": { + "description": "রিকোয়েস্ট লগ স্ট্রিম বা এক্সপোর্ট করুন", + "follow": "রিয়েল-টাইমে লগ স্ট্রিম করুন", + "filter": "লেভেল অনুযায়ী ফিল্টার করুন (error,warn,info) — কমা দিয়ে পৃথক করা", + "lines": "আনার জন্য লাইনের সংখ্যা", + "timeout": "সংযোগের সময়সীমা, ms-এ", + "baseUrl": "OmniRoute API-এর বেস URL", + "requestId": "অনুরোধ ID অনুযায়ী ফিল্টার করুন", + "apiKey": "API কী অনুযায়ী ফিল্টার করুন", + "combo": "কম্বোর নাম অনুযায়ী ফিল্টার করুন", + "status": "HTTP স্ট্যাটাস কোড অনুযায়ী ফিল্টার করুন", + "durationMin": "অনুরোধের সর্বনিম্ন সময়কাল, ms-এ", + "durationMax": "অনুরোধের সর্বোচ্চ সময়কাল, ms-এ", + "export": "লগ ফাইলে সংরক্ষণ করুন (json/jsonl/csv)", + "exported": "লগ {path}-এ সংরক্ষিত হয়েছে", + "stopped": "লগ স্ট্রিম বন্ধ হয়েছে।", + "streamError": "লগ স্ট্রিমে ত্রুটি: {message}" + }, + "tray": { + "description": "সিস্টেম ট্রে আইকন নিয়ন্ত্রণ করুন", + "show": "ট্রে আইকন দেখান (সার্ভার --tray সহ চললে)", + "hide": "ট্রে আইকন লুকান", + "quit": "ট্রে থেকে OmniRoute বন্ধ করুন" + }, + "autostart": { + "description": "বুটের সময় OmniRoute-এর স্বয়ংক্রিয় চালু হওয়া পরিচালনা করুন (Linux: systemd user service)", + "enable": "বুটের সময় স্বয়ংক্রিয় চালু হওয়া সক্রিয় করুন", + "disable": "বুটের সময় স্বয়ংক্রিয় চালু হওয়া নিষ্ক্রিয় করুন", + "toggle": "বুটের সময় স্বয়ংক্রিয় চালু হওয়ার অবস্থা টগল করুন", + "status": "স্বয়ংক্রিয় চালু হওয়ার অবস্থা দেখান" + }, + "runtime": { + "description": "নেটিভ রানটাইম নির্ভরতাগুলো পরিচালনা করুন", + "check": "রানটাইম ডিরেক্টরিতে নেটিভ নির্ভরতাগুলোর অবস্থা পরীক্ষা করুন", + "repair": "রানটাইম ডিরেক্টরিতে নেটিভ নির্ভরতাগুলো পুনরায় ইনস্টল করুন", + "repair_force": "বৈধ হলেও জোরপূর্বক পুনরায় ইনস্টল করুন", + "clean": "রানটাইম ডিরেক্টরি সরিয়ে দিন (ডিস্কের জায়গা খালি করে)", + "clean_yes": "নিশ্চিতকরণ এড়িয়ে যান" + }, + "repl": { + "description": "LLM-এর সঙ্গে ইন্টার্যাক্টিভ মাল্টি-টার্ন REPL", + "model": "ব্যবহারের মডেল (ডিফল্ট: auto)", + "combo": "ব্যবহারের জন্য কম্বোর নাম", + "system": "সিস্টেম প্রম্পট", + "resume": "নাম অনুযায়ী সংরক্ষিত সেশন পুনরায় শুরু করুন" + }, + "plugin": { + "description": "CLI প্লাগইনগুলো পরিচালনা করুন (omniroute-cmd-*)", + "list": "ইনস্টল করা প্লাগইনগুলোর তালিকা দেখান", + "install": "npm বা লোকাল পাথ থেকে একটি প্লাগইন ইনস্টল করুন", + "remove": "ইনস্টল করা একটি প্লাগইন সরিয়ে দিন", + "info": "ইনস্টল করা একটি প্লাগইনের বিস্তারিত দেখান", + "search": "উপলভ্য প্লাগইনের জন্য npm registry-তে অনুসন্ধান করুন", + "update": "ইনস্টল করা প্লাগইন আপডেট করুন", + "scaffold": "একটি নতুন প্লাগইনের বয়লারপ্লেট তৈরি করুন" + }, + "launch": { + "description": "OmniRoute-এর দিকে নির্দেশিত Claude Code চালু করুন (লোকাল বা রিমোট, --profile সহ)", + "token": "Claude ক্লায়েন্টের পাঠানোর জন্য টোকেন (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "{port}-এ OmniRoute অ্যাক্সেসযোগ্য নয়। 'omniroute serve' দিয়ে এটি চালু করুন।", + "notFound": "PATH-এ 'claude' CLI পাওয়া যায়নি।" + }, + "run": { + "description": "OmniRoute-এর মাধ্যমে একটি সমর্থিত CLI টার্গেট চালু করুন" + }, + "setupClaude": { + "description": "OmniRoute মডেল ক্যাটালগ থেকে ~/.claude/profiles Claude Code প্রোফাইল তৈরি করুন" + }, + "connect": { + "description": "একটি রিমোট OmniRoute সার্ভারের সাথে সংযোগ করুন এবং রিমোট মোডে প্রবেশ করুন" + }, + "tokens": { + "description": "স্কোপযুক্ত CLI অ্যাক্সেস টোকেন পরিচালনা করুন (রিমোট মোড)" + }, + "configure": { + "description": "সক্রিয় সার্ভার থেকে একটি প্রোভাইডার+মডেল বেছে নিয়ে একটি সমর্থিত লোকাল CLI কনফিগার করুন" + }, + "launchCodex": { + "description": "OmniRoute-এর দিকে নির্দেশিত Codex CLI চালু করুন (লোকাল বা রিমোট VPS)" + }, + "setupCodex": { + "description": "OmniRoute-এর লাইভ মডেল ক্যাটালগ থেকে ~/.codex প্রোফাইল ফাইল তৈরি করুন" + }, + "packs": { + "description": "ঐচ্ছিক রানটাইম প্যাক পরিচালনা করুন (ML / ব্রাউজার অটোমেশন)", + "listDescription": "ঐচ্ছিক প্যাক এবং সেগুলোর ইনস্টলেশনের অবস্থা তালিকাভুক্ত করুন", + "installDescription": "DATA_DIR-এ একটি ঐচ্ছিক প্যাক ইনস্টল করুন", + "verifyDescription": "সরবরাহকৃত চেকসাম ইনডেক্সের সাথে ইনস্টল করা প্যাকগুলো যাচাই করুন", + "removeDescription": "ইনস্টল করা একটি ঐচ্ছিক প্যাক সরিয়ে ফেলুন", + "sourceOpt": "প্যাকের পেলোড এবং প্যাক ইনডেক্স ধারণকারী ডিরেক্টরি", + "warnNoIndex": "optional-packs.index.json পাওয়া যায়নি — এই চেকআউটে ইনস্টল/যাচাই উপলভ্য নয় (ডেস্কটপ বান্ডেলে এটি অন্তর্ভুক্ত থাকে)", + "errUnknown": "অজানা প্যাক: {name}", + "errNoIndex": "প্যাক ইনডেক্স পাওয়া যায়নি; প্যাকের পেলোড ধারণকারী --source দিন (ডেস্কটপ বান্ডেলে এটি অ্যাপের পাশে থাকে)", + "installed": "প্যাক \"{name}\" ইনস্টল করা হয়েছে এবং {dir}-এ যাচাই করা হয়েছে", + "restartHint": "রানটাইমে প্যাকটি কার্যকর করতে OmniRoute সার্ভার (বা ডেস্কটপ অ্যাপ) পুনরায় চালু করুন", + "removed": "প্যাক \"{name}\" সরিয়ে ফেলা হয়েছে", + "notInstalled": "প্যাক \"{name}\" ইনস্টল করা ছিল না", + "verifyOk": "ইনস্টল করা সব প্যাক যাচাই করা হয়েছে", + "verifyFailed": "{count}টি প্যাক যাচাইয়ে ব্যর্থ হয়েছে", + "noneInstalled": "কোনো ঐচ্ছিক প্যাক ইনস্টল করা নেই" } } diff --git a/bin/cli/locales/cs.json b/bin/cli/locales/cs.json index f3735f2717..14e52d3b49 100644 --- a/bin/cli/locales/cs.json +++ b/bin/cli/locales/cs.json @@ -14,6 +14,812 @@ "jsonOpt": "Výstup jako JSON", "yesOpt": "Přeskočit potvrzení" }, + "setup": { + "title": "Nastavení OmniRoute", + "passwordPrompt": "Heslo správce", + "providerPrompt": "Výchozí poskytovatel (ponechte prázdné pro přeskočení)", + "done": "Nastavení dokončeno", + "passwordSet": "Heslo správce nakonfigurováno", + "providerSet": "Poskytovatel nakonfigurován: {name}", + "testingProvider": "Testování připojení k poskytovateli: {name}", + "testPassed": "Test poskytovatele proběhl úspěšně", + "testFailed": "Test poskytovatele selhal: {error}", + "loginEnabled": "Přihlášení: povoleno (heslo aktualizováno)", + "loginDisabled": "Přihlášení: zakázáno", + "providerInfo": "Poskytovatel: {info}", + "opencode": "Nainstalovat a nakonfigurovat přibalený modul @omniroute/opencode-plugin pro OpenCode" + }, + "doctor": { + "title": "Diagnostika OmniRoute", + "dbOk": "Databáze: v pořádku ({path})", + "dbMissing": "Databáze: neinicializována — spusťte `omniroute setup`", + "portOk": "Port {port}: dostupný", + "portConflict": "Port {port}: používá jej jiný proces", + "encryptionOk": "Šifrovací klíč: nakonfigurován", + "encryptionMissing": "Chybí šifrovací klíč — spusťte `omniroute setup`", + "allGood": "Všechny kontroly proběhly úspěšně.", + "warnings": "Počet varování: {count} — viz výše." + }, + "providers": { + "title": "Poskytovatelé", + "noProviders": "Nejsou nakonfigurováni žádní poskytovatelé. Spusťte: omniroute setup", + "testing": "Testování poskytovatele {name}...", + "available": "Počet dostupných poskytovatelů: {count}", + "connected": "Připojeno", + "disconnected": "Odpojeno", + "validationFailed": "Ověření selhalo: {error}", + "metrics": { + "description": "Zobrazit metriky výkonu poskytovatelů (latence, úspěšnost, náklady)", + "provider": "Filtrovat podle ID poskytovatele", + "connection_id": "Filtrovat podle ID připojení", + "period": "Časové období: 1h|6h|24h|7d|30d (výchozí: 24h)", + "metric": "Zaměřit se na konkrétní pole metriky", + "sort": "Seřadit podle pole (sestupně)", + "limit": "Maximální počet řádků (výchozí: 50)", + "watch": "Obnovovat každých 5 s (živý režim)", + "compare": "ID poskytovatelů oddělená čárkami pro vzájemné porovnání" + }, + "metric_single": { + "description": "Získat jednu hodnotu metriky pro konkrétní připojení" + }, + "rotate": { + "description": "Obměnit upstreamový klíč API pro připojení poskytovatele", + "newKeyOpt": "Nová hodnota klíče API (nedoporučuje se: použijte raději --from-env)", + "fromEnvOpt": "Načíst nový klíč z proměnné prostředí VAR", + "oauthOpt": "Místo toho spustit proces opětovného ověření OAuth", + "skipTestOpt": "Přeskočit test připojení po rotaci", + "dryRunOpt": "Vypsat, co by se změnilo, bez provedení zápisu", + "confirmPrompt": "Nahradit klíč API pro připojení „{name}“ ({id})? [y/N]", + "dryRunResult": "[dry-run] Proběhla by rotace klíče pro „{name}“ ({id}). Nebyly provedeny žádné změny.", + "oauthHint": "Připojení OAuth — spusťte: omniroute oauth {provider}", + "envVarEmpty": "Proměnná prostředí {var} není nastavena nebo je prázdná.", + "success": "Klíč pro „{name}“ byl rotován. Pro ověření spusťte `providers test {id}`.", + "testPassed": "Test po rotaci proběhl úspěšně.", + "testFailed": "Test po rotaci selhal: {error}" + }, + "status": { + "description": "Zobrazit stav klíčů pro všechna připojení poskytovatelů (stáří, vypršení platnosti, interval obnovení)", + "providerOpt": "Filtrovat podle názvu poskytovatele", + "header": "ID Poskytovatel Název Stav platnosti Stav testu Obnovení možné od", + "noData": "Nejsou k dispozici žádná data o připojeních poskytovatelů.", + "requiresServer": "Příkaz providers status vyžaduje spuštěný server OmniRoute." + } + }, + "keys": { + "title": "Klíče API", + "addDescription": "Přidat nebo aktualizovat klíč API pro poskytovatele", + "listDescription": "Vypsat všechny nakonfigurované klíče API", + "removeDescription": "Odebrat klíč API poskytovatele", + "regenerateDescription": "Vygenerovat nový klíč API OmniRoute", + "revokeDescription": "Zneplatnit klíč API OmniRoute", + "revealDescription": "Zobrazit nezamaskovanou hodnotu klíče API", + "usageDescription": "Zobrazit nedávné využití klíče API", + "usageLimitOpt": "Počet nedávných požadavků", + "rotateDescription": "Vygenerovat nový klíč a zneplatnit starý", + "graceOpt": "Doba odkladu (ms) před zneplatněním starého klíče", + "stdinOpt": "Načíst klíč API ze standardního vstupu místo z argumentu", + "added": "Klíč pro poskytovatele {provider} byl přidán.", + "removed": "Klíč byl odebrán.", + "listed": "Počet klíčů: {count}.", + "noKeys": "Nejsou nakonfigurovány žádné klíče.", + "noUsage": "Nebyla nalezena žádná data o využití.", + "confirmRemove": "Odebrat klíč {id}?", + "confirmRegenerate": "Vygenerovat znovu klíč {id}?", + "confirmRevoke": "Zneplatnit klíč {id}?", + "confirmRotate": "Rotovat klíč {id}? (starý klíč bude zneplatněn po uplynutí doby odkladu)", + "regenerated": "Nový klíč byl vygenerován. Nový klíč: {key}", + "revoked": "Klíč {id} byl zneplatněn.", + "rotated": "Klíč {id} byl obměněn. ID nového klíče: {newId}", + "revealWarning": "⚠ Zobrazí se celý nezamaskovaný klíč. Ujistěte se, že vaši obrazovku nikdo nevidí.", + "providerRequired": "Poskytovatel je povinný.", + "keyRequired": "Klíč API je povinný.", + "stdinEmpty": "Prostřednictvím stdin nebyl zadán žádný klíč API.", + "unknownProvider": "Neznámý poskytovatel: {provider}", + "policy": { + "title": "Zásady klíče", + "showDescription": "Zobrazit zásady limitů a nákladů pro klíč", + "setDescription": "Nastavit zásady limitů a nákladů pro klíč", + "rateLimitOpt": "Maximální počet požadavků za minutu", + "maxCostOpt": "Maximální náklady za den (USD)", + "allowedModelsOpt": "Čárkami oddělený seznam povolených modelů", + "nothingToSet": "Nebyla zadána žádná pole zásad. Použijte --rate-limit, --max-cost nebo --allowed-models.", + "updated": "Zásady byly aktualizovány." + }, + "expiration": { + "title": "Vypršení platnosti klíče", + "listDescription": "Vypsat klíče, jejichž platnost brzy vyprší", + "daysOpt": "Zobrazit klíče, jejichž platnost vyprší během N dnů", + "none": "Během {days} dnů nevyprší platnost žádného klíče.", + "listTitle": "Klíče, jejichž platnost vyprší během {days} dnů:" + } + }, + "authExport": { + "description": "Exportovat DEŠIFROVANÉ přihlašovací údaje poskytovatele (pouze lokálně, výstup v prostém textu)", + "idOpt": "Exportovat pouze připojení odpovídající tomuto ID, názvu nebo poskytovateli", + "formatOpt": "Formát výstupu: json nebo env", + "outOpt": "Zapsat výstup do souboru namísto stdout (s oprávněními 0600)", + "forceOpt": "Potvrďte, že rozumíte tomu, že tato operace vypíše nebo zapíše tajné údaje v prostém textu", + "warning": "⚠ Tato operace vypíše nebo zapíše DEŠIFROVANÉ klíče API a tokeny OAuth v prostém textu. Zajistěte, aby vaše obrazovka, historie shellu i případný výstupní soubor zůstaly soukromé.", + "confirmHeading": "⚠ VAROVÁNÍ: tato operace exportuje DEŠIFROVANÉ přihlašovací údaje poskytovatele v prostém textu", + "confirmBody": "Tento příkaz dešifruje a vypíše nebo zapíše apiKey, accessToken, refreshToken a\nidToken pro vybraná připojení. S výstupem zacházejte jako s tajným údajem.", + "confirmFooter": "Pro potvrzení spusťte:\n omniroute auth export --force", + "missingKey": "Pro export přihlašovacích údajů je vyžadován STORAGE_ENCRYPTION_KEY.", + "notFound": "Připojení nebylo nalezeno: {id}", + "invalidFormat": "Neplatný formát: {format}. Použijte json nebo env." + }, + "stream": { + "description": "Streamovat odpověď chatu s režimy kontroly SSE", + "file": "Načíst výzvu ze souboru", + "stdin": "Načíst výzvu ze stdin", + "model": "ID modelu (výchozí: auto)", + "system": "Systémová výzva", + "combo": "Vynutit konkrétní kombinaci podle názvu", + "max_tokens": "Maximální počet tokenů v odpovědi", + "responses_api": "Použít /v1/responses namísto /v1/chat/completions", + "raw": "Vypisovat nezpracované řádky SSE tak, jak byly přijaty", + "debug": "Vypisovat informace o době zpracování jednotlivých bloků do stderr", + "save": "Uložit všechny události SSE do souboru .jsonl", + "error": { + "empty_prompt": "Chyba: prompt je povinný (poziční argument, --file nebo --stdin)" + } + }, + "usage": { + "description": "Analytika využití, rozpočty, kvóty a protokoly", + "analytics": { + "description": "Zobrazit agregovanou analytiku využití", + "period": "Časový rozsah: 1d|7d|30d|90d|ytd|all (výchozí: 30d)", + "provider": "Filtrovat podle ID poskytovatele" + }, + "budget": { + "description": "Spravovat rozpočty nákladů", + "set": { + "scope": "Rozsah rozpočtu (výchozí: globální)", + "period": "Období rozpočtu: daily|weekly|monthly (výchozí: monthly)" + } + }, + "quota": { + "description": "Zobrazit využití kvóty poskytovatele", + "provider": "Filtrovat podle ID poskytovatele", + "check": "Zobrazit, zda je kvóta dostupná pro nový požadavek" + }, + "logs": { + "description": "Zobrazit protokoly volání požadavků", + "limit": "Počet položek protokolu k vrácení (výchozí: 100)", + "search": "Vyhledávací dotaz pro filtrování protokolů", + "since": "Vrátit protokoly od tohoto časového razítka", + "follow": "Průběžně sledovat nové položky protokolu", + "api_key": "Filtrovat protokoly podle klíče API" + }, + "utilization": { + "description": "Zobrazit metriky využití klíče API", + "api_key": "Filtrovat podle klíče API" + }, + "history": { + "description": "Zobrazit historii požadavků", + "limit": "Počet položek historie (výchozí: 100)" + }, + "proxy_logs": { + "description": "Zobrazit protokoly požadavků na úrovni proxy", + "limit": "Počet položek protokolu proxy (výchozí: 100)" + } + }, + "cost": { + "description": "Zobrazit přehled nákladů s rozpisem podle poskytovatele, modelu, kombinace nebo klíče API", + "period": "Časový rozsah: 1d|7d|30d|90d|ytd|all (výchozí: 30d)", + "since": "Počáteční datum (formát ISO, např. 2026-01-01) — přepíše --period", + "until": "Koncové datum (formát ISO)", + "group_by": "Seskupit výsledky podle: provider|model|api-key|combo|day (výchozí: provider)", + "api_key_filter": "Filtrovat podle konkrétního klíče API", + "limit": "Maximální počet zobrazených řádků (výchozí: 100)" + }, + "simulate": { + "description": "Simulace směrování nanečisto — zobrazí, kteří poskytovatelé by byli vybráni, bez volání nadřazené služby", + "file": "Načíst celé tělo požadavku ze souboru JSON", + "model": "ID modelu (výchozí: auto)", + "combo": "Vynutit konkrétní kombinaci podle názvu", + "reasoning": "Úroveň intenzity uvažování (low|medium|high)", + "thinking": "Rozpočet tokenů pro rozšířené uvažování", + "explain": "Vypsat strom záložních možností a rozsah nákladů do stderr", + "noCombo": "Nebyla nalezena žádná odpovídající kombinace. Nakonfigurujte ji pomocí: omniroute combo create" + }, + "chat": { + "description": "Odeslat jednorázovou chatovou výzvu do OmniRoute", + "file": "Načíst výzvu ze souboru", + "stdin": "Načíst výzvu ze standardního vstupu", + "system": "Systémová výzva", + "model": "ID modelu (výchozí: auto)", + "max_tokens": "Maximální počet tokenů v odpovědi", + "temperature": "Teplota vzorkování (0–2)", + "top_p": "Jádrové vzorkování top-p", + "reasoning_effort": "Úroveň intenzity uvažování (low|medium|high)", + "thinking_budget": "Rozpočet tokenů pro rozšířené uvažování", + "combo": "Vynutit konkrétní kombinaci podle názvu", + "responses_api": "Použít /v1/responses namísto /v1/chat/completions", + "stream": "Streamovat odpověď postupně", + "no_history": "Neukládat do ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Chyba: výzva je povinná (poziční argument, --file nebo --stdin)" + } + }, + "serve": { + "description": "Spustit server OmniRoute (výchozí akce)", + "starting": "Spouští se server OmniRoute na portu {port}...", + "ready": "Připraveno na adrese http://localhost:{port}", + "stopping": "Zastavuje se server (PID {pid})...", + "stopped": "Server byl zastaven.", + "notRunning": "Server není spuštěn.", + "port": "Port, na kterém se má naslouchat (výchozí: 20128)", + "no_open": "Neotevírat automaticky prohlížeč", + "daemon": "Spustit server jako démona na pozadí", + "log": "Zobrazovat protokoly serveru přímo ve výstupu", + "no_recovery": "Zakázat automatické restartování po pádu (režim ladění)", + "max_restarts": "Maximální počet restartů po pádu během 30 s před ukončením pokusů (výchozí: 2)", + "tray": "Spustit v systémové liště (pouze pro počítače, volitelné)", + "no_tray": "Zakázat ikonu v systémové liště", + "ready_timeout": "Časový limit kontroly připravenosti v ms (také OMNIROUTE_READY_TIMEOUT_MS, výchozí 60000)", + "tls_cert": "Cesta k certifikátu TLS (PEM) pro poskytování HTTPS (také OMNIROUTE_TLS_CERT)", + "tls_key": "Cesta k privátnímu klíči TLS (PEM) pro poskytování HTTPS (také OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Záloha", + "description": "Vytvořit zálohu dat OmniRoute", + "creating": "Vytváří se záloha...", + "done": "Záloha byla uložena do {path}", + "noFiles": "Nejsou k dispozici žádné soubory k zálohování (databáze nebyla inicializována)", + "failed": "Zálohování se nezdařilo: {error}", + "restoring": "Obnovuje se z {path}...", + "restored": "Obnovení bylo dokončeno.", + "restoreDescription": "Obnovit ze zálohy", + "listTitle": "Dostupné zálohy", + "noBackups": "Nebyly nalezeny žádné zálohy.", + "notFound": "Záloha nebyla nalezena: {name}", + "confirmRestore": "Přepsat aktuální data zálohou z {ts}?", + "createDescription": "Vytvořit zálohu dat OmniRoute", + "nameOpt": "Vlastní název zálohy", + "cloudOpt": "Nahrát zálohu do cloudového úložiště", + "encryptOpt": "Zašifrovat zálohu pomocí AES-256-GCM", + "keyFileOpt": "Cesta k souboru obsahujícímu šifrovací heslo", + "excludeOpt": "Vyloučit soubor odpovídající vzoru (lze opakovat)", + "retentionOpt": "Ponechat pouze posledních N záloh", + "passphrasePrompt": "Šifrovací heslo:", + "noPassphrase": "Pro šifrovanou zálohu je vyžadováno heslo.", + "cloudFailed": "Varování: nahrání do cloudu se nezdařilo. Místní záloha byla uložena.", + "cloudUploaded": "Cloudová záloha byla nahrána: {url}", + "auto": { + "title": "Plán zálohování", + "enableDescription": "Povolit plánované automatické zálohování", + "disableDescription": "Zakázat plánované automatické zálohování", + "statusDescription": "Zobrazit aktuální stav plánu zálohování", + "cronOpt": "Cron výraz pro plán (výchozí: denně ve 3:00)", + "enabled": "Automatické zálohování povoleno (cron: {cron}).", + "hint": "Plán načítá omniroute serve při spuštění.", + "disabled": "Automatické zálohování zakázáno.", + "notConfigured": "Není nakonfigurován žádný plán zálohování." + } + }, + "health": { + "description": "Zkontrolovat stav serveru a komponent", + "noServer": "Server není spuštěn. Spusťte jej pomocí: omniroute serve", + "title": "Stav systému", + "status": "Stav: {status}", + "uptime": "Doba provozu: {uptime}", + "requests": "Počet požadavků (24 h): {count}", + "cost": "Náklady (24 h): ${cost}" + }, + "quota": { + "description": "Zobrazit využití kvót poskytovatelů", + "noServer": "Server není spuštěn. Spusťte jej pomocí: omniroute serve", + "noData": "Nejsou k dispozici žádné informace o kvótách." + }, + "cache": { + "description": "Spravovat mezipaměť odpovědí", + "noServer": "Server není spuštěn. Spusťte jej pomocí: omniroute serve", + "cleared": "Mezipaměť byla vymazána.", + "clearFailed": "Mezipaměť se nepodařilo vymazat." + }, + "redis": { + "description": "Spustit místní Redis kontejner jedním kliknutím (Podman nebo Docker) pro mezipaměť a sledování kvót OmniRoute" + }, + "test": { + "description": "Otestovat připojení k poskytovateli", + "noServer": "Server není spuštěn. Spusťte jej pomocí: omniroute serve", + "testing": "Testování {provider} / {model}...", + "passed": "Připojení bylo úspěšné!", + "failed": "Připojení se nezdařilo: {error}", + "allProvidersOpt": "Otestovat všechny nakonfigurované poskytovatele", + "latencyOpt": "Zobrazit měření latence (prům./min./max. ms)", + "repeatOpt": "Opakovat test Nkrát a agregovat výsledky", + "compareOpt": "Modely oddělené čárkami k porovnání (např. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Uložit výsledky do souboru JSON", + "saved": "Výsledky byly uloženy do {path}", + "compareTitle": "Porovnání modelů", + "compareMinTwo": "Pro --compare jsou vyžadovány alespoň dva modely (oddělené čárkami)", + "noProviders": "Nejsou nakonfigurováni žádní poskytovatelé. Přidejte jednoho pomocí: omniroute keys add" + }, + "update": { + "checking": "Kontrola aktualizací...", + "upToDate": "Používáte nejnovější verzi ({version}).", + "available": "Je k dispozici aktualizace: {current} → {latest}", + "installing": "Instalace verze {latest}...", + "done": "Aktualizováno na verzi {latest}. Pro použití změn restartujte server." + }, + "mcp": { + "title": "Server MCP", + "running": "Server MCP je spuštěn ({transport})", + "stopped": "Server MCP byl zastaven.", + "restarted": "Server MCP byl restartován.", + "stoppedHint": "Zapněte jej spuštěním `omniroute mcp enable`.", + "enabled": "Server MCP byl povolen.", + "disabled": "Server MCP byl zakázán.", + "enable": { + "description": "Povolit server MCP", + "transport": "Použitý transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "Zakázat server MCP" + }, + "call": { + "description": "Přímo vyvolat nástroj MCP", + "args": "Objekt argumentů JSON (vložený)", + "args_file": "Cesta k souboru s argumenty JSON", + "stream": "Použít streamovací koncový bod (/api/mcp/stream)", + "scope": "Požadovaný rozsah oprávnění (lze opakovat, např. read:health)" + }, + "scopes": { + "description": "Vypsat dostupné rozsahy oprávnění MCP", + "tool": "Zobrazit rozsahy oprávnění vyžadované konkrétním nástrojem" + }, + "tools": { + "description": "Prozkoumat nástroje MCP", + "list": { + "description": "Vypsat všechny nástroje MCP", + "scope": "Filtrovat podle rozsahu oprávnění" + }, + "info": { + "description": "Zobrazit metadata nástroje MCP" + }, + "schema": { + "description": "Zobrazit vstupní/výstupní schéma JSON nástroje MCP", + "io": "Druh schématu: input|output (výchozí: input)" + } + }, + "audit": { + "description": "Protokol auditu MCP (alias pro audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Vypsat dostupné dovednosti A2A z karty agenta" + }, + "invoke": { + "description": "Vyvolat dovednost A2A a vrátit ID úlohy", + "input": "Vstupní objekt JSON", + "input_file": "Cesta ke vstupnímu souboru JSON", + "wait": "Před návratem počkat na dokončení úlohy", + "timeout": "Časový limit čekání na dokončení v ms (výchozí: 60000)" + }, + "tasks": { + "description": "Spravovat úlohy A2A", + "list": { + "status": "Filtrovat podle stavu", + "skill": "Filtrovat podle ID dovednosti" + }, + "watch": { + "description": "Pravidelně kontrolovat stav úlohy až do dokončení" + }, + "stream": { + "description": "Streamovat události provádění úlohy prostřednictvím SSE" + }, + "logs": { + "description": "Zobrazit zprávy a artefakty úlohy" + } + } + }, + "policy": { + "description": "Spravovat zásady autorizace OmniRoute", + "list": { + "description": "Vypsat zásady", + "kind": "Filtrovat podle druhu (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrovat podle rozsahu (global|api-key|provider)" + }, + "get": { + "description": "Získat podrobnosti zásady podle ID" + }, + "create": { + "description": "Vytvořit zásadu ze souboru JSON", + "file": "Cesta k souboru JSON se zásadou" + }, + "update": { + "description": "Aktualizovat zásadu ze souboru JSON", + "file": "Cesta k souboru JSON se zásadou" + }, + "delete": { + "description": "Odstranit zásadu podle ID", + "yes": "Přeskočit výzvu k potvrzení" + }, + "evaluate": { + "description": "Zkušební vyhodnocení zásady (návratový kód 0=povoleno, 4=zamítnuto)", + "api_key": "Klíč API k vyhodnocení", + "action": "Akce ke kontrole (např. chat, embed, admin)", + "resource": "Cesta k prostředku nebo identifikátor", + "context": "Další kontext jako objekt JSON" + }, + "export": { + "description": "Exportovat všechny zásady do souboru JSON" + }, + "import": { + "description": "Importovat zásady ze souboru JSON", + "overwrite": "Přepsat existující zásady se stejným ID" + } + }, + "compression": { + "description": "Nakonfigurovat a zkontrolovat kompresní pipeline OmniRoute", + "status": { + "description": "Zobrazit aktuální stav a nastavení komprese" + }, + "configure": { + "description": "Nakonfigurovat nastavení komprese", + "engine": "Kompresní modul (caveman|rtk|hybrid|none)", + "caveman_agg": "Agresivita Caveman 0.0–1.0", + "rtk_budget": "Tokenový rozpočet RTK", + "language_pack": "Jazykový balíček k aktivaci" + }, + "engine": { + "description": "Získat nebo nastavit aktivní kompresní modul" + }, + "combos": { + "description": "Spravovat statistiky kombinací komprese" + }, + "rules": { + "description": "Spravovat pravidla komprese", + "add": { + "pattern": "Vzor pro porovnání (regulární výraz nebo pole:vzor)", + "action": "Akce: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Vypsat dostupné jazykové balíčky pro kompresi" + }, + "preview": { + "description": "Zobrazit náhled vlivu komprese na požadavek", + "file": "Cesta k souboru JSON s požadavkem" + } + }, + "tunnel": { + "title": "Tunely", + "listDescription": "Vypsat aktivní tunely", + "createDescription": "Vytvořit tunel", + "created": "Tunel vytvořen: {url}", + "stopped": "Tunel zastaven.", + "confirmStop": "Zastavit tunel {id}?", + "stopDescription": "Zastavit tunel", + "statusDescription": "Zobrazit podrobný stav tunelu", + "logsDescription": "Zobrazit protokoly tunelu", + "infoDescription": "Zobrazit podrobnosti konfigurace tunelu", + "rotateDescription": "Vygenerovat novou adresu URL tunelu", + "tailOpt": "Počet řádků protokolu k zobrazení", + "typeRequired": "Typ tunelu je povinný.", + "noLogs": "Nejsou k dispozici žádné protokoly.", + "notAvailable": "Informace o tunelu nejsou k dispozici.", + "noTunnels": "Žádné aktivní tunely.", + "infoTitle": "Informace o tunelu: {type}", + "rotated": "Adresa URL tunelu změněna: {url}", + "confirmRotate": "Změnit adresu URL tunelu {type}? (bude vygenerována nová adresa URL)" + }, + "stop": { + "description": "Zastavit server OmniRoute", + "stopping": "Zastavování serveru (PID {pid})...", + "stopped": "Server zastaven.", + "notRunning": "Není spuštěn žádný server.", + "portFallback": "Soubor PID nebyl nalezen, probíhá pokus o zastavení podle portu..." + }, + "restart": { + "description": "Restartovat server OmniRoute", + "restarting": "Restartování serveru OmniRoute..." + }, + "dashboard": { + "description": "Otevřít řídicí panel OmniRoute v prohlížeči", + "opening": "Otevírání řídicího panelu na adrese {url}", + "urlOnly": "Vypsat adresu URL řídicího panelu bez otevření prohlížeče", + "tui": "Otevřít interaktivní řídicí panel TUI (terminálové rozhraní, 7 karet)" + }, + "models": { + "description": "Vypsat dostupné modely (vyžaduje server)", + "search": "Filtrovat modely podle ID, názvu, poskytovatele nebo popisu", + "noServer": "Server není spuštěn. Spusťte ho pomocí: omniroute serve", + "noModels": "Nebyly nalezeny žádné modely." + }, + "audit": { + "description": "Přístup k protokolům auditu shody a MCP", + "source": "Zdroj protokolu: all|compliance|mcp (výchozí: all)", + "since": "Vrátit záznamy od tohoto časového razítka (ISO 8601)", + "until": "Vrátit záznamy do tohoto časového razítka (ISO 8601)", + "tail": { + "description": "Zobrazit nedávné záznamy protokolu auditu", + "follow": "Průběžně sledovat nové záznamy (dotazování každé 2 s)", + "limit": "Maximální počet zobrazených záznamů (výchozí: 100)" + }, + "search": { + "description": "Vyhledat záznamy protokolu auditu podle klíčového slova", + "limit": "Maximální počet výsledků (výchozí: 200)", + "actor": "Filtrovat podle ID aktéra", + "action": "Filtrovat podle názvu akce" + }, + "export": { + "description": "Exportovat protokol auditu do souboru", + "format": "Výstupní formát: jsonl|csv (výchozí: jsonl)" + }, + "stats": { + "description": "Zobrazit statistiky protokolu auditu", + "period": "Časové období: 1d|7d|30d (výchozí: 7d)" + }, + "get": { + "description": "Získat jeden záznam protokolu auditu podle ID" + } + }, + "skills": { + "description": "Spravovat dovednosti OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Vypsat nainstalované dovednosti", + "type": "Filtrovat podle typu (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Zobrazit pouze povolené dovednosti", + "disabled": "Zobrazit pouze zakázané dovednosti", + "api_key": "Filtrovat podle klíče API" + }, + "get": { + "description": "Získat podrobnosti o dovednosti podle ID" + }, + "install": { + "description": "Nainstalovat dovednost ze souboru nebo adresy URL", + "from_file": "Cesta k souboru s definicí dovednosti ve formátu JSON", + "from_url": "Adresa URL vzdálené definice dovednosti", + "type": "Typ dovednosti (sandbox|custom|hybrid)", + "enable": "Po instalaci dovednost povolit" + }, + "enable": { + "description": "Povolit dovednost podle ID" + }, + "disable": { + "description": "Zakázat dovednost podle ID", + "yes": "Přeskočit výzvu k potvrzení" + }, + "delete": { + "description": "Odstranit dovednost podle ID", + "yes": "Přeskočit výzvu k potvrzení" + }, + "execute": { + "description": "Spustit dovednost podle ID", + "input": "Vstupní objekt JSON", + "input_file": "Cesta ke vstupnímu souboru JSON", + "timeout": "Časový limit spuštění v ms (výchozí: 30000)" + }, + "executions": { + "description": "Vypsat historii spuštění dovedností", + "skill": "Filtrovat podle ID dovednosti", + "limit": "Maximální počet výsledků (výchozí: 50)", + "status": "Filtrovat podle stavu (running|completed|failed)" + }, + "skillssh": { + "description": "Spravovat dovednosti nainstalované přes SSH" + }, + "marketplace": { + "description": "Procházet a instalovat dovednosti z tržiště" + }, + "mp": { + "search": { + "description": "Hledat balíčky na tržišti", + "category": "Filtrovat podle kategorie", + "tag": "Filtrovat podle štítku", + "limit": "Maximální počet výsledků (výchozí: 30)", + "sort": "Řadit podle: downloads|rating|recent" + }, + "info": { + "description": "Zobrazit podrobnosti o balíčku a soubor readme" + }, + "install": { + "description": "Nainstalovat balíček z tržiště", + "version": "Verze balíčku (výchozí: latest)", + "enable": "Po instalaci povolit", + "yes": "Přeskočit výzvu k potvrzení" + }, + "categories": { + "description": "Vypsat kategorie tržiště" + }, + "featured": { + "description": "Zobrazit doporučené balíčky z tržiště" + } + } + }, + "memory": { + "description": "Spravovat konverzační paměť OmniRoute (FTS5 + vector)", + "search": { + "description": "Vyhledávat záznamy v paměti pomocí sémantického dotazu", + "type": "Filtrovat podle typu paměti (user|feedback|project|reference)", + "limit": "Maximální počet výsledků (výchozí: 20)", + "api_key": "Filtrovat podle klíče API", + "token_budget": "Omezit celkový počet tokenů ve výsledcích" + }, + "add": { + "description": "Přidat nový záznam do paměti", + "content": "Textový obsah paměti", + "file": "Načíst obsah ze souboru", + "type": "Typ paměti (výchozí: user)", + "metadata": "Objekt metadat JSON", + "api_key": "Přidružit ke klíči API" + }, + "clear": { + "description": "Odstranit záznamy v paměti odpovídající filtrům", + "type": "Filtrovat podle typu", + "older": "Odstranit záznamy starší než zadaná doba (30d, 6m, 1y)", + "api_key": "Filtrovat podle klíče API", + "yes": "Přeskočit výzvu k potvrzení" + }, + "list": { + "description": "Vypsat záznamy v paměti bez řazení podle relevance vyhledávání", + "type": "Filtrovat podle typu", + "limit": "Maximální počet výsledků (výchozí: 100)", + "api_key": "Filtrovat podle klíče API" + }, + "get": { + "description": "Získat jeden záznam paměti podle ID" + }, + "delete": { + "description": "Odstranit záznam paměti podle ID", + "yes": "Přeskočit výzvu k potvrzení" + }, + "health": { + "description": "Zobrazit stav paměťového subsystému (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Spravovat připojení poskytovatelů OAuth", + "providers": { + "description": "Vypsat poskytovatele podporující OAuth a jejich typy toků" + }, + "start": { + "description": "Spustit autorizační tok OAuth pro poskytovatele", + "provider": "ID poskytovatele (gemini, copilot, cursor, …)", + "no_browser": "Vypsat pouze URL — neotevírat prohlížeč", + "import_system": "Automaticky importovat přihlašovací údaje z místní systémové konfigurace", + "social": "Poskytovatel přihlášení přes sociální síť (google|github) — vyžadováno pro kiro", + "timeout": "Časový limit čekání na autorizaci v ms (výchozí: 300000)" + }, + "status": { + "description": "Vypsat aktivní připojení OAuth", + "provider": "Filtrovat podle ID poskytovatele" + }, + "revoke": { + "description": "Odvolat připojení OAuth", + "provider": "ID poskytovatele, kterého chcete odvolat", + "connection_id": "Odvolat konkrétní připojení podle ID", + "yes": "Přeskočit výzvu k potvrzení" + } + }, + "cloud": { + "description": "Spravovat úlohy cloudových AI agentů (codex, devin, jules)", + "agents": { + "description": "Vypsat dostupné cloudové agenty" + }, + "agent": { + "description": "Spravovat úlohy cloudového agenta {agent}", + "auth": { + "description": "Autorizovat agenta {agent} prostřednictvím OAuth" + } + }, + "task": { + "description": "Spravovat úlohy cloudových agentů", + "create": { + "description": "Vytvořit novou úlohu agenta", + "title": "Název úlohy (výchozí je prvních 80 znaků zadání)", + "prompt": "Text zadání úlohy", + "prompt_file": "Načíst zadání ze souboru", + "repo": "URL repozitáře, který se má pro úlohu naklonovat", + "branch": "Název větve, která se má použít", + "metadata": "Objekt metadat JSON" + }, + "list": { + "description": "Vypsat úlohy agenta", + "status": "Filtrovat podle stavu (running|completed|failed|cancelled)", + "limit": "Maximální počet výsledků (výchozí: 50)" + }, + "get": { + "description": "Získat podrobnosti úlohy podle ID" + }, + "status": { + "description": "Vypsat stav úlohy (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Zrušit spuštěnou úlohu", + "yes": "Přeskočit výzvu k potvrzení" + }, + "approve": { + "description": "Schválit plán agenta a zahájit provádění" + }, + "message": { + "description": "Odeslat zprávu spuštěné úloze" + } + }, + "sources": { + "description": "Vypsat zdrojové soubory vytvořené úlohou" + } + }, + "eval": { + "description": "Spravovat sady vyhodnocení a jejich spuštění", + "suites": { + "description": "Spravovat sady vyhodnocení", + "list": { + "description": "Vypsat sady vyhodnocení" + }, + "get": { + "description": "Získat podrobnosti sady vyhodnocení podle ID" + }, + "create": { + "description": "Vytvořit sadu vyhodnocení ze souboru JSON", + "file": "Cesta k souboru JSON s definicí sady" + } + }, + "run": { + "description": "Spustit běh vyhodnocení pro sadu", + "model": "ID modelu k vyhodnocení (výchozí: auto)", + "combo": "Vynutit konkrétní kombinaci podle názvu", + "concurrency": "Počet souběžných vzorků (výchozí: 4)", + "tag": "Označit tento běh štítkem pro pozdější filtrování", + "watch": "Sledovat průběh běhu až do dokončení" + }, + "list": { + "description": "Vypsat běhy vyhodnocení", + "suite": "Filtrovat podle ID sady", + "status": "Filtrovat podle stavu", + "since": "Vrátit běhy od tohoto časového razítka", + "limit": "Maximální počet výsledků (výchozí: 50)" + }, + "get": { + "description": "Získat podrobnosti běhu vyhodnocení podle ID" + }, + "results": { + "description": "Zobrazit výsledky vzorků běhu vyhodnocení", + "failed": "Zobrazit pouze neúspěšné vzorky" + }, + "cancel": { + "description": "Zrušit probíhající vyhodnocení", + "yes": "Přeskočit výzvu k potvrzení" + }, + "scorecard": { + "description": "Zobrazit přehled skóre dokončeného běhu vyhodnocení" + } + }, + "webhooks": { + "description": "Spravovat webhooky OmniRoute", + "events": { + "description": "Vypsat všechny dostupné typy událostí webhooků" + }, + "list": { + "description": "Vypsat nakonfigurované webhooky" + }, + "get": { + "description": "Získat podrobnosti webhooku podle ID" + }, + "add": { + "description": "Zaregistrovat nový webhook", + "url": "Cílová URL", + "events": "Seznam typů událostí oddělených čárkami", + "secret": "Tajný klíč pro podepisování HMAC", + "header": "Dodatečná hlavička ve formátu key=value (lze opakovat)", + "no_enabled": "Vytvořit webhook v zakázaném stavu" + }, + "update": { + "description": "Aktualizovat existující webhook", + "enabled": "Nastavit stav povolení (true|false)" + }, + "remove": { + "description": "Odstranit webhook", + "yes": "Přeskočit výzvu k potvrzení" + }, + "test": { + "description": "Odeslat testovací událost webhooku", + "event": "Typ události k simulaci (výchozí: request.completed)" + } + }, "program": { "description": "OmniRoute — Chytrý AI router s automatickým přepínáním", "version": "Vypsat verzi a skončit", @@ -26,7 +832,509 @@ "context": "Kontext/profil serveru pro tento příkaz", "lang": "Nastavit jazyk CLI (přepisuje OMNIROUTE_LANG)" }, - "redis": { - "description": "Spustit místní Redis kontejner jedním kliknutím (Podman nebo Docker) pro mezipaměť a sledování kvót OmniRoute" + "files": { + "description": "Spravovat soubory (nahrát, vypsat, získat, stáhnout, odstranit)", + "list": { + "purpose": "Filtrovat podle účelu", + "limit": "Maximální počet výsledků" + }, + "get": { + "description": "Získat metadata souboru" + }, + "upload": { + "description": "Nahrát soubor", + "purpose": "Účel souboru (batch, assistants, fine-tune)" + }, + "content": { + "description": "Stáhnout obsah souboru", + "out": "Uložit do cesty (výchozí: stdout)" + }, + "delete": { + "yes": "Přeskočit potvrzení" + } + }, + "batches": { + "description": "Spravovat dávkové úlohy kompatibilní s OpenAI", + "list": { + "status": "Filtrovat podle stavu", + "limit": "Maximální počet výsledků" + }, + "create": { + "description": "Vytvořit dávkovou úlohu", + "inputFile": "ID vstupního souboru", + "endpoint": "Cílový endpoint", + "window": "Časové okno pro dokončení", + "metadata": "Přidat metadata key=value" + }, + "submit": { + "description": "Nahrát soubor JSONL a vytvořit dávku", + "jsonl": "Cesta k souboru JSONL", + "endpoint": "Cílový endpoint", + "wait": "Čekat na dokončení" + }, + "cancel": { + "yes": "Přeskočit potvrzení" + }, + "wait": { + "timeout": "Časový limit v ms" + }, + "output": { + "out": "Uložit výstup do cesty" + }, + "errors": { + "out": "Uložit chyby do cesty" + } + }, + "translator": { + "description": "Překládat těla požadavků mezi formáty LLM", + "detect": { + "description": "Detekovat formát těla" + }, + "translate": { + "description": "Převést tělo z jednoho formátu do jiného" + }, + "send": { + "description": "Přeložit a odeslat nadřazené službě" + }, + "stream": { + "description": "Překládat tělo požadavku průběžně" + }, + "from": "Zdrojový formát (openai|anthropic|gemini|cohere)", + "to": "Cílový formát (openai|anthropic|gemini|cohere)", + "file": "Cesta k souboru JSON s tělem požadavku", + "out": "Uložit výstup do souboru", + "model": "Přepsat model", + "history": { + "limit": "Maximální počet výsledků" + } + }, + "pricing": { + "description": "Spravovat cenové údaje modelů", + "sync": { + "description": "Synchronizovat ceny z nadřazených zdrojů", + "provider": "Filtrovat podle poskytovatele", + "force": "Vynutit opětovnou synchronizaci" + }, + "list": { + "provider": "Filtrovat podle poskytovatele", + "model": "Filtrovat podle modelu", + "limit": "Maximální počet výsledků" + }, + "defaults": { + "description": "Spravovat výchozí ceny", + "input": "Cena vstupu za 1 mil. tokenů (USD)", + "output": "Cena výstupu za 1 mil. tokenů (USD)", + "cacheRead": "Cena čtení z mezipaměti za 1 mil. tokenů (USD)", + "cacheWrite": "Cena zápisu do mezipaměti za 1 mil. tokenů (USD)" + }, + "diff": { + "description": "Zobrazit odchylku od cen nadřazeného zdroje", + "model": "Filtrovat podle modelu" + } + }, + "radar": { + "description": "Zkontrolovat a synchronizovat místní zdroje katalogu Radar", + "status": "Zobrazit místní nastavení Radar a stav mezipaměti zdrojů", + "sync": "Synchronizovat katalog, doporučení, nabídky a Intel prostřednictvím místního serveru" + }, + "resilience": { + "description": "Kontrolovat a spravovat mechanismy odolnosti", + "status": { + "provider": "Filtrovat podle poskytovatele" + }, + "breakers": { + "provider": "Filtrovat podle poskytovatele" + }, + "cooldowns": { + "provider": "Filtrovat podle poskytovatele", + "connectionId": "Filtrovat podle ID připojení" + }, + "lockouts": { + "provider": "Filtrovat podle poskytovatele", + "model": "Filtrovat podle modelu" + }, + "reset": { + "description": "Resetovat stav jističe / čekací doby", + "provider": "Poskytovatel k resetování", + "connectionId": "ID připojení k resetování", + "model": "Model, u kterého se má resetovat blokace", + "allCooldowns": "Resetovat všechny čekací doby poskytovatele", + "yes": "Přeskočit potvrzení" + }, + "profile": { + "description": "Spravovat profil odolnosti", + "name": "Název profilu" + }, + "config": { + "description": "Spravovat konfiguraci odolnosti", + "threshold": "Prahová hodnota selhání", + "resetTimeout": "Časový limit resetování v ms", + "baseCooldown": "Základní čekací doba v ms" + } + }, + "nodes": { + "description": "Spravovat uzly poskytovatelů (koncové body)", + "list": { + "provider": "Filtrovat podle poskytovatele", + "enabled": "Zobrazit pouze povolené uzly" + }, + "add": { + "provider": "Název poskytovatele", + "baseUrl": "Základní URL uzlu", + "name": "Název uzlu", + "weight": "Váha vyvažování zátěže", + "region": "Značka regionu", + "authHeader": "Vlastní autorizační hlavička (key=value)" + }, + "update": { + "baseUrl": "Nová základní URL", + "name": "Nový název", + "weight": "Nová váha", + "region": "Nový region", + "enabled": "Povolit nebo zakázat (true|false)" + }, + "remove": { + "yes": "Přeskočit potvrzení" + }, + "validate": { + "baseUrl": "URL k ověření", + "provider": "Poskytovatel, vůči kterému se má provést ověření" + }, + "test": { + "description": "Odeslat testovací požadavek uzlu" + }, + "metrics": { + "description": "Zobrazit metriky uzlu", + "period": "Časové období (např. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurovat pipeline pro zpracování kontextu (Caveman, RTK)", + "analytics": { + "period": "Časové období (např. 7d, 30d)" + }, + "caveman": { + "description": "Spravovat kompresor kontextu Caveman", + "config": { + "description": "Zobrazit nebo aktualizovat konfiguraci Caveman", + "aggressiveness": "Agresivita 0.0–1.0", + "maxShrinkPct": "Maximální procento zmenšení", + "preserveTags": "Čárkami oddělené tagy, které se mají zachovat" + } + }, + "rtk": { + "description": "Spravovat optimalizátor kontextu RTK", + "config": { + "description": "Zobrazit nebo aktualizovat konfiguraci RTK", + "tokenBudget": "Limit tokenů pro RTK", + "reservePct": "Procento rezervy" + }, + "filters": { + "description": "Spravovat filtry RTK", + "pattern": "Vzor filtru (regulární výraz)", + "priority": "Priorita filtru (výchozí: 100)", + "action": "Akce filtru: drop|shrink|replace", + "yes": "Přeskočit potvrzení" + }, + "test": { + "file": "Cesta k souboru JSON s požadavkem" + } + }, + "combos": { + "description": "Správa kombinací s ohledem na kontext" + } + }, + "sessions": { + "description": "Prohlížet a spravovat aktivní relace", + "list": { + "user": "Filtrovat podle uživatele", + "kind": "Filtrovat podle typu (dashboard|api-key|mcp|a2a)", + "active": "Zobrazit pouze aktivní relace", + "limit": "Maximální počet výsledků (výchozí: 100)" + }, + "expire": { + "yes": "Přeskočit potvrzení" + }, + "expireAll": { + "user": "Uživatel, jehož relace mají být ukončeny", + "yes": "Přeskočit potvrzení" + } + }, + "tags": { + "description": "Spravovat tagy prostředků", + "add": { + "color": "Barva tagu (hexadecimální kód nebo název)", + "description": "Popis tagu" + }, + "remove": { + "yes": "Přeskočit potvrzení" + }, + "assign": { + "tag": "Název tagu", + "to": "Cílový prostředek ve formátu typ:id (např. provider:openai)" + }, + "unassign": { + "tag": "Název štítku", + "from": "Zdrojový prostředek ve formátu typ:id" + } + }, + "openapi": { + "description": "Přístup ke specifikaci OmniRoute OpenAPI a její testování", + "dump": { + "description": "Vypsat specifikaci OpenAPI na standardní výstup nebo do souboru", + "format": "Výstupní formát: yaml|json (výchozí: yaml)", + "out": "Uložit do souboru v zadané cestě" + }, + "validate": { + "description": "Ověřit specifikaci OpenAPI" + }, + "try": { + "description": "Otestovat koncový bod API prostřednictvím specifikace", + "method": "Metoda HTTP (výchozí: GET)", + "body": "Cesta k souboru JSON s tělem požadavku", + "query": "Parametr dotazu ve formátu klíč=hodnota (lze opakovat)", + "header": "Hlavička ve formátu klíč=hodnota (lze opakovat)" + }, + "endpoints": { + "description": "Vypsat všechny koncové body API", + "search": "Filtrovat podle cesty nebo souhrnu" + }, + "paths": { + "description": "Vypsat všechny cesty API" + } + }, + "combo": { + "title": "Kombinace", + "switched": "Aktivní kombinace: {name}", + "created": "Kombinace vytvořena: {name}", + "deleted": "Kombinace odstraněna: {name}", + "noCombos": "Nejsou nakonfigurovány žádné kombinace.", + "confirmDelete": "Odstranit kombinaci {name}?", + "suggest": { + "description": "Navrhnout pomocí hodnocení AI nejlepší kombinaci pro daný úkol", + "task": "Popis úkolu", + "maxCost": "Maximální cena za požadavek v USD", + "maxLatencyMs": "Maximální latence v milisekundách", + "weights": "Váhy hodnocení ve formátu JSON, např. {\"latency\":0.7,\"cost\":0.3}", + "top": "Počet nejlepších kandidátů k zobrazení (výchozí: 5)", + "explain": "Vypsat odůvodnění na standardní chybový výstup", + "switch": "Aktivovat nejlépe hodnocenou kombinaci" + } + }, + "oneproxy": { + "description": "Spravovat fond upstream serverů OneProxy", + "stats": { + "provider": "Filtrovat podle poskytovatele", + "period": "Časové období (výchozí: 24h)" + }, + "fetch": { + "description": "Načíst proxy servery z fondu", + "count": "Počet proxy serverů k načtení (výchozí: 1)", + "type": "Typ proxy: http|socks5 (výchozí: http)" + }, + "rotate": { + "description": "Vynutit rotaci proxy", + "provider": "Poskytovatel, pro kterého se má provést rotace", + "connectionId": "ID konkrétního připojení, které se má rotovat" + }, + "config": { + "description": "Zobrazit nebo aktualizovat konfiguraci OneProxy", + "enabled": "Povolit fond proxy serverů (true|false)", + "poolSize": "Velikost fondu", + "providerSource": "URL poskytovatele proxy", + "rotationPolicy": "Zásady rotace: sticky|per-request|periodic" + }, + "pool": { + "description": "Vypsat aktuální fond proxy serverů včetně metrik" + } + }, + "open": { + "description": "Otevřít konkrétní stránku řídicího panelu OmniRoute v prohlížeči", + "url": "Pouze vypsat URL, neotevírat prohlížeč" + }, + "telemetry": { + "description": "Přístup k agregovaným telemetrickým datům", + "summary": { + "description": "Zobrazit souhrn agregované telemetrie", + "period": "Časové období: 24h|7d|30d (výchozí: 24h)", + "compareTo": "Porovnat s předchozím obdobím" + }, + "export": { + "description": "Exportovat telemetrické události do JSONL", + "out": "Cesta k výstupnímu souboru (výchozí: telemetry.jsonl)", + "period": "Časové období pro export (výchozí: 7d)" + } + }, + "sync": { + "description": "Synchronizovat konfiguraci mezi instancemi OmniRoute", + "push": { + "description": "Odeslat konfiguraci do cloudu nebo vzdálené instance", + "target": "Cíl (cloud nebo context:name)", + "bundle": "Části balíčku k synchronizaci", + "dryRun": "Zobrazit náhled bez použití změn" + }, + "pull": { + "description": "Načíst konfiguraci z cloudu nebo vzdálené instance", + "source": "Zdroj (cloud nebo context:name)", + "merge": "Sloučit se stávající konfigurací", + "replace": "Nahradit stávající konfiguraci", + "dryRun": "Zobrazit náhled bez použití změn" + }, + "diff": { + "source": "Zdrojový kontext", + "target": "Cílový kontext" + }, + "bundle": { + "description": "Exportovat konfiguraci jako soubor balíčku", + "include": "Části, které mají být zahrnuty (oddělené čárkami)" + }, + "import": { + "description": "Importovat soubor balíčku", + "dryRun": "Ověřit bez použití změn" + }, + "initialize": { + "fromCloud": "Inicializovat z cloudové zálohy" + }, + "tokens": { + "description": "Spravovat synchronizační tokeny", + "create": { + "name": "Název tokenu", + "scope": "Rozsah tokenu", + "ttl": "TTL tokenu (např. 30d)" + }, + "revoke": { + "yes": "Přeskočit potvrzení" + } + }, + "resolve": { + "description": "Interaktivně vyřešit konflikty synchronizace" + } + }, + "config": { + "contexts": { + "description": "Spravovat kontexty/profily serveru (přidat, použít, vypsat, zobrazit, odebrat, přejmenovat, exportovat, importovat)" + }, + "lang": { + "description": "Spravovat jazyk zobrazení CLI", + "getDescription": "Zobrazit kód aktuálně aktivního jazyka", + "setDescription": "Nastavit jazyk zobrazení a uložit jej do konfigurace", + "listDescription": "Vypsat všechny dostupné jazyky", + "listTitle": "Dostupné jazyky", + "current": "Jazyk: {code} ({name})", + "saved": "Jazyk byl nastaven na {code} ({name}).", + "noCode": "Je vyžadován kód jazyka. Dostupné kódy zobrazíte spuštěním příkazu 'omniroute config lang list'.", + "unknown": "Neznámý kód jazyka: {code}. Dostupné kódy zobrazíte spuštěním příkazu 'omniroute config lang list'.", + "alreadySet": "Jazyk je již nastaven na {code}.", + "envHint": "Tip: v prostředí můžete také nastavit OMNIROUTE_LANG={code}." + } + }, + "completion": { + "description": "Vygenerovat nebo nainstalovat skripty pro automatické doplňování v shellu", + "zsh": "Vypsat skript pro automatické doplňování v zsh", + "bash": "Vypsat skript pro automatické doplňování v bash", + "fish": "Vypsat skript pro automatické doplňování ve fish", + "install": "Nainstalovat skript pro automatické doplňování globálně pro detekovaný shell", + "refresh": "Aktualizovat mezipaměť kombinací, poskytovatelů a modelů" + }, + "logs": { + "description": "Streamovat nebo exportovat protokoly požadavků", + "follow": "Streamovat protokoly v reálném čase", + "filter": "Filtrovat podle úrovně (error,warn,info) — oddělené čárkami", + "lines": "Počet řádků k načtení", + "timeout": "Časový limit připojení v ms", + "baseUrl": "Základní URL API OmniRoute", + "requestId": "Filtrovat podle ID požadavku", + "apiKey": "Filtrovat podle klíče API", + "combo": "Filtrovat podle názvu kombinace", + "status": "Filtrovat podle stavového kódu HTTP", + "durationMin": "Minimální doba trvání požadavku v ms", + "durationMax": "Maximální doba trvání požadavku v ms", + "export": "Uložit protokoly do souboru (json/jsonl/csv)", + "exported": "Protokoly byly uloženy do {path}", + "stopped": "Streamování protokolů bylo zastaveno.", + "streamError": "Chyba streamování protokolů: {message}" + }, + "tray": { + "description": "Ovládat ikonu v systémové liště", + "show": "Zobrazit ikonu v systémové liště (pokud server běží s parametrem --tray)", + "hide": "Skrýt ikonu v systémové liště", + "quit": "Ukončit OmniRoute prostřednictvím systémové lišty" + }, + "autostart": { + "description": "Spravovat automatické spouštění OmniRoute při startu systému (Linux: uživatelská služba systemd)", + "enable": "Povolit automatické spouštění při startu systému", + "disable": "Zakázat automatické spouštění při startu systému", + "toggle": "Přepnout automatické spouštění při startu systému", + "status": "Zobrazit stav automatického spouštění" + }, + "runtime": { + "description": "Spravovat nativní závislosti běhového prostředí", + "check": "Zkontrolovat stav nativních závislostí v adresáři běhového prostředí", + "repair": "Přeinstalovat nativní závislosti v adresáři běhového prostředí", + "repair_force": "Vynutit přeinstalaci, i když jsou platné", + "clean": "Odstranit adresář běhového prostředí (uvolní místo na disku)", + "clean_yes": "Přeskočit potvrzení" + }, + "repl": { + "description": "Interaktivní vícekolový REPL s LLM", + "model": "Model, který se má použít (výchozí: auto)", + "combo": "Název kombinace, která se má použít", + "system": "Systémová výzva", + "resume": "Pokračovat v uložené relaci podle názvu" + }, + "plugin": { + "description": "Spravovat pluginy CLI (omniroute-cmd-*)", + "list": "Vypsat nainstalované pluginy", + "install": "Nainstalovat plugin z npm nebo místní cesty", + "remove": "Odstranit nainstalovaný plugin", + "info": "Zobrazit podrobnosti o nainstalovaném pluginu", + "search": "Vyhledat dostupné pluginy v registru npm", + "update": "Aktualizovat nainstalované pluginy", + "scaffold": "Vygenerovat základní strukturu nového pluginu" + }, + "launch": { + "description": "Spustit Claude Code nasměrovaný na OmniRoute (místní nebo vzdálený, s --profile)", + "token": "Token, který má klient Claude odesílat (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute není dostupný na portu {port}. Spusťte jej pomocí 'omniroute serve'.", + "notFound": "CLI 'claude' nebylo v PATH nalezeno." + }, + "run": { + "description": "Spustit podporovaný cílový nástroj CLI prostřednictvím OmniRoute" + }, + "setupClaude": { + "description": "Vygenerovat profily Claude Code v ~/.claude/profiles z katalogu modelů OmniRoute" + }, + "connect": { + "description": "Připojit se ke vzdálenému serveru OmniRoute a přejít do vzdáleného režimu" + }, + "tokens": { + "description": "Spravovat přístupové tokeny CLI s omezeným rozsahem (vzdálený režim)" + }, + "configure": { + "description": "Vybrat poskytovatele a model z aktivního serveru a nakonfigurovat podporované místní CLI" + }, + "launchCodex": { + "description": "Spustit Codex CLI nasměrované na OmniRoute (místní nebo vzdálené VPS)" + }, + "setupCodex": { + "description": "Vygenerovat soubory profilů v ~/.codex z aktuálního katalogu modelů OmniRoute" + }, + "packs": { + "description": "Spravovat volitelné balíčky běhového prostředí (ML / automatizace prohlížeče)", + "listDescription": "Vypsat volitelné balíčky a stav jejich instalace", + "installDescription": "Nainstalovat volitelný balíček do DATA_DIR", + "verifyDescription": "Ověřit nainstalované balíčky podle dodaného indexu kontrolních součtů", + "removeDescription": "Odstranit nainstalovaný volitelný balíček", + "sourceOpt": "Adresář obsahující data balíčků a index balíčků", + "warnNoIndex": "optional-packs.index.json nebyl nalezen — instalace a ověření nejsou v této pracovní kopii k dispozici (desktopové balíčky jej obsahují)", + "errUnknown": "neznámý balíček: {name}", + "errNoIndex": "index balíčků nebyl nalezen; předejte --source obsahující data balíčku (desktopové balíčky jej obsahují vedle aplikace)", + "installed": "balíček „{name}“ byl nainstalován a ověřen v {dir}", + "restartHint": "restartujte server OmniRoute (nebo desktopovou aplikaci), aby se balíček načetl za běhu", + "removed": "balíček „{name}“ byl odebrán", + "notInstalled": "balíček „{name}“ nebyl nainstalován", + "verifyOk": "všechny nainstalované balíčky byly ověřeny", + "verifyFailed": "ověření se nezdařilo u tohoto počtu balíčků: {count}", + "noneInstalled": "nejsou nainstalovány žádné volitelné balíčky" } } diff --git a/bin/cli/locales/da.json b/bin/cli/locales/da.json index edefb5b971..468db04459 100644 --- a/bin/cli/locales/da.json +++ b/bin/cli/locales/da.json @@ -14,6 +14,812 @@ "jsonOpt": "Output som JSON", "yesOpt": "Spring bekræftelse over" }, + "setup": { + "title": "Opsætning af OmniRoute", + "passwordPrompt": "Administratoradgangskode", + "providerPrompt": "Standardudbyder (lad feltet være tomt for at springe over)", + "done": "Opsætning fuldført", + "passwordSet": "Administratoradgangskode konfigureret", + "providerSet": "Udbyder konfigureret: {name}", + "testingProvider": "Tester udbyderforbindelse: {name}", + "testPassed": "Udbydertest bestået", + "testFailed": "Udbydertest mislykkedes: {error}", + "loginEnabled": "Login: aktiveret (adgangskode opdateret)", + "loginDisabled": "Login: deaktiveret", + "providerInfo": "Udbyder: {info}", + "opencode": "Installer og konfigurer det medfølgende @omniroute/opencode-plugin til OpenCode" + }, + "doctor": { + "title": "OmniRoute-diagnosticering", + "dbOk": "Database: OK ({path})", + "dbMissing": "Database: ikke initialiseret — kør `omniroute setup`", + "portOk": "Port {port}: tilgængelig", + "portConflict": "Port {port}: bruges af en anden proces", + "encryptionOk": "Krypteringsnøgle: konfigureret", + "encryptionMissing": "Krypteringsnøgle mangler — kør `omniroute setup`", + "allGood": "Alle kontroller bestået.", + "warnings": "{count} advarsel/advarsler — se ovenfor." + }, + "providers": { + "title": "Udbydere", + "noProviders": "Ingen udbydere konfigureret. Kør: omniroute setup", + "testing": "Tester {name}...", + "available": "{count} udbyder(e) tilgængelig(e)", + "connected": "Forbundet", + "disconnected": "Afbrudt", + "validationFailed": "Validering mislykkedes: {error}", + "metrics": { + "description": "Vis målinger af udbydernes ydeevne (ventetid, succesrate, omkostninger)", + "provider": "Filtrer efter udbyder-id", + "connection_id": "Filtrer efter forbindelses-id", + "period": "Tidsperiode: 1h|6h|24h|7d|30d (standard: 24h)", + "metric": "Fokusér på et bestemt målefelt", + "sort": "Sortér efter felt (faldende)", + "limit": "Maksimalt antal rækker (standard: 50)", + "watch": "Opdater hvert 5. sekund (livetilstand)", + "compare": "Kommaseparerede udbyder-id'er, der skal sammenlignes side om side" + }, + "metric_single": { + "description": "Hent en enkelt måleværdi for en bestemt forbindelse" + }, + "rotate": { + "description": "Udskift den overordnede API-nøgle for en udbyderforbindelse", + "newKeyOpt": "Ny API-nøgleværdi (undgå: brug helst --from-env)", + "fromEnvOpt": "Læs den nye nøgle fra miljøvariablen VAR", + "oauthOpt": "Udløs OAuth-genautentificeringsflowet i stedet", + "skipTestOpt": "Spring forbindelsestesten efter rotation over", + "dryRunOpt": "Vis, hvad der ville blive ændret, uden at gemme", + "confirmPrompt": "Erstat API-nøglen for forbindelsen \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Ville rotere nøglen for \"{name}\" ({id}). Ingen ændringer foretaget.", + "oauthHint": "OAuth-forbindelse — kør: omniroute oauth {provider}", + "envVarEmpty": "Miljøvariablen {var} er ikke angivet eller er tom.", + "success": "Nøglen for \"{name}\" er roteret. Kør `providers test {id}` for at bekræfte.", + "testPassed": "Testen efter rotation blev gennemført.", + "testFailed": "Testen efter rotation mislykkedes: {error}" + }, + "status": { + "description": "Vis nøglestatus for alle udbyderforbindelser (alder, udløb, nedkølingsperiode)", + "providerOpt": "Filtrer efter udbydernavn", + "header": "ID Udbyder Navn Udløbsstatus Teststatus Nedkøling indtil", + "noData": "Ingen data om udbyderforbindelser tilgængelige.", + "requiresServer": "providers status kræver, at OmniRoute-serveren kører." + } + }, + "keys": { + "title": "API-nøgler", + "addDescription": "Tilføj eller opdater en API-nøgle for en udbyder", + "listDescription": "Vis alle konfigurerede API-nøgler", + "removeDescription": "Fjern en API-nøgle for en udbyder", + "regenerateDescription": "Generér en OmniRoute API-nøgle igen", + "revokeDescription": "Tilbagekald en OmniRoute API-nøgle", + "revealDescription": "Vis den umaskerede API-nøgleværdi", + "usageDescription": "Vis seneste brug af en API-nøgle", + "usageLimitOpt": "Antal seneste anmodninger", + "rotateDescription": "Generér en ny nøgle, og ugyldiggør den gamle", + "graceOpt": "Henstandsperiode (ms), før den gamle nøgle ugyldiggøres", + "stdinOpt": "Læs API-nøglen fra stdin i stedet for argumentet", + "added": "Nøgle tilføjet for {provider}.", + "removed": "Nøglen er fjernet.", + "listed": "{count} nøgle(r).", + "noKeys": "Ingen nøgler konfigureret.", + "noUsage": "Ingen brugsdata fundet.", + "confirmRemove": "Fjern nøgle {id}?", + "confirmRegenerate": "Generér nøgle {id} igen?", + "confirmRevoke": "Tilbagekald nøgle {id}?", + "confirmRotate": "Rotér nøgle {id}? (den gamle nøgle ugyldiggøres efter henstandsperioden)", + "regenerated": "Genereret igen. Ny nøgle: {key}", + "revoked": "Nøgle {id} er tilbagekaldt.", + "rotated": "Nøglen {id} blev roteret. Nyt nøgle-id: {newId}", + "revealWarning": "⚠ Dette viser hele nøglen uden maskering. Sørg for, at din skærm ikke kan ses af andre.", + "providerRequired": "Udbyder er påkrævet.", + "keyRequired": "API-nøgle er påkrævet.", + "stdinEmpty": "Der blev ikke angivet nogen API-nøgle via stdin.", + "unknownProvider": "Ukendt udbyder: {provider}", + "policy": { + "title": "Nøglepolitik", + "showDescription": "Vis grænser for antal anmodninger og omkostninger for en nøgle", + "setDescription": "Angiv grænser for antal anmodninger og omkostninger for en nøgle", + "rateLimitOpt": "Maks. antal anmodninger pr. minut", + "maxCostOpt": "Maks. omkostning pr. dag (USD)", + "allowedModelsOpt": "Kommaadskilt liste over tilladte modeller", + "nothingToSet": "Der blev ikke angivet nogen politikfelter. Brug --rate-limit, --max-cost eller --allowed-models.", + "updated": "Politikken blev opdateret." + }, + "expiration": { + "title": "Nøgleudløb", + "listDescription": "Vis nøgler, der snart udløber", + "daysOpt": "Vis nøgler, der udløber inden for N dage", + "none": "Ingen nøgler udløber inden for {days} dage.", + "listTitle": "Nøgler, der udløber inden for {days} dage:" + } + }, + "authExport": { + "description": "Eksportér DEKRYPTEREDE udbyderlegitimationsoplysninger (kun lokalt, output i klartekst)", + "idOpt": "Eksportér kun den forbindelse, der matcher dette id/navn/denne udbyder", + "formatOpt": "Outputformat: json eller env", + "outOpt": "Skriv output til en fil i stedet for stdout (skrives med 0600-tilladelser)", + "forceOpt": "Bekræft, at du forstår, at dette udskriver/skriver hemmeligheder i klartekst", + "warning": "⚠ Dette udskriver/skriver DEKRYPTEREDE API-nøgler og OAuth-tokens i klartekst. Sørg for, at din skærm, din shellhistorik og eventuelle outputfiler forbliver private.", + "confirmHeading": "⚠ ADVARSEL: Dette eksporterer DEKRYPTEREDE udbyderlegitimationsoplysninger i klartekst", + "confirmBody": "Denne kommando dekrypterer og udskriver/skriver apiKey, accessToken, refreshToken og\nidToken for de valgte forbindelser. Behandl outputtet som en hemmelighed.", + "confirmFooter": "Kør følgende for at bekræfte:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY er påkrævet for at eksportere legitimationsoplysninger.", + "notFound": "Forbindelsen blev ikke fundet: {id}", + "invalidFormat": "Ugyldigt format: {format}. Brug json eller env." + }, + "stream": { + "description": "Stream et chatsvar med SSE-inspektionstilstande", + "file": "Læs prompt fra fil", + "stdin": "Læs prompt fra stdin", + "model": "Model-id (standard: auto)", + "system": "Systemprompt", + "combo": "Gennemtving en bestemt kombination efter navn", + "max_tokens": "Maksimalt antal tokens i svaret", + "responses_api": "Brug /v1/responses i stedet for /v1/chat/completions", + "raw": "Udskriv rå SSE-linjer, efterhånden som de modtages", + "debug": "Udskriv tidsoplysninger pr. del til stderr", + "save": "Gem alle SSE-hændelser i en .jsonl-fil", + "error": { + "empty_prompt": "Fejl: prompt er påkrævet (positionelt argument, --file eller --stdin)" + } + }, + "usage": { + "description": "Brugsanalyse, budgetter, kvoter og logfiler", + "analytics": { + "description": "Vis aggregeret brugsanalyse", + "period": "Tidsinterval: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "provider": "Filtrer efter udbyder-id" + }, + "budget": { + "description": "Administrer omkostningsbudgetter", + "set": { + "scope": "Budgetomfang (standard: globalt)", + "period": "Budgetperiode: daily|weekly|monthly (standard: monthly)" + } + }, + "quota": { + "description": "Vis udbyderens kvoteforbrug", + "provider": "Filtrer efter udbyder-id", + "check": "Vis, om der er tilgængelig kvote til en ny anmodning" + }, + "logs": { + "description": "Vis logfiler for anmodningskald", + "limit": "Antal logposter, der skal returneres (standard: 100)", + "search": "Søgeforespørgsel til filtrering af logfiler", + "since": "Returner logfiler siden dette tidsstempel", + "follow": "Følg løbende nye logposter", + "api_key": "Filtrer logfiler efter API-nøgle" + }, + "utilization": { + "description": "Vis målinger for brug af API-nøgler", + "api_key": "Filtrer efter API-nøgle" + }, + "history": { + "description": "Vis anmodningshistorik", + "limit": "Antal historikposter (standard: 100)" + }, + "proxy_logs": { + "description": "Vis anmodningslogfiler på proxyniveau", + "limit": "Antal proxylogposter (standard: 100)" + } + }, + "cost": { + "description": "Vis omkostningsrapport med opdeling efter udbyder, model, kombination eller API-nøgle", + "period": "Tidsinterval: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "since": "Startdato (ISO-format, f.eks. 2026-01-01) — tilsidesætter --period", + "until": "Slutdato (ISO-format)", + "group_by": "Gruppér resultater efter: provider|model|api-key|combo|day (standard: provider)", + "api_key_filter": "Filtrer efter en bestemt API-nøgle", + "limit": "Maksimalt antal rækker, der skal vises (standard: 100)" + }, + "simulate": { + "description": "Dry-run-routingsimulering — vis, hvilke udbydere der ville blive valgt, uden at kalde upstream", + "file": "Indlæs hele anmodningsteksten fra en JSON-fil", + "model": "Model-id (standard: auto)", + "combo": "Gennemtving en bestemt kombination efter navn", + "reasoning": "Niveau for ræsonneringsindsats (low|medium|high)", + "thinking": "Tokenbudget til udvidet tænkning", + "explain": "Udskriv fallback-træ og omkostningsinterval til stderr", + "noCombo": "Ingen matchende kombination fundet. Konfigurer en med: omniroute combo create" + }, + "chat": { + "description": "Send en enkeltstående chatprompt til OmniRoute", + "file": "Læs prompt fra fil", + "stdin": "Læs prompt fra stdin", + "system": "Systemprompt", + "model": "Model-id (standard: auto)", + "max_tokens": "Maksimalt antal tokens i svaret", + "temperature": "Samplingtemperatur (0–2)", + "top_p": "Top-p-nucleus-sampling", + "reasoning_effort": "Niveau for ræsonneringsindsats (low|medium|high)", + "thinking_budget": "Tokenbudget til udvidet tænkning", + "combo": "Gennemtving en bestemt kombination efter navn", + "responses_api": "Brug /v1/responses i stedet for /v1/chat/completions", + "stream": "Stream svaret løbende", + "no_history": "Gem ikke i ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Fejl: Prompt er påkrævet (positionsargument, --file eller --stdin)" + } + }, + "serve": { + "description": "Start OmniRoute-serveren (standardhandling)", + "starting": "Starter OmniRoute-serveren på port {port}...", + "ready": "Klar på http://localhost:{port}", + "stopping": "Stopper serveren (PID {pid})...", + "stopped": "Serveren er stoppet.", + "notRunning": "Serveren kører ikke.", + "port": "Port, der skal lyttes på (standard: 20128)", + "no_open": "Åbn ikke browseren automatisk", + "daemon": "Kør serveren som en baggrundsdaemon", + "log": "Vis serverlogfiler direkte", + "no_recovery": "Deaktivér automatisk genstart efter nedbrud (fejlretningstilstand)", + "max_restarts": "Maksimalt antal genstarter efter nedbrud inden for 30 sek., før der gives op (standard: 2)", + "tray": "Start i systembakken (kun desktop, tilvalg)", + "no_tray": "Deaktivér ikonet i systembakken", + "ready_timeout": "Timeout for klargøringstest i ms (også OMNIROUTE_READY_TIMEOUT_MS, standard 60000)", + "tls_cert": "Sti til et TLS-certifikat (PEM) til HTTPS (også OMNIROUTE_TLS_CERT)", + "tls_key": "Sti til den private TLS-nøgle (PEM) til HTTPS (også OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sikkerhedskopi", + "description": "Opret en sikkerhedskopi af OmniRoute-data", + "creating": "Opretter sikkerhedskopi...", + "done": "Sikkerhedskopien blev gemt i {path}", + "noFiles": "Ingen filer at sikkerhedskopiere (databasen er ikke initialiseret)", + "failed": "Sikkerhedskopiering mislykkedes: {error}", + "restoring": "Gendanner fra {path}...", + "restored": "Gendannelsen er fuldført.", + "restoreDescription": "Gendan fra en sikkerhedskopi", + "listTitle": "Tilgængelige sikkerhedskopier", + "noBackups": "Ingen sikkerhedskopier fundet.", + "notFound": "Sikkerhedskopien blev ikke fundet: {name}", + "confirmRestore": "Overskriv aktuelle data med sikkerhedskopien fra {ts}?", + "createDescription": "Opret en sikkerhedskopi af OmniRoute-data", + "nameOpt": "Brugerdefineret navn på sikkerhedskopi", + "cloudOpt": "Upload sikkerhedskopi til cloudlager", + "encryptOpt": "Kryptér sikkerhedskopi med AES-256-GCM", + "keyFileOpt": "Sti til filen, der indeholder krypteringsadgangskoden", + "excludeOpt": "Udelad filer, der matcher mønsteret (kan gentages)", + "retentionOpt": "Behold kun de seneste N sikkerhedskopier", + "passphrasePrompt": "Krypteringsadgangskode:", + "noPassphrase": "Der kræves en adgangskode til en krypteret sikkerhedskopi.", + "cloudFailed": "Advarsel: Upload til cloudlager mislykkedes. Den lokale sikkerhedskopi blev gemt.", + "cloudUploaded": "Sikkerhedskopi uploadet til cloudlager: {url}", + "auto": { + "title": "Tidsplan for sikkerhedskopiering", + "enableDescription": "Aktivér planlagte automatiske sikkerhedskopieringer", + "disableDescription": "Deaktivér planlagte automatiske sikkerhedskopieringer", + "statusDescription": "Vis aktuel status for tidsplanen for sikkerhedskopiering", + "cronOpt": "Cron-udtryk for tidsplanen (standard: dagligt kl. 03.00)", + "enabled": "Automatisk sikkerhedskopiering aktiveret (cron: {cron}).", + "hint": "Tidsplanen indlæses af omniroute serve ved opstart.", + "disabled": "Automatisk sikkerhedskopiering deaktiveret.", + "notConfigured": "Der er ikke konfigureret nogen tidsplan for sikkerhedskopiering." + } + }, + "health": { + "description": "Kontrollér serverens tilstand og komponentstatus", + "noServer": "Serveren kører ikke. Start den med: omniroute serve", + "title": "Tilstand", + "status": "Status: {status}", + "uptime": "Oppetid: {uptime}", + "requests": "Anmodninger (24 t.): {count}", + "cost": "Omkostninger (24 t.): ${cost}" + }, + "quota": { + "description": "Vis udbyderens kvoteforbrug", + "noServer": "Serveren kører ikke. Start den med: omniroute serve", + "noData": "Ingen kvoteoplysninger tilgængelige." + }, + "cache": { + "description": "Administrer svarcache", + "noServer": "Serveren kører ikke. Start den med: omniroute serve", + "cleared": "Cachen blev ryddet.", + "clearFailed": "Cachen kunne ikke ryddes." + }, + "redis": { + "description": "Start en lokal Redis-container med ét klik (Podman eller Docker) til OmniRoute-caching og kvoteovervågning" + }, + "test": { + "description": "Test en udbyderforbindelse", + "noServer": "Serveren kører ikke. Start med: omniroute serve", + "testing": "Tester {provider} / {model}...", + "passed": "Forbindelsen blev oprettet!", + "failed": "Forbindelsen mislykkedes: {error}", + "allProvidersOpt": "Test alle konfigurerede udbydere", + "latencyOpt": "Vis latensmålinger (gns./min./maks. ms)", + "repeatOpt": "Gentag testen N gange, og sammenfat resultaterne", + "compareOpt": "Kommaseparerede modeller, der skal sammenlignes (f.eks. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Gem resultaterne i en JSON-fil", + "saved": "Resultaterne blev gemt i {path}", + "compareTitle": "Modelsammenligning", + "compareMinTwo": "Der kræves mindst to modeller til --compare (kommasepareret)", + "noProviders": "Ingen udbydere er konfigureret. Tilføj en med: omniroute keys add" + }, + "update": { + "checking": "Søger efter opdateringer...", + "upToDate": "Allerede opdateret ({version}).", + "available": "Opdatering tilgængelig: {current} → {latest}", + "installing": "Installerer {latest}...", + "done": "Opdateret til {latest}. Genstart serveren for at anvende opdateringen." + }, + "mcp": { + "title": "MCP-server", + "running": "MCP-serveren kører ({transport})", + "stopped": "MCP-serveren er stoppet.", + "restarted": "MCP-serveren er genstartet.", + "stoppedHint": "Kør `omniroute mcp enable` for at aktivere den.", + "enabled": "MCP-serveren er aktiveret.", + "disabled": "MCP-serveren er deaktiveret.", + "enable": { + "description": "Aktivér MCP-serveren", + "transport": "Transport, der skal bruges: stdio|sse|streamable-http" + }, + "disable": { + "description": "Deaktivér MCP-serveren" + }, + "call": { + "description": "Kald et MCP-værktøj direkte", + "args": "JSON-argumentobjekt (integreret)", + "args_file": "Sti til JSON-argumentfil", + "stream": "Brug streaming-slutpunktet (/api/mcp/stream)", + "scope": "Påkrævet omfang (kan gentages, f.eks. read:health)" + }, + "scopes": { + "description": "Vis tilgængelige MCP-omfang", + "tool": "Vis omfang, der kræves af et bestemt værktøj" + }, + "tools": { + "description": "Undersøg MCP-værktøjer", + "list": { + "description": "Vis alle MCP-værktøjer", + "scope": "Filtrér efter omfang" + }, + "info": { + "description": "Vis metadata for et MCP-værktøj" + }, + "schema": { + "description": "Vis JSON-skemaet for input/output for et MCP-værktøj", + "io": "Skematype: input|output (standard: input)" + } + }, + "audit": { + "description": "MCP-revisionslog (alias for audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Vis tilgængelige A2A-færdigheder fra agentkortet" + }, + "invoke": { + "description": "Kald en A2A-færdighed, og returner opgave-ID'et", + "input": "JSON-inputobjekt", + "input_file": "Sti til JSON-inputfil", + "wait": "Vent på, at opgaven fuldføres, før der returneres", + "timeout": "Timeout for ventetid på fuldførelse i ms (standard: 60000)" + }, + "tasks": { + "description": "Administrer A2A-opgaver", + "list": { + "status": "Filtrer efter status", + "skill": "Filtrer efter færdigheds-ID" + }, + "watch": { + "description": "Forespørg opgavestatus løbende, indtil opgaven er fuldført" + }, + "stream": { + "description": "Stream hændelser fra opgaveudførelsen via SSE" + }, + "logs": { + "description": "Vis opgavemeddelelser og artefakter" + } + } + }, + "policy": { + "description": "Administrer OmniRoute-godkendelsespolitikker", + "list": { + "description": "Vis politikker", + "kind": "Filtrer efter type (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrer efter omfang (global|api-key|provider)" + }, + "get": { + "description": "Hent politikdetaljer efter ID" + }, + "create": { + "description": "Opret en politik fra en JSON-fil", + "file": "Sti til JSON-politikfil" + }, + "update": { + "description": "Opdater en politik fra en JSON-fil", + "file": "Sti til JSON-politikfil" + }, + "delete": { + "description": "Slet en politik efter ID", + "yes": "Spring bekræftelsesprompt over" + }, + "evaluate": { + "description": "Prøvekør politikevaluering (exit 0=allowed, 4=denied)", + "api_key": "API-nøgle, der skal evalueres", + "action": "Handling, der skal kontrolleres (f.eks. chat, embed, admin)", + "resource": "Ressourcesti eller identifikator", + "context": "Yderligere kontekst som JSON-objekt" + }, + "export": { + "description": "Eksportér alle politikker til en JSON-fil" + }, + "import": { + "description": "Importér politikker fra en JSON-fil", + "overwrite": "Overskriv eksisterende politikker med samme ID" + } + }, + "compression": { + "description": "Konfigurer og inspicer OmniRoute-komprimeringspipelinen", + "status": { + "description": "Vis aktuel komprimeringsstatus og indstillinger" + }, + "configure": { + "description": "Konfigurer komprimeringsindstillinger", + "engine": "Komprimeringsmotor (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-aggressivitet 0.0–1.0", + "rtk_budget": "RTK-tokenbudget", + "language_pack": "Sprogpakke, der skal aktiveres" + }, + "engine": { + "description": "Hent eller indstil den aktive komprimeringsmotor" + }, + "combos": { + "description": "Administrer statistik for komprimeringskombinationer" + }, + "rules": { + "description": "Administrer komprimeringsregler", + "add": { + "pattern": "Mønster, der skal matches (regex eller felt:mønster)", + "action": "Handling: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Vis tilgængelige sprogpakker til komprimering" + }, + "preview": { + "description": "Forhåndsvis komprimeringseffekten på en anmodning", + "file": "Sti til JSON-fil med anmodning" + } + }, + "tunnel": { + "title": "Tunneler", + "listDescription": "Vis aktive tunneler", + "createDescription": "Opret en tunnel", + "created": "Tunnel oprettet: {url}", + "stopped": "Tunnel stoppet.", + "confirmStop": "Stop tunnel {id}?", + "stopDescription": "Stop en tunnel", + "statusDescription": "Vis detaljeret status for en tunnel", + "logsDescription": "Vis logfiler for en tunnel", + "infoDescription": "Vis konfigurationsoplysninger for en tunnel", + "rotateDescription": "Generer en ny tunnel-URL", + "tailOpt": "Antal loglinjer, der skal vises", + "typeRequired": "Tunneltype er påkrævet.", + "noLogs": "Ingen logfiler tilgængelige.", + "notAvailable": "Tunneloplysninger er ikke tilgængelige.", + "noTunnels": "Ingen aktive tunneler.", + "infoTitle": "Tunneloplysninger: {type}", + "rotated": "Tunnel-URL ændret: {url}", + "confirmRotate": "Skift URL for tunnel {type}? (en ny URL bliver genereret)" + }, + "stop": { + "description": "Stop OmniRoute-serveren", + "stopping": "Stopper serveren (PID {pid})...", + "stopped": "Serveren er stoppet.", + "notRunning": "Der kører ingen server.", + "portFallback": "Ingen PID-fil fundet, forsøger portbaseret stop..." + }, + "restart": { + "description": "Genstart OmniRoute-serveren", + "restarting": "Genstarter OmniRoute-serveren..." + }, + "dashboard": { + "description": "Åbn OmniRoute-dashboardet i en browser", + "opening": "Åbner dashboardet på {url}", + "urlOnly": "Udskriv dashboardets URL uden at åbne browseren", + "tui": "Åbn interaktivt TUI-dashboard (terminalbrugerflade, 7 faner)" + }, + "models": { + "description": "Vis tilgængelige modeller (kræver server)", + "search": "Filtrer modeller efter id, navn, udbyder eller beskrivelse", + "noServer": "Serveren kører ikke. Start med: omniroute serve", + "noModels": "Ingen modeller fundet." + }, + "audit": { + "description": "Få adgang til compliance- og MCP-revisionslogfiler", + "source": "Logkilde: all|compliance|mcp (standard: all)", + "since": "Returner poster siden dette tidsstempel (ISO 8601)", + "until": "Returner poster indtil dette tidsstempel (ISO 8601)", + "tail": { + "description": "Vis seneste poster i revisionsloggen", + "follow": "Følg løbende nye poster (forespørgsel hvert 2. sek.)", + "limit": "Maksimalt antal poster, der skal vises (standard: 100)" + }, + "search": { + "description": "Søg i revisionslogposter efter nøgleord", + "limit": "Maksimalt antal resultater (standard: 200)", + "actor": "Filtrer efter aktør-id", + "action": "Filtrer efter handlingsnavn" + }, + "export": { + "description": "Eksportér revisionsloggen til en fil", + "format": "Outputformat: jsonl|csv (standard: jsonl)" + }, + "stats": { + "description": "Vis statistik for revisionsloggen", + "period": "Tidsperiode: 1d|7d|30d (standard: 7d)" + }, + "get": { + "description": "Hent en enkelt revisionslogpost efter id" + } + }, + "skills": { + "description": "Administrer OmniRoute-færdigheder (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Vis installerede færdigheder", + "type": "Filtrer efter type (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Vis kun aktiverede færdigheder", + "disabled": "Vis kun deaktiverede færdigheder", + "api_key": "Filtrer efter API-nøgle" + }, + "get": { + "description": "Hent oplysninger om en færdighed efter id" + }, + "install": { + "description": "Installér en færdighed fra en fil eller URL", + "from_file": "Sti til JSON-definitionsfilen for færdigheden", + "from_url": "URL til ekstern færdighedsdefinition", + "type": "Færdighedstype (sandbox|custom|hybrid)", + "enable": "Aktivér færdigheden efter installation" + }, + "enable": { + "description": "Aktivér en færdighed efter id" + }, + "disable": { + "description": "Deaktiver en færdighed efter id", + "yes": "Spring bekræftelsesprompten over" + }, + "delete": { + "description": "Slet en færdighed efter id", + "yes": "Spring bekræftelsesprompten over" + }, + "execute": { + "description": "Kør en færdighed efter id", + "input": "JSON-inputobjekt", + "input_file": "Sti til JSON-inputfil", + "timeout": "Timeout for kørsel i ms (standard: 30000)" + }, + "executions": { + "description": "Vis historik over kørsel af færdigheder", + "skill": "Filtrer efter færdigheds-ID", + "limit": "Maksimalt antal resultater (standard: 50)", + "status": "Filtrer efter status (running|completed|failed)" + }, + "skillssh": { + "description": "Administrer færdigheder installeret via SSH" + }, + "marketplace": { + "description": "Gennemse og installer færdigheder fra markedspladsen" + }, + "mp": { + "search": { + "description": "Søg efter pakker på markedspladsen", + "category": "Filtrer efter kategori", + "tag": "Filtrer efter tag", + "limit": "Maksimalt antal resultater (standard: 30)", + "sort": "Sortér efter: downloads|rating|recent" + }, + "info": { + "description": "Vis pakkedetaljer og readme" + }, + "install": { + "description": "Installer en pakke fra markedspladsen", + "version": "Pakkeversion (standard: latest)", + "enable": "Aktivér efter installation", + "yes": "Spring bekræftelsesprompt over" + }, + "categories": { + "description": "Vis kategorier på markedspladsen" + }, + "featured": { + "description": "Vis fremhævede pakker på markedspladsen" + } + } + }, + "memory": { + "description": "Administrer OmniRoute-samtalehukommelse (FTS5 + vector)", + "search": { + "description": "Søg i hukommelsesposter med en semantisk forespørgsel", + "type": "Filtrer efter hukommelsestype (user|feedback|project|reference)", + "limit": "Maksimalt antal resultater (standard: 20)", + "api_key": "Filtrer efter API-nøgle", + "token_budget": "Begræns det samlede antal tokens i resultaterne" + }, + "add": { + "description": "Tilføj en ny hukommelsespost", + "content": "Hukommelsens tekstindhold", + "file": "Læs indhold fra fil", + "type": "Hukommelsestype (standard: user)", + "metadata": "JSON-metadataobjekt", + "api_key": "Knyt til API-nøgle" + }, + "clear": { + "description": "Slet hukommelsesposter, der matcher filtrene", + "type": "Filtrer efter type", + "older": "Slet poster, der er ældre end varigheden (30d, 6m, 1y)", + "api_key": "Filtrer efter API-nøgle", + "yes": "Spring bekræftelsesprompt over" + }, + "list": { + "description": "Vis hukommelsesposter uden søgerangering", + "type": "Filtrer efter type", + "limit": "Maksimalt antal resultater (standard: 100)", + "api_key": "Filtrer efter API-nøgle" + }, + "get": { + "description": "Hent en enkelt hukommelsespost efter ID" + }, + "delete": { + "description": "Slet en hukommelsespost efter ID", + "yes": "Spring bekræftelsesprompten over" + }, + "health": { + "description": "Vis hukommelsesundersystemets tilstand (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Administrer forbindelser til OAuth-udbydere", + "providers": { + "description": "Vis OAuth-kompatible udbydere og deres flowtyper" + }, + "start": { + "description": "Start OAuth-godkendelsesflowet for en udbyder", + "provider": "Udbyder-id (gemini, copilot, cursor, …)", + "no_browser": "Udskriv kun URL'en — åbn ikke browseren", + "import_system": "Importér automatisk legitimationsoplysninger fra den lokale systemkonfiguration", + "social": "Udbyder af socialt login (google|github) — påkrævet for kiro", + "timeout": "Timeout for ventetid på godkendelse i ms (standard: 300000)" + }, + "status": { + "description": "Vis aktive OAuth-forbindelser", + "provider": "Filtrer efter udbyder-id" + }, + "revoke": { + "description": "Tilbagekald en OAuth-forbindelse", + "provider": "Udbyder-id, der skal tilbagekaldes", + "connection_id": "Tilbagekald en bestemt forbindelse efter id", + "yes": "Spring bekræftelsesprompten over" + } + }, + "cloud": { + "description": "Administrer opgaver for cloudbaserede AI-agenter (codex, devin, jules)", + "agents": { + "description": "Vis tilgængelige cloudagenter" + }, + "agent": { + "description": "Administrer opgaver for cloudagenten {agent}", + "auth": { + "description": "Godkend {agent} via OAuth" + } + }, + "task": { + "description": "Administrer cloudagentopgaver", + "create": { + "description": "Opret en ny agentopgave", + "title": "Opgavetitel (som standard de første 80 tegn i prompten)", + "prompt": "Prompttekst til opgaven", + "prompt_file": "Læs prompt fra fil", + "repo": "URL til repository, der skal klones til opgaven", + "branch": "Navn på branch, der skal bruges", + "metadata": "JSON-metadataobjekt" + }, + "list": { + "description": "Vis agentopgaver", + "status": "Filtrer efter status (running|completed|failed|cancelled)", + "limit": "Maksimalt antal resultater (standard: 50)" + }, + "get": { + "description": "Hent opgavedetaljer efter id" + }, + "status": { + "description": "Udskriv opgavestatus (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Annuller en kørende opgave", + "yes": "Spring bekræftelsesprompten over" + }, + "approve": { + "description": "Godkend agentplanen for at starte udførelsen" + }, + "message": { + "description": "Send en besked til en kørende opgave" + } + }, + "sources": { + "description": "Vis kildefiler, der er oprettet af en opgave" + } + }, + "eval": { + "description": "Administrer evalueringspakker og kørsler", + "suites": { + "description": "Administrer evalueringspakker", + "list": { + "description": "Vis evalueringssuiter" + }, + "get": { + "description": "Hent oplysninger om evalueringssuite via ID" + }, + "create": { + "description": "Opret en evalueringssuite fra en JSON-fil", + "file": "Sti til JSON-filen med suitedefinitionen" + } + }, + "run": { + "description": "Start en evalueringskørsel for en suite", + "model": "Model-ID, der skal evalueres (standard: auto)", + "combo": "Gennemtving en bestemt kombination efter navn", + "concurrency": "Antal samtidige prøver (standard: 4)", + "tag": "Mærk denne kørsel til senere filtrering", + "watch": "Overvåg kørslens status, indtil den er fuldført" + }, + "list": { + "description": "Vis evalueringskørsler", + "suite": "Filtrer efter suite-ID", + "status": "Filtrer efter status", + "since": "Returner kørsler siden dette tidsstempel", + "limit": "Maksimalt antal resultater (standard: 50)" + }, + "get": { + "description": "Hent oplysninger om evalueringskørsel via ID" + }, + "results": { + "description": "Vis prøveresultater for en evalueringskørsel", + "failed": "Vis kun mislykkede prøver" + }, + "cancel": { + "description": "Annuller en igangværende evaluering", + "yes": "Spring bekræftelsesprompten over" + }, + "scorecard": { + "description": "Vis scorekort for en fuldført evalueringskørsel" + } + }, + "webhooks": { + "description": "Administrer OmniRoute-webhooks", + "events": { + "description": "Vis alle tilgængelige webhook-hændelsestyper" + }, + "list": { + "description": "Vis konfigurerede webhooks" + }, + "get": { + "description": "Hent webhook-oplysninger via ID" + }, + "add": { + "description": "Registrer en ny webhook", + "url": "Destinations-URL", + "events": "Kommasepareret liste over hændelsestyper", + "secret": "HMAC-signeringshemmelighed", + "header": "Ekstra header i formatet key=value (kan gentages)", + "no_enabled": "Opret webhook i deaktiveret tilstand" + }, + "update": { + "description": "Opdater en eksisterende webhook", + "enabled": "Angiv aktiveret tilstand (true|false)" + }, + "remove": { + "description": "Slet en webhook", + "yes": "Spring bekræftelsesprompten over" + }, + "test": { + "description": "Send en testhændelse til en webhook", + "event": "Hændelsestype, der skal simuleres (standard: request.completed)" + } + }, "program": { "description": "OmniRoute — Smart AI-router med automatisk fallback", "version": "Vis version og afslut", @@ -26,7 +832,509 @@ "context": "Server-kontekst/profil til denne kommando", "lang": "Angiv CLI-visningssprog (tilsidesætter OMNIROUTE_LANG)" }, - "redis": { - "description": "Start en lokal Redis-container med ét klik (Podman eller Docker) til OmniRoute-caching og kvoteovervågning" + "files": { + "description": "Administrer filer (upload, vis, hent, download, slet)", + "list": { + "purpose": "Filtrer efter formål", + "limit": "Maksimalt antal resultater" + }, + "get": { + "description": "Hent filmetadata" + }, + "upload": { + "description": "Upload en fil", + "purpose": "Filformål (batch, assistants, fine-tune)" + }, + "content": { + "description": "Download filindhold", + "out": "Gem til sti (standard: stdout)" + }, + "delete": { + "yes": "Spring bekræftelse over" + } + }, + "batches": { + "description": "Administrer OpenAI-kompatible batchjob", + "list": { + "status": "Filtrer efter status", + "limit": "Maks. antal resultater" + }, + "create": { + "description": "Opret et batchjob", + "inputFile": "Inputfil-id", + "endpoint": "Målslutpunkt", + "window": "Fuldførelsesvindue", + "metadata": "Tilføj metadata key=value" + }, + "submit": { + "description": "Upload JSONL-fil, og opret batch", + "jsonl": "Sti til JSONL-fil", + "endpoint": "Målslutpunkt", + "wait": "Vent på fuldførelse" + }, + "cancel": { + "yes": "Spring bekræftelse over" + }, + "wait": { + "timeout": "Timeout i ms" + }, + "output": { + "out": "Gem output på sti" + }, + "errors": { + "out": "Gem fejl på sti" + } + }, + "translator": { + "description": "Oversæt anmodningstekster mellem LLM-formater", + "detect": { + "description": "Registrer formatet på anmodningsteksten" + }, + "translate": { + "description": "Konvertér anmodningsteksten fra ét format til et andet" + }, + "send": { + "description": "Oversæt, og send videre til upstream" + }, + "stream": { + "description": "Stream-oversæt en anmodningstekst" + }, + "from": "Kildeformat (openai|anthropic|gemini|cohere)", + "to": "Målformat (openai|anthropic|gemini|cohere)", + "file": "Sti til JSON-fil med anmodningstekst", + "out": "Gem output i fil", + "model": "Tilsidesæt model", + "history": { + "limit": "Maks. antal resultater" + } + }, + "pricing": { + "description": "Administrer prisdata for modeller", + "sync": { + "description": "Synkroniser priser fra upstream-kilder", + "provider": "Filtrer efter udbyder", + "force": "Gennemtving ny synkronisering" + }, + "list": { + "provider": "Filtrer efter udbyder", + "model": "Filtrer efter model", + "limit": "Maks. antal resultater" + }, + "defaults": { + "description": "Administrer standardpriser", + "input": "Inputomkostning pr. 1 mio. tokens (USD)", + "output": "Outputomkostning pr. 1 mio. tokens (USD)", + "cacheRead": "Omkostning ved cachelæsning pr. 1 mio. tokens (USD)", + "cacheWrite": "Omkostning ved cacheskrivning pr. 1 mio. tokens (USD)" + }, + "diff": { + "description": "Vis afvigelse fra upstream-priser", + "model": "Filtrer efter model" + } + }, + "radar": { + "description": "Inspicér og synkroniser de lokale Radar-katalogfeeds", + "status": "Vis lokale Radar-indstillinger og status for feedcachen", + "sync": "Synkroniser katalog, henvisninger, tilbud og Intel via den lokale server" + }, + "resilience": { + "description": "Inspicér og administrer robusthedsmekanismer", + "status": { + "provider": "Filtrer efter udbyder" + }, + "breakers": { + "provider": "Filtrer efter udbyder" + }, + "cooldowns": { + "provider": "Filtrer efter udbyder", + "connectionId": "Filtrer efter forbindelses-id" + }, + "lockouts": { + "provider": "Filtrer efter udbyder", + "model": "Filtrer efter model" + }, + "reset": { + "description": "Nulstil breaker-/nedkølingstilstand", + "provider": "Udbyder, der skal nulstilles", + "connectionId": "Forbindelses-id, der skal nulstilles", + "model": "Model, hvis spærring skal nulstilles", + "allCooldowns": "Nulstil alle nedkølingsperioder for udbyderen", + "yes": "Spring bekræftelse over" + }, + "profile": { + "description": "Administrer robusthedsprofil", + "name": "Profilnavn" + }, + "config": { + "description": "Administrer robusthedskonfiguration", + "threshold": "Fejltærskel", + "resetTimeout": "Timeout for nulstilling i ms", + "baseCooldown": "Grundlæggende nedkølingsperiode i ms" + } + }, + "nodes": { + "description": "Administrer udbydernoder (slutpunkter)", + "list": { + "provider": "Filtrer efter udbyder", + "enabled": "Vis kun aktiverede noder" + }, + "add": { + "provider": "Udbydernavn", + "baseUrl": "Basis-URL for noden", + "name": "Nodenavn", + "weight": "Vægtning for belastningsfordeling", + "region": "Områdetag", + "authHeader": "Tilpasset godkendelsesheader (key=value)" + }, + "update": { + "baseUrl": "Ny basis-URL", + "name": "Nyt navn", + "weight": "Ny vægt", + "region": "Ny region", + "enabled": "Aktivér eller deaktiver (true|false)" + }, + "remove": { + "yes": "Spring bekræftelse over" + }, + "validate": { + "baseUrl": "URL, der skal valideres", + "provider": "Udbyder, der skal valideres mod" + }, + "test": { + "description": "Send testanmodning til node" + }, + "metrics": { + "description": "Vis nodemålinger", + "period": "Tidsperiode (f.eks. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurer pipeline til kontekstbehandling (Caveman, RTK)", + "analytics": { + "period": "Tidsperiode (f.eks. 7d, 30d)" + }, + "caveman": { + "description": "Administrer Caveman-kontekstkomprimering", + "config": { + "description": "Vis eller opdater Caveman-konfiguration", + "aggressiveness": "Aggressivitet 0.0–1.0", + "maxShrinkPct": "Maksimal reduktionsprocent", + "preserveTags": "Kommaseparerede tags, der skal bevares" + } + }, + "rtk": { + "description": "Administrer RTK-kontekstoptimering", + "config": { + "description": "Vis eller opdater RTK-konfiguration", + "tokenBudget": "Tokenbudget for RTK", + "reservePct": "Reserveprocent" + }, + "filters": { + "description": "Administrer RTK-filtre", + "pattern": "Filtermønster (regex)", + "priority": "Filterprioritet (standard: 100)", + "action": "Filterhandling: drop|shrink|replace", + "yes": "Spring bekræftelse over" + }, + "test": { + "file": "Sti til JSON-fil med anmodning" + } + }, + "combos": { + "description": "Kontekstafhængig administration af kombinationer" + } + }, + "sessions": { + "description": "Undersøg og administrer aktive sessioner", + "list": { + "user": "Filtrer efter bruger", + "kind": "Filtrer efter type (dashboard|api-key|mcp|a2a)", + "active": "Vis kun aktive sessioner", + "limit": "Maksimalt antal resultater (standard: 100)" + }, + "expire": { + "yes": "Spring bekræftelse over" + }, + "expireAll": { + "user": "Bruger, hvis sessioner skal udløbe", + "yes": "Spring bekræftelse over" + } + }, + "tags": { + "description": "Administrer ressourcetags", + "add": { + "color": "Tagfarve (hex eller navn)", + "description": "Tagbeskrivelse" + }, + "remove": { + "yes": "Spring bekræftelse over" + }, + "assign": { + "tag": "Tagnavn", + "to": "Målressource som type:id (f.eks. provider:openai)" + }, + "unassign": { + "tag": "Tagnavn", + "from": "Kilderessource som type:id" + } + }, + "openapi": { + "description": "Tilgå og test OmniRoute OpenAPI-specifikationen", + "dump": { + "description": "Udskriv OpenAPI-specifikationen til stdout eller en fil", + "format": "Outputformat: yaml|json (standard: yaml)", + "out": "Gem på filsti" + }, + "validate": { + "description": "Valider OpenAPI-specifikationen" + }, + "try": { + "description": "Test et API-slutpunkt via specifikationen", + "method": "HTTP-metode (standard: GET)", + "body": "Sti til JSON-fil med anmodningens brødtekst", + "query": "Forespørgselsparameter som key=value (kan gentages)", + "header": "Header som key=value (kan gentages)" + }, + "endpoints": { + "description": "Vis alle API-slutpunkter", + "search": "Filtrer efter sti eller oversigt" + }, + "paths": { + "description": "Vis alle API-stier" + } + }, + "combo": { + "title": "Kombinationer", + "switched": "Aktiv kombination: {name}", + "created": "Kombination oprettet: {name}", + "deleted": "Kombination slettet: {name}", + "noCombos": "Ingen kombinationer er konfigureret.", + "confirmDelete": "Slet kombinationen {name}?", + "suggest": { + "description": "Foreslå den bedste kombination til en opgave ved hjælp af AI-scoring", + "task": "Opgavebeskrivelse", + "maxCost": "Maksimal pris pr. anmodning i USD", + "maxLatencyMs": "Maksimal latenstid i millisekunder", + "weights": "JSON-vægtning til scoring, f.eks. {\"latency\":0.7,\"cost\":0.3}", + "top": "Antal topkandidater, der skal vises (standard: 5)", + "explain": "Udskriv begrundelse til stderr", + "switch": "Aktivér den højest rangerede kombination" + } + }, + "oneproxy": { + "description": "Administrer OneProxy-upstreampuljen", + "stats": { + "provider": "Filtrer efter udbyder", + "period": "Tidsperiode (standard: 24h)" + }, + "fetch": { + "description": "Hent proxyer fra puljen", + "count": "Antal proxyer, der skal hentes (standard: 1)", + "type": "Proxytype: http|socks5 (standard: http)" + }, + "rotate": { + "description": "Gennemtving proxyrotation", + "provider": "Udbyder, der skal roteres for", + "connectionId": "Specifikt forbindelses-id, der skal roteres" + }, + "config": { + "description": "Vis eller opdater OneProxy-konfigurationen", + "enabled": "Aktivér proxypulje (true|false)", + "poolSize": "Puljestørrelse", + "providerSource": "URL til proxyudbyder", + "rotationPolicy": "Rotationspolitik: sticky|per-request|periodic" + }, + "pool": { + "description": "Vis den aktuelle proxypulje med målinger" + } + }, + "open": { + "description": "Åbn en bestemt OmniRoute-dashboardside i browseren", + "url": "Udskriv kun URL, åbn ikke browseren" + }, + "telemetry": { + "description": "Få adgang til aggregerede telemetridata", + "summary": { + "description": "Vis aggregeret telemetrioversigt", + "period": "Tidsperiode: 24h|7d|30d (standard: 24h)", + "compareTo": "Sammenlign med den foregående periode" + }, + "export": { + "description": "Eksportér telemetrihændelser til JSONL", + "out": "Sti til outputfil (standard: telemetry.jsonl)", + "period": "Tidsperiode for eksport (standard: 7d)" + } + }, + "sync": { + "description": "Synkroniser konfiguration mellem OmniRoute-instanser", + "push": { + "description": "Send konfiguration til cloud eller fjerninstans", + "target": "Mål (cloud eller context:name)", + "bundle": "Pakkedele, der skal synkroniseres", + "dryRun": "Forhåndsvis uden at anvende" + }, + "pull": { + "description": "Hent konfiguration fra cloud eller fjerninstans", + "source": "Kilde (cloud eller context:name)", + "merge": "Flet med eksisterende konfiguration", + "replace": "Erstat eksisterende konfiguration", + "dryRun": "Forhåndsvis uden at anvende" + }, + "diff": { + "source": "Kildekontekst", + "target": "Målkontekst" + }, + "bundle": { + "description": "Eksportér konfiguration som en pakkefil", + "include": "Dele, der skal medtages (kommasepareret)" + }, + "import": { + "description": "Importér en pakkefil", + "dryRun": "Valider uden at anvende" + }, + "initialize": { + "fromCloud": "Initialiser fra cloud-sikkerhedskopi" + }, + "tokens": { + "description": "Administrer synkroniseringstokens", + "create": { + "name": "Tokennavn", + "scope": "Tokenomfang", + "ttl": "Tokens levetid (f.eks. 30d)" + }, + "revoke": { + "yes": "Spring bekræftelse over" + } + }, + "resolve": { + "description": "Løs synkroniseringskonflikter interaktivt" + } + }, + "config": { + "contexts": { + "description": "Administrer serverkontekster/-profiler (tilføj, brug, vis liste, vis, fjern, omdøb, eksportér, importér)" + }, + "lang": { + "description": "Administrer CLI-visningssprog", + "getDescription": "Vis den aktuelt aktive sprogkode", + "setDescription": "Indstil visningssproget, og gem det i konfigurationen", + "listDescription": "Vis alle tilgængelige sprog", + "listTitle": "Tilgængelige sprog", + "current": "Sprog: {code} ({name})", + "saved": "Sproget er indstillet til {code} ({name}).", + "noCode": "Sprogkode er påkrævet. Kør 'omniroute config lang list' for at se tilgængelige koder.", + "unknown": "Ukendt sprogkode: {code}. Kør 'omniroute config lang list' for at se tilgængelige koder.", + "alreadySet": "Sproget er allerede indstillet til {code}.", + "envHint": "Tip: Du kan også indstille OMNIROUTE_LANG={code} i dit miljø." + } + }, + "completion": { + "description": "Generér eller installér scripts til kommandofuldførelse", + "zsh": "Udskriv script til zsh-kommandofuldførelse", + "bash": "Udskriv script til bash-kommandofuldførelse", + "fish": "Udskriv script til fish-kommandofuldførelse", + "install": "Installér script til kommandofuldførelse globalt for den registrerede shell", + "refresh": "Opdater cachen for kombinationer/udbydere/modeller" + }, + "logs": { + "description": "Stream eller eksportér anmodningslogfiler", + "follow": "Stream logfiler i realtid", + "filter": "Filtrér efter niveau (error,warn,info) — kommasepareret", + "lines": "Antal linjer, der skal hentes", + "timeout": "Timeout for forbindelse i ms", + "baseUrl": "Basis-URL til OmniRoute API", + "requestId": "Filtrér efter anmodnings-id", + "apiKey": "Filtrér efter API-nøgle", + "combo": "Filtrér efter kombinationsnavn", + "status": "Filtrér efter HTTP-statuskode", + "durationMin": "Mindste varighed for anmodning i ms", + "durationMax": "Maksimal varighed for anmodning i ms", + "export": "Gem logfiler i en fil (json/jsonl/csv)", + "exported": "Logfiler gemt i {path}", + "stopped": "Logstream stoppet.", + "streamError": "Fejl i logstream: {message}" + }, + "tray": { + "description": "Administrer ikonet i systembakken", + "show": "Vis ikonet i systembakken (hvis serveren kører med --tray)", + "hide": "Skjul ikonet i systembakken", + "quit": "Afslut OmniRoute via systembakken" + }, + "autostart": { + "description": "Administrer automatisk start af OmniRoute ved opstart (Linux: systemd-brugertjeneste)", + "enable": "Aktivér automatisk start ved opstart", + "disable": "Deaktivér automatisk start ved opstart", + "toggle": "Slå automatisk start ved opstart til eller fra", + "status": "Vis status for automatisk start" + }, + "runtime": { + "description": "Administrer native runtime-afhængigheder", + "check": "Kontrollér status for native afhængigheder i runtime-mappen", + "repair": "Geninstaller native afhængigheder i runtime-mappen", + "repair_force": "Gennemtving geninstallation, selv hvis de er gyldige", + "clean": "Fjern runtime-mappen (frigør diskplads)", + "clean_yes": "Spring bekræftelse over" + }, + "repl": { + "description": "Interaktiv REPL med flere samtalerunder og LLM", + "model": "Model, der skal bruges (standard: auto)", + "combo": "Navn på kombination, der skal bruges", + "system": "Systemprompt", + "resume": "Genoptag en gemt session efter navn" + }, + "plugin": { + "description": "Administrer CLI-plugins (omniroute-cmd-*)", + "list": "Vis installerede plugins", + "install": "Installer et plugin fra npm eller en lokal sti", + "remove": "Fjern et installeret plugin", + "info": "Vis oplysninger om et installeret plugin", + "search": "Søg i npm-registret efter tilgængelige plugins", + "update": "Opdater installerede plugins", + "scaffold": "Opret en skabelon til et nyt plugin" + }, + "launch": { + "description": "Start Claude Code med forbindelse til OmniRoute (lokalt eller eksternt, med --profile)", + "token": "Token, som Claude-klienten skal sende (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute kan ikke nås på {port}. Start den med 'omniroute serve'.", + "notFound": "'claude'-CLI'en blev ikke fundet i PATH." + }, + "run": { + "description": "Start et understøttet CLI-mål via OmniRoute" + }, + "setupClaude": { + "description": "Generér Claude Code-profiler i ~/.claude/profiles ud fra OmniRoutes modelkatalog" + }, + "connect": { + "description": "Opret forbindelse til en ekstern OmniRoute-server, og skift til ekstern tilstand" + }, + "tokens": { + "description": "Administrer afgrænsede CLI-adgangstokens (ekstern tilstand)" + }, + "configure": { + "description": "Vælg en udbyder og model fra den aktive server, og konfigurer en understøttet lokal CLI" + }, + "launchCodex": { + "description": "Start Codex CLI med forbindelse til OmniRoute (lokalt eller på en ekstern VPS)" + }, + "setupCodex": { + "description": "Generér profilfiler i ~/.codex ud fra OmniRoutes aktive modelkatalog" + }, + "packs": { + "description": "Administrer valgfrie runtime-pakker (ML/browserautomatisering)", + "listDescription": "Vis valgfrie pakker og deres installationsstatus", + "installDescription": "Installer en valgfri pakke i DATA_DIR", + "verifyDescription": "Kontrollér installerede pakker mod det medfølgende kontrolsumindeks", + "removeDescription": "Fjern en installeret valgfri pakke", + "sourceOpt": "Mappe, der indeholder pakkedata og pakkeindekset", + "warnNoIndex": "optional-packs.index.json blev ikke fundet — installation/kontrol er ikke tilgængelig i denne checkout (desktop-pakker indeholder den)", + "errUnknown": "ukendt pakke: {name}", + "errNoIndex": "pakkeindekset blev ikke fundet; angiv --source med pakkedataene (desktop-pakker indeholder det ved siden af appen)", + "installed": "pakken \"{name}\" er installeret og kontrolleret i {dir}", + "restartHint": "genstart OmniRoute-serveren (eller desktopappen), så runtime-miljøet registrerer pakken", + "removed": "pakken \"{name}\" er fjernet", + "notInstalled": "pakken \"{name}\" var ikke installeret", + "verifyOk": "alle installerede pakker er verificeret", + "verifyFailed": "{count} pakke(r) kunne ikke verificeres", + "noneInstalled": "ingen valgfrie pakker er installeret" } } diff --git a/bin/cli/locales/de.json b/bin/cli/locales/de.json index d32ef34be9..4f56c2cfae 100644 --- a/bin/cli/locales/de.json +++ b/bin/cli/locales/de.json @@ -14,6 +14,812 @@ "jsonOpt": "Ausgabe als JSON", "yesOpt": "Bestätigung überspringen" }, + "setup": { + "title": "OmniRoute-Einrichtung", + "passwordPrompt": "Administratorpasswort", + "providerPrompt": "Standardanbieter (zum Überspringen leer lassen)", + "done": "Einrichtung abgeschlossen", + "passwordSet": "Administratorpasswort konfiguriert", + "providerSet": "Anbieter konfiguriert: {name}", + "testingProvider": "Anbieterverbindung wird getestet: {name}", + "testPassed": "Anbietertest bestanden", + "testFailed": "Anbietertest fehlgeschlagen: {error}", + "loginEnabled": "Anmeldung: aktiviert (Passwort aktualisiert)", + "loginDisabled": "Anmeldung: deaktiviert", + "providerInfo": "Anbieter: {info}", + "opencode": "Das enthaltene @omniroute/opencode-plugin für OpenCode installieren und konfigurieren" + }, + "doctor": { + "title": "OmniRoute-Diagnose", + "dbOk": "Datenbank: OK ({path})", + "dbMissing": "Datenbank: nicht initialisiert — führen Sie `omniroute setup` aus", + "portOk": "Port {port}: verfügbar", + "portConflict": "Port {port}: wird von einem anderen Prozess verwendet", + "encryptionOk": "Verschlüsselungsschlüssel: konfiguriert", + "encryptionMissing": "Verschlüsselungsschlüssel fehlt — führen Sie `omniroute setup` aus", + "allGood": "Alle Prüfungen bestanden.", + "warnings": "{count} Warnung(en) — siehe oben." + }, + "providers": { + "title": "Anbieter", + "noProviders": "Keine Anbieter konfiguriert. Führen Sie Folgendes aus: omniroute setup", + "testing": "{name} wird getestet ...", + "available": "{count} Anbieter verfügbar", + "connected": "Verbunden", + "disconnected": "Getrennt", + "validationFailed": "Validierung fehlgeschlagen: {error}", + "metrics": { + "description": "Leistungsmetriken des Anbieters anzeigen (Latenz, Erfolgsrate, Kosten)", + "provider": "Nach Anbieter-ID filtern", + "connection_id": "Nach Verbindungs-ID filtern", + "period": "Zeitraum: 1h|6h|24h|7d|30d (Standard: 24h)", + "metric": "Auf ein bestimmtes Metrikfeld fokussieren", + "sort": "Nach Feld sortieren (absteigend)", + "limit": "Maximale Zeilenanzahl (Standard: 50)", + "watch": "Alle 5 s aktualisieren (Live-Modus)", + "compare": "Kommagetrennte Anbieter-IDs für den direkten Vergleich" + }, + "metric_single": { + "description": "Einen einzelnen Metrikwert für eine bestimmte Verbindung abrufen" + }, + "rotate": { + "description": "Den Upstream-API-Schlüssel für eine Anbieterverbindung rotieren", + "newKeyOpt": "Neuer API-Schlüsselwert (vermeiden: vorzugsweise --from-env verwenden)", + "fromEnvOpt": "Neuen Schlüssel aus der Umgebungsvariable VAR lesen", + "oauthOpt": "Stattdessen erneute OAuth-Authentifizierung starten", + "skipTestOpt": "Verbindungstest nach der Rotation überspringen", + "dryRunOpt": "Änderungen anzeigen, ohne sie zu speichern", + "confirmPrompt": "API-Schlüssel für Verbindung „{name}“ ({id}) ersetzen? [y/N]", + "dryRunResult": "[dry-run] Schlüssel für „{name}“ ({id}) würde rotiert. Keine Änderungen vorgenommen.", + "oauthHint": "OAuth-Verbindung — ausführen: omniroute oauth {provider}", + "envVarEmpty": "Die Umgebungsvariable {var} ist nicht gesetzt oder leer.", + "success": "Schlüssel für „{name}“ rotiert. Führen Sie zur Überprüfung `providers test {id}` aus.", + "testPassed": "Test nach der Rotation bestanden.", + "testFailed": "Test nach der Rotation fehlgeschlagen: {error}" + }, + "status": { + "description": "Schlüsselstatus für alle Provider-Verbindungen anzeigen (Alter, Ablauf, Abklingzeit)", + "providerOpt": "Nach Provider-Name filtern", + "header": "ID Provider Name Ablaufstatus Teststatus Abklingzeit bis", + "noData": "Keine Daten zu Provider-Verbindungen verfügbar.", + "requiresServer": "Für providers status muss der OmniRoute-Server ausgeführt werden." + } + }, + "keys": { + "title": "API-Schlüssel", + "addDescription": "API-Schlüssel für einen Provider hinzufügen oder aktualisieren", + "listDescription": "Alle konfigurierten API-Schlüssel auflisten", + "removeDescription": "API-Schlüssel für einen Provider entfernen", + "regenerateDescription": "Einen OmniRoute-API-Schlüssel neu generieren", + "revokeDescription": "Einen OmniRoute-API-Schlüssel widerrufen", + "revealDescription": "Den unmaskierten API-Schlüsselwert anzeigen", + "usageDescription": "Letzte Nutzung eines API-Schlüssels anzeigen", + "usageLimitOpt": "Anzahl der letzten Anfragen", + "rotateDescription": "Einen neuen Schlüssel generieren und den alten ungültig machen", + "graceOpt": "Übergangsfrist (ms), bevor der alte Schlüssel ungültig wird", + "stdinOpt": "API-Schlüssel aus stdin statt aus dem Argument lesen", + "added": "Schlüssel für {provider} hinzugefügt.", + "removed": "Schlüssel entfernt.", + "listed": "{count} Schlüssel.", + "noKeys": "Keine Schlüssel konfiguriert.", + "noUsage": "Keine Nutzungsdaten gefunden.", + "confirmRemove": "Schlüssel {id} entfernen?", + "confirmRegenerate": "Schlüssel {id} neu generieren?", + "confirmRevoke": "Schlüssel {id} widerrufen?", + "confirmRotate": "Schlüssel {id} rotieren? (Der alte Schlüssel wird nach der Übergangsfrist ungültig.)", + "regenerated": "Neu generiert. Neuer Schlüssel: {key}", + "revoked": "Schlüssel {id} widerrufen.", + "rotated": "Schlüssel {id} rotiert. Neue Schlüssel-ID: {newId}", + "revealWarning": "⚠ Dadurch wird der vollständige, unmaskierte Schlüssel angezeigt. Stellen Sie sicher, dass Ihr Bildschirm nicht eingesehen werden kann.", + "providerRequired": "Der Anbieter ist erforderlich.", + "keyRequired": "Der API-Schlüssel ist erforderlich.", + "stdinEmpty": "Über stdin wurde kein API-Schlüssel bereitgestellt.", + "unknownProvider": "Unbekannter Anbieter: {provider}", + "policy": { + "title": "Schlüsselrichtlinie", + "showDescription": "Raten-/Kostenrichtlinie für einen Schlüssel anzeigen", + "setDescription": "Raten-/Kostenrichtlinie für einen Schlüssel festlegen", + "rateLimitOpt": "Maximale Anfragen pro Minute", + "maxCostOpt": "Maximale Kosten pro Tag (USD)", + "allowedModelsOpt": "Kommagetrennte Liste zulässiger Modelle", + "nothingToSet": "Keine Richtlinienfelder angegeben. Verwenden Sie --rate-limit, --max-cost oder --allowed-models.", + "updated": "Richtlinie aktualisiert." + }, + "expiration": { + "title": "Schlüsselablauf", + "listDescription": "Bald ablaufende Schlüssel auflisten", + "daysOpt": "Schlüssel anzeigen, die innerhalb von N Tagen ablaufen", + "none": "Keine Schlüssel laufen innerhalb von {days} Tagen ab.", + "listTitle": "Schlüssel, die innerhalb von {days} Tagen ablaufen:" + } + }, + "authExport": { + "description": "ENTSCHLÜSSELTE Anbieterzugangsdaten exportieren (nur lokal, Klartextausgabe)", + "idOpt": "Nur die Verbindung exportieren, die dieser ID/diesem Namen/diesem Anbieter entspricht", + "formatOpt": "Ausgabeformat: json oder env", + "outOpt": "Ausgabe in eine Datei statt nach stdout schreiben (mit 0600-Berechtigungen)", + "forceOpt": "Bestätigen, dass Ihnen bewusst ist, dass dadurch Geheimnisse im Klartext ausgegeben/geschrieben werden", + "warning": "⚠ Dadurch werden ENTSCHLÜSSELTE API-Schlüssel und OAuth-Tokens im Klartext ausgegeben/geschrieben. Stellen Sie sicher, dass Ihr Bildschirm, Ihr Shell-Verlauf und alle Ausgabedateien privat bleiben.", + "confirmHeading": "⚠ WARNUNG: Dadurch werden ENTSCHLÜSSELTE Anbieterzugangsdaten im Klartext exportiert", + "confirmBody": "Dieser Befehl entschlüsselt apiKey, accessToken, refreshToken und\nidToken für die ausgewählte(n) Verbindung(en) und gibt sie aus bzw. schreibt sie. Behandeln Sie die Ausgabe als Geheimnis.", + "confirmFooter": "Führen Sie zur Bestätigung Folgendes aus:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY ist zum Exportieren von Zugangsdaten erforderlich.", + "notFound": "Verbindung nicht gefunden: {id}", + "invalidFormat": "Ungültiges Format: {format}. Verwenden Sie json oder env." + }, + "stream": { + "description": "Eine Chat-Antwort mit SSE-Inspektionsmodi streamen", + "file": "Eingabeaufforderung aus einer Datei lesen", + "stdin": "Eingabeaufforderung von stdin lesen", + "model": "Modell-ID (Standard: auto)", + "system": "System-Eingabeaufforderung", + "combo": "Eine bestimmte Kombination anhand ihres Namens erzwingen", + "max_tokens": "Maximale Anzahl an Tokens in der Antwort", + "responses_api": "/v1/responses anstelle von /v1/chat/completions verwenden", + "raw": "Rohe SSE-Zeilen so ausgeben, wie sie empfangen wurden", + "debug": "Zeitinformationen pro Chunk auf stderr ausgeben", + "save": "Alle SSE-Ereignisse in einer .jsonl-Datei speichern", + "error": { + "empty_prompt": "Fehler: Prompt ist erforderlich (Positionsargument, --file oder --stdin)" + } + }, + "usage": { + "description": "Nutzungsanalysen, Budgets, Kontingente und Protokolle", + "analytics": { + "description": "Aggregierte Nutzungsanalysen anzeigen", + "period": "Zeitraum: 1d|7d|30d|90d|ytd|all (Standard: 30d)", + "provider": "Nach Anbieter-ID filtern" + }, + "budget": { + "description": "Kostenbudgets verwalten", + "set": { + "scope": "Budgetbereich (Standard: global)", + "period": "Budgetzeitraum: daily|weekly|monthly (Standard: monthly)" + } + }, + "quota": { + "description": "Nutzung des Anbieterkontingents anzeigen", + "provider": "Nach Anbieter-ID filtern", + "check": "Anzeigen, ob Kontingent für eine neue Anfrage verfügbar ist" + }, + "logs": { + "description": "Protokolle der Anfrageaufrufe anzeigen", + "limit": "Anzahl der zurückzugebenden Protokolleinträge (Standard: 100)", + "search": "Suchanfrage zum Filtern der Protokolle", + "since": "Protokolle seit diesem Zeitstempel zurückgeben", + "follow": "Neue Protokolleinträge fortlaufend verfolgen", + "api_key": "Protokolle nach API-Schlüssel filtern" + }, + "utilization": { + "description": "Auslastungsmetriken für API-Schlüssel anzeigen", + "api_key": "Nach API-Schlüssel filtern" + }, + "history": { + "description": "Anfrageverlauf anzeigen", + "limit": "Anzahl der Verlaufseinträge (Standard: 100)" + }, + "proxy_logs": { + "description": "Anfrageprotokolle auf Proxy-Ebene anzeigen", + "limit": "Anzahl der Proxy-Protokolleinträge (Standard: 100)" + } + }, + "cost": { + "description": "Kostenbericht mit Aufschlüsselung nach Anbieter, Modell, Kombination oder API-Schlüssel anzeigen", + "period": "Zeitraum: 1d|7d|30d|90d|ytd|all (Standard: 30d)", + "since": "Startdatum (ISO-Format, z. B. 2026-01-01) — überschreibt --period", + "until": "Enddatum (ISO-Format)", + "group_by": "Ergebnisse gruppieren nach: provider|model|api-key|combo|day (Standard: provider)", + "api_key_filter": "Nach einem bestimmten API-Schlüssel filtern", + "limit": "Maximale Anzahl anzuzeigender Zeilen (Standard: 100)" + }, + "simulate": { + "description": "Routing-Simulation als Probelauf — zeigt ohne Aufruf des Upstream-Dienstes, welche Anbieter ausgewählt würden", + "file": "Vollständigen Anfragekörper aus einer JSON-Datei laden", + "model": "Modell-ID (Standard: auto)", + "combo": "Eine bestimmte Kombination anhand ihres Namens erzwingen", + "reasoning": "Denkaufwand (low|medium|high)", + "thinking": "Token-Budget für erweitertes Denken", + "explain": "Fallback-Baum und Kostenspanne auf stderr ausgeben", + "noCombo": "Keine passende Kombination gefunden. Konfigurieren Sie eine mit: omniroute combo create" + }, + "chat": { + "description": "Eine einmalige Chat-Eingabe an OmniRoute senden", + "file": "Eingabe aus Datei lesen", + "stdin": "Eingabe von stdin lesen", + "system": "System-Prompt", + "model": "Modell-ID (Standard: auto)", + "max_tokens": "Maximale Anzahl von Tokens in der Antwort", + "temperature": "Sampling-Temperatur (0–2)", + "top_p": "Top-p-Nucleus-Sampling", + "reasoning_effort": "Reasoning-Aufwandsstufe (low|medium|high)", + "thinking_budget": "Token-Budget für erweitertes Denken", + "combo": "Eine bestimmte Kombination anhand ihres Namens erzwingen", + "responses_api": "/v1/responses anstelle von /v1/chat/completions verwenden", + "stream": "Antwort schrittweise streamen", + "no_history": "Nicht in ~/.omniroute/cli-history.jsonl speichern", + "error": { + "empty_prompt": "Fehler: Eingabe ist erforderlich (Positionsargument, --file oder --stdin)" + } + }, + "serve": { + "description": "OmniRoute-Server starten (Standardaktion)", + "starting": "OmniRoute-Server wird auf Port {port} gestartet ...", + "ready": "Bereit unter http://localhost:{port}", + "stopping": "Server wird beendet (PID {pid}) ...", + "stopped": "Server wurde beendet.", + "notRunning": "Server läuft nicht.", + "port": "Port, auf dem gelauscht werden soll (Standard: 20128)", + "no_open": "Browser nicht automatisch öffnen", + "daemon": "Server als Hintergrunddienst ausführen", + "log": "Serverprotokolle direkt anzeigen", + "no_recovery": "Automatischen Neustart bei Absturz deaktivieren (Debugging-Modus)", + "max_restarts": "Maximale Anzahl von Neustarts nach Abstürzen innerhalb von 30 s, bevor aufgegeben wird (Standard: 2)", + "tray": "Im Infobereich starten (nur Desktop, optionale Aktivierung)", + "no_tray": "Infobereichssymbol deaktivieren", + "ready_timeout": "Zeitüberschreitung der Bereitschaftsprüfung in ms (auch OMNIROUTE_READY_TIMEOUT_MS, Standard: 60000)", + "tls_cert": "Pfad zu einem TLS-Zertifikat (PEM) für die Bereitstellung von HTTPS (auch OMNIROUTE_TLS_CERT)", + "tls_key": "Pfad zum privaten TLS-Schlüssel (PEM) für die Bereitstellung von HTTPS (auch OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sicherung", + "description": "Eine Sicherung der OmniRoute-Daten erstellen", + "creating": "Sicherung wird erstellt ...", + "done": "Sicherung unter {path} gespeichert", + "noFiles": "Keine Dateien zu sichern (Datenbank nicht initialisiert)", + "failed": "Sicherung fehlgeschlagen: {error}", + "restoring": "Wiederherstellung aus {path} läuft ...", + "restored": "Wiederherstellung abgeschlossen.", + "restoreDescription": "Aus einer Sicherung wiederherstellen", + "listTitle": "Verfügbare Sicherungen", + "noBackups": "Keine Sicherungen gefunden.", + "notFound": "Sicherung nicht gefunden: {name}", + "confirmRestore": "Aktuelle Daten mit der Sicherung vom {ts} überschreiben?", + "createDescription": "Eine Sicherung der OmniRoute-Daten erstellen", + "nameOpt": "Benutzerdefinierter Sicherungsname", + "cloudOpt": "Sicherung in den Cloud-Speicher hochladen", + "encryptOpt": "Sicherung mit AES-256-GCM verschlüsseln", + "keyFileOpt": "Pfad zur Datei mit der Verschlüsselungspassphrase", + "excludeOpt": "Dateien ausschließen, die dem Muster entsprechen (wiederholbar)", + "retentionOpt": "Nur die letzten N Sicherungen aufbewahren", + "passphrasePrompt": "Verschlüsselungspassphrase:", + "noPassphrase": "Für eine verschlüsselte Sicherung ist eine Passphrase erforderlich.", + "cloudFailed": "Warnung: Cloud-Upload fehlgeschlagen. Die lokale Sicherung wurde gespeichert.", + "cloudUploaded": "Cloud-Sicherung hochgeladen: {url}", + "auto": { + "title": "Sicherungszeitplan", + "enableDescription": "Geplante automatische Sicherungen aktivieren", + "disableDescription": "Geplante automatische Sicherungen deaktivieren", + "statusDescription": "Aktuellen Status des Sicherungszeitplans anzeigen", + "cronOpt": "Cron-Ausdruck für den Zeitplan (Standard: täglich um 3 Uhr)", + "enabled": "Automatische Sicherung aktiviert (Cron: {cron}).", + "hint": "Der Zeitplan wird beim Start von omniroute serve gelesen.", + "disabled": "Automatische Sicherung deaktiviert.", + "notConfigured": "Kein Sicherungszeitplan konfiguriert." + } + }, + "health": { + "description": "Serverzustand und Komponentenstatus prüfen", + "noServer": "Server läuft nicht. Starten mit: omniroute serve", + "title": "Zustand", + "status": "Status: {status}", + "uptime": "Betriebszeit: {uptime}", + "requests": "Anfragen (24 Std.): {count}", + "cost": "Kosten (24 Std.): ${cost}" + }, + "quota": { + "description": "Kontingentnutzung des Anbieters anzeigen", + "noServer": "Server läuft nicht. Starten mit: omniroute serve", + "noData": "Keine Kontingentinformationen verfügbar." + }, + "cache": { + "description": "Antwort-Cache verwalten", + "noServer": "Server läuft nicht. Starten mit: omniroute serve", + "cleared": "Cache geleert.", + "clearFailed": "Cache konnte nicht geleert werden." + }, + "redis": { + "description": "Lokalen Redis-Container mit einem Klick starten (Podman oder Docker) für OmniRoute-Caching und Kontingentverfolgung" + }, + "test": { + "description": "Verbindung zu einem Anbieter testen", + "noServer": "Server läuft nicht. Starten mit: omniroute serve", + "testing": "{provider} / {model} wird getestet ...", + "passed": "Verbindung erfolgreich!", + "failed": "Verbindung fehlgeschlagen: {error}", + "allProvidersOpt": "Alle konfigurierten Anbieter testen", + "latencyOpt": "Latenzmessungen anzeigen (Durchschnitt/Minimum/Maximum in ms)", + "repeatOpt": "Test N-mal wiederholen und Ergebnisse aggregieren", + "compareOpt": "Kommagetrennte Modelle zum Vergleichen (z. B. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Ergebnisse in einer JSON-Datei speichern", + "saved": "Ergebnisse unter {path} gespeichert", + "compareTitle": "Modellvergleich", + "compareMinTwo": "Für --compare sind mindestens zwei Modelle erforderlich (kommagetrennt)", + "noProviders": "Keine Anbieter konfiguriert. Mit folgendem Befehl hinzufügen: omniroute keys add" + }, + "update": { + "checking": "Es wird nach Updates gesucht ...", + "upToDate": "Bereits auf dem neuesten Stand ({version}).", + "available": "Update verfügbar: {current} → {latest}", + "installing": "{latest} wird installiert ...", + "done": "Auf {latest} aktualisiert. Starten Sie den Server neu, um die Aktualisierung anzuwenden." + }, + "mcp": { + "title": "MCP-Server", + "running": "MCP-Server läuft ({transport})", + "stopped": "MCP-Server wurde angehalten.", + "restarted": "MCP-Server wurde neu gestartet.", + "stoppedHint": "Führen Sie `omniroute mcp enable` aus, um ihn zu aktivieren.", + "enabled": "MCP-Server wurde aktiviert.", + "disabled": "MCP-Server wurde deaktiviert.", + "enable": { + "description": "MCP-Server aktivieren", + "transport": "Zu verwendender Transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP-Server deaktivieren" + }, + "call": { + "description": "Ein MCP-Tool direkt aufrufen", + "args": "JSON-Argumentobjekt (inline)", + "args_file": "Pfad zur JSON-Argumentdatei", + "stream": "Streaming-Endpunkt verwenden (/api/mcp/stream)", + "scope": "Erforderlicher Berechtigungsumfang (wiederholbar, z. B. read:health)" + }, + "scopes": { + "description": "Verfügbare MCP-Berechtigungsumfänge auflisten", + "tool": "Für ein bestimmtes Tool erforderliche Berechtigungsumfänge anzeigen" + }, + "tools": { + "description": "MCP-Tools untersuchen", + "list": { + "description": "Alle MCP-Tools auflisten", + "scope": "Nach Berechtigungsumfang filtern" + }, + "info": { + "description": "Metadaten für ein MCP-Tool anzeigen" + }, + "schema": { + "description": "JSON-Schema für Ein- und Ausgabe eines MCP-Tools anzeigen", + "io": "Schema-Typ: input|output (Standard: input)" + } + }, + "audit": { + "description": "MCP-Auditprotokoll (Alias für audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Verfügbare A2A-Skills aus der Agentenkarte auflisten" + }, + "invoke": { + "description": "Einen A2A-Skill aufrufen und die Aufgaben-ID zurückgeben", + "input": "JSON-Eingabeobjekt", + "input_file": "Pfad zur JSON-Eingabedatei", + "wait": "Vor der Rückgabe auf den Abschluss der Aufgabe warten", + "timeout": "Zeitüberschreitung beim Warten auf den Abschluss in ms (Standard: 60000)" + }, + "tasks": { + "description": "A2A-Aufgaben verwalten", + "list": { + "status": "Nach Status filtern", + "skill": "Nach Skill-ID filtern" + }, + "watch": { + "description": "Aufgabenstatus bis zum Abschluss abfragen" + }, + "stream": { + "description": "Ereignisse der Aufgabenausführung über SSE streamen" + }, + "logs": { + "description": "Aufgabennachrichten und Artefakte anzeigen" + } + } + }, + "policy": { + "description": "OmniRoute-Autorisierungsrichtlinien verwalten", + "list": { + "description": "Richtlinien auflisten", + "kind": "Nach Typ filtern (allow|deny|rate-limit|cost-cap)", + "scope": "Nach Geltungsbereich filtern (global|api-key|provider)" + }, + "get": { + "description": "Richtliniendetails anhand der ID abrufen" + }, + "create": { + "description": "Eine Richtlinie aus einer JSON-Datei erstellen", + "file": "Pfad zur Richtlinien-JSON-Datei" + }, + "update": { + "description": "Eine Richtlinie aus einer JSON-Datei aktualisieren", + "file": "Pfad zur Richtlinien-JSON-Datei" + }, + "delete": { + "description": "Eine Richtlinie anhand der ID löschen", + "yes": "Bestätigungsaufforderung überspringen" + }, + "evaluate": { + "description": "Richtlinienauswertung als Testlauf durchführen (Exit-Code 0=zulässig, 4=abgelehnt)", + "api_key": "Auszuwertender API-Schlüssel", + "action": "Zu prüfende Aktion (z. B. chat, embed, admin)", + "resource": "Ressourcenpfad oder Bezeichner", + "context": "Zusätzlicher Kontext als JSON-Objekt" + }, + "export": { + "description": "Alle Richtlinien in eine JSON-Datei exportieren" + }, + "import": { + "description": "Richtlinien aus einer JSON-Datei importieren", + "overwrite": "Vorhandene Richtlinien mit derselben ID überschreiben" + } + }, + "compression": { + "description": "OmniRoute-Komprimierungspipeline konfigurieren und prüfen", + "status": { + "description": "Aktuellen Komprimierungsstatus und aktuelle Einstellungen anzeigen" + }, + "configure": { + "description": "Komprimierungseinstellungen konfigurieren", + "engine": "Komprimierungs-Engine (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-Aggressivität 0,0–1,0", + "rtk_budget": "RTK-Tokenbudget", + "language_pack": "Zu aktivierendes Sprachpaket" + }, + "engine": { + "description": "Aktive Komprimierungs-Engine abrufen oder festlegen" + }, + "combos": { + "description": "Statistiken zu Komprimierungskombinationen verwalten" + }, + "rules": { + "description": "Komprimierungsregeln verwalten", + "add": { + "pattern": "Abzugleichendes Muster (Regex oder Feld:Muster)", + "action": "Aktion: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Verfügbare Sprachpakete für die Komprimierung auflisten" + }, + "preview": { + "description": "Auswirkung der Komprimierung auf eine Anfrage in der Vorschau anzeigen", + "file": "Pfad zur JSON-Datei der Anfrage" + } + }, + "tunnel": { + "title": "Tunnel", + "listDescription": "Aktive Tunnel auflisten", + "createDescription": "Tunnel erstellen", + "created": "Tunnel erstellt: {url}", + "stopped": "Tunnel gestoppt.", + "confirmStop": "Tunnel {id} stoppen?", + "stopDescription": "Tunnel stoppen", + "statusDescription": "Detaillierten Status eines Tunnels anzeigen", + "logsDescription": "Protokolle für einen Tunnel anzeigen", + "infoDescription": "Konfigurationsdetails eines Tunnels anzeigen", + "rotateDescription": "Neue Tunnel-URL generieren", + "tailOpt": "Anzahl der anzuzeigenden Protokollzeilen", + "typeRequired": "Tunneltyp ist erforderlich.", + "noLogs": "Keine Protokolle verfügbar.", + "notAvailable": "Tunnelinformationen sind nicht verfügbar.", + "noTunnels": "Keine aktiven Tunnel.", + "infoTitle": "Tunnelinformationen: {type}", + "rotated": "Tunnel-URL erneuert: {url}", + "confirmRotate": "Tunnel {type} erneuern? (Eine neue URL wird generiert)" + }, + "stop": { + "description": "OmniRoute-Server stoppen", + "stopping": "Server wird gestoppt (PID {pid})...", + "stopped": "Server gestoppt.", + "notRunning": "Es wird kein Server ausgeführt.", + "portFallback": "Keine PID-Datei gefunden, portbasierter Stopp wird versucht..." + }, + "restart": { + "description": "OmniRoute-Server neu starten", + "restarting": "OmniRoute-Server wird neu gestartet..." + }, + "dashboard": { + "description": "OmniRoute-Dashboard in einem Browser öffnen", + "opening": "Dashboard wird unter {url} geöffnet", + "urlOnly": "Dashboard-URL ausgeben, ohne den Browser zu öffnen", + "tui": "Interaktives TUI-Dashboard öffnen (Terminal-Benutzeroberfläche, 7 Registerkarten)" + }, + "models": { + "description": "Verfügbare Modelle auflisten (Server erforderlich)", + "search": "Modelle nach ID, Name, Anbieter oder Beschreibung filtern", + "noServer": "Server läuft nicht. Starten mit: omniroute serve", + "noModels": "Keine Modelle gefunden." + }, + "audit": { + "description": "Auf Compliance- und MCP-Auditprotokolle zugreifen", + "source": "Protokollquelle: all|compliance|mcp (Standard: all)", + "since": "Einträge ab diesem Zeitstempel zurückgeben (ISO 8601)", + "until": "Einträge bis zu diesem Zeitstempel zurückgeben (ISO 8601)", + "tail": { + "description": "Aktuelle Auditprotokolleinträge anzeigen", + "follow": "Neue Einträge fortlaufend anzeigen (Abfrage alle 2 s)", + "limit": "Maximal anzuzeigende Einträge (Standard: 100)" + }, + "search": { + "description": "Auditprotokolleinträge nach Schlüsselwort durchsuchen", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 200)", + "actor": "Nach Akteur-ID filtern", + "action": "Nach Aktionsname filtern" + }, + "export": { + "description": "Auditprotokoll in Datei exportieren", + "format": "Ausgabeformat: jsonl|csv (Standard: jsonl)" + }, + "stats": { + "description": "Auditprotokollstatistiken anzeigen", + "period": "Zeitraum: 1d|7d|30d (Standard: 7d)" + }, + "get": { + "description": "Einen einzelnen Auditprotokolleintrag anhand der ID abrufen" + } + }, + "skills": { + "description": "OmniRoute-Skills verwalten (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Installierte Skills auflisten", + "type": "Nach Typ filtern (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Nur aktivierte Skills anzeigen", + "disabled": "Nur deaktivierte Skills anzeigen", + "api_key": "Nach API-Schlüssel filtern" + }, + "get": { + "description": "Details zu einem Skill anhand der ID abrufen" + }, + "install": { + "description": "Einen Skill aus einer Datei oder URL installieren", + "from_file": "Pfad zur JSON-Definitionsdatei des Skills", + "from_url": "URL der Remote-Skill-Definition", + "type": "Skill-Typ (sandbox|custom|hybrid)", + "enable": "Skill nach der Installation aktivieren" + }, + "enable": { + "description": "Einen Skill anhand der ID aktivieren" + }, + "disable": { + "description": "Einen Skill anhand der ID deaktivieren", + "yes": "Bestätigungsabfrage überspringen" + }, + "delete": { + "description": "Einen Skill anhand der ID löschen", + "yes": "Bestätigungsabfrage überspringen" + }, + "execute": { + "description": "Einen Skill anhand der ID ausführen", + "input": "JSON-Eingabeobjekt", + "input_file": "Pfad zur JSON-Eingabedatei", + "timeout": "Ausführungszeitlimit in ms (Standard: 30000)" + }, + "executions": { + "description": "Verlauf der Skill-Ausführungen auflisten", + "skill": "Nach Skill-ID filtern", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 50)", + "status": "Nach Status filtern (running|completed|failed)" + }, + "skillssh": { + "description": "Über SSH installierte Skills verwalten" + }, + "marketplace": { + "description": "Skills im Marketplace durchsuchen und installieren" + }, + "mp": { + "search": { + "description": "Marketplace-Pakete suchen", + "category": "Nach Kategorie filtern", + "tag": "Nach Tag filtern", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 30)", + "sort": "Sortieren nach: downloads|rating|recent" + }, + "info": { + "description": "Paketdetails und README anzeigen" + }, + "install": { + "description": "Ein Marketplace-Paket installieren", + "version": "Paketversion (Standard: latest)", + "enable": "Nach der Installation aktivieren", + "yes": "Bestätigungsaufforderung überspringen" + }, + "categories": { + "description": "Marketplace-Kategorien auflisten" + }, + "featured": { + "description": "Empfohlene Marketplace-Pakete anzeigen" + } + } + }, + "memory": { + "description": "Konversationsgedächtnis von OmniRoute verwalten (FTS5 + Vektor)", + "search": { + "description": "Gedächtniseinträge mittels semantischer Abfrage durchsuchen", + "type": "Nach Gedächtnistyp filtern (user|feedback|project|reference)", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 20)", + "api_key": "Nach API-Schlüssel filtern", + "token_budget": "Gesamtzahl der Tokens in den Ergebnissen begrenzen" + }, + "add": { + "description": "Einen neuen Gedächtniseintrag hinzufügen", + "content": "Textinhalt des Gedächtniseintrags", + "file": "Inhalt aus Datei lesen", + "type": "Gedächtnistyp (Standard: user)", + "metadata": "JSON-Metadatenobjekt", + "api_key": "Mit API-Schlüssel verknüpfen" + }, + "clear": { + "description": "Gedächtniseinträge löschen, die den Filtern entsprechen", + "type": "Nach Typ filtern", + "older": "Einträge löschen, die älter als die angegebene Dauer sind (30d, 6m, 1y)", + "api_key": "Nach API-Schlüssel filtern", + "yes": "Bestätigungsaufforderung überspringen" + }, + "list": { + "description": "Gedächtniseinträge ohne Suchrangfolge auflisten", + "type": "Nach Typ filtern", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 100)", + "api_key": "Nach API-Schlüssel filtern" + }, + "get": { + "description": "Einen einzelnen Gedächtniseintrag anhand der ID abrufen" + }, + "delete": { + "description": "Einen Gedächtniseintrag anhand der ID löschen", + "yes": "Bestätigungsabfrage überspringen" + }, + "health": { + "description": "Zustand des Speichersubsystems anzeigen (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth-Anbieterverbindungen verwalten", + "providers": { + "description": "OAuth-fähige Anbieter und ihre Flow-Typen auflisten" + }, + "start": { + "description": "OAuth-Autorisierungsflow für einen Anbieter starten", + "provider": "Anbieter-ID (gemini, copilot, cursor, …)", + "no_browser": "Nur URL ausgeben — Browser nicht öffnen", + "import_system": "Anmeldedaten automatisch aus der lokalen Systemkonfiguration importieren", + "social": "Social-Login-Anbieter (google|github) — erforderlich für kiro", + "timeout": "Zeitüberschreitung beim Warten auf die Autorisierung in ms (Standard: 300000)" + }, + "status": { + "description": "Aktive OAuth-Verbindungen auflisten", + "provider": "Nach Anbieter-ID filtern" + }, + "revoke": { + "description": "Eine OAuth-Verbindung widerrufen", + "provider": "Zu widerrufende Anbieter-ID", + "connection_id": "Eine bestimmte Verbindung anhand ihrer ID widerrufen", + "yes": "Bestätigungsabfrage überspringen" + } + }, + "cloud": { + "description": "Cloud-KI-Agentenaufgaben verwalten (codex, devin, jules)", + "agents": { + "description": "Verfügbare Cloud-Agenten auflisten" + }, + "agent": { + "description": "Cloud-Agentenaufgaben für {agent} verwalten", + "auth": { + "description": "{agent} über OAuth autorisieren" + } + }, + "task": { + "description": "Cloud-Agentenaufgaben verwalten", + "create": { + "description": "Neue Agentenaufgabe erstellen", + "title": "Aufgabentitel (standardmäßig die ersten 80 Zeichen des Prompts)", + "prompt": "Prompt-Text der Aufgabe", + "prompt_file": "Prompt aus Datei lesen", + "repo": "Repository-URL, die für die Aufgabe geklont werden soll", + "branch": "Zu verwendender Branch-Name", + "metadata": "JSON-Metadatenobjekt" + }, + "list": { + "description": "Agentenaufgaben auflisten", + "status": "Nach Status filtern (running|completed|failed|cancelled)", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 50)" + }, + "get": { + "description": "Aufgabendetails anhand der ID abrufen" + }, + "status": { + "description": "Aufgabenstatus ausgeben (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Eine laufende Aufgabe abbrechen", + "yes": "Bestätigungsabfrage überspringen" + }, + "approve": { + "description": "Agentenplan genehmigen, um die Ausführung zu starten" + }, + "message": { + "description": "Nachricht an eine laufende Aufgabe senden" + } + }, + "sources": { + "description": "Von einer Aufgabe erzeugte Quelldateien auflisten" + } + }, + "eval": { + "description": "Evaluierungssammlungen und -läufe verwalten", + "suites": { + "description": "Evaluierungssammlungen verwalten", + "list": { + "description": "Evaluierungssuiten auflisten" + }, + "get": { + "description": "Details einer Evaluierungssuite anhand der ID abrufen" + }, + "create": { + "description": "Eine Evaluierungssuite aus einer JSON-Datei erstellen", + "file": "Pfad zur JSON-Datei mit der Suitendefinition" + } + }, + "run": { + "description": "Einen Evaluierungslauf für eine Suite starten", + "model": "Zu evaluierende Modell-ID (Standard: auto)", + "combo": "Eine bestimmte Kombination anhand ihres Namens erzwingen", + "concurrency": "Anzahl gleichzeitiger Stichproben (Standard: 4)", + "tag": "Diesen Lauf zur späteren Filterung mit einem Tag versehen", + "watch": "Fortschritt des Laufs bis zum Abschluss verfolgen" + }, + "list": { + "description": "Evaluierungsläufe auflisten", + "suite": "Nach Suiten-ID filtern", + "status": "Nach Status filtern", + "since": "Läufe seit diesem Zeitstempel zurückgeben", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 50)" + }, + "get": { + "description": "Details eines Evaluierungslaufs anhand der ID abrufen" + }, + "results": { + "description": "Stichprobenergebnisse für einen Evaluierungslauf anzeigen", + "failed": "Nur fehlgeschlagene Stichproben anzeigen" + }, + "cancel": { + "description": "Einen laufenden Evaluierungslauf abbrechen", + "yes": "Bestätigungsabfrage überspringen" + }, + "scorecard": { + "description": "Scorecard für einen abgeschlossenen Evaluierungslauf anzeigen" + } + }, + "webhooks": { + "description": "OmniRoute-Webhooks verwalten", + "events": { + "description": "Alle verfügbaren Webhook-Ereignistypen auflisten" + }, + "list": { + "description": "Konfigurierte Webhooks auflisten" + }, + "get": { + "description": "Webhook-Details anhand der ID abrufen" + }, + "add": { + "description": "Einen neuen Webhook registrieren", + "url": "Ziel-URL", + "events": "Kommagetrennte Liste von Ereignistypen", + "secret": "HMAC-Signaturgeheimnis", + "header": "Zusätzlicher Header im Format key=value (wiederholbar)", + "no_enabled": "Webhook im deaktivierten Zustand erstellen" + }, + "update": { + "description": "Einen vorhandenen Webhook aktualisieren", + "enabled": "Aktivierungsstatus festlegen (true|false)" + }, + "remove": { + "description": "Einen Webhook löschen", + "yes": "Bestätigungsabfrage überspringen" + }, + "test": { + "description": "Ein Testereignis an einen Webhook senden", + "event": "Zu simulierender Ereignistyp (Standard: request.completed)" + } + }, "program": { "description": "OmniRoute — Intelligenter AI-Router mit automatischem Fallback", "version": "Version ausgeben und beenden", @@ -26,7 +832,509 @@ "context": "Server-Kontext/Profil für diesen Befehl", "lang": "CLI-Anzeigesprache festlegen (überschreibt OMNIROUTE_LANG)" }, - "redis": { - "description": "Lokalen Redis-Container mit einem Klick starten (Podman oder Docker) für OmniRoute-Caching und Kontingentverfolgung" + "files": { + "description": "Dateien verwalten (hochladen, auflisten, abrufen, herunterladen, löschen)", + "list": { + "purpose": "Nach Verwendungszweck filtern", + "limit": "Maximale Anzahl an Ergebnissen" + }, + "get": { + "description": "Dateimetadaten abrufen" + }, + "upload": { + "description": "Eine Datei hochladen", + "purpose": "Dateizweck (batch, assistants, fine-tune)" + }, + "content": { + "description": "Dateiinhalt herunterladen", + "out": "Unter Pfad speichern (Standard: stdout)" + }, + "delete": { + "yes": "Bestätigung überspringen" + } + }, + "batches": { + "description": "OpenAI-kompatible Batch-Aufträge verwalten", + "list": { + "status": "Nach Status filtern", + "limit": "Maximale Anzahl an Ergebnissen" + }, + "create": { + "description": "Batch-Auftrag erstellen", + "inputFile": "Eingabedatei-ID", + "endpoint": "Ziel-Endpunkt", + "window": "Abschlusszeitfenster", + "metadata": "Metadaten im Format key=value hinzufügen" + }, + "submit": { + "description": "JSONL-Datei hochladen und Batch erstellen", + "jsonl": "Pfad zur JSONL-Datei", + "endpoint": "Ziel-Endpunkt", + "wait": "Auf Abschluss warten" + }, + "cancel": { + "yes": "Bestätigung überspringen" + }, + "wait": { + "timeout": "Zeitüberschreitung in ms" + }, + "output": { + "out": "Ausgabe unter Pfad speichern" + }, + "errors": { + "out": "Fehler unter Pfad speichern" + } + }, + "translator": { + "description": "Anfrageinhalte zwischen LLM-Formaten übersetzen", + "detect": { + "description": "Format des Anfrageinhalts erkennen" + }, + "translate": { + "description": "Anfrageinhalt von einem Format in ein anderes konvertieren" + }, + "send": { + "description": "Übersetzen und an Upstream senden" + }, + "stream": { + "description": "Anfrageinhalt per Stream übersetzen" + }, + "from": "Quellformat (openai|anthropic|gemini|cohere)", + "to": "Zielformat (openai|anthropic|gemini|cohere)", + "file": "Pfad zur JSON-Datei mit dem Anfrageinhalt", + "out": "Ausgabe in Datei speichern", + "model": "Modell überschreiben", + "history": { + "limit": "Maximale Anzahl an Ergebnissen" + } + }, + "pricing": { + "description": "Preisdaten für Modelle verwalten", + "sync": { + "description": "Preise aus Upstream-Quellen synchronisieren", + "provider": "Nach Anbieter filtern", + "force": "Erneute Synchronisierung erzwingen" + }, + "list": { + "provider": "Nach Anbieter filtern", + "model": "Nach Modell filtern", + "limit": "Maximale Anzahl an Ergebnissen" + }, + "defaults": { + "description": "Standardpreise verwalten", + "input": "Eingabekosten pro 1 Mio. Token (USD)", + "output": "Ausgabekosten pro 1 Mio. Token (USD)", + "cacheRead": "Kosten für Cache-Lesevorgänge pro 1 Mio. Token (USD)", + "cacheWrite": "Kosten für Cache-Schreibvorgänge pro 1 Mio. Token (USD)" + }, + "diff": { + "description": "Abweichung von den Upstream-Preisen anzeigen", + "model": "Nach Modell filtern" + } + }, + "radar": { + "description": "Lokale Radar-Katalog-Feeds prüfen und synchronisieren", + "status": "Lokale Radar-Einstellungen und Feed-Cache-Status anzeigen", + "sync": "Katalog, Empfehlungen, Angebote und Intel über den lokalen Server synchronisieren" + }, + "resilience": { + "description": "Resilienzmechanismen prüfen und verwalten", + "status": { + "provider": "Nach Anbieter filtern" + }, + "breakers": { + "provider": "Nach Anbieter filtern" + }, + "cooldowns": { + "provider": "Nach Anbieter filtern", + "connectionId": "Nach Verbindungs-ID filtern" + }, + "lockouts": { + "provider": "Nach Anbieter filtern", + "model": "Nach Modell filtern" + }, + "reset": { + "description": "Status von Leistungsschalter/Abklingzeit zurücksetzen", + "provider": "Zurückzusetzender Anbieter", + "connectionId": "Zurückzusetzende Verbindungs-ID", + "model": "Modell, dessen Sperre zurückgesetzt werden soll", + "allCooldowns": "Alle Abklingzeiten für den Anbieter zurücksetzen", + "yes": "Bestätigung überspringen" + }, + "profile": { + "description": "Resilienzprofil verwalten", + "name": "Profilname" + }, + "config": { + "description": "Resilienzkonfiguration verwalten", + "threshold": "Fehlerschwellenwert", + "resetTimeout": "Zeitüberschreitung für Zurücksetzung in ms", + "baseCooldown": "Basisabklingzeit in ms" + } + }, + "nodes": { + "description": "Anbieterknoten (Endpunkte) verwalten", + "list": { + "provider": "Nach Anbieter filtern", + "enabled": "Nur aktivierte Knoten anzeigen" + }, + "add": { + "provider": "Anbietername", + "baseUrl": "Basis-URL für den Knoten", + "name": "Knotenname", + "weight": "Gewichtung für den Lastenausgleich", + "region": "Regions-Tag", + "authHeader": "Benutzerdefinierter Authentifizierungs-Header (key=value)" + }, + "update": { + "baseUrl": "Neue Basis-URL", + "name": "Neuer Name", + "weight": "Neue Gewichtung", + "region": "Neue Region", + "enabled": "Aktivieren oder deaktivieren (true|false)" + }, + "remove": { + "yes": "Bestätigung überspringen" + }, + "validate": { + "baseUrl": "Zu validierende URL", + "provider": "Anbieter, gegen den validiert werden soll" + }, + "test": { + "description": "Testanfrage an Knoten senden" + }, + "metrics": { + "description": "Knotenmetriken anzeigen", + "period": "Zeitraum (z. B. 24h, 7d)" + } + }, + "context": { + "description": "Context-Engineering-Pipeline konfigurieren (Caveman, RTK)", + "analytics": { + "period": "Zeitraum (z. B. 7d, 30d)" + }, + "caveman": { + "description": "Caveman-Kontextkompressor verwalten", + "config": { + "description": "Caveman-Konfiguration anzeigen oder aktualisieren", + "aggressiveness": "Aggressivität 0.0–1.0", + "maxShrinkPct": "Maximaler Komprimierungsprozentsatz", + "preserveTags": "Kommagetrennte beizubehaltende Tags" + } + }, + "rtk": { + "description": "RTK-Kontextoptimierer verwalten", + "config": { + "description": "RTK-Konfiguration anzeigen oder aktualisieren", + "tokenBudget": "Token-Budget für RTK", + "reservePct": "Reserveprozentsatz" + }, + "filters": { + "description": "RTK-Filter verwalten", + "pattern": "Filtermuster (Regex)", + "priority": "Filterpriorität (Standard: 100)", + "action": "Filteraktion: drop|shrink|replace", + "yes": "Bestätigung überspringen" + }, + "test": { + "file": "Pfad zur JSON-Anfragedatei" + } + }, + "combos": { + "description": "Kontextbezogene Combo-Verwaltung" + } + }, + "sessions": { + "description": "Aktive Sitzungen prüfen und verwalten", + "list": { + "user": "Nach Benutzer filtern", + "kind": "Nach Art filtern (dashboard|api-key|mcp|a2a)", + "active": "Nur aktive Sitzungen anzeigen", + "limit": "Maximale Anzahl an Ergebnissen (Standard: 100)" + }, + "expire": { + "yes": "Bestätigung überspringen" + }, + "expireAll": { + "user": "Benutzer, dessen Sitzungen ablaufen sollen", + "yes": "Bestätigung überspringen" + } + }, + "tags": { + "description": "Ressourcen-Tags verwalten", + "add": { + "color": "Tag-Farbe (Hexadezimalwert oder Name)", + "description": "Tag-Beschreibung" + }, + "remove": { + "yes": "Bestätigung überspringen" + }, + "assign": { + "tag": "Tag-Name", + "to": "Zielressource als Typ:ID (z. B. provider:openai)" + }, + "unassign": { + "tag": "Tag-Name", + "from": "Quellressource als Typ:ID" + } + }, + "openapi": { + "description": "Auf die OmniRoute OpenAPI-Spezifikation zugreifen und sie testen", + "dump": { + "description": "OpenAPI-Spezifikation nach stdout oder in eine Datei ausgeben", + "format": "Ausgabeformat: yaml|json (Standard: yaml)", + "out": "Unter Dateipfad speichern" + }, + "validate": { + "description": "OpenAPI-Spezifikation validieren" + }, + "try": { + "description": "Einen API-Endpunkt über die Spezifikation testen", + "method": "HTTP-Methode (Standard: GET)", + "body": "Pfad zur JSON-Datei mit dem Anfrageinhalt", + "query": "Abfrageparameter als key=value (wiederholbar)", + "header": "Header als key=value (wiederholbar)" + }, + "endpoints": { + "description": "Alle API-Endpunkte auflisten", + "search": "Nach Pfad oder Zusammenfassung filtern" + }, + "paths": { + "description": "Alle API-Pfade auflisten" + } + }, + "combo": { + "title": "Kombinationen", + "switched": "Aktive Kombination: {name}", + "created": "Kombination erstellt: {name}", + "deleted": "Kombination gelöscht: {name}", + "noCombos": "Keine Kombinationen konfiguriert.", + "confirmDelete": "Kombination {name} löschen?", + "suggest": { + "description": "Mithilfe einer KI-Bewertung die beste Kombination für eine Aufgabe vorschlagen", + "task": "Aufgabenbeschreibung", + "maxCost": "Maximale Kosten pro Anfrage in USD", + "maxLatencyMs": "Maximale Latenz in Millisekunden", + "weights": "JSON-Bewertungsgewichtungen, z. B. {\"latency\":0.7,\"cost\":0.3}", + "top": "Anzahl der anzuzeigenden besten Kandidaten (Standard: 5)", + "explain": "Begründung nach stderr ausgeben", + "switch": "Bestplatzierte Kombination aktivieren" + } + }, + "oneproxy": { + "description": "Den OneProxy-Upstream-Pool verwalten", + "stats": { + "provider": "Nach Anbieter filtern", + "period": "Zeitraum (Standard: 24h)" + }, + "fetch": { + "description": "Proxys aus dem Pool abrufen", + "count": "Anzahl der abzurufenden Proxys (Standard: 1)", + "type": "Proxy-Typ: http|socks5 (Standard: http)" + }, + "rotate": { + "description": "Proxy-Rotation erzwingen", + "provider": "Anbieter, für den die Rotation durchgeführt werden soll", + "connectionId": "Bestimmte Verbindungs-ID für die Rotation" + }, + "config": { + "description": "OneProxy-Konfiguration anzeigen oder aktualisieren", + "enabled": "Proxy-Pool aktivieren (true|false)", + "poolSize": "Pool-Größe", + "providerSource": "URL des Proxy-Anbieters", + "rotationPolicy": "Rotationsrichtlinie: sticky|per-request|periodic" + }, + "pool": { + "description": "Aktuellen Proxy-Pool mit Metriken auflisten" + } + }, + "open": { + "description": "Eine bestimmte OmniRoute-Dashboard-Seite im Browser öffnen", + "url": "Nur URL ausgeben, Browser nicht öffnen" + }, + "telemetry": { + "description": "Auf aggregierte Telemetriedaten zugreifen", + "summary": { + "description": "Aggregierte Telemetriezusammenfassung anzeigen", + "period": "Zeitraum: 24h|7d|30d (Standard: 24h)", + "compareTo": "Mit dem vorherigen Zeitraum vergleichen" + }, + "export": { + "description": "Telemetrieereignisse nach JSONL exportieren", + "out": "Pfad der Ausgabedatei (Standard: telemetry.jsonl)", + "period": "Zeitraum für den Export (Standard: 7d)" + } + }, + "sync": { + "description": "Konfiguration zwischen OmniRoute-Instanzen synchronisieren", + "push": { + "description": "Konfiguration in die Cloud oder an eine Remote-Instanz übertragen", + "target": "Ziel (cloud oder context:name)", + "bundle": "Zu synchronisierende Bestandteile des Bundles", + "dryRun": "Vorschau anzeigen, ohne Änderungen anzuwenden" + }, + "pull": { + "description": "Konfiguration aus der Cloud oder von einer Remote-Instanz abrufen", + "source": "Quelle (cloud oder context:name)", + "merge": "Mit bestehender Konfiguration zusammenführen", + "replace": "Bestehende Konfiguration ersetzen", + "dryRun": "Vorschau anzeigen, ohne Änderungen anzuwenden" + }, + "diff": { + "source": "Quellkontext", + "target": "Zielkontext" + }, + "bundle": { + "description": "Konfiguration als Bundle-Datei exportieren", + "include": "Einzuschließende Bestandteile (durch Kommas getrennt)" + }, + "import": { + "description": "Eine Bundle-Datei importieren", + "dryRun": "Validieren, ohne Änderungen anzuwenden" + }, + "initialize": { + "fromCloud": "Aus einem Cloud-Backup initialisieren" + }, + "tokens": { + "description": "Synchronisierungstoken verwalten", + "create": { + "name": "Tokenname", + "scope": "Token-Berechtigungsumfang", + "ttl": "Token-TTL (z. B. 30d)" + }, + "revoke": { + "yes": "Bestätigung überspringen" + } + }, + "resolve": { + "description": "Synchronisierungskonflikte interaktiv lösen" + } + }, + "config": { + "contexts": { + "description": "Serverkontexte/-profile verwalten (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Anzeigesprache der CLI verwalten", + "getDescription": "Den aktuell aktiven Sprachcode anzeigen", + "setDescription": "Anzeigesprache festlegen und in der Konfiguration speichern", + "listDescription": "Alle verfügbaren Sprachen auflisten", + "listTitle": "Verfügbare Sprachen", + "current": "Sprache: {code} ({name})", + "saved": "Sprache wurde auf {code} ({name}) festgelegt.", + "noCode": "Sprachcode erforderlich. Führen Sie „omniroute config lang list“ aus, um die verfügbaren Codes anzuzeigen.", + "unknown": "Unbekannter Sprachcode: {code}. Führen Sie „omniroute config lang list“ aus, um die verfügbaren Codes anzuzeigen.", + "alreadySet": "Die Sprache ist bereits auf {code} festgelegt.", + "envHint": "Tipp: Sie können auch OMNIROUTE_LANG={code} in Ihrer Umgebung festlegen." + } + }, + "completion": { + "description": "Skripte zur Shell-Vervollständigung generieren oder installieren", + "zsh": "Skript zur zsh-Vervollständigung ausgeben", + "bash": "Skript zur bash-Vervollständigung ausgeben", + "fish": "Skript zur fish-Vervollständigung ausgeben", + "install": "Vervollständigungsskript global für die erkannte Shell installieren", + "refresh": "Cache für Kombinationen/Anbieter/Modelle aktualisieren" + }, + "logs": { + "description": "Anfrageprotokolle streamen oder exportieren", + "follow": "Protokolle in Echtzeit streamen", + "filter": "Nach Ebene filtern (error,warn,info) – durch Kommas getrennt", + "lines": "Anzahl der abzurufenden Zeilen", + "timeout": "Zeitüberschreitung der Verbindung in ms", + "baseUrl": "Basis-URL der OmniRoute-API", + "requestId": "Nach Anfrage-ID filtern", + "apiKey": "Nach API-Schlüssel filtern", + "combo": "Nach Kombinationsname filtern", + "status": "Nach HTTP-Statuscode filtern", + "durationMin": "Minimale Anfragedauer in ms", + "durationMax": "Maximale Anfragedauer in ms", + "export": "Protokolle in Datei speichern (json/jsonl/csv)", + "exported": "Protokolle wurden unter {path} gespeichert", + "stopped": "Protokollstream wurde beendet.", + "streamError": "Fehler beim Protokollstream: {message}" + }, + "tray": { + "description": "Taskleistensymbol steuern", + "show": "Taskleistensymbol anzeigen (wenn der Server mit --tray ausgeführt wird)", + "hide": "Taskleistensymbol ausblenden", + "quit": "OmniRoute über das Taskleistensymbol beenden" + }, + "autostart": { + "description": "Autostart von OmniRoute beim Systemstart verwalten (Linux: systemd-Benutzerdienst)", + "enable": "Autostart beim Systemstart aktivieren", + "disable": "Autostart beim Systemstart deaktivieren", + "toggle": "Autostart beim Systemstart umschalten", + "status": "Autostartstatus anzeigen" + }, + "runtime": { + "description": "Native Laufzeitabhängigkeiten verwalten", + "check": "Status der nativen Abhängigkeiten im Laufzeitverzeichnis prüfen", + "repair": "Native Abhängigkeiten im Laufzeitverzeichnis neu installieren", + "repair_force": "Neuinstallation erzwingen, auch wenn sie gültig sind", + "clean": "Laufzeitverzeichnis entfernen (gibt Speicherplatz frei)", + "clean_yes": "Bestätigung überspringen" + }, + "repl": { + "description": "Interaktive mehrstufige REPL mit LLM", + "model": "Zu verwendendes Modell (Standard: auto)", + "combo": "Zu verwendender Combo-Name", + "system": "System-Prompt", + "resume": "Eine gespeicherte Sitzung nach Namen fortsetzen" + }, + "plugin": { + "description": "CLI-Plugins verwalten (omniroute-cmd-*)", + "list": "Installierte Plugins auflisten", + "install": "Ein Plugin aus npm oder von einem lokalen Pfad installieren", + "remove": "Ein installiertes Plugin entfernen", + "info": "Details zu einem installierten Plugin anzeigen", + "search": "Die npm-Registry nach verfügbaren Plugins durchsuchen", + "update": "Installierte Plugins aktualisieren", + "scaffold": "Grundgerüst für ein neues Plugin erstellen" + }, + "launch": { + "description": "Claude Code mit OmniRoute als Ziel starten (lokal oder remote, mit --profile)", + "token": "Token, das der Claude-Client senden soll (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute ist unter {port} nicht erreichbar. Starten Sie es mit 'omniroute serve'.", + "notFound": "Die 'claude'-CLI wurde in PATH nicht gefunden." + }, + "run": { + "description": "Ein unterstütztes CLI-Ziel über OmniRoute starten" + }, + "setupClaude": { + "description": "Claude Code-Profile unter ~/.claude/profiles aus dem OmniRoute-Modellkatalog generieren" + }, + "connect": { + "description": "Mit einem entfernten OmniRoute-Server verbinden und in den Remote-Modus wechseln" + }, + "tokens": { + "description": "Bereichsgebundene CLI-Zugriffstoken verwalten (Remote-Modus)" + }, + "configure": { + "description": "Einen Anbieter und ein Modell vom aktiven Server auswählen und eine unterstützte lokale CLI konfigurieren" + }, + "launchCodex": { + "description": "Codex CLI mit OmniRoute als Ziel starten (lokal oder auf einem entfernten VPS)" + }, + "setupCodex": { + "description": "Profildateien unter ~/.codex aus dem Live-Modellkatalog von OmniRoute generieren" + }, + "packs": { + "description": "Optionale Laufzeitpakete verwalten (ML / Browserautomatisierung)", + "listDescription": "Optionale Pakete und ihren Installationsstatus auflisten", + "installDescription": "Ein optionales Paket in DATA_DIR installieren", + "verifyDescription": "Installierte Pakete anhand des mitgelieferten Prüfsummenindex überprüfen", + "removeDescription": "Ein installiertes optionales Paket entfernen", + "sourceOpt": "Verzeichnis mit den Paketinhalten und dem Paketindex", + "warnNoIndex": "optional-packs.index.json wurde nicht gefunden — Installation/Überprüfung sind in diesem Checkout nicht verfügbar (Desktop-Pakete enthalten die Datei)", + "errUnknown": "Unbekanntes Paket: {name}", + "errNoIndex": "Paketindex nicht gefunden; übergeben Sie --source mit dem Paketinhalt (Desktop-Pakete enthalten ihn neben der App)", + "installed": "Paket \"{name}\" wurde unter {dir} installiert und überprüft", + "restartHint": "Starten Sie den OmniRoute-Server (oder die Desktop-App) neu, damit die Laufzeitumgebung das Paket erkennt", + "removed": "Paket „{name}“ entfernt", + "notInstalled": "Paket „{name}“ war nicht installiert", + "verifyOk": "Alle installierten Pakete wurden verifiziert", + "verifyFailed": "Bei {count} Paket(en) ist die Verifizierung fehlgeschlagen", + "noneInstalled": "Keine optionalen Pakete installiert" } } diff --git a/bin/cli/locales/el.json b/bin/cli/locales/el.json index 96fa2225f7..d6a714b8b9 100644 --- a/bin/cli/locales/el.json +++ b/bin/cli/locales/el.json @@ -256,6 +256,7 @@ "max_restarts": "Μέγιστος αριθμός επανεκκινήσεων λόγω σφάλματος εντός 30 δευτερολέπτων πριν την οριστική διακοπή (προεπιλογή: 2)", "tray": "Εκκίνηση στην περιοχή ειδοποιήσεων (μόνο για επιτραπέζιους υπολογιστές, προαιρετικό)", "no_tray": "Απενεργοποίηση εικονιδίου περιοχής ειδοποιήσεων", + "ready_timeout": "Χρονικό όριο λήξης του ελέγχου ετοιμότητας σε ms (επίσης OMNIROUTE_READY_TIMEOUT_MS, προεπιλογή 60000)", "tls_cert": "Διαδρομή προς πιστοποιητικό TLS (PEM) για εξυπηρέτηση HTTPS (επίσης OMNIROUTE_TLS_CERT)", "tls_key": "Διαδρομή προς το ιδιωτικό κλειδί TLS (PEM) για εξυπηρέτηση HTTPS (επίσης OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Ο διακομιστής MCP εκτελείται ({transport})", "stopped": "Ο διακομιστής MCP διακόπηκε.", "restarted": "Ο διακομιστής MCP επανεκκινήθηκε.", + "stoppedHint": "Εκτελέστε `omniroute mcp enable` για να το ενεργοποιήσετε.", + "enabled": "Ο διακομιστής MCP ενεργοποιήθηκε.", + "disabled": "Ο διακομιστής MCP απενεργοποιήθηκε.", + "enable": { + "description": "Ενεργοποίηση του διακομιστή MCP", + "transport": "Μέθοδος μεταφοράς προς χρήση: stdio|sse|streamable-http" + }, + "disable": { + "description": "Απενεργοποίηση του διακομιστή MCP" + }, "call": { "description": "Άμεση κλήση εργαλείου MCP", "args": "Αντικείμενο ορισμάτων JSON (ενσωματωμένο)", @@ -1093,7 +1104,7 @@ } }, "combo": { - "title": "Combos", + "title": "Συνδυασμοί", "switched": "Ενεργό combo: {name}", "created": "Δημιουργήθηκε combo: {name}", "deleted": "Διαγράφηκε combo: {name}", diff --git a/bin/cli/locales/es.json b/bin/cli/locales/es.json index 774916125f..dfb9c4862b 100644 --- a/bin/cli/locales/es.json +++ b/bin/cli/locales/es.json @@ -14,6 +14,812 @@ "jsonOpt": "Salida como JSON", "yesOpt": "Omitir confirmación" }, + "setup": { + "title": "Configuración de OmniRoute", + "passwordPrompt": "Contraseña de administrador", + "providerPrompt": "Proveedor predeterminado (dejar en blanco para omitir)", + "done": "Configuración completada", + "passwordSet": "Contraseña de administrador configurada", + "providerSet": "Proveedor configurado: {name}", + "testingProvider": "Probando la conexión con el proveedor: {name}", + "testPassed": "Prueba del proveedor superada", + "testFailed": "La prueba del proveedor falló: {error}", + "loginEnabled": "Inicio de sesión: activado (contraseña actualizada)", + "loginDisabled": "Inicio de sesión: desactivado", + "providerInfo": "Proveedor: {info}", + "opencode": "Instalar y configurar el @omniroute/opencode-plugin incluido para OpenCode" + }, + "doctor": { + "title": "Diagnóstico de OmniRoute", + "dbOk": "Base de datos: correcta ({path})", + "dbMissing": "Base de datos: no inicializada — ejecutar `omniroute setup`", + "portOk": "Puerto {port}: disponible", + "portConflict": "Puerto {port}: en uso por otro proceso", + "encryptionOk": "Clave de cifrado: configurada", + "encryptionMissing": "Falta la clave de cifrado — ejecutar `omniroute setup`", + "allGood": "Todas las comprobaciones se superaron.", + "warnings": "{count} advertencia(s) — consultar más arriba." + }, + "providers": { + "title": "Proveedores", + "noProviders": "No hay proveedores configurados. Ejecutar: omniroute setup", + "testing": "Probando {name}...", + "available": "{count} proveedor(es) disponible(s)", + "connected": "Conectado", + "disconnected": "Desconectado", + "validationFailed": "La validación falló: {error}", + "metrics": { + "description": "Mostrar métricas de rendimiento del proveedor (latencia, tasa de éxito, coste)", + "provider": "Filtrar por ID de proveedor", + "connection_id": "Filtrar por ID de conexión", + "period": "Período de tiempo: 1h|6h|24h|7d|30d (predeterminado: 24h)", + "metric": "Centrarse en un campo de métrica específico", + "sort": "Ordenar por campo (descendente)", + "limit": "Número máximo de filas (predeterminado: 50)", + "watch": "Actualizar cada 5 s (modo en directo)", + "compare": "IDs de proveedores separados por comas para compararlos en paralelo" + }, + "metric_single": { + "description": "Obtener un único valor de métrica para una conexión específica" + }, + "rotate": { + "description": "Rotar la clave de API de nivel superior para una conexión de proveedor", + "newKeyOpt": "Nuevo valor de la clave de API (evítelo: es preferible --from-env)", + "fromEnvOpt": "Leer la nueva clave desde la variable de entorno VAR", + "oauthOpt": "Iniciar en su lugar el flujo de reautenticación de OAuth", + "skipTestOpt": "Omitir la prueba de conectividad posterior a la rotación", + "dryRunOpt": "Mostrar qué cambiaría sin escribir nada", + "confirmPrompt": "¿Reemplazar la clave de API de la conexión «{name}» ({id})? [y/N]", + "dryRunResult": "[dry-run] Se rotaría la clave de «{name}» ({id}). No se realizaron cambios.", + "oauthHint": "Conexión OAuth: ejecute: omniroute oauth {provider}", + "envVarEmpty": "La variable de entorno {var} no está definida o está vacía.", + "success": "Se rotó la clave de «{name}». Ejecute `providers test {id}` para verificarla.", + "testPassed": "La prueba posterior a la rotación se completó correctamente.", + "testFailed": "La prueba posterior a la rotación falló: {error}" + }, + "status": { + "description": "Mostrar el estado de las claves de todas las conexiones de proveedores (antigüedad, vencimiento, periodo de espera)", + "providerOpt": "Filtrar por nombre de proveedor", + "header": "ID Proveedor Nombre Estado de vencimiento Estado de prueba Periodo de espera hasta", + "noData": "No hay datos disponibles sobre conexiones de proveedores.", + "requiresServer": "providers status requiere que el servidor de OmniRoute esté en ejecución." + } + }, + "keys": { + "title": "Claves de API", + "addDescription": "Añadir o actualizar una clave de API para un proveedor", + "listDescription": "Listar todas las claves de API configuradas", + "removeDescription": "Eliminar la clave de API de un proveedor", + "regenerateDescription": "Regenerar una clave de API de OmniRoute", + "revokeDescription": "Revocar una clave de API de OmniRoute", + "revealDescription": "Mostrar el valor sin enmascarar de la clave de API", + "usageDescription": "Mostrar el uso reciente de una clave de API", + "usageLimitOpt": "Número de solicitudes recientes", + "rotateDescription": "Generar una clave nueva e invalidar la anterior", + "graceOpt": "Periodo de gracia (ms) antes de que se invalide la clave anterior", + "stdinOpt": "Leer la clave de API desde stdin en lugar de un argumento", + "added": "Se añadió la clave de {provider}.", + "removed": "Se eliminó la clave.", + "listed": "{count} clave(s).", + "noKeys": "No hay claves configuradas.", + "noUsage": "No se encontraron datos de uso.", + "confirmRemove": "¿Eliminar la clave {id}?", + "confirmRegenerate": "¿Regenerar la clave {id}?", + "confirmRevoke": "¿Revocar la clave {id}?", + "confirmRotate": "¿Rotar la clave {id}? (la clave anterior se invalidará después del periodo de gracia)", + "regenerated": "Regenerada. Nueva clave: {key}", + "revoked": "Clave {id} revocada.", + "rotated": "Clave {id} rotada. Nuevo ID de clave: {newId}", + "revealWarning": "⚠ Esto mostrará la clave completa sin enmascarar. Asegúrate de que tu pantalla sea privada.", + "providerRequired": "El proveedor es obligatorio.", + "keyRequired": "La clave de API es obligatoria.", + "stdinEmpty": "No se proporcionó ninguna clave de API mediante stdin.", + "unknownProvider": "Proveedor desconocido: {provider}", + "policy": { + "title": "Política de claves", + "showDescription": "Mostrar la política de límites/costes de una clave", + "setDescription": "Establecer la política de límites/costes de una clave", + "rateLimitOpt": "Máximo de solicitudes por minuto", + "maxCostOpt": "Coste máximo por día (USD)", + "allowedModelsOpt": "Lista de modelos permitidos separados por comas", + "nothingToSet": "No se proporcionaron campos de política. Usa --rate-limit, --max-cost o --allowed-models.", + "updated": "Política actualizada." + }, + "expiration": { + "title": "Caducidad de claves", + "listDescription": "Listar las claves que caducarán pronto", + "daysOpt": "Mostrar las claves que caducarán en un plazo de N días", + "none": "No hay claves que caduquen en un plazo de {days} días.", + "listTitle": "Claves que caducarán en un plazo de {days} días:" + } + }, + "authExport": { + "description": "Exportar credenciales de proveedores DESCIFRADAS (solo local, salida en texto sin formato)", + "idOpt": "Exportar solo la conexión que coincida con este id/nombre/proveedor", + "formatOpt": "Formato de salida: json o env", + "outOpt": "Escribir la salida en un archivo en lugar de stdout (se escribirá con permisos 0600)", + "forceOpt": "Confirmar que comprendes que esto imprime/escribe secretos en texto sin formato", + "warning": "⚠ Esto imprime/escribe claves de API y tokens OAuth DESCIFRADOS en texto sin formato. Asegúrate de que tu pantalla, el historial del shell y cualquier archivo de salida permanezcan privados.", + "confirmHeading": "⚠ ADVERTENCIA: esto exporta credenciales de proveedores DESCIFRADAS en texto sin formato", + "confirmBody": "Este comando descifra e imprime/escribe apiKey, accessToken, refreshToken e\nidToken para las conexiones seleccionadas. Trata la salida como un secreto.", + "confirmFooter": "Para confirmar, ejecuta:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY es obligatoria para exportar credenciales.", + "notFound": "No se encontró la conexión: {id}", + "invalidFormat": "Formato no válido: {format}. Usa json o env." + }, + "stream": { + "description": "Transmitir una respuesta de chat con modos de inspección SSE", + "file": "Leer el prompt desde un archivo", + "stdin": "Leer el prompt desde stdin", + "model": "ID del modelo (predeterminado: auto)", + "system": "Prompt del sistema", + "combo": "Forzar una combinación específica por nombre", + "max_tokens": "Máximo de tokens en la respuesta", + "responses_api": "Usar /v1/responses en lugar de /v1/chat/completions", + "raw": "Mostrar las líneas SSE sin procesar tal como se reciben", + "debug": "Mostrar la información de tiempo de cada fragmento en stderr", + "save": "Guardar todos los eventos SSE en un archivo .jsonl", + "error": { + "empty_prompt": "Error: se requiere un prompt (argumento posicional, --file o --stdin)" + } + }, + "usage": { + "description": "Análisis de uso, presupuestos, cuotas y registros", + "analytics": { + "description": "Mostrar análisis de uso agregados", + "period": "Intervalo de tiempo: 1d|7d|30d|90d|ytd|all (predeterminado: 30d)", + "provider": "Filtrar por ID de proveedor" + }, + "budget": { + "description": "Gestionar presupuestos de costes", + "set": { + "scope": "Ámbito del presupuesto (predeterminado: global)", + "period": "Periodo del presupuesto: daily|weekly|monthly (predeterminado: monthly)" + } + }, + "quota": { + "description": "Mostrar el uso de la cuota del proveedor", + "provider": "Filtrar por ID de proveedor", + "check": "Mostrar si hay cuota disponible para una nueva solicitud" + }, + "logs": { + "description": "Mostrar registros de llamadas de solicitudes", + "limit": "Número de entradas de registro que se devolverán (predeterminado: 100)", + "search": "Consulta de búsqueda para filtrar registros", + "since": "Devolver registros desde esta marca de tiempo", + "follow": "Seguir continuamente las nuevas entradas de registro", + "api_key": "Filtrar registros por clave de API" + }, + "utilization": { + "description": "Mostrar métricas de uso de claves de API", + "api_key": "Filtrar por clave de API" + }, + "history": { + "description": "Mostrar el historial de solicitudes", + "limit": "Número de entradas del historial (predeterminado: 100)" + }, + "proxy_logs": { + "description": "Mostrar registros de solicitudes a nivel de proxy", + "limit": "Número de entradas del registro del proxy (predeterminado: 100)" + } + }, + "cost": { + "description": "Mostrar un informe de costes con desglose por proveedor, modelo, combinación o clave de API", + "period": "Intervalo de tiempo: 1d|7d|30d|90d|ytd|all (predeterminado: 30d)", + "since": "Fecha de inicio (formato ISO, p. ej., 2026-01-01) — reemplaza --period", + "until": "Fecha de finalización (formato ISO)", + "group_by": "Agrupar resultados por: provider|model|api-key|combo|day (predeterminado: provider)", + "api_key_filter": "Filtrar por una clave de API específica", + "limit": "Número máximo de filas que se mostrarán (predeterminado: 100)" + }, + "simulate": { + "description": "Simulación de enrutamiento sin ejecución: muestra qué proveedores se seleccionarían sin llamar al servicio ascendente", + "file": "Cargar el cuerpo completo de la solicitud desde un archivo JSON", + "model": "ID del modelo (predeterminado: auto)", + "combo": "Forzar una combinación específica por nombre", + "reasoning": "Nivel de esfuerzo de razonamiento (low|medium|high)", + "thinking": "Presupuesto de tokens para razonamiento extendido", + "explain": "Imprimir el árbol de respaldo y el rango de costes en stderr", + "noCombo": "No se encontró ninguna combinación coincidente. Configure una con: omniroute combo create" + }, + "chat": { + "description": "Enviar una solicitud de chat única a OmniRoute", + "file": "Leer la solicitud desde un archivo", + "stdin": "Leer la solicitud desde stdin", + "system": "Solicitud del sistema", + "model": "ID del modelo (predeterminado: auto)", + "max_tokens": "Número máximo de tokens en la respuesta", + "temperature": "Temperatura de muestreo (0–2)", + "top_p": "Muestreo de núcleo top-p", + "reasoning_effort": "Nivel de esfuerzo de razonamiento (low|medium|high)", + "thinking_budget": "Presupuesto de tokens para razonamiento extendido", + "combo": "Forzar una combinación específica por nombre", + "responses_api": "Usar /v1/responses en lugar de /v1/chat/completions", + "stream": "Transmitir la respuesta de forma incremental", + "no_history": "No guardar en ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Error: se requiere una solicitud (argumento posicional, --file o --stdin)" + } + }, + "serve": { + "description": "Iniciar el servidor de OmniRoute (acción predeterminada)", + "starting": "Iniciando el servidor de OmniRoute en el puerto {port}...", + "ready": "Disponible en http://localhost:{port}", + "stopping": "Deteniendo el servidor (PID {pid})...", + "stopped": "Servidor detenido.", + "notRunning": "El servidor no está en ejecución.", + "port": "Puerto en el que escuchar (predeterminado: 20128)", + "no_open": "No abrir el navegador automáticamente", + "daemon": "Ejecutar el servidor como un demonio en segundo plano", + "log": "Mostrar los registros del servidor en línea", + "no_recovery": "Desactivar el reinicio automático tras un fallo (modo de depuración)", + "max_restarts": "Número máximo de reinicios tras fallos en un plazo de 30 s antes de desistir (predeterminado: 2)", + "tray": "Iniciar en la bandeja del sistema (solo para escritorio, opcional)", + "no_tray": "Desactivar el icono de la bandeja del sistema", + "ready_timeout": "Tiempo de espera de la comprobación de disponibilidad en ms (también OMNIROUTE_READY_TIMEOUT_MS, predeterminado: 60000)", + "tls_cert": "Ruta a un certificado TLS (PEM) para servir mediante HTTPS (también OMNIROUTE_TLS_CERT)", + "tls_key": "Ruta a la clave privada TLS (PEM) para servir mediante HTTPS (también OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Copia de seguridad", + "description": "Crear una copia de seguridad de los datos de OmniRoute", + "creating": "Creando copia de seguridad...", + "done": "Copia de seguridad guardada en {path}", + "noFiles": "No hay archivos de los que hacer una copia de seguridad (la base de datos no está inicializada)", + "failed": "Error al crear la copia de seguridad: {error}", + "restoring": "Restaurando desde {path}...", + "restored": "Restauración completada.", + "restoreDescription": "Restaurar desde una copia de seguridad", + "listTitle": "Copias de seguridad disponibles", + "noBackups": "No se encontraron copias de seguridad.", + "notFound": "No se encontró la copia de seguridad: {name}", + "confirmRestore": "¿Sobrescribir los datos actuales con la copia de seguridad del {ts}?", + "createDescription": "Crear una copia de seguridad de los datos de OmniRoute", + "nameOpt": "Nombre personalizado de la copia de seguridad", + "cloudOpt": "Subir la copia de seguridad al almacenamiento en la nube", + "encryptOpt": "Cifrar la copia de seguridad con AES-256-GCM", + "keyFileOpt": "Ruta al archivo que contiene la frase de contraseña de cifrado", + "excludeOpt": "Excluir archivos que coincidan con el patrón (se puede repetir)", + "retentionOpt": "Conservar solo las últimas N copias de seguridad", + "passphrasePrompt": "Frase de contraseña de cifrado:", + "noPassphrase": "Se requiere una frase de contraseña para la copia de seguridad cifrada.", + "cloudFailed": "Advertencia: no se pudo subir a la nube. La copia de seguridad local se guardó.", + "cloudUploaded": "Copia de seguridad subida a la nube: {url}", + "auto": { + "title": "Programación de copias de seguridad", + "enableDescription": "Activar las copias de seguridad automáticas programadas", + "disableDescription": "Desactivar las copias de seguridad automáticas programadas", + "statusDescription": "Mostrar el estado actual de la programación de copias de seguridad", + "cronOpt": "Expresión cron para la programación (valor predeterminado: todos los días a las 3 a. m.)", + "enabled": "Copia de seguridad automática activada (cron: {cron}).", + "hint": "omniroute serve lee la programación al iniciarse.", + "disabled": "Copia de seguridad automática desactivada.", + "notConfigured": "No hay ninguna programación de copias de seguridad configurada." + } + }, + "health": { + "description": "Comprobar el estado del servidor y de los componentes", + "noServer": "El servidor no está en ejecución. Inícielo con: omniroute serve", + "title": "Estado", + "status": "Estado: {status}", + "uptime": "Tiempo de actividad: {uptime}", + "requests": "Solicitudes (24 h): {count}", + "cost": "Coste (24 h): ${cost}" + }, + "quota": { + "description": "Mostrar el uso de la cuota del proveedor", + "noServer": "El servidor no está en ejecución. Inícielo con: omniroute serve", + "noData": "No hay información disponible sobre la cuota." + }, + "cache": { + "description": "Gestionar la caché de respuestas", + "noServer": "El servidor no está en ejecución. Inícielo con: omniroute serve", + "cleared": "Caché borrada.", + "clearFailed": "No se pudo borrar la caché." + }, + "redis": { + "description": "Iniciar un contenedor local de Redis con un clic (Podman o Docker) para el almacenamiento en caché y seguimiento de cuotas de OmniRoute" + }, + "test": { + "description": "Probar la conexión de un proveedor", + "noServer": "El servidor no está en ejecución. Inícialo con: omniroute serve", + "testing": "Probando {provider} / {model}...", + "passed": "¡Conexión establecida correctamente!", + "failed": "Error de conexión: {error}", + "allProvidersOpt": "Probar todos los proveedores configurados", + "latencyOpt": "Mostrar las mediciones de latencia (media/mín./máx. en ms)", + "repeatOpt": "Repetir la prueba N veces y agregar los resultados", + "compareOpt": "Modelos separados por comas para comparar (p. ej., gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Guardar los resultados en un archivo JSON", + "saved": "Resultados guardados en {path}", + "compareTitle": "Comparación de modelos", + "compareMinTwo": "Se requieren al menos dos modelos para --compare (separados por comas)", + "noProviders": "No hay proveedores configurados. Añade uno con: omniroute keys add" + }, + "update": { + "checking": "Buscando actualizaciones...", + "upToDate": "Ya está actualizado ({version}).", + "available": "Actualización disponible: {current} → {latest}", + "installing": "Instalando {latest}...", + "done": "Actualizado a {latest}. Reinicia el servidor para aplicar los cambios." + }, + "mcp": { + "title": "Servidor MCP", + "running": "Servidor MCP en ejecución ({transport})", + "stopped": "Servidor MCP detenido.", + "restarted": "Servidor MCP reiniciado.", + "stoppedHint": "Ejecuta `omniroute mcp enable` para activarlo.", + "enabled": "Servidor MCP activado.", + "disabled": "Servidor MCP desactivado.", + "enable": { + "description": "Activar el servidor MCP", + "transport": "Transporte que se utilizará: stdio|sse|streamable-http" + }, + "disable": { + "description": "Desactivar el servidor MCP" + }, + "call": { + "description": "Invocar directamente una herramienta MCP", + "args": "Objeto de argumentos JSON (en línea)", + "args_file": "Ruta al archivo de argumentos JSON", + "stream": "Usar el endpoint de streaming (/api/mcp/stream)", + "scope": "Ámbito requerido (repetible, p. ej., read:health)" + }, + "scopes": { + "description": "Listar los ámbitos MCP disponibles", + "tool": "Mostrar los ámbitos requeridos por una herramienta específica" + }, + "tools": { + "description": "Inspeccionar las herramientas MCP", + "list": { + "description": "Listar todas las herramientas MCP", + "scope": "Filtrar por ámbito" + }, + "info": { + "description": "Mostrar metadatos de una herramienta MCP" + }, + "schema": { + "description": "Mostrar el esquema JSON de entrada/salida de una herramienta MCP", + "io": "Tipo de esquema: input|output (predeterminado: input)" + } + }, + "audit": { + "description": "Registro de auditoría de MCP (alias de audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Listar las habilidades A2A disponibles en la tarjeta del agente" + }, + "invoke": { + "description": "Invocar una habilidad A2A y devolver el ID de la tarea", + "input": "Objeto JSON de entrada", + "input_file": "Ruta al archivo JSON de entrada", + "wait": "Esperar a que finalice la tarea antes de devolver el resultado", + "timeout": "Tiempo de espera para la finalización en ms (predeterminado: 60000)" + }, + "tasks": { + "description": "Gestionar tareas A2A", + "list": { + "status": "Filtrar por estado", + "skill": "Filtrar por ID de habilidad" + }, + "watch": { + "description": "Consultar periódicamente el estado de la tarea hasta que finalice" + }, + "stream": { + "description": "Transmitir eventos de ejecución de tareas mediante SSE" + }, + "logs": { + "description": "Mostrar mensajes y artefactos de la tarea" + } + } + }, + "policy": { + "description": "Gestionar las políticas de autorización de OmniRoute", + "list": { + "description": "Listar políticas", + "kind": "Filtrar por tipo (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrar por ámbito (global|api-key|provider)" + }, + "get": { + "description": "Obtener los detalles de una política por ID" + }, + "create": { + "description": "Crear una política a partir de un archivo JSON", + "file": "Ruta al archivo JSON de la política" + }, + "update": { + "description": "Actualizar una política a partir de un archivo JSON", + "file": "Ruta al archivo JSON de la política" + }, + "delete": { + "description": "Eliminar una política por ID", + "yes": "Omitir la solicitud de confirmación" + }, + "evaluate": { + "description": "Evaluación de política de prueba (código de salida 0=permitido, 4=denegado)", + "api_key": "Clave de API que se evaluará", + "action": "Acción que se comprobará (p. ej., chat, embed, admin)", + "resource": "Ruta o identificador del recurso", + "context": "Contexto adicional como objeto JSON" + }, + "export": { + "description": "Exportar todas las políticas a un archivo JSON" + }, + "import": { + "description": "Importar políticas desde un archivo JSON", + "overwrite": "Sobrescribir las políticas existentes con el mismo ID" + } + }, + "compression": { + "description": "Configurar e inspeccionar el proceso de compresión de OmniRoute", + "status": { + "description": "Mostrar el estado y la configuración actuales de la compresión" + }, + "configure": { + "description": "Configurar los ajustes de compresión", + "engine": "Motor de compresión (caveman|rtk|hybrid|none)", + "caveman_agg": "Agresividad de Caveman de 0.0 a 1.0", + "rtk_budget": "Presupuesto de tokens RTK", + "language_pack": "Paquete de idioma que se activará" + }, + "engine": { + "description": "Obtener o establecer el motor de compresión activo" + }, + "combos": { + "description": "Gestionar estadísticas de combinaciones de compresión" + }, + "rules": { + "description": "Gestionar reglas de compresión", + "add": { + "pattern": "Patrón que debe coincidir (regex o campo:patrón)", + "action": "Acción: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Listar los paquetes de idioma de compresión disponibles" + }, + "preview": { + "description": "Previsualizar el efecto de la compresión en una solicitud", + "file": "Ruta al archivo JSON de la solicitud" + } + }, + "tunnel": { + "title": "Túneles", + "listDescription": "Listar los túneles activos", + "createDescription": "Crear un túnel", + "created": "Túnel creado: {url}", + "stopped": "Túnel detenido.", + "confirmStop": "¿Detener el túnel {id}?", + "stopDescription": "Detener un túnel", + "statusDescription": "Mostrar el estado detallado de un túnel", + "logsDescription": "Mostrar los registros de un túnel", + "infoDescription": "Mostrar los detalles de configuración de un túnel", + "rotateDescription": "Generar una nueva URL de túnel", + "tailOpt": "Número de líneas de registro que se mostrarán", + "typeRequired": "El tipo de túnel es obligatorio.", + "noLogs": "No hay registros disponibles.", + "notAvailable": "La información del túnel no está disponible.", + "noTunnels": "No hay túneles activos.", + "infoTitle": "Información del túnel: {type}", + "rotated": "URL del túnel renovada: {url}", + "confirmRotate": "¿Renovar el túnel {type}? (se generará una nueva URL)" + }, + "stop": { + "description": "Detener el servidor de OmniRoute", + "stopping": "Deteniendo el servidor (PID {pid})...", + "stopped": "Servidor detenido.", + "notRunning": "No hay ningún servidor en ejecución.", + "portFallback": "No se encontró ningún archivo PID; intentando detenerlo mediante el puerto..." + }, + "restart": { + "description": "Reiniciar el servidor de OmniRoute", + "restarting": "Reiniciando el servidor de OmniRoute..." + }, + "dashboard": { + "description": "Abrir el panel de OmniRoute en un navegador", + "opening": "Abriendo el panel en {url}", + "urlOnly": "Mostrar la URL del panel sin abrir el navegador", + "tui": "Abrir el panel TUI interactivo (interfaz de terminal, 7 pestañas)" + }, + "models": { + "description": "Listar los modelos disponibles (requiere servidor)", + "search": "Filtrar modelos por ID, nombre, proveedor o descripción", + "noServer": "El servidor no está en ejecución. Inícialo con: omniroute serve", + "noModels": "No se encontraron modelos." + }, + "audit": { + "description": "Acceder a los registros de auditoría de cumplimiento y MCP", + "source": "Origen del registro: all|compliance|mcp (predeterminado: all)", + "since": "Devolver entradas desde esta marca de tiempo (ISO 8601)", + "until": "Devolver entradas hasta esta marca de tiempo (ISO 8601)", + "tail": { + "description": "Mostrar las entradas recientes del registro de auditoría", + "follow": "Supervisar continuamente las nuevas entradas (consulta cada 2 s)", + "limit": "Número máximo de entradas que se mostrarán (predeterminado: 100)" + }, + "search": { + "description": "Buscar entradas del registro de auditoría por palabra clave", + "limit": "Número máximo de resultados (predeterminado: 200)", + "actor": "Filtrar por ID del actor", + "action": "Filtrar por nombre de acción" + }, + "export": { + "description": "Exportar el registro de auditoría a un archivo", + "format": "Formato de salida: jsonl|csv (predeterminado: jsonl)" + }, + "stats": { + "description": "Mostrar estadísticas del registro de auditoría", + "period": "Período: 1d|7d|30d (predeterminado: 7d)" + }, + "get": { + "description": "Obtener una entrada del registro de auditoría por ID" + } + }, + "skills": { + "description": "Gestionar las habilidades de OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Listar las habilidades instaladas", + "type": "Filtrar por tipo (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Mostrar solo las habilidades habilitadas", + "disabled": "Mostrar solo las habilidades deshabilitadas", + "api_key": "Filtrar por clave de API" + }, + "get": { + "description": "Obtener los detalles de una habilidad por ID" + }, + "install": { + "description": "Instalar una habilidad desde un archivo o una URL", + "from_file": "Ruta al archivo de definición JSON de la habilidad", + "from_url": "URL de la definición remota de la habilidad", + "type": "Tipo de habilidad (sandbox|custom|hybrid)", + "enable": "Habilitar la habilidad después de instalarla" + }, + "enable": { + "description": "Habilitar una habilidad por ID" + }, + "disable": { + "description": "Deshabilitar una habilidad por ID", + "yes": "Omitir la solicitud de confirmación" + }, + "delete": { + "description": "Eliminar una habilidad por ID", + "yes": "Omitir la solicitud de confirmación" + }, + "execute": { + "description": "Ejecutar una habilidad por ID", + "input": "Objeto de entrada JSON", + "input_file": "Ruta al archivo de entrada JSON", + "timeout": "Tiempo de espera de ejecución en ms (predeterminado: 30000)" + }, + "executions": { + "description": "Listar el historial de ejecución de habilidades", + "skill": "Filtrar por ID de habilidad", + "limit": "Número máximo de resultados (predeterminado: 50)", + "status": "Filtrar por estado (running|completed|failed)" + }, + "skillssh": { + "description": "Gestionar las habilidades instaladas mediante SSH" + }, + "marketplace": { + "description": "Explorar e instalar habilidades del marketplace" + }, + "mp": { + "search": { + "description": "Buscar paquetes en el marketplace", + "category": "Filtrar por categoría", + "tag": "Filtrar por etiqueta", + "limit": "Número máximo de resultados (predeterminado: 30)", + "sort": "Ordenar por: downloads|rating|recent" + }, + "info": { + "description": "Mostrar los detalles y el archivo readme del paquete" + }, + "install": { + "description": "Instalar un paquete del marketplace", + "version": "Versión del paquete (predeterminada: latest)", + "enable": "Activar después de la instalación", + "yes": "Omitir la solicitud de confirmación" + }, + "categories": { + "description": "Listar las categorías del marketplace" + }, + "featured": { + "description": "Mostrar los paquetes destacados del marketplace" + } + } + }, + "memory": { + "description": "Gestionar la memoria conversacional de OmniRoute (FTS5 + vector)", + "search": { + "description": "Buscar entradas de memoria mediante una consulta semántica", + "type": "Filtrar por tipo de memoria (user|feedback|project|reference)", + "limit": "Número máximo de resultados (predeterminado: 20)", + "api_key": "Filtrar por clave de API", + "token_budget": "Limitar el total de tokens en los resultados" + }, + "add": { + "description": "Añadir una nueva entrada de memoria", + "content": "Contenido de texto de la memoria", + "file": "Leer el contenido desde un archivo", + "type": "Tipo de memoria (predeterminado: user)", + "metadata": "Objeto de metadatos JSON", + "api_key": "Asociar con una clave de API" + }, + "clear": { + "description": "Eliminar las entradas de memoria que coincidan con los filtros", + "type": "Filtrar por tipo", + "older": "Eliminar entradas anteriores a la duración indicada (30d, 6m, 1y)", + "api_key": "Filtrar por clave de API", + "yes": "Omitir la solicitud de confirmación" + }, + "list": { + "description": "Listar las entradas de memoria sin clasificación de búsqueda", + "type": "Filtrar por tipo", + "limit": "Número máximo de resultados (predeterminado: 100)", + "api_key": "Filtrar por clave de API" + }, + "get": { + "description": "Obtener una única entrada de memoria por ID" + }, + "delete": { + "description": "Eliminar una entrada de memoria por ID", + "yes": "Omitir la solicitud de confirmación" + }, + "health": { + "description": "Mostrar el estado del subsistema de memoria (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Gestionar conexiones de proveedores OAuth", + "providers": { + "description": "Listar los proveedores compatibles con OAuth y sus tipos de flujo" + }, + "start": { + "description": "Iniciar el flujo de autorización OAuth para un proveedor", + "provider": "ID del proveedor (gemini, copilot, cursor, …)", + "no_browser": "Mostrar solo la URL; no abrir el navegador", + "import_system": "Importar automáticamente las credenciales desde la configuración local del sistema", + "social": "Proveedor de inicio de sesión social (google|github); obligatorio para kiro", + "timeout": "Tiempo de espera para la autorización en ms (predeterminado: 300000)" + }, + "status": { + "description": "Listar las conexiones OAuth activas", + "provider": "Filtrar por ID de proveedor" + }, + "revoke": { + "description": "Revocar una conexión OAuth", + "provider": "ID del proveedor que se va a revocar", + "connection_id": "Revocar una conexión específica por ID", + "yes": "Omitir la solicitud de confirmación" + } + }, + "cloud": { + "description": "Gestionar tareas de agentes de IA en la nube (codex, devin, jules)", + "agents": { + "description": "Listar los agentes en la nube disponibles" + }, + "agent": { + "description": "Gestionar las tareas del agente en la nube {agent}", + "auth": { + "description": "Autorizar a {agent} mediante OAuth" + } + }, + "task": { + "description": "Gestionar tareas de agentes en la nube", + "create": { + "description": "Crear una nueva tarea de agente", + "title": "Título de la tarea (de forma predeterminada, los primeros 80 caracteres de la instrucción)", + "prompt": "Texto de la instrucción de la tarea", + "prompt_file": "Leer la instrucción desde un archivo", + "repo": "URL del repositorio que se va a clonar para la tarea", + "branch": "Nombre de la rama que se va a utilizar", + "metadata": "Objeto de metadatos JSON" + }, + "list": { + "description": "Listar las tareas del agente", + "status": "Filtrar por estado (running|completed|failed|cancelled)", + "limit": "Número máximo de resultados (predeterminado: 50)" + }, + "get": { + "description": "Obtener los detalles de la tarea por ID" + }, + "status": { + "description": "Mostrar el estado de la tarea (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Cancelar una tarea en ejecución", + "yes": "Omitir la solicitud de confirmación" + }, + "approve": { + "description": "Aprobar el plan del agente para iniciar la ejecución" + }, + "message": { + "description": "Enviar un mensaje a una tarea en ejecución" + } + }, + "sources": { + "description": "Listar los archivos fuente producidos por una tarea" + } + }, + "eval": { + "description": "Gestionar suites y ejecuciones de evaluación", + "suites": { + "description": "Gestionar suites de evaluación", + "list": { + "description": "Listar suites de evaluación" + }, + "get": { + "description": "Obtener los detalles de una suite de evaluación por ID" + }, + "create": { + "description": "Crear una suite de evaluación desde un archivo JSON", + "file": "Ruta al archivo JSON de definición de la suite" + } + }, + "run": { + "description": "Iniciar una ejecución de evaluación para una suite", + "model": "ID del modelo que se va a evaluar (predeterminado: auto)", + "combo": "Forzar una combinación específica por nombre", + "concurrency": "Número de muestras simultáneas (predeterminado: 4)", + "tag": "Etiquetar esta ejecución para filtrarla posteriormente", + "watch": "Supervisar el progreso de la ejecución hasta que finalice" + }, + "list": { + "description": "Listar ejecuciones de evaluación", + "suite": "Filtrar por ID de suite", + "status": "Filtrar por estado", + "since": "Devolver ejecuciones desde esta marca de tiempo", + "limit": "Número máximo de resultados (predeterminado: 50)" + }, + "get": { + "description": "Obtener los detalles de una ejecución de evaluación por ID" + }, + "results": { + "description": "Mostrar los resultados de las muestras de una ejecución de evaluación", + "failed": "Mostrar solo las muestras fallidas" + }, + "cancel": { + "description": "Cancelar una evaluación en ejecución", + "yes": "Omitir la solicitud de confirmación" + }, + "scorecard": { + "description": "Mostrar el cuadro de puntuación de una ejecución de evaluación completada" + } + }, + "webhooks": { + "description": "Gestionar webhooks de OmniRoute", + "events": { + "description": "Listar todos los tipos de eventos de webhook disponibles" + }, + "list": { + "description": "Listar los webhooks configurados" + }, + "get": { + "description": "Obtener los detalles de un webhook por ID" + }, + "add": { + "description": "Registrar un nuevo webhook", + "url": "URL de destino", + "events": "Lista de tipos de eventos separados por comas", + "secret": "Secreto de firma HMAC", + "header": "Encabezado adicional con formato key=value (repetible)", + "no_enabled": "Crear el webhook en estado deshabilitado" + }, + "update": { + "description": "Actualizar un webhook existente", + "enabled": "Establecer el estado habilitado (true|false)" + }, + "remove": { + "description": "Eliminar un webhook", + "yes": "Omitir la solicitud de confirmación" + }, + "test": { + "description": "Enviar un evento de prueba a un webhook", + "event": "Tipo de evento que se simulará (predeterminado: request.completed)" + } + }, "program": { "description": "OmniRoute — Router de IA inteligente con fallback automático", "version": "Mostrar versión y salir", @@ -26,7 +832,509 @@ "context": "Contexto/perfil del servidor para este comando", "lang": "Establecer idioma del CLI (reemplaza OMNIROUTE_LANG)" }, - "redis": { - "description": "Iniciar un contenedor local de Redis con un clic (Podman o Docker) para el almacenamiento en caché y seguimiento de cuotas de OmniRoute" + "files": { + "description": "Gestionar archivos (subir, listar, obtener, descargar y eliminar)", + "list": { + "purpose": "Filtrar por propósito", + "limit": "Máximo de resultados" + }, + "get": { + "description": "Obtener metadatos del archivo" + }, + "upload": { + "description": "Subir un archivo", + "purpose": "Propósito del archivo (batch, assistants, fine-tune)" + }, + "content": { + "description": "Descargar el contenido del archivo", + "out": "Guardar en la ruta (predeterminado: stdout)" + }, + "delete": { + "yes": "Omitir confirmación" + } + }, + "batches": { + "description": "Gestionar trabajos por lotes compatibles con OpenAI", + "list": { + "status": "Filtrar por estado", + "limit": "Máximo de resultados" + }, + "create": { + "description": "Crear un trabajo por lotes", + "inputFile": "ID del archivo de entrada", + "endpoint": "Endpoint de destino", + "window": "Ventana de finalización", + "metadata": "Añadir metadatos clave=valor" + }, + "submit": { + "description": "Subir un archivo JSONL y crear un lote", + "jsonl": "Ruta al archivo JSONL", + "endpoint": "Endpoint de destino", + "wait": "Esperar a que finalice" + }, + "cancel": { + "yes": "Omitir confirmación" + }, + "wait": { + "timeout": "Tiempo de espera en ms" + }, + "output": { + "out": "Guardar la salida en la ruta" + }, + "errors": { + "out": "Guardar los errores en la ruta" + } + }, + "translator": { + "description": "Traducir cuerpos de solicitudes entre formatos de LLM", + "detect": { + "description": "Detectar el formato del cuerpo" + }, + "translate": { + "description": "Convertir el cuerpo de un formato a otro" + }, + "send": { + "description": "Traducir y enviar al proveedor ascendente" + }, + "stream": { + "description": "Traducir en streaming el cuerpo de una solicitud" + }, + "from": "Formato de origen (openai|anthropic|gemini|cohere)", + "to": "Formato de destino (openai|anthropic|gemini|cohere)", + "file": "Ruta al archivo JSON del cuerpo de la solicitud", + "out": "Guardar la salida en un archivo", + "model": "Sobrescribir el modelo", + "history": { + "limit": "Máximo de resultados" + } + }, + "pricing": { + "description": "Gestionar datos de precios de los modelos", + "sync": { + "description": "Sincronizar precios desde fuentes ascendentes", + "provider": "Filtrar por proveedor", + "force": "Forzar la resincronización" + }, + "list": { + "provider": "Filtrar por proveedor", + "model": "Filtrar por modelo", + "limit": "Máximo de resultados" + }, + "defaults": { + "description": "Gestionar precios predeterminados", + "input": "Coste de entrada por 1 millón de tokens (USD)", + "output": "Coste de salida por 1 millón de tokens (USD)", + "cacheRead": "Coste de lectura de caché por 1 millón de tokens (USD)", + "cacheWrite": "Coste de escritura en caché por 1 millón de tokens (USD)" + }, + "diff": { + "description": "Mostrar la diferencia respecto a los precios de origen", + "model": "Filtrar por modelo" + } + }, + "radar": { + "description": "Inspeccionar y sincronizar los feeds del catálogo local de Radar", + "status": "Mostrar la configuración local de Radar y el estado de la caché de feeds", + "sync": "Sincronizar el catálogo, las referencias, las ofertas y Intel mediante el servidor local" + }, + "resilience": { + "description": "Inspeccionar y gestionar los mecanismos de resiliencia", + "status": { + "provider": "Filtrar por proveedor" + }, + "breakers": { + "provider": "Filtrar por proveedor" + }, + "cooldowns": { + "provider": "Filtrar por proveedor", + "connectionId": "Filtrar por ID de conexión" + }, + "lockouts": { + "provider": "Filtrar por proveedor", + "model": "Filtrar por modelo" + }, + "reset": { + "description": "Restablecer el estado del disyuntor/tiempo de espera", + "provider": "Proveedor que se restablecerá", + "connectionId": "ID de conexión que se restablecerá", + "model": "Modelo cuyo bloqueo se restablecerá", + "allCooldowns": "Restablecer todos los tiempos de espera del proveedor", + "yes": "Omitir confirmación" + }, + "profile": { + "description": "Gestionar el perfil de resiliencia", + "name": "Nombre del perfil" + }, + "config": { + "description": "Gestionar la configuración de resiliencia", + "threshold": "Umbral de fallos", + "resetTimeout": "Tiempo de espera de restablecimiento en ms", + "baseCooldown": "Tiempo de espera base en ms" + } + }, + "nodes": { + "description": "Gestionar nodos de proveedores (endpoints)", + "list": { + "provider": "Filtrar por proveedor", + "enabled": "Mostrar solo los nodos habilitados" + }, + "add": { + "provider": "Nombre del proveedor", + "baseUrl": "URL base del nodo", + "name": "Nombre del nodo", + "weight": "Peso del balanceo de carga", + "region": "Etiqueta de región", + "authHeader": "Encabezado de autenticación personalizado (key=value)" + }, + "update": { + "baseUrl": "Nueva URL base", + "name": "Nuevo nombre", + "weight": "Nuevo peso", + "region": "Nueva región", + "enabled": "Activar o desactivar (true|false)" + }, + "remove": { + "yes": "Omitir confirmación" + }, + "validate": { + "baseUrl": "URL que se va a validar", + "provider": "Proveedor con el que se va a validar" + }, + "test": { + "description": "Enviar solicitud de prueba al nodo" + }, + "metrics": { + "description": "Mostrar métricas del nodo", + "period": "Periodo de tiempo (p. ej., 24h, 7d)" + } + }, + "context": { + "description": "Configurar la canalización de ingeniería de contexto (Caveman, RTK)", + "analytics": { + "period": "Periodo de tiempo (p. ej., 7d, 30d)" + }, + "caveman": { + "description": "Gestionar el compresor de contexto Caveman", + "config": { + "description": "Mostrar o actualizar la configuración de Caveman", + "aggressiveness": "Agresividad 0.0–1.0", + "maxShrinkPct": "Porcentaje máximo de reducción", + "preserveTags": "Etiquetas separadas por comas que se deben conservar" + } + }, + "rtk": { + "description": "Gestionar el optimizador de contexto RTK", + "config": { + "description": "Mostrar o actualizar la configuración de RTK", + "tokenBudget": "Presupuesto de tokens para RTK", + "reservePct": "Porcentaje de reserva" + }, + "filters": { + "description": "Gestionar filtros de RTK", + "pattern": "Patrón del filtro (regex)", + "priority": "Prioridad del filtro (valor predeterminado: 100)", + "action": "Acción del filtro: drop|shrink|replace", + "yes": "Omitir confirmación" + }, + "test": { + "file": "Ruta al archivo JSON de la solicitud" + } + }, + "combos": { + "description": "Gestión de combinaciones con reconocimiento del contexto" + } + }, + "sessions": { + "description": "Inspeccionar y gestionar sesiones activas", + "list": { + "user": "Filtrar por usuario", + "kind": "Filtrar por tipo (dashboard|api-key|mcp|a2a)", + "active": "Mostrar solo sesiones activas", + "limit": "Número máximo de resultados (valor predeterminado: 100)" + }, + "expire": { + "yes": "Omitir confirmación" + }, + "expireAll": { + "user": "Usuario cuyas sesiones se deben cerrar", + "yes": "Omitir confirmación" + } + }, + "tags": { + "description": "Gestionar etiquetas de recursos", + "add": { + "color": "Color de la etiqueta (hexadecimal o nombre)", + "description": "Descripción de la etiqueta" + }, + "remove": { + "yes": "Omitir confirmación" + }, + "assign": { + "tag": "Nombre de la etiqueta", + "to": "Recurso de destino con formato type:id (p. ej., provider:openai)" + }, + "unassign": { + "tag": "Nombre de la etiqueta", + "from": "Recurso de origen con formato type:id" + } + }, + "openapi": { + "description": "Acceder y probar la especificación OpenAPI de OmniRoute", + "dump": { + "description": "Volcar la especificación OpenAPI en stdout o en un archivo", + "format": "Formato de salida: yaml|json (predeterminado: yaml)", + "out": "Guardar en la ruta del archivo" + }, + "validate": { + "description": "Validar la especificación OpenAPI" + }, + "try": { + "description": "Probar un endpoint de la API mediante la especificación", + "method": "Método HTTP (predeterminado: GET)", + "body": "Ruta al archivo JSON del cuerpo de la solicitud", + "query": "Parámetro de consulta con formato key=value (se puede repetir)", + "header": "Encabezado con formato key=value (se puede repetir)" + }, + "endpoints": { + "description": "Listar todos los endpoints de la API", + "search": "Filtrar por ruta o resumen" + }, + "paths": { + "description": "Listar todas las rutas de la API" + } + }, + "combo": { + "title": "Combinaciones", + "switched": "Combinación activa: {name}", + "created": "Combinación creada: {name}", + "deleted": "Combinación eliminada: {name}", + "noCombos": "No hay combinaciones configuradas.", + "confirmDelete": "¿Eliminar la combinación {name}?", + "suggest": { + "description": "Sugerir la mejor combinación para una tarea mediante puntuación con IA", + "task": "Descripción de la tarea", + "maxCost": "Coste máximo por solicitud en USD", + "maxLatencyMs": "Latencia máxima en milisegundos", + "weights": "Pesos de puntuación JSON, p. ej., {\"latency\":0.7,\"cost\":0.3}", + "top": "Número de candidatos principales que se mostrarán (predeterminado: 5)", + "explain": "Imprimir la justificación en stderr", + "switch": "Activar la combinación mejor clasificada" + } + }, + "oneproxy": { + "description": "Gestionar el grupo de servidores upstream de OneProxy", + "stats": { + "provider": "Filtrar por proveedor", + "period": "Periodo de tiempo (predeterminado: 24h)" + }, + "fetch": { + "description": "Obtener proxies del grupo", + "count": "Número de proxies que se obtendrán (predeterminado: 1)", + "type": "Tipo de proxy: http|socks5 (predeterminado: http)" + }, + "rotate": { + "description": "Forzar la rotación del proxy", + "provider": "Proveedor para el que se realizará la rotación", + "connectionId": "ID de conexión específica que se va a rotar" + }, + "config": { + "description": "Mostrar o actualizar la configuración de OneProxy", + "enabled": "Habilitar el grupo de proxies (true|false)", + "poolSize": "Tamaño del grupo", + "providerSource": "URL del proveedor de proxies", + "rotationPolicy": "Política de rotación: sticky|per-request|periodic" + }, + "pool": { + "description": "Listar el grupo de proxies actual con métricas" + } + }, + "open": { + "description": "Abrir una página específica del panel de OmniRoute en el navegador", + "url": "Mostrar solo la URL, sin abrir el navegador" + }, + "telemetry": { + "description": "Acceder a los datos de telemetría agregados", + "summary": { + "description": "Mostrar el resumen de telemetría agregada", + "period": "Periodo de tiempo: 24h|7d|30d (predeterminado: 24h)", + "compareTo": "Comparar con el periodo anterior" + }, + "export": { + "description": "Exportar eventos de telemetría a JSONL", + "out": "Ruta del archivo de salida (predeterminada: telemetry.jsonl)", + "period": "Periodo de tiempo para la exportación (predeterminado: 7d)" + } + }, + "sync": { + "description": "Sincronizar la configuración entre instancias de OmniRoute", + "push": { + "description": "Enviar la configuración a la nube o a una instancia remota", + "target": "Destino (cloud o context:name)", + "bundle": "Partes del paquete que se van a sincronizar", + "dryRun": "Previsualizar sin aplicar" + }, + "pull": { + "description": "Obtener la configuración de la nube o de una instancia remota", + "source": "Origen (cloud o context:name)", + "merge": "Combinar con la configuración existente", + "replace": "Reemplazar la configuración existente", + "dryRun": "Previsualizar sin aplicar" + }, + "diff": { + "source": "Contexto de origen", + "target": "Contexto de destino" + }, + "bundle": { + "description": "Exportar la configuración como archivo de paquete", + "include": "Partes que se incluirán (separadas por comas)" + }, + "import": { + "description": "Importar un archivo de paquete", + "dryRun": "Validar sin aplicar" + }, + "initialize": { + "fromCloud": "Inicializar desde una copia de seguridad en la nube" + }, + "tokens": { + "description": "Gestionar tokens de sincronización", + "create": { + "name": "Nombre del token", + "scope": "Ámbito del token", + "ttl": "TTL del token (p. ej., 30d)" + }, + "revoke": { + "yes": "Omitir la confirmación" + } + }, + "resolve": { + "description": "Resolver conflictos de sincronización de forma interactiva" + } + }, + "config": { + "contexts": { + "description": "Gestionar contextos/perfiles del servidor (añadir, usar, listar, mostrar, eliminar, renombrar, exportar, importar)" + }, + "lang": { + "description": "Gestionar el idioma de visualización de la CLI", + "getDescription": "Mostrar el código del idioma activo actualmente", + "setDescription": "Establecer el idioma de visualización y guardarlo en la configuración", + "listDescription": "Listar todos los idiomas disponibles", + "listTitle": "Idiomas disponibles", + "current": "Idioma: {code} ({name})", + "saved": "Idioma establecido en {code} ({name}).", + "noCode": "Se requiere un código de idioma. Ejecuta 'omniroute config lang list' para ver los códigos disponibles.", + "unknown": "Código de idioma desconocido: {code}. Ejecuta 'omniroute config lang list' para ver los códigos disponibles.", + "alreadySet": "El idioma ya está establecido en {code}.", + "envHint": "Consejo: también puedes establecer OMNIROUTE_LANG={code} en tu entorno." + } + }, + "completion": { + "description": "Generar o instalar scripts de autocompletado para el shell", + "zsh": "Mostrar el script de autocompletado para zsh", + "bash": "Mostrar el script de autocompletado para bash", + "fish": "Mostrar el script de autocompletado para fish", + "install": "Instalar globalmente el script de autocompletado para el shell detectado", + "refresh": "Actualizar la caché de combos/proveedores/modelos" + }, + "logs": { + "description": "Transmitir o exportar registros de solicitudes", + "follow": "Transmitir registros en tiempo real", + "filter": "Filtrar por nivel (error,warn,info), separado por comas", + "lines": "Número de líneas que se obtendrán", + "timeout": "Tiempo de espera de conexión en ms", + "baseUrl": "URL base de la API de OmniRoute", + "requestId": "Filtrar por ID de solicitud", + "apiKey": "Filtrar por clave de API", + "combo": "Filtrar por nombre de combo", + "status": "Filtrar por código de estado HTTP", + "durationMin": "Duración mínima de la solicitud en ms", + "durationMax": "Duración máxima de la solicitud en ms", + "export": "Guardar los registros en un archivo (json/jsonl/csv)", + "exported": "Registros guardados en {path}", + "stopped": "Transmisión de registros detenida.", + "streamError": "Error en la transmisión de registros: {message}" + }, + "tray": { + "description": "Controlar el icono de la bandeja del sistema", + "show": "Mostrar el icono de la bandeja (si el servidor se está ejecutando con --tray)", + "hide": "Ocultar el icono de la bandeja", + "quit": "Salir de OmniRoute desde la bandeja" + }, + "autostart": { + "description": "Gestionar el inicio automático de OmniRoute durante el arranque (Linux: servicio de usuario de systemd)", + "enable": "Activar el inicio automático durante el arranque", + "disable": "Desactivar el inicio automático durante el arranque", + "toggle": "Activar o desactivar el inicio automático al arrancar", + "status": "Mostrar el estado del inicio automático" + }, + "runtime": { + "description": "Gestionar las dependencias nativas del entorno de ejecución", + "check": "Comprobar el estado de las dependencias nativas en el directorio del entorno de ejecución", + "repair": "Reinstalar las dependencias nativas en el directorio del entorno de ejecución", + "repair_force": "Forzar la reinstalación aunque sean válidas", + "clean": "Eliminar el directorio del entorno de ejecución (libera espacio en disco)", + "clean_yes": "Omitir la confirmación" + }, + "repl": { + "description": "REPL interactivo de varios turnos con LLM", + "model": "Modelo que se usará (predeterminado: auto)", + "combo": "Nombre de la combinación que se usará", + "system": "Prompt del sistema", + "resume": "Reanudar una sesión guardada por nombre" + }, + "plugin": { + "description": "Gestionar plugins de la CLI (omniroute-cmd-*)", + "list": "Listar los plugins instalados", + "install": "Instalar un plugin desde npm o una ruta local", + "remove": "Eliminar un plugin instalado", + "info": "Mostrar los detalles de un plugin instalado", + "search": "Buscar plugins disponibles en el registro de npm", + "update": "Actualizar los plugins instalados", + "scaffold": "Generar la estructura inicial de un nuevo plugin" + }, + "launch": { + "description": "Iniciar Claude Code conectado a OmniRoute (local o remoto, con --profile)", + "token": "Token que debe enviar el cliente de Claude (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "No se puede acceder a OmniRoute en {port}. Inícialo con 'omniroute serve'.", + "notFound": "No se encontró la CLI 'claude' en PATH." + }, + "run": { + "description": "Iniciar un destino de CLI compatible a través de OmniRoute" + }, + "setupClaude": { + "description": "Generar perfiles de Claude Code en ~/.claude/profiles a partir del catálogo de modelos de OmniRoute" + }, + "connect": { + "description": "Conectarse a un servidor remoto de OmniRoute y entrar en modo remoto" + }, + "tokens": { + "description": "Gestionar tokens de acceso a la CLI con ámbitos (modo remoto)" + }, + "configure": { + "description": "Elegir un proveedor y un modelo del servidor activo y configurar una CLI local compatible" + }, + "launchCodex": { + "description": "Iniciar Codex CLI conectado a OmniRoute (local o VPS remoto)" + }, + "setupCodex": { + "description": "Generar archivos de perfil en ~/.codex a partir del catálogo de modelos activo de OmniRoute" + }, + "packs": { + "description": "Gestionar paquetes opcionales del entorno de ejecución (ML / automatización del navegador)", + "listDescription": "Listar los paquetes opcionales y su estado de instalación", + "installDescription": "Instalar un paquete opcional en DATA_DIR", + "verifyDescription": "Verificar los paquetes instalados con el índice de sumas de comprobación incluido", + "removeDescription": "Eliminar un paquete opcional instalado", + "sourceOpt": "Directorio que contiene los archivos de los paquetes y el índice de paquetes", + "warnNoIndex": "No se encontró optional-packs.index.json; la instalación y la verificación no están disponibles en esta copia del repositorio (los paquetes de escritorio sí lo incluyen)", + "errUnknown": "paquete desconocido: {name}", + "errNoIndex": "no se encontró el índice del paquete; pasa --source apuntando al directorio que contiene el contenido del paquete (los paquetes de escritorio lo incluyen junto a la aplicación)", + "installed": "paquete \"{name}\" instalado y verificado en {dir}", + "restartHint": "reinicia el servidor de OmniRoute (o la aplicación de escritorio) para que el entorno de ejecución detecte el paquete", + "removed": "paquete \"{name}\" eliminado", + "notInstalled": "el paquete \"{name}\" no estaba instalado", + "verifyOk": "se verificaron todos los paquetes instalados", + "verifyFailed": "{count} paquete(s) no superaron la verificación", + "noneInstalled": "no hay paquetes opcionales instalados" } } diff --git a/bin/cli/locales/et.json b/bin/cli/locales/et.json index 0185061387..b48094528b 100644 --- a/bin/cli/locales/et.json +++ b/bin/cli/locales/et.json @@ -30,7 +30,7 @@ "opencode": "Installi ja seadista OpenCode'i jaoks kaasas olev @omniroute/opencode-plugin" }, "doctor": { - "title": "OmniRoute Doctor", + "title": "OmniRoute'i diagnostika", "dbOk": "Andmebaas: korras ({path})", "dbMissing": "Andmebaas: pole lähtestatud — käivita `omniroute setup`", "portOk": "Port {port}: saadaval", @@ -256,6 +256,7 @@ "max_restarts": "Maksimaalne krahhijärgsete taaskäivituste arv 30 sekundi jooksul enne alla andmist (vaikimisi: 2)", "tray": "Käivita süsteemisalves (ainult töölaual, valikuline)", "no_tray": "Keela süsteemisalve ikoon", + "ready_timeout": "Valmisolekukontrolli ajalõpp millisekundites (ka OMNIROUTE_READY_TIMEOUT_MS, vaikimisi 60000)", "tls_cert": "TLS-sertifikaadi (PEM) tee HTTPS-i teenindamiseks (ka OMNIROUTE_TLS_CERT)", "tls_key": "TLS privaatvõtme (PEM) tee HTTPS-i teenindamiseks (ka OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP server töötab ({transport})", "stopped": "MCP server peatatud.", "restarted": "MCP server taaskäivitatud.", + "stoppedHint": "Selle sisselülitamiseks käivitage `omniroute mcp enable`.", + "enabled": "MCP-server on lubatud.", + "disabled": "MCP-server on keelatud.", + "enable": { + "description": "Luba MCP-server", + "transport": "Kasutatav transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "Keela MCP-server" + }, "call": { "description": "Käivita MCP tööriist otse", "args": "JSON argumentide objekt (otseselt sisestatud)", diff --git a/bin/cli/locales/fa.json b/bin/cli/locales/fa.json index 77004b9d23..2bc8813c08 100644 --- a/bin/cli/locales/fa.json +++ b/bin/cli/locales/fa.json @@ -14,6 +14,812 @@ "jsonOpt": "خروجی به صورت JSON", "yesOpt": "رد کردن تأیید" }, + "setup": { + "title": "راهاندازی OmniRoute", + "passwordPrompt": "رمز عبور مدیر", + "providerPrompt": "ارائهدهنده پیشفرض (برای رد کردن خالی بگذارید)", + "done": "راهاندازی کامل شد", + "passwordSet": "رمز عبور مدیر پیکربندی شد", + "providerSet": "ارائهدهنده پیکربندی شد: {name}", + "testingProvider": "در حال آزمایش اتصال ارائهدهنده: {name}", + "testPassed": "آزمایش ارائهدهنده موفق بود", + "testFailed": "آزمایش ارائهدهنده ناموفق بود: {error}", + "loginEnabled": "ورود: فعال (رمز عبور بهروزرسانی شد)", + "loginDisabled": "ورود: غیرفعال", + "providerInfo": "ارائهدهنده: {info}", + "opencode": "نصب و پیکربندی @omniroute/opencode-plugin همراه برای OpenCode" + }, + "doctor": { + "title": "عیبیاب OmniRoute", + "dbOk": "پایگاه داده: سالم ({path})", + "dbMissing": "پایگاه داده: مقداردهی اولیه نشده است — `omniroute setup` را اجرا کنید", + "portOk": "درگاه {port}: در دسترس", + "portConflict": "درگاه {port}: توسط فرایند دیگری در حال استفاده است", + "encryptionOk": "کلید رمزنگاری: پیکربندی شده", + "encryptionMissing": "کلید رمزنگاری موجود نیست — `omniroute setup` را اجرا کنید", + "allGood": "همه بررسیها با موفقیت انجام شدند.", + "warnings": "{count} هشدار — موارد بالا را ببینید." + }, + "providers": { + "title": "ارائهدهندگان", + "noProviders": "هیچ ارائهدهندهای پیکربندی نشده است. اجرا کنید: omniroute setup", + "testing": "در حال آزمایش {name}...", + "available": "{count} ارائهدهنده در دسترس است", + "connected": "متصل", + "disconnected": "قطعشده", + "validationFailed": "اعتبارسنجی ناموفق بود: {error}", + "metrics": { + "description": "نمایش معیارهای عملکرد ارائهدهنده (تأخیر، نرخ موفقیت، هزینه)", + "provider": "فیلتر بر اساس شناسه ارائهدهنده", + "connection_id": "فیلتر بر اساس شناسه اتصال", + "period": "بازه زمانی: 1h|6h|24h|7d|30d (پیشفرض: 24h)", + "metric": "تمرکز بر یک فیلد معیار مشخص", + "sort": "مرتبسازی بر اساس فیلد (نزولی)", + "limit": "حداکثر تعداد ردیفها (پیشفرض: 50)", + "watch": "بازآوری هر 5 ثانیه (حالت زنده)", + "compare": "شناسههای ارائهدهندگان با جداکننده ویرگول برای مقایسه کنار هم" + }, + "metric_single": { + "description": "دریافت یک مقدار معیار برای اتصالی مشخص" + }, + "rotate": { + "description": "تعویض دورهای کلید API بالادستی برای اتصال ارائهدهنده", + "newKeyOpt": "مقدار کلید API جدید (اجتناب کنید؛ ترجیحاً از ‎--from-env‎ استفاده کنید)", + "fromEnvOpt": "کلید جدید را از متغیر محیطی VAR بخوانید", + "oauthOpt": "در عوض، فرایند احراز هویت مجدد OAuth را آغاز کنید", + "skipTestOpt": "از آزمون اتصال پس از چرخش صرفنظر کنید", + "dryRunOpt": "بدون نوشتن تغییرات، آنچه تغییر میکند را نمایش دهید", + "confirmPrompt": "کلید API اتصال «{name}» ({id}) جایگزین شود؟ [y/N]", + "dryRunResult": "[dry-run] کلید اتصال «{name}» ({id}) چرخانده میشد. هیچ تغییری انجام نشد.", + "oauthHint": "اتصال OAuth — اجرا کنید: omniroute oauth {provider}", + "envVarEmpty": "متغیر محیطی {var} تنظیم نشده یا خالی است.", + "success": "کلید «{name}» چرخانده شد. برای تأیید، `providers test {id}` را اجرا کنید.", + "testPassed": "آزمون پس از چرخش موفق بود.", + "testFailed": "آزمون پس از چرخش ناموفق بود: {error}" + }, + "status": { + "description": "نمایش وضعیت سلامت کلید برای همهٔ اتصالهای ارائهدهندگان (سن، انقضا، دورهٔ انتظار)", + "providerOpt": "فیلتر بر اساس نام ارائهدهنده", + "header": "شناسه ارائهدهنده نام وضعیت انقضا وضعیت آزمون پایان دورهٔ انتظار", + "noData": "هیچ دادهای برای اتصال ارائهدهنده موجود نیست.", + "requiresServer": "برای providers status، سرور OmniRoute باید در حال اجرا باشد." + } + }, + "keys": { + "title": "کلیدهای API", + "addDescription": "افزودن یا بهروزرسانی یک کلید API برای ارائهدهنده", + "listDescription": "فهرست همهٔ کلیدهای API پیکربندیشده", + "removeDescription": "حذف کلید API یک ارائهدهنده", + "regenerateDescription": "تولید مجدد یک کلید API متعلق به OmniRoute", + "revokeDescription": "لغو یک کلید API متعلق به OmniRoute", + "revealDescription": "نمایش مقدار پنهاننشدهٔ کلید API", + "usageDescription": "نمایش استفادههای اخیر از یک کلید API", + "usageLimitOpt": "تعداد درخواستهای اخیر", + "rotateDescription": "تولید کلید جدید و نامعتبر کردن کلید قبلی", + "graceOpt": "مهلت ارفاقی (ms) پیش از نامعتبر شدن کلید قبلی", + "stdinOpt": "خواندن کلید API از stdin بهجای آرگومان", + "added": "کلید برای {provider} افزوده شد.", + "removed": "کلید حذف شد.", + "listed": "{count} کلید.", + "noKeys": "هیچ کلیدی پیکربندی نشده است.", + "noUsage": "هیچ دادهای دربارهٔ استفاده یافت نشد.", + "confirmRemove": "کلید {id} حذف شود؟", + "confirmRegenerate": "کلید {id} مجدداً تولید شود؟", + "confirmRevoke": "کلید {id} لغو شود؟", + "confirmRotate": "کلید {id} چرخانده شود؟ (کلید قبلی پس از مهلت ارفاقی نامعتبر خواهد شد)", + "regenerated": "مجدداً تولید شد. کلید جدید: {key}", + "revoked": "کلید {id} لغو شد.", + "rotated": "کلید {id} چرخانده شد. شناسه کلید جدید: {newId}", + "revealWarning": "⚠ این کار کلید کامل و بدون پوشش را نمایش میدهد. مطمئن شوید صفحهنمایشتان خصوصی است.", + "providerRequired": "ارائهدهنده الزامی است.", + "keyRequired": "کلید API الزامی است.", + "stdinEmpty": "هیچ کلید API از طریق stdin ارائه نشده است.", + "unknownProvider": "ارائهدهنده ناشناخته: {provider}", + "policy": { + "title": "سیاست کلید", + "showDescription": "نمایش سیاست محدودیت نرخ/هزینه برای یک کلید", + "setDescription": "تنظیم سیاست محدودیت نرخ/هزینه برای یک کلید", + "rateLimitOpt": "حداکثر درخواست در دقیقه", + "maxCostOpt": "حداکثر هزینه روزانه (USD)", + "allowedModelsOpt": "فهرست مدلهای مجاز، با ویرگول از هم جداشده", + "nothingToSet": "هیچ فیلدی برای سیاست ارائه نشده است. از --rate-limit، --max-cost یا --allowed-models استفاده کنید.", + "updated": "سیاست بهروزرسانی شد." + }, + "expiration": { + "title": "انقضای کلید", + "listDescription": "فهرست کلیدهایی که بهزودی منقضی میشوند", + "daysOpt": "نمایش کلیدهایی که ظرف N روز منقضی میشوند", + "none": "هیچ کلیدی ظرف {days} روز منقضی نمیشود.", + "listTitle": "کلیدهایی که ظرف {days} روز منقضی میشوند:" + } + }, + "authExport": { + "description": "برونبری اطلاعات احراز هویت رمزگشاییشده ارائهدهنده (فقط محلی، خروجی متن ساده)", + "idOpt": "برونبری فقط اتصالی که با این شناسه/نام/ارائهدهنده مطابقت دارد", + "formatOpt": "قالب خروجی: json یا env", + "outOpt": "نوشتن خروجی در یک فایل بهجای stdout (با مجوزهای 0600 نوشته میشود)", + "forceOpt": "تأیید کنید که میدانید این کار اسرار را بهصورت متن ساده نمایش میدهد/مینویسد", + "warning": "⚠ این کار کلیدهای API و توکنهای OAuth رمزگشاییشده را بهصورت متن ساده نمایش میدهد/مینویسد. مطمئن شوید صفحهنمایش، تاریخچه پوسته و هر فایل خروجی شما خصوصی باقی میماند.", + "confirmHeading": "⚠ هشدار: این کار اطلاعات احراز هویت رمزگشاییشده ارائهدهنده را بهصورت متن ساده برونبری میکند", + "confirmBody": "این فرمان apiKey، accessToken، refreshToken و\nidToken را برای اتصال(های) انتخابشده رمزگشایی کرده و نمایش میدهد/مینویسد. با خروجی مانند یک راز برخورد کنید.", + "confirmFooter": "برای تأیید، اجرا کنید:\n omniroute auth export --force", + "missingKey": "برای برونبری اطلاعات احراز هویت، STORAGE_ENCRYPTION_KEY الزامی است.", + "notFound": "اتصال یافت نشد: {id}", + "invalidFormat": "قالب نامعتبر: {format}. از json یا env استفاده کنید." + }, + "stream": { + "description": "پخش جریانی پاسخ چت با حالتهای بازرسی SSE", + "file": "خواندن درخواست از فایل", + "stdin": "خواندن درخواست از stdin", + "model": "شناسه مدل (پیشفرض: auto)", + "system": "دستور سیستمی", + "combo": "اجبار به استفاده از یک ترکیب مشخص بر اساس نام", + "max_tokens": "حداکثر تعداد توکنها در پاسخ", + "responses_api": "استفاده از /v1/responses بهجای /v1/chat/completions", + "raw": "چاپ خطوط خام SSE همانگونه که دریافت شدهاند", + "debug": "اطلاعات زمانبندی هر قطعه را در stderr چاپ کن", + "save": "همه رویدادهای SSE را در یک فایل .jsonl ذخیره کن", + "error": { + "empty_prompt": "خطا: پرامپت الزامی است (آرگومان موقعیتی، --file یا --stdin)" + } + }, + "usage": { + "description": "تحلیل مصرف، بودجهها، سهمیهها و گزارشها", + "analytics": { + "description": "تحلیل تجمیعی مصرف را نمایش بده", + "period": "بازه زمانی: 1d|7d|30d|90d|ytd|all (پیشفرض: 30d)", + "provider": "فیلتر بر اساس شناسه ارائهدهنده" + }, + "budget": { + "description": "مدیریت بودجههای هزینه", + "set": { + "scope": "دامنه بودجه (پیشفرض: global)", + "period": "دوره بودجه: daily|weekly|monthly (پیشفرض: monthly)" + } + }, + "quota": { + "description": "میزان استفاده از سهمیه ارائهدهنده را نمایش بده", + "provider": "فیلتر بر اساس شناسه ارائهدهنده", + "check": "نمایش بده که آیا سهمیه برای یک درخواست جدید در دسترس است" + }, + "logs": { + "description": "گزارش فراخوانی درخواستها را نمایش بده", + "limit": "تعداد ورودیهای گزارش برای بازگرداندن (پیشفرض: 100)", + "search": "عبارت جستوجو برای فیلتر کردن گزارشها", + "since": "گزارشها را از این برچسب زمانی به بعد بازگردان", + "follow": "ورودیهای جدید گزارش را بهطور پیوسته دنبال کن", + "api_key": "گزارشها را بر اساس کلید API فیلتر کن" + }, + "utilization": { + "description": "معیارهای استفاده از کلید API را نمایش بده", + "api_key": "فیلتر بر اساس کلید API" + }, + "history": { + "description": "تاریخچه درخواستها را نمایش بده", + "limit": "تعداد ورودیهای تاریخچه (پیشفرض: 100)" + }, + "proxy_logs": { + "description": "گزارش درخواستهای سطح پروکسی را نمایش بده", + "limit": "تعداد ورودیهای گزارش پروکسی (پیشفرض: 100)" + } + }, + "cost": { + "description": "گزارش هزینه را با تفکیک بر اساس ارائهدهنده، مدل، ترکیب یا کلید API نمایش بده", + "period": "بازه زمانی: 1d|7d|30d|90d|ytd|all (پیشفرض: 30d)", + "since": "تاریخ شروع (قالب ISO، برای مثال 2026-01-01) — جایگزین --period میشود", + "until": "تاریخ پایان (قالب ISO)", + "group_by": "گروهبندی نتایج بر اساس: provider|model|api-key|combo|day (پیشفرض: provider)", + "api_key_filter": "فیلتر بر اساس یک کلید API مشخص", + "limit": "حداکثر تعداد ردیفهای قابل نمایش (پیشفرض: 100)" + }, + "simulate": { + "description": "شبیهسازی مسیریابی بهصورت Dry-run — بدون فراخوانی بالادست، ارائهدهندگان انتخابشده را نمایش بده", + "file": "بدنه کامل درخواست را از فایل JSON بارگذاری کن", + "model": "شناسه مدل (پیشفرض: auto)", + "combo": "اجبار به استفاده از یک ترکیب مشخص بر اساس نام", + "reasoning": "سطح تلاش برای استدلال (low|medium|high)", + "thinking": "بودجه توکن برای تفکر توسعهیافته", + "explain": "درخت جایگزینها و بازه هزینه را در stderr چاپ کن", + "noCombo": "هیچ ترکیب منطبقی پیدا نشد. یکی را با این دستور پیکربندی کن: omniroute combo create" + }, + "chat": { + "description": "ارسال یک پرامپت گفتوگوی یکباره به OmniRoute", + "file": "خواندن پرامپت از فایل", + "stdin": "خواندن پرامپت از stdin", + "system": "پرامپت سیستم", + "model": "شناسه مدل (پیشفرض: auto)", + "max_tokens": "حداکثر تعداد توکنها در پاسخ", + "temperature": "دمای نمونهگیری (0–2)", + "top_p": "نمونهگیری هستهای Top-p", + "reasoning_effort": "سطح تلاش استدلال (low|medium|high)", + "thinking_budget": "بودجه توکن برای تفکر گسترده", + "combo": "اجبار به استفاده از یک ترکیب مشخص با نام", + "responses_api": "استفاده از /v1/responses بهجای /v1/chat/completions", + "stream": "ارسال تدریجی پاسخ بهصورت جریانی", + "no_history": "در ~/.omniroute/cli-history.jsonl ذخیره نشود", + "error": { + "empty_prompt": "خطا: پرامپت الزامی است (آرگومان موقعیتی، --file یا --stdin)" + } + }, + "serve": { + "description": "راهاندازی سرور OmniRoute (عمل پیشفرض)", + "starting": "در حال راهاندازی سرور OmniRoute روی پورت {port}...", + "ready": "در http://localhost:{port} آماده است", + "stopping": "در حال توقف سرور (PID {pid})...", + "stopped": "سرور متوقف شد.", + "notRunning": "سرور در حال اجرا نیست.", + "port": "پورت شنود (پیشفرض: 20128)", + "no_open": "مرورگر بهطور خودکار باز نشود", + "daemon": "اجرای سرور بهصورت سرویس پسزمینه", + "log": "نمایش گزارشهای سرور در همانجا", + "no_recovery": "غیرفعالکردن راهاندازی مجدد خودکار پس از خرابی (حالت اشکالزدایی)", + "max_restarts": "حداکثر دفعات راهاندازی مجدد پس از خرابی طی 30 ثانیه، پیش از صرفنظر کردن (پیشفرض: 2)", + "tray": "اجرا در سینی سیستم (فقط دسکتاپ، با انتخاب کاربر)", + "no_tray": "غیرفعالکردن نماد سینی سیستم", + "ready_timeout": "مهلت زمانی بررسی آمادگی بر حسب میلیثانیه (همچنین OMNIROUTE_READY_TIMEOUT_MS، پیشفرض 60000)", + "tls_cert": "مسیر گواهی TLS (PEM) برای ارائه HTTPS (همچنین OMNIROUTE_TLS_CERT)", + "tls_key": "مسیر کلید خصوصی TLS (PEM) برای ارائه HTTPS (همچنین OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "پشتیبانگیری", + "description": "ایجاد نسخه پشتیبان از دادههای OmniRoute", + "creating": "در حال ایجاد نسخه پشتیبان...", + "done": "نسخه پشتیبان در {path} ذخیره شد", + "noFiles": "فایلی برای پشتیبانگیری وجود ندارد (پایگاه داده راهاندازی نشده است)", + "failed": "پشتیبانگیری ناموفق بود: {error}", + "restoring": "در حال بازیابی از {path}...", + "restored": "بازیابی کامل شد.", + "restoreDescription": "بازیابی از نسخهٔ پشتیبان", + "listTitle": "نسخههای پشتیبان موجود", + "noBackups": "هیچ نسخهٔ پشتیبانی یافت نشد.", + "notFound": "نسخهٔ پشتیبان یافت نشد: {name}", + "confirmRestore": "دادههای فعلی با نسخهٔ پشتیبان مربوط به {ts} بازنویسی شوند؟", + "createDescription": "ایجاد نسخهٔ پشتیبان از دادههای OmniRoute", + "nameOpt": "نام سفارشی نسخهٔ پشتیبان", + "cloudOpt": "بارگذاری نسخهٔ پشتیبان در فضای ذخیرهسازی ابری", + "encryptOpt": "رمزگذاری نسخهٔ پشتیبان با AES-256-GCM", + "keyFileOpt": "مسیر فایل حاوی عبارت عبور رمزگذاری", + "excludeOpt": "مستثنی کردن فایلهای منطبق با الگو (قابل تکرار)", + "retentionOpt": "فقط N نسخهٔ پشتیبان آخر نگه داشته شود", + "passphrasePrompt": "عبارت عبور:", + "noPassphrase": "برای نسخهٔ پشتیبان رمزگذاریشده، عبارت عبور الزامی است.", + "cloudFailed": "هشدار: بارگذاری در فضای ابری ناموفق بود. نسخهٔ پشتیبان محلی ذخیره شد.", + "cloudUploaded": "نسخهٔ پشتیبان ابری بارگذاری شد: {url}", + "auto": { + "title": "زمانبندی پشتیبانگیری", + "enableDescription": "فعالسازی پشتیبانگیری خودکار زمانبندیشده", + "disableDescription": "غیرفعالسازی پشتیبانگیری خودکار زمانبندیشده", + "statusDescription": "نمایش وضعیت فعلی زمانبندی پشتیبانگیری", + "cronOpt": "عبارت Cron برای زمانبندی (پیشفرض: هر روز ساعت ۳ صبح)", + "enabled": "پشتیبانگیری خودکار فعال شد (cron: {cron}).", + "hint": "زمانبندی هنگام راهاندازی توسط omniroute serve خوانده میشود.", + "disabled": "پشتیبانگیری خودکار غیرفعال شد.", + "notConfigured": "هیچ زمانبندی پشتیبانگیری پیکربندی نشده است." + } + }, + "health": { + "description": "بررسی سلامت سرور و وضعیت مؤلفهها", + "noServer": "سرور در حال اجرا نیست. با این دستور راهاندازی کنید: omniroute serve", + "title": "سلامت", + "status": "وضعیت: {status}", + "uptime": "مدت فعالیت: {uptime}", + "requests": "درخواستها (۲۴ ساعت): {count}", + "cost": "هزینه (۲۴ ساعت): ${cost}" + }, + "quota": { + "description": "نمایش میزان استفاده از سهمیهٔ ارائهدهنده", + "noServer": "سرور در حال اجرا نیست. با این دستور راهاندازی کنید: omniroute serve", + "noData": "اطلاعاتی دربارهٔ سهمیه موجود نیست." + }, + "cache": { + "description": "مدیریت حافظهٔ نهان پاسخها", + "noServer": "سرور در حال اجرا نیست. با این دستور راهاندازی کنید: omniroute serve", + "cleared": "حافظهٔ نهان پاک شد.", + "clearFailed": "پاکسازی حافظهٔ نهان ناموفق بود." + }, + "redis": { + "description": "راه‌اندازی کانتینر Redis محلی با یک کلیک (Podman یا Docker) برای حافظه پنهان و ردیابی سهمیه OmniRoute" + }, + "test": { + "description": "آزمایش اتصال به یک ارائهدهنده", + "noServer": "سرور در حال اجرا نیست. آن را با این دستور راهاندازی کنید: omniroute serve", + "testing": "در حال آزمایش {provider} / {model}...", + "passed": "اتصال با موفقیت برقرار شد!", + "failed": "اتصال ناموفق بود: {error}", + "allProvidersOpt": "آزمایش همه ارائهدهندگان پیکربندیشده", + "latencyOpt": "نمایش اندازهگیریهای تأخیر (میانگین/کمینه/بیشینه بر حسب میلیثانیه)", + "repeatOpt": "تکرار آزمایش به تعداد N بار و تجمیع نتایج", + "compareOpt": "مدلهای جداشده با ویرگول برای مقایسه (برای مثال gpt-4o,claude-3-5-sonnet)", + "saveOpt": "ذخیره نتایج در یک فایل JSON", + "saved": "نتایج در {path} ذخیره شدند", + "compareTitle": "مقایسه مدلها", + "compareMinTwo": "برای --compare حداقل دو مدل لازم است (جداشده با ویرگول)", + "noProviders": "هیچ ارائهدهندهای پیکربندی نشده است. یکی را با این دستور اضافه کنید: omniroute keys add" + }, + "update": { + "checking": "در حال بررسی بهروزرسانیها...", + "upToDate": "از قبل بهروز است ({version}).", + "available": "بهروزرسانی موجود است: {current} ← {latest}", + "installing": "در حال نصب {latest}...", + "done": "به {latest} بهروزرسانی شد. برای اعمال تغییرات، سرور را راهاندازی مجدد کنید." + }, + "mcp": { + "title": "سرور MCP", + "running": "سرور MCP در حال اجرا است ({transport})", + "stopped": "سرور MCP متوقف شد.", + "restarted": "سرور MCP مجدداً راهاندازی شد.", + "stoppedHint": "برای فعالکردن آن، `omniroute mcp enable` را اجرا کنید.", + "enabled": "سرور MCP فعال شد.", + "disabled": "سرور MCP غیرفعال شد.", + "enable": { + "description": "فعالکردن سرور MCP", + "transport": "انتقال مورد استفاده: stdio|sse|streamable-http" + }, + "disable": { + "description": "غیرفعالکردن سرور MCP" + }, + "call": { + "description": "فراخوانی مستقیم یک ابزار MCP", + "args": "شیء آرگومانهای JSON (درونخطی)", + "args_file": "مسیر فایل آرگومانهای JSON", + "stream": "استفاده از نقطه پایانی استریم (/api/mcp/stream)", + "scope": "دامنه دسترسی لازم (قابل تکرار، برای مثال read:health)" + }, + "scopes": { + "description": "فهرست دامنههای دسترسی موجود MCP", + "tool": "نمایش دامنههای دسترسی موردنیاز یک ابزار مشخص" + }, + "tools": { + "description": "بررسی ابزارهای MCP", + "list": { + "description": "فهرست همه ابزارهای MCP", + "scope": "فیلتر بر اساس دامنه دسترسی" + }, + "info": { + "description": "نمایش فراداده یک ابزار MCP" + }, + "schema": { + "description": "نمایش شِمای JSON ورودی/خروجی یک ابزار MCP", + "io": "نوع طرحواره: input|output (پیشفرض: input)" + } + }, + "audit": { + "description": "گزارش ممیزی MCP (نام مستعار برای audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "فهرستکردن مهارتهای A2A موجود از کارت عامل" + }, + "invoke": { + "description": "فراخوانی یک مهارت A2A و بازگرداندن شناسه وظیفه", + "input": "شیء ورودی JSON", + "input_file": "مسیر فایل ورودی JSON", + "wait": "انتظار برای تکمیل وظیفه پیش از بازگشت", + "timeout": "مهلت انتظار برای تکمیل بر حسب ms (پیشفرض: 60000)" + }, + "tasks": { + "description": "مدیریت وظایف A2A", + "list": { + "status": "فیلتر بر اساس وضعیت", + "skill": "فیلتر بر اساس شناسه مهارت" + }, + "watch": { + "description": "بررسی دورهای وضعیت وظیفه تا زمان تکمیل" + }, + "stream": { + "description": "پخش رویدادهای اجرای وظیفه از طریق SSE" + }, + "logs": { + "description": "نمایش پیامها و مصنوعات وظیفه" + } + } + }, + "policy": { + "description": "مدیریت سیاستهای مجوزدهی OmniRoute", + "list": { + "description": "فهرستکردن سیاستها", + "kind": "فیلتر بر اساس نوع (allow|deny|rate-limit|cost-cap)", + "scope": "فیلتر بر اساس دامنه (global|api-key|provider)" + }, + "get": { + "description": "دریافت جزئیات سیاست بر اساس شناسه" + }, + "create": { + "description": "ایجاد سیاست از یک فایل JSON", + "file": "مسیر فایل JSON سیاست" + }, + "update": { + "description": "بهروزرسانی سیاست از یک فایل JSON", + "file": "مسیر فایل JSON سیاست" + }, + "delete": { + "description": "حذف سیاست بر اساس شناسه", + "yes": "رد کردن درخواست تأیید" + }, + "evaluate": { + "description": "ارزیابی آزمایشی سیاست (خروجی 0=مجاز، 4=ردشده)", + "api_key": "کلید API برای ارزیابی", + "action": "کنش مورد بررسی (برای مثال chat، embed، admin)", + "resource": "مسیر یا شناسه منبع", + "context": "زمینه اضافی بهصورت شیء JSON" + }, + "export": { + "description": "برونبری همه سیاستها به یک فایل JSON" + }, + "import": { + "description": "درونریزی سیاستها از یک فایل JSON", + "overwrite": "بازنویسی سیاستهای موجود با شناسه یکسان" + } + }, + "compression": { + "description": "پیکربندی و بررسی خط لوله فشردهسازی OmniRoute", + "status": { + "description": "نمایش وضعیت و تنظیمات فعلی فشردهسازی" + }, + "configure": { + "description": "پیکربندی تنظیمات فشردهسازی", + "engine": "موتور فشردهسازی (caveman|rtk|hybrid|none)", + "caveman_agg": "میزان تهاجمیبودن Caveman از 0.0 تا 1.0", + "rtk_budget": "بودجه توکن RTK", + "language_pack": "بسته زبانی برای فعالسازی" + }, + "engine": { + "description": "دریافت یا تنظیم موتور فشردهسازی فعال" + }, + "combos": { + "description": "مدیریت آمار ترکیبی فشردهسازی" + }, + "rules": { + "description": "مدیریت قوانین فشردهسازی", + "add": { + "pattern": "الگوی تطبیق (regex یا field:pattern)", + "action": "عملیات: drop|shrink|replace" + } + }, + "language_packs": { + "description": "فهرست بستههای زبانی فشردهسازی موجود" + }, + "preview": { + "description": "پیشنمایش تأثیر فشردهسازی بر یک درخواست", + "file": "مسیر فایل JSON درخواست" + } + }, + "tunnel": { + "title": "تونلها", + "listDescription": "فهرست تونلهای فعال", + "createDescription": "ایجاد تونل", + "created": "تونل ایجاد شد: {url}", + "stopped": "تونل متوقف شد.", + "confirmStop": "تونل {id} متوقف شود؟", + "stopDescription": "توقف یک تونل", + "statusDescription": "نمایش وضعیت دقیق یک تونل", + "logsDescription": "نمایش گزارشهای یک تونل", + "infoDescription": "نمایش جزئیات پیکربندی یک تونل", + "rotateDescription": "ایجاد URL جدید برای تونل", + "tailOpt": "تعداد خطوط گزارش برای نمایش", + "typeRequired": "نوع تونل الزامی است.", + "noLogs": "هیچ گزارشی موجود نیست.", + "notAvailable": "اطلاعات تونل موجود نیست.", + "noTunnels": "هیچ تونل فعالی وجود ندارد.", + "infoTitle": "اطلاعات تونل: {type}", + "rotated": "URL تونل تغییر کرد: {url}", + "confirmRotate": "URL تونل {type} تغییر کند؟ (یک URL جدید ایجاد خواهد شد)" + }, + "stop": { + "description": "توقف سرور OmniRoute", + "stopping": "در حال توقف سرور (PID {pid})...", + "stopped": "سرور متوقف شد.", + "notRunning": "هیچ سروری در حال اجرا نیست.", + "portFallback": "هیچ فایل PID یافت نشد؛ تلاش برای توقف بر اساس پورت..." + }, + "restart": { + "description": "راهاندازی مجدد سرور OmniRoute", + "restarting": "در حال راهاندازی مجدد سرور OmniRoute..." + }, + "dashboard": { + "description": "باز کردن داشبورد OmniRoute در مرورگر", + "opening": "در حال باز کردن داشبورد در {url}", + "urlOnly": "چاپ URL داشبورد بدون باز کردن مرورگر", + "tui": "باز کردن داشبورد تعاملی TUI (رابط کاربری ترمینال، ۷ زبانه)" + }, + "models": { + "description": "فهرست مدلهای موجود (نیازمند سرور)", + "search": "فیلتر کردن مدلها بر اساس شناسه، نام، ارائهدهنده یا توضیحات", + "noServer": "سرور در حال اجرا نیست. با این دستور راهاندازی کنید: omniroute serve", + "noModels": "هیچ مدلی یافت نشد." + }, + "audit": { + "description": "دسترسی به گزارشهای ممیزی انطباق و MCP", + "source": "منبع گزارش: all|compliance|mcp (پیشفرض: all)", + "since": "برگرداندن ورودیها از این برچسب زمانی به بعد (ISO 8601)", + "until": "برگرداندن ورودیها تا این برچسب زمانی (ISO 8601)", + "tail": { + "description": "نمایش ورودیهای اخیر گزارش ممیزی", + "follow": "دنبالکردن پیوسته ورودیهای جدید (نظرسنجی هر 2 ثانیه)", + "limit": "حداکثر تعداد ورودیها برای نمایش (پیشفرض: 100)" + }, + "search": { + "description": "جستجوی ورودیهای گزارش ممیزی بر اساس کلیدواژه", + "limit": "حداکثر نتایج (پیشفرض: 200)", + "actor": "فیلتر بر اساس شناسه عامل", + "action": "فیلتر بر اساس نام کنش" + }, + "export": { + "description": "صدور گزارش ممیزی به فایل", + "format": "قالب خروجی: jsonl|csv (پیشفرض: jsonl)" + }, + "stats": { + "description": "نمایش آمار گزارش ممیزی", + "period": "بازه زمانی: 1d|7d|30d (پیشفرض: 7d)" + }, + "get": { + "description": "دریافت یک ورودی گزارش ممیزی بر اساس شناسه" + } + }, + "skills": { + "description": "مدیریت مهارتهای OmniRoute (sandbox، builtin، custom، hybrid، skillssh)", + "list": { + "description": "فهرست مهارتهای نصبشده", + "type": "فیلتر بر اساس نوع (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "نمایش فقط مهارتهای فعال", + "disabled": "نمایش فقط مهارتهای غیرفعال", + "api_key": "فیلتر بر اساس کلید API" + }, + "get": { + "description": "دریافت جزئیات یک مهارت بر اساس شناسه" + }, + "install": { + "description": "نصب یک مهارت از فایل یا URL", + "from_file": "مسیر فایل تعریف JSON مهارت", + "from_url": "URL تعریف مهارت راهدور", + "type": "نوع مهارت (sandbox|custom|hybrid)", + "enable": "فعالکردن مهارت پس از نصب" + }, + "enable": { + "description": "فعالکردن یک مهارت بر اساس شناسه" + }, + "disable": { + "description": "غیرفعالکردن یک مهارت بر اساس شناسه", + "yes": "رد کردن درخواست تأیید" + }, + "delete": { + "description": "حذف یک مهارت بر اساس شناسه", + "yes": "رد کردن درخواست تأیید" + }, + "execute": { + "description": "اجرای یک مهارت بر اساس شناسه", + "input": "شیء ورودی JSON", + "input_file": "مسیر فایل ورودی JSON", + "timeout": "مهلت اجرای عملیات بر حسب میلیثانیه (پیشفرض: 30000)" + }, + "executions": { + "description": "فهرست تاریخچه اجرای مهارت", + "skill": "فیلتر بر اساس شناسه مهارت", + "limit": "حداکثر نتایج (پیشفرض: 50)", + "status": "فیلتر بر اساس وضعیت (running|completed|failed)" + }, + "skillssh": { + "description": "مدیریت مهارتهای نصبشده از طریق SSH" + }, + "marketplace": { + "description": "مرور و نصب مهارتها از بازارچه" + }, + "mp": { + "search": { + "description": "جستوجوی بستههای بازارچه", + "category": "فیلتر بر اساس دستهبندی", + "tag": "فیلتر بر اساس برچسب", + "limit": "حداکثر نتایج (پیشفرض: 30)", + "sort": "مرتبسازی بر اساس: downloads|rating|recent" + }, + "info": { + "description": "نمایش جزئیات بسته و readme" + }, + "install": { + "description": "نصب یک بسته از بازارچه", + "version": "نسخه بسته (پیشفرض: latest)", + "enable": "فعالسازی پس از نصب", + "yes": "رد کردن درخواست تأیید" + }, + "categories": { + "description": "فهرست دستهبندیهای بازارچه" + }, + "featured": { + "description": "نمایش بستههای برگزیده بازارچه" + } + } + }, + "memory": { + "description": "مدیریت حافظه مکالمهای OmniRoute ‏(FTS5 + vector)", + "search": { + "description": "جستوجوی ورودیهای حافظه با پرسوجوی معنایی", + "type": "فیلتر بر اساس نوع حافظه (user|feedback|project|reference)", + "limit": "حداکثر نتایج (پیشفرض: 20)", + "api_key": "فیلتر بر اساس کلید API", + "token_budget": "محدود کردن مجموع توکنها در نتایج" + }, + "add": { + "description": "افزودن ورودی جدید به حافظه", + "content": "محتوای متنی حافظه", + "file": "خواندن محتوا از فایل", + "type": "نوع حافظه (پیشفرض: user)", + "metadata": "شیء فراداده JSON", + "api_key": "مرتبطسازی با کلید API" + }, + "clear": { + "description": "حذف ورودیهای حافظه مطابق با فیلترها", + "type": "فیلتر بر اساس نوع", + "older": "حذف ورودیهای قدیمیتر از مدتزمان مشخص (30d, 6m, 1y)", + "api_key": "فیلتر بر اساس کلید API", + "yes": "رد کردن درخواست تأیید" + }, + "list": { + "description": "فهرست کردن ورودیهای حافظه بدون رتبهبندی جستوجو", + "type": "فیلتر بر اساس نوع", + "limit": "حداکثر نتایج (پیشفرض: 100)", + "api_key": "فیلتر بر اساس کلید API" + }, + "get": { + "description": "دریافت یک ورودی حافظه بر اساس شناسه" + }, + "delete": { + "description": "حذف یک ورودی حافظه بر اساس شناسه", + "yes": "رد کردن درخواست تأیید" + }, + "health": { + "description": "نمایش سلامت زیرسامانه حافظه (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "مدیریت اتصالهای ارائهدهندگان OAuth", + "providers": { + "description": "فهرست ارائهدهندگان دارای قابلیت OAuth و انواع جریان آنها" + }, + "start": { + "description": "شروع جریان مجوزدهی OAuth برای یک ارائهدهنده", + "provider": "شناسه ارائهدهنده (gemini, copilot, cursor, …)", + "no_browser": "فقط URL را چاپ کن — مرورگر را باز نکن", + "import_system": "وارد کردن خودکار اطلاعات ورود از پیکربندی محلی سیستم", + "social": "ارائهدهنده ورود اجتماعی (google|github) — برای kiro الزامی است", + "timeout": "مهلت انتظار برای مجوزدهی بر حسب میلیثانیه (پیشفرض: 300000)" + }, + "status": { + "description": "فهرست اتصالهای فعال OAuth", + "provider": "فیلتر بر اساس شناسه ارائهدهنده" + }, + "revoke": { + "description": "لغو یک اتصال OAuth", + "provider": "شناسه ارائهدهنده برای لغو", + "connection_id": "لغو یک اتصال مشخص بر اساس شناسه", + "yes": "رد کردن درخواست تأیید" + } + }, + "cloud": { + "description": "مدیریت وظایف عامل هوش مصنوعی ابری (codex, devin, jules)", + "agents": { + "description": "فهرست عاملهای ابری موجود" + }, + "agent": { + "description": "مدیریت وظایف عامل ابری {agent}", + "auth": { + "description": "اعطای مجوز به {agent} از طریق OAuth" + } + }, + "task": { + "description": "مدیریت وظایف عامل ابری", + "create": { + "description": "ایجاد وظیفه جدید برای عامل", + "title": "عنوان وظیفه (پیشفرض: ۸۰ نویسه نخست درخواست)", + "prompt": "متن درخواست وظیفه", + "prompt_file": "خواندن درخواست از فایل", + "repo": "URL مخزن برای همسانهسازی جهت انجام وظیفه", + "branch": "نام شاخه مورد استفاده", + "metadata": "شیء فراداده JSON" + }, + "list": { + "description": "فهرست وظایف عامل", + "status": "فیلتر بر اساس وضعیت (running|completed|failed|cancelled)", + "limit": "حداکثر نتایج (پیشفرض: 50)" + }, + "get": { + "description": "دریافت جزئیات وظیفه بر اساس شناسه" + }, + "status": { + "description": "چاپ وضعیت وظیفه (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "لغو وظیفه در حال اجرا", + "yes": "رد کردن درخواست تأیید" + }, + "approve": { + "description": "تأیید برنامه عامل برای شروع اجرا" + }, + "message": { + "description": "ارسال پیام به یک وظیفه در حال اجرا" + } + }, + "sources": { + "description": "فهرست فایلهای منبع تولیدشده توسط یک وظیفه" + } + }, + "eval": { + "description": "مدیریت مجموعهها و اجراهای ارزیابی", + "suites": { + "description": "مدیریت مجموعههای ارزیابی", + "list": { + "description": "فهرست مجموعههای ارزیابی" + }, + "get": { + "description": "دریافت جزئیات مجموعه ارزیابی بر اساس ID" + }, + "create": { + "description": "ایجاد یک مجموعه ارزیابی از فایل JSON", + "file": "مسیر فایل JSON تعریف مجموعه" + } + }, + "run": { + "description": "شروع اجرای ارزیابی برای یک مجموعه", + "model": "ID مدل برای ارزیابی (پیشفرض: auto)", + "combo": "اجبار به استفاده از یک ترکیب مشخص بر اساس نام", + "concurrency": "تعداد نمونههای همزمان (پیشفرض: 4)", + "tag": "برچسبگذاری این اجرا برای فیلترکردن در آینده", + "watch": "مشاهده پیشرفت اجرا تا زمان تکمیل" + }, + "list": { + "description": "فهرست اجراهای ارزیابی", + "suite": "فیلتر بر اساس ID مجموعه", + "status": "فیلتر بر اساس وضعیت", + "since": "بازگرداندن اجراها از این برچسب زمانی به بعد", + "limit": "حداکثر نتایج (پیشفرض: 50)" + }, + "get": { + "description": "دریافت جزئیات اجرای ارزیابی بر اساس ID" + }, + "results": { + "description": "نمایش نتایج نمونهها برای یک اجرای ارزیابی", + "failed": "نمایش فقط نمونههای ناموفق" + }, + "cancel": { + "description": "لغو یک ارزیابی در حال اجرا", + "yes": "ردکردن درخواست تأیید" + }, + "scorecard": { + "description": "نمایش کارت امتیاز یک اجرای ارزیابی تکمیلشده" + } + }, + "webhooks": { + "description": "مدیریت وبهوکهای OmniRoute", + "events": { + "description": "فهرست همه انواع رویداد وبهوک موجود" + }, + "list": { + "description": "فهرست وبهوکهای پیکربندیشده" + }, + "get": { + "description": "دریافت جزئیات وبهوک بر اساس ID" + }, + "add": { + "description": "ثبت یک وبهوک جدید", + "url": "URL مقصد", + "events": "فهرست انواع رویداد با جداکننده ویرگول", + "secret": "رمز امضای HMAC", + "header": "هدر اضافی با قالب key=value (قابل تکرار)", + "no_enabled": "ایجاد وبهوک در حالت غیرفعال" + }, + "update": { + "description": "بهروزرسانی یک وبهوک موجود", + "enabled": "تنظیم وضعیت فعالبودن (true|false)" + }, + "remove": { + "description": "حذف یک وبهوک", + "yes": "ردکردن درخواست تأیید" + }, + "test": { + "description": "ارسال یک رویداد آزمایشی به وبهوک", + "event": "نوع رویداد برای شبیهسازی (پیشفرض: request.completed)" + } + }, "program": { "description": "OmniRoute — روتر هوشمند هوش مصنوعی با fallback خودکار", "version": "نمایش نسخه و خروج", @@ -26,7 +832,509 @@ "context": "زمینه/پروفایل سرور برای این دستور", "lang": "تنظیم زبان نمایش CLI (OMNIROUTE_LANG را نادیده می‌گیرد)" }, - "redis": { - "description": "راه‌اندازی کانتینر Redis محلی با یک کلیک (Podman یا Docker) برای حافظه پنهان و ردیابی سهمیه OmniRoute" + "files": { + "description": "مدیریت فایلها (بارگذاری، فهرستکردن، دریافت، دانلود، حذف)", + "list": { + "purpose": "فیلتر بر اساس کاربرد", + "limit": "حداکثر نتایج" + }, + "get": { + "description": "دریافت فرادادهٔ فایل" + }, + "upload": { + "description": "بارگذاری فایل", + "purpose": "هدف فایل (batch، assistants، fine-tune)" + }, + "content": { + "description": "دانلود محتوای فایل", + "out": "ذخیره در مسیر (پیشفرض: stdout)" + }, + "delete": { + "yes": "رد کردن تأیید" + } + }, + "batches": { + "description": "مدیریت کارهای دستهای سازگار با OpenAI", + "list": { + "status": "فیلتر بر اساس وضعیت", + "limit": "حداکثر نتایج" + }, + "create": { + "description": "ایجاد کار دستهای", + "inputFile": "شناسهٔ فایل ورودی", + "endpoint": "نقطهٔ پایانی مقصد", + "window": "بازهٔ تکمیل", + "metadata": "افزودن فراداده بهصورت key=value" + }, + "submit": { + "description": "بارگذاری فایل JSONL و ایجاد کار دستهای", + "jsonl": "مسیر فایل JSONL", + "endpoint": "نقطهٔ پایانی مقصد", + "wait": "انتظار تا تکمیل" + }, + "cancel": { + "yes": "رد کردن تأیید" + }, + "wait": { + "timeout": "مهلت زمانی بر حسب ms" + }, + "output": { + "out": "ذخیرهٔ خروجی در مسیر" + }, + "errors": { + "out": "ذخیرهٔ خطاها در مسیر" + } + }, + "translator": { + "description": "ترجمهٔ بدنهٔ درخواستها بین قالبهای LLM", + "detect": { + "description": "تشخیص قالب بدنه" + }, + "translate": { + "description": "تبدیل بدنه از یک قالب به قالب دیگر" + }, + "send": { + "description": "ترجمه و ارسال به بالادست" + }, + "stream": { + "description": "ترجمهٔ جریانی بدنهٔ درخواست" + }, + "from": "قالب مبدأ (openai|anthropic|gemini|cohere)", + "to": "قالب مقصد (openai|anthropic|gemini|cohere)", + "file": "مسیر فایل JSON بدنهٔ درخواست", + "out": "ذخیرهٔ خروجی در فایل", + "model": "بازنویسی مدل", + "history": { + "limit": "حداکثر نتایج" + } + }, + "pricing": { + "description": "مدیریت دادههای قیمتگذاری مدلها", + "sync": { + "description": "همگامسازی قیمتها از منابع بالادست", + "provider": "فیلتر بر اساس ارائهدهنده", + "force": "اجبار به همگامسازی مجدد" + }, + "list": { + "provider": "فیلتر بر اساس ارائهدهنده", + "model": "فیلتر بر اساس مدل", + "limit": "حداکثر نتایج" + }, + "defaults": { + "description": "مدیریت قیمتگذاری پیشفرض", + "input": "هزینه ورودی بهازای هر ۱ میلیون توکن (USD)", + "output": "هزینه خروجی بهازای هر ۱ میلیون توکن (USD)", + "cacheRead": "هزینه خواندن کش بهازای هر ۱ میلیون توکن (USD)", + "cacheWrite": "هزینه نوشتن کش بهازای هر ۱ میلیون توکن (USD)" + }, + "diff": { + "description": "نمایش اختلاف با قیمتهای منبع بالادستی", + "model": "فیلتر بر اساس مدل" + } + }, + "radar": { + "description": "بررسی و همگامسازی فیدهای کاتالوگ محلی Radar", + "status": "نمایش تنظیمات محلی Radar و وضعیت کش فید", + "sync": "همگامسازی کاتالوگ، ارجاعها، پیشنهادها و Intel از طریق سرور محلی" + }, + "resilience": { + "description": "بررسی و مدیریت سازوکارهای تابآوری", + "status": { + "provider": "فیلتر بر اساس ارائهدهنده" + }, + "breakers": { + "provider": "فیلتر بر اساس ارائهدهنده" + }, + "cooldowns": { + "provider": "فیلتر بر اساس ارائهدهنده", + "connectionId": "فیلتر بر اساس شناسه اتصال" + }, + "lockouts": { + "provider": "فیلتر بر اساس ارائهدهنده", + "model": "فیلتر بر اساس مدل" + }, + "reset": { + "description": "بازنشانی وضعیت قطعکننده/دوره انتظار", + "provider": "ارائهدهنده برای بازنشانی", + "connectionId": "شناسه اتصال برای بازنشانی", + "model": "مدل برای بازنشانی قفل موقت", + "allCooldowns": "بازنشانی همه دورههای انتظار ارائهدهنده", + "yes": "رد شدن از تأیید" + }, + "profile": { + "description": "مدیریت پروفایل تابآوری", + "name": "نام پروفایل" + }, + "config": { + "description": "مدیریت پیکربندی تابآوری", + "threshold": "آستانه خرابی", + "resetTimeout": "مهلت بازنشانی بر حسب میلیثانیه", + "baseCooldown": "دوره انتظار پایه بر حسب میلیثانیه" + } + }, + "nodes": { + "description": "مدیریت گرههای ارائهدهنده (نقاط پایانی)", + "list": { + "provider": "فیلتر بر اساس ارائهدهنده", + "enabled": "فقط نمایش گرههای فعال" + }, + "add": { + "provider": "نام ارائهدهنده", + "baseUrl": "نشانی URL پایه گره", + "name": "نام گره", + "weight": "وزن توزیع بار", + "region": "برچسب منطقه", + "authHeader": "هدر احراز هویت سفارشی (key=value)" + }, + "update": { + "baseUrl": "نشانی URL پایه جدید", + "name": "نام جدید", + "weight": "وزن جدید", + "region": "منطقه جدید", + "enabled": "فعال یا غیرفعالکردن (true|false)" + }, + "remove": { + "yes": "رد کردن تأیید" + }, + "validate": { + "baseUrl": "URL برای اعتبارسنجی", + "provider": "ارائهدهنده مورد استفاده برای اعتبارسنجی" + }, + "test": { + "description": "ارسال درخواست آزمایشی به گره" + }, + "metrics": { + "description": "نمایش معیارهای گره", + "period": "بازه زمانی (مثلاً 24h، 7d)" + } + }, + "context": { + "description": "پیکربندی خط لوله مهندسی زمینه (Caveman، RTK)", + "analytics": { + "period": "بازه زمانی (مثلاً 7d، 30d)" + }, + "caveman": { + "description": "مدیریت فشردهساز زمینه Caveman", + "config": { + "description": "نمایش یا بهروزرسانی پیکربندی Caveman", + "aggressiveness": "میزان تهاجمیبودن 0.0–1.0", + "maxShrinkPct": "حداکثر درصد کوچکسازی", + "preserveTags": "برچسبهای جداشده با ویرگول برای حفظکردن" + } + }, + "rtk": { + "description": "مدیریت بهینهساز زمینه RTK", + "config": { + "description": "نمایش یا بهروزرسانی پیکربندی RTK", + "tokenBudget": "بودجه توکن برای RTK", + "reservePct": "درصد ذخیره" + }, + "filters": { + "description": "مدیریت فیلترهای RTK", + "pattern": "الگوی فیلتر (regex)", + "priority": "اولویت فیلتر (پیشفرض: 100)", + "action": "عمل فیلتر: drop|shrink|replace", + "yes": "رد کردن تأیید" + }, + "test": { + "file": "مسیر فایل JSON درخواست" + } + }, + "combos": { + "description": "مدیریت ترکیبهای آگاه از زمینه" + } + }, + "sessions": { + "description": "بازرسی و مدیریت نشستهای فعال", + "list": { + "user": "فیلتر بر اساس کاربر", + "kind": "فیلتر بر اساس نوع (dashboard|api-key|mcp|a2a)", + "active": "فقط نمایش نشستهای فعال", + "limit": "حداکثر نتایج (پیشفرض: 100)" + }, + "expire": { + "yes": "رد کردن تأیید" + }, + "expireAll": { + "user": "کاربری که نشستهایش منقضی شوند", + "yes": "رد کردن تأیید" + } + }, + "tags": { + "description": "مدیریت برچسبهای منابع", + "add": { + "color": "رنگ برچسب (hex یا نام)", + "description": "توضیحات برچسب" + }, + "remove": { + "yes": "رد کردن تأیید" + }, + "assign": { + "tag": "نام برچسب", + "to": "منبع هدف بهصورت type:id (مثلاً provider:openai)" + }, + "unassign": { + "tag": "نام برچسب", + "from": "منبع مبدأ بهصورت type:id" + } + }, + "openapi": { + "description": "دسترسی و آزمایش مشخصات OpenAPI مربوط به OmniRoute", + "dump": { + "description": "تخلیه مشخصات OpenAPI در stdout یا فایل", + "format": "قالب خروجی: yaml|json (پیشفرض: yaml)", + "out": "ذخیره در مسیر فایل" + }, + "validate": { + "description": "اعتبارسنجی مشخصات OpenAPI" + }, + "try": { + "description": "آزمایش یک نقطه پایانی API از طریق مشخصات", + "method": "متد HTTP (پیشفرض: GET)", + "body": "مسیر فایل JSON بدنه درخواست", + "query": "پارامتر کوئری بهصورت key=value (قابل تکرار)", + "header": "هدر بهصورت key=value (قابل تکرار)" + }, + "endpoints": { + "description": "فهرستکردن همه نقاط پایانی API", + "search": "فیلتر بر اساس مسیر یا خلاصه" + }, + "paths": { + "description": "فهرستکردن همه مسیرهای API" + } + }, + "combo": { + "title": "ترکیبها", + "switched": "ترکیب فعال: {name}", + "created": "ترکیب ایجاد شد: {name}", + "deleted": "ترکیب حذف شد: {name}", + "noCombos": "هیچ ترکیبی پیکربندی نشده است.", + "confirmDelete": "ترکیب {name} حذف شود؟", + "suggest": { + "description": "پیشنهاد بهترین ترکیب برای یک وظیفه با استفاده از امتیازدهی هوش مصنوعی", + "task": "شرح وظیفه", + "maxCost": "حداکثر هزینه هر درخواست به USD", + "maxLatencyMs": "حداکثر تأخیر بر حسب میلیثانیه", + "weights": "وزنهای امتیازدهی JSON، مثلاً {\"latency\":0.7,\"cost\":0.3}", + "top": "تعداد نامزدهای برتر برای نمایش (پیشفرض: 5)", + "explain": "چاپ دلیل انتخاب در stderr", + "switch": "فعالکردن ترکیب دارای بالاترین رتبه" + } + }, + "oneproxy": { + "description": "مدیریت مخزن بالادستی OneProxy", + "stats": { + "provider": "فیلتر بر اساس ارائهدهنده", + "period": "بازه زمانی (پیشفرض: 24h)" + }, + "fetch": { + "description": "دریافت پروکسیها از مخزن", + "count": "تعداد پروکسیهای قابل دریافت (پیشفرض: 1)", + "type": "نوع پروکسی: http|socks5 (پیشفرض: http)" + }, + "rotate": { + "description": "اجبار به چرخش پروکسی", + "provider": "ارائهدهندهای که چرخش برای آن انجام میشود", + "connectionId": "شناسه اتصال مشخص برای چرخش" + }, + "config": { + "description": "نمایش یا بهروزرسانی پیکربندی OneProxy", + "enabled": "فعالسازی مخزن پراکسی (true|false)", + "poolSize": "اندازه مخزن", + "providerSource": "URL ارائهدهنده پراکسی", + "rotationPolicy": "سیاست چرخش: sticky|per-request|periodic" + }, + "pool": { + "description": "فهرست مخزن فعلی پراکسی همراه با معیارها" + } + }, + "open": { + "description": "باز کردن یک صفحه مشخص از داشبورد OmniRoute در مرورگر", + "url": "فقط URL را نمایش بده، مرورگر را باز نکن" + }, + "telemetry": { + "description": "دسترسی به دادههای تجمیعشده تلهمتری", + "summary": { + "description": "نمایش خلاصه تلهمتری تجمیعشده", + "period": "بازه زمانی: 24h|7d|30d (پیشفرض: 24h)", + "compareTo": "مقایسه با بازه قبلی" + }, + "export": { + "description": "صدور رویدادهای تلهمتری به JSONL", + "out": "مسیر فایل خروجی (پیشفرض: telemetry.jsonl)", + "period": "بازه زمانی برای صدور (پیشفرض: 7d)" + } + }, + "sync": { + "description": "همگامسازی پیکربندی بین نمونههای OmniRoute", + "push": { + "description": "ارسال پیکربندی به فضای ابری یا نمونه راهدور", + "target": "مقصد (cloud یا context:name)", + "bundle": "بخشهای بسته برای همگامسازی", + "dryRun": "پیشنمایش بدون اعمال تغییرات" + }, + "pull": { + "description": "دریافت پیکربندی از فضای ابری یا نمونه راهدور", + "source": "منبع (cloud یا context:name)", + "merge": "ادغام با پیکربندی موجود", + "replace": "جایگزینی پیکربندی موجود", + "dryRun": "پیشنمایش بدون اعمال تغییرات" + }, + "diff": { + "source": "زمینه مبدأ", + "target": "زمینه مقصد" + }, + "bundle": { + "description": "صدور پیکربندی بهصورت فایل بسته", + "include": "بخشهای قابل درج (جداشده با ویرگول)" + }, + "import": { + "description": "وارد کردن فایل بسته", + "dryRun": "اعتبارسنجی بدون اعمال تغییرات" + }, + "initialize": { + "fromCloud": "راهاندازی اولیه از نسخه پشتیبان ابری" + }, + "tokens": { + "description": "مدیریت توکنهای همگامسازی", + "create": { + "name": "نام توکن", + "scope": "دامنه توکن", + "ttl": "TTL توکن (برای مثال 30d)" + }, + "revoke": { + "yes": "رد کردن تأیید" + } + }, + "resolve": { + "description": "رفع تعارضهای همگامسازی بهصورت تعاملی" + } + }, + "config": { + "contexts": { + "description": "مدیریت زمینهها/نمایههای سرور (افزودن، استفاده، فهرست، نمایش، حذف، تغییر نام، صدور، وارد کردن)" + }, + "lang": { + "description": "مدیریت زبان نمایش CLI", + "getDescription": "نمایش کد زبان فعال فعلی", + "setDescription": "تنظیم زبان نمایش و ذخیره آن در پیکربندی", + "listDescription": "فهرست همه زبانهای موجود", + "listTitle": "زبانهای موجود", + "current": "زبان: {code} ({name})", + "saved": "زبان روی {code} ({name}) تنظیم شد.", + "noCode": "کد زبان الزامی است. برای مشاهده کدهای موجود، 'omniroute config lang list' را اجرا کنید.", + "unknown": "کد زبان ناشناخته است: {code}. برای مشاهده کدهای موجود، 'omniroute config lang list' را اجرا کنید.", + "alreadySet": "زبان از قبل روی {code} تنظیم شده است.", + "envHint": "نکته: همچنین میتوانید OMNIROUTE_LANG={code} را در محیط خود تنظیم کنید." + } + }, + "completion": { + "description": "تولید یا نصب اسکریپتهای تکمیل خودکار پوسته", + "zsh": "چاپ اسکریپت تکمیل خودکار zsh", + "bash": "چاپ اسکریپت تکمیل خودکار bash", + "fish": "چاپ اسکریپت تکمیل خودکار fish", + "install": "نصب سراسری اسکریپت تکمیل خودکار برای پوسته شناساییشده", + "refresh": "تازهسازی حافظه نهان ترکیبها، ارائهدهندگان و مدلها" + }, + "logs": { + "description": "پخش زنده یا برونبری گزارشهای درخواست", + "follow": "پخش زنده گزارشها بهصورت بلادرنگ", + "filter": "فیلتر بر اساس سطح (error,warn,info) — با جداکننده ویرگول", + "lines": "تعداد خطوط برای دریافت", + "timeout": "مهلت اتصال برحسب میلیثانیه", + "baseUrl": "نشانی پایه API OmniRoute", + "requestId": "فیلتر بر اساس شناسه درخواست", + "apiKey": "فیلتر بر اساس کلید API", + "combo": "فیلتر بر اساس نام ترکیب", + "status": "فیلتر بر اساس کد وضعیت HTTP", + "durationMin": "حداقل مدت درخواست برحسب میلیثانیه", + "durationMax": "حداکثر مدت درخواست برحسب میلیثانیه", + "export": "ذخیره گزارشها در فایل (json/jsonl/csv)", + "exported": "گزارشها در {path} ذخیره شدند", + "stopped": "پخش زنده گزارشها متوقف شد.", + "streamError": "خطای پخش زنده گزارشها: {message}" + }, + "tray": { + "description": "کنترل نماد سینی سیستم", + "show": "نمایش نماد سینی (اگر سرور با --tray در حال اجرا است)", + "hide": "پنهان کردن نماد سینی", + "quit": "خروج از OmniRoute از طریق سینی" + }, + "autostart": { + "description": "مدیریت اجرای خودکار OmniRoute هنگام راهاندازی سیستم (Linux: سرویس کاربر systemd)", + "enable": "فعالسازی اجرای خودکار هنگام راهاندازی سیستم", + "disable": "غیرفعالسازی اجرای خودکار هنگام راهاندازی سیستم", + "toggle": "تغییر وضعیت اجرای خودکار هنگام راهاندازی سیستم", + "status": "نمایش وضعیت اجرای خودکار" + }, + "runtime": { + "description": "مدیریت وابستگیهای بومی زمان اجرا", + "check": "بررسی وضعیت وابستگیهای بومی در پوشه زمان اجرا", + "repair": "نصب مجدد وابستگیهای بومی در پوشه زمان اجرا", + "repair_force": "نصب مجدد اجباری، حتی در صورت معتبر بودن", + "clean": "حذف پوشه زمان اجرا (فضای دیسک را آزاد میکند)", + "clean_yes": "رد کردن تأییدیه" + }, + "repl": { + "description": "REPL تعاملی چندمرحلهای با LLM", + "model": "مدل مورد استفاده (پیشفرض: auto)", + "combo": "نام ترکیب مورد استفاده", + "system": "پرامپت سیستمی", + "resume": "ازسرگیری یک نشست ذخیرهشده بر اساس نام" + }, + "plugin": { + "description": "مدیریت افزونههای CLI ‏(omniroute-cmd-*)", + "list": "فهرست افزونههای نصبشده", + "install": "نصب افزونه از npm یا مسیر محلی", + "remove": "حذف افزونه نصبشده", + "info": "نمایش جزئیات افزونه نصبشده", + "search": "جستوجوی رجیستری npm برای افزونههای موجود", + "update": "بهروزرسانی افزونههای نصبشده", + "scaffold": "ایجاد ساختار اولیه یک افزونه جدید" + }, + "launch": { + "description": "اجرای Claude Code با اتصال به OmniRoute (محلی یا راه دور، با --profile)", + "token": "توکنی که کلاینت Claude باید ارسال کند (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute در {port} در دسترس نیست. آن را با 'omniroute serve' راهاندازی کنید.", + "notFound": "CLI مربوط به 'claude' در PATH یافت نشد." + }, + "run": { + "description": "اجرای یک مقصد CLI پشتیبانیشده از طریق OmniRoute" + }, + "setupClaude": { + "description": "ایجاد پروفایلهای Claude Code در ~/.claude/profiles از کاتالوگ مدل OmniRoute" + }, + "connect": { + "description": "اتصال به یک سرور راه دور OmniRoute و ورود به حالت راه دور" + }, + "tokens": { + "description": "مدیریت توکنهای دسترسی CLI با دامنه مشخص (حالت راه دور)" + }, + "configure": { + "description": "انتخاب یک ارائهدهنده+مدل از سرور فعال و پیکربندی یک CLI محلی پشتیبانیشده" + }, + "launchCodex": { + "description": "اجرای Codex CLI با اتصال به OmniRoute (محلی یا VPS راه دور)" + }, + "setupCodex": { + "description": "ایجاد فایلهای پروفایل ~/.codex از کاتالوگ زنده مدل OmniRoute" + }, + "packs": { + "description": "مدیریت بستههای اختیاری زمان اجرا (ML / خودکارسازی مرورگر)", + "listDescription": "فهرست بستههای اختیاری و وضعیت نصب آنها", + "installDescription": "نصب یک بسته اختیاری در DATA_DIR", + "verifyDescription": "اعتبارسنجی بستههای نصبشده با فهرست چکسام ارائهشده", + "removeDescription": "حذف یک بسته اختیاری نصبشده", + "sourceOpt": "پوشه حاوی محتوای بستهها و فهرست بستهها", + "warnNoIndex": "optional-packs.index.json یافت نشد — نصب/اعتبارسنجی در این نسخه در دسترس نیست (بستههای دسکتاپ آن را شامل میشوند)", + "errUnknown": "بسته ناشناخته: {name}", + "errNoIndex": "فهرست بستهها یافت نشد؛ --source را با پوشه حاوی محتوای بسته وارد کنید (بستههای دسکتاپ آن را در کنار برنامه شامل میشوند)", + "installed": "بسته «{name}» در {dir} نصب و اعتبارسنجی شد", + "restartHint": "سرور OmniRoute (یا برنامه دسکتاپ) را دوباره راهاندازی کنید تا محیط اجرا بسته را شناسایی کند", + "removed": "بسته «{name}» حذف شد", + "notInstalled": "بسته «{name}» نصب نشده بود", + "verifyOk": "همه بستههای نصبشده تأیید شدند", + "verifyFailed": "تأیید {count} بسته ناموفق بود", + "noneInstalled": "هیچ بسته اختیاریای نصب نشده است" } } diff --git a/bin/cli/locales/fi.json b/bin/cli/locales/fi.json index defc36a13b..3d3ac9486b 100644 --- a/bin/cli/locales/fi.json +++ b/bin/cli/locales/fi.json @@ -14,6 +14,812 @@ "jsonOpt": "Tulosta JSON-muodossa", "yesOpt": "Ohita vahvistuspyyntö" }, + "setup": { + "title": "OmniRoute-asennus", + "passwordPrompt": "Ylläpitäjän salasana", + "providerPrompt": "Oletuspalveluntarjoaja (jätä tyhjäksi ohittaaksesi)", + "done": "Asennus valmis", + "passwordSet": "Ylläpitäjän salasana määritetty", + "providerSet": "Palveluntarjoaja määritetty: {name}", + "testingProvider": "Testataan palveluntarjoajan yhteyttä: {name}", + "testPassed": "Palveluntarjoajan testi onnistui", + "testFailed": "Palveluntarjoajan testi epäonnistui: {error}", + "loginEnabled": "Kirjautuminen: käytössä (salasana päivitetty)", + "loginDisabled": "Kirjautuminen: poistettu käytöstä", + "providerInfo": "Palveluntarjoaja: {info}", + "opencode": "Asenna ja määritä mukana toimitettu @omniroute/opencode-plugin OpenCodea varten" + }, + "doctor": { + "title": "OmniRoute Doctor", + "dbOk": "Tietokanta: OK ({path})", + "dbMissing": "Tietokantaa ei ole alustettu — suorita `omniroute setup`", + "portOk": "Portti {port}: käytettävissä", + "portConflict": "Portti {port}: toisen prosessin käytössä", + "encryptionOk": "Salausavain: määritetty", + "encryptionMissing": "Salausavain puuttuu — suorita `omniroute setup`", + "allGood": "Kaikki tarkistukset läpäisty.", + "warnings": "{count} varoitus(ta) — katso yllä." + }, + "providers": { + "title": "Palveluntarjoajat", + "noProviders": "Palveluntarjoajia ei ole määritetty. Suorita: omniroute setup", + "testing": "Testataan palveluntarjoajaa {name}...", + "available": "{count} palveluntarjoaja(a) käytettävissä", + "connected": "Yhdistetty", + "disconnected": "Yhteys katkaistu", + "validationFailed": "Validointi epäonnistui: {error}", + "metrics": { + "description": "Näytä palveluntarjoajien suorituskykymittarit (viive, onnistumisaste, kustannukset)", + "provider": "Suodata palveluntarjoajan tunnuksen mukaan", + "connection_id": "Suodata yhteyden tunnuksen mukaan", + "period": "Ajanjakso: 1h|6h|24h|7d|30d (oletus: 24h)", + "metric": "Keskity tiettyyn mittarikenttään", + "sort": "Lajittele kentän mukaan (laskevasti)", + "limit": "Rivien enimmäismäärä (oletus: 50)", + "watch": "Päivitä 5 sekunnin välein (reaaliaikainen tila)", + "compare": "Pilkuilla erotetut palveluntarjoajien tunnukset rinnakkaista vertailua varten" + }, + "metric_single": { + "description": "Hae yksittäinen mittariarvo tietylle yhteydelle" + }, + "rotate": { + "description": "Vaihda palveluntarjoajayhteyden upstream-API-avain", + "newKeyOpt": "Uusi API-avaimen arvo (vältä: käytä mieluummin valitsinta --from-env)", + "fromEnvOpt": "Lue uusi avain ympäristömuuttujasta VAR", + "oauthOpt": "Käynnistä sen sijaan OAuth-uudelleentodennus", + "skipTestOpt": "Ohita avaimen vaihdon jälkeinen yhteystesti", + "dryRunOpt": "Näytä tehtävät muutokset tallentamatta niitä", + "confirmPrompt": "Korvataanko yhteyden \"{name}\" ({id}) API-avain? [y/N]", + "dryRunResult": "[dry-run] Yhteyden \"{name}\" ({id}) avain vaihdettaisiin. Muutoksia ei tehty.", + "oauthHint": "OAuth-yhteys — suorita: omniroute oauth {provider}", + "envVarEmpty": "Ympäristömuuttujaa {var} ei ole asetettu tai se on tyhjä.", + "success": "Yhteyden \"{name}\" avain vaihdettu. Vahvista suorittamalla `providers test {id}`.", + "testPassed": "Avaimen vaihdon jälkeinen testi onnistui.", + "testFailed": "Avaimen vaihdon jälkeinen testi epäonnistui: {error}" + }, + "status": { + "description": "Näytä kaikkien palveluntarjoajayhteyksien avainten tila (ikä, vanheneminen, jäähyaika)", + "providerOpt": "Suodata palveluntarjoajan nimen mukaan", + "header": "Tunnus Palveluntarjoaja Nimi Vanhenemisen tila Testin tila Jäähyaika päättyy", + "noData": "Palveluntarjoajayhteyksien tietoja ei ole saatavilla.", + "requiresServer": "providers status edellyttää, että OmniRoute-palvelin on käynnissä." + } + }, + "keys": { + "title": "API-avaimet", + "addDescription": "Lisää tai päivitä palveluntarjoajan API-avain", + "listDescription": "Luettele kaikki määritetyt API-avaimet", + "removeDescription": "Poista palveluntarjoajan API-avain", + "regenerateDescription": "Luo OmniRoute-API-avain uudelleen", + "revokeDescription": "Kumoa OmniRoute-API-avain", + "revealDescription": "Näytä peittämätön API-avaimen arvo", + "usageDescription": "Näytä API-avaimen viimeaikainen käyttö", + "usageLimitOpt": "Viimeisimpien pyyntöjen määrä", + "rotateDescription": "Luo uusi avain ja mitätöi vanha", + "graceOpt": "Armonaika (ms) ennen vanhan avaimen mitätöintiä", + "stdinOpt": "Lue API-avain vakiosyötteestä argumentin sijaan", + "added": "Avain lisätty palveluntarjoajalle {provider}.", + "removed": "Avain poistettu.", + "listed": "{count} avain(ta).", + "noKeys": "Avaimia ei ole määritetty.", + "noUsage": "Käyttötietoja ei löytynyt.", + "confirmRemove": "Poistetaanko avain {id}?", + "confirmRegenerate": "Luodaanko avain {id} uudelleen?", + "confirmRevoke": "Kumotaanko avain {id}?", + "confirmRotate": "Vaihdetaanko avain {id}? (vanha avain mitätöidään armonajan jälkeen)", + "regenerated": "Luotu uudelleen. Uusi avain: {key}", + "revoked": "Avain {id} kumottu.", + "rotated": "Avain {id} vaihdettiin. Uuden avaimen tunnus: {newId}", + "revealWarning": "⚠ Tämä näyttää koko peittämättömän avaimen. Varmista, ettei näyttöäsi näe kukaan muu.", + "providerRequired": "Palveluntarjoaja vaaditaan.", + "keyRequired": "API-avain vaaditaan.", + "stdinEmpty": "stdin-syötteen kautta ei annettu API-avainta.", + "unknownProvider": "Tuntematon palveluntarjoaja: {provider}", + "policy": { + "title": "Avainkäytäntö", + "showDescription": "Näytä avaimen nopeus-/kustannuskäytäntö", + "setDescription": "Aseta avaimen nopeus-/kustannuskäytäntö", + "rateLimitOpt": "Pyyntöjen enimmäismäärä minuutissa", + "maxCostOpt": "Enimmäiskustannus päivässä (USD)", + "allowedModelsOpt": "Pilkuilla eroteltu luettelo sallituista malleista", + "nothingToSet": "Käytäntökenttiä ei annettu. Käytä valintaa --rate-limit, --max-cost tai --allowed-models.", + "updated": "Käytäntö päivitettiin." + }, + "expiration": { + "title": "Avaimen vanheneminen", + "listDescription": "Luettele pian vanhenevat avaimet", + "daysOpt": "Näytä N päivän kuluessa vanhenevat avaimet", + "none": "Yksikään avain ei vanhene {days} päivän kuluessa.", + "listTitle": "{days} päivän kuluessa vanhenevat avaimet:" + } + }, + "authExport": { + "description": "Vie palveluntarjoajan SALAAMATTOMAT tunnistetiedot (vain paikallisesti, selväkielinen tuloste)", + "idOpt": "Vie vain tätä tunnusta/nimeä/palveluntarjoajaa vastaava yhteys", + "formatOpt": "Tulostusmuoto: json tai env", + "outOpt": "Kirjoita tuloste stdout-vakiotulosteen sijasta tiedostoon (kirjoitetaan käyttöoikeuksilla 0600)", + "forceOpt": "Vahvista ymmärtäväsi, että tämä tulostaa/kirjoittaa salaisuudet selväkielisinä", + "warning": "⚠ Tämä tulostaa/kirjoittaa SALAAMATTOMAT API-avaimet ja OAuth-tunnukset selväkielisinä. Varmista, että näyttösi, komentotulkkisi historia ja mahdolliset tulostiedostot pysyvät yksityisinä.", + "confirmHeading": "⚠ VAROITUS: tämä vie palveluntarjoajan SALAAMATTOMAT tunnistetiedot selväkielisinä", + "confirmBody": "Tämä komento purkaa valittujen yhteyksien apiKey-, accessToken-, refreshToken- ja\nidToken-arvojen salauksen ja tulostaa/kirjoittaa ne. Käsittele tulostetta salaisuutena.", + "confirmFooter": "Vahvista suorittamalla:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY vaaditaan tunnistetietojen vientiin.", + "notFound": "Yhteyttä ei löytynyt: {id}", + "invalidFormat": "Virheellinen muoto: {format}. Käytä muotoa json tai env." + }, + "stream": { + "description": "Suoratoista keskusteluvastaus SSE-tarkastustiloilla", + "file": "Lue kehote tiedostosta", + "stdin": "Lue kehote stdin-syötteestä", + "model": "Mallin tunnus (oletus: auto)", + "system": "Järjestelmäkehote", + "combo": "Pakota tietty nimetty yhdistelmä", + "max_tokens": "Vastauksen merkkijonojen enimmäismäärä", + "responses_api": "Käytä päätepistettä /v1/responses päätepisteen /v1/chat/completions sijasta", + "raw": "Tulosta raa'at SSE-rivit vastaanotetussa muodossa", + "debug": "Tulosta kunkin osan ajoitustiedot stderr-virtaan", + "save": "Tallenna kaikki SSE-tapahtumat .jsonl-tiedostoon", + "error": { + "empty_prompt": "Virhe: kehote vaaditaan (sijaintiargumentti, --file tai --stdin)" + } + }, + "usage": { + "description": "Käyttöanalytiikka, budjetit, kiintiöt ja lokit", + "analytics": { + "description": "Näytä koostettu käyttöanalytiikka", + "period": "Aikaväli: 1d|7d|30d|90d|ytd|all (oletus: 30d)", + "provider": "Suodata palveluntarjoajan tunnuksen mukaan" + }, + "budget": { + "description": "Hallinnoi kustannusbudjetteja", + "set": { + "scope": "Budjetin laajuus (oletus: global)", + "period": "Budjettijakso: daily|weekly|monthly (oletus: monthly)" + } + }, + "quota": { + "description": "Näytä palveluntarjoajan kiintiön käyttö", + "provider": "Suodata palveluntarjoajan tunnuksen mukaan", + "check": "Näytä, onko kiintiötä käytettävissä uudelle pyynnölle" + }, + "logs": { + "description": "Näytä pyyntökutsujen lokit", + "limit": "Palautettavien lokimerkintöjen määrä (oletus: 100)", + "search": "Hakukysely lokien suodattamiseen", + "since": "Palauta lokit tästä aikaleimasta alkaen", + "follow": "Seuraa jatkuvasti uusia lokimerkintöjä", + "api_key": "Suodata lokit API-avaimen mukaan" + }, + "utilization": { + "description": "Näytä API-avaimen käyttöastemittarit", + "api_key": "Suodata API-avaimen mukaan" + }, + "history": { + "description": "Näytä pyyntöhistoria", + "limit": "Historiamerkintöjen määrä (oletus: 100)" + }, + "proxy_logs": { + "description": "Näytä välityspalvelintason pyyntölokit", + "limit": "Välityspalvelimen lokimerkintöjen määrä (oletus: 100)" + } + }, + "cost": { + "description": "Näytä kustannusraportti eriteltynä palveluntarjoajan, mallin, yhdistelmän tai API-avaimen mukaan", + "period": "Aikaväli: 1d|7d|30d|90d|ytd|all (oletus: 30d)", + "since": "Alkamispäivä (ISO-muoto, esim. 2026-01-01) — ohittaa --period-asetuksen", + "until": "Päättymispäivä (ISO-muoto)", + "group_by": "Ryhmittele tulokset seuraavasti: provider|model|api-key|combo|day (oletus: provider)", + "api_key_filter": "Suodata tietyn API-avaimen mukaan", + "limit": "Näytettävien rivien enimmäismäärä (oletus: 100)" + }, + "simulate": { + "description": "Reitityksen testiajosimulaatio — näytä, mitkä palveluntarjoajat valittaisiin, kutsumatta ylävirran palvelua", + "file": "Lataa pyynnön koko runko JSON-tiedostosta", + "model": "Mallitunnus (oletus: auto)", + "combo": "Pakota tietty yhdistelmä nimen perusteella", + "reasoning": "Päättelyn vaativuustaso (low|medium|high)", + "thinking": "Laajennetun päättelyn token-budjetti", + "explain": "Tulosta varapolkujen puu ja kustannusväli stderr-virtaan", + "noCombo": "Vastaavaa yhdistelmää ei löytynyt. Määritä sellainen komennolla: omniroute combo create" + }, + "chat": { + "description": "Lähetä kertaluonteinen keskustelukehote OmniRoutelle", + "file": "Lue kehote tiedostosta", + "stdin": "Lue kehote vakiosyötteestä", + "system": "Järjestelmäkehote", + "model": "Mallin tunnus (oletus: auto)", + "max_tokens": "Vastauksen enimmäistunnustemäärä", + "temperature": "Otannan lämpötila (0–2)", + "top_p": "Top-p-ydinotanta", + "reasoning_effort": "Päättelyn vaativuustaso (low|medium|high)", + "thinking_budget": "Laajennetun päättelyn tunnustebudjetti", + "combo": "Pakota tietty yhdistelmä nimen perusteella", + "responses_api": "Käytä /v1/responses-päätepistettä /v1/chat/completions-päätepisteen sijaan", + "stream": "Suoratoista vastaus vaiheittain", + "no_history": "Älä tallenna tiedostoon ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Virhe: kehote vaaditaan (sijaintiargumentti, --file tai --stdin)" + } + }, + "serve": { + "description": "Käynnistä OmniRoute-palvelin (oletustoiminto)", + "starting": "Käynnistetään OmniRoute-palvelin portissa {port}...", + "ready": "Valmis osoitteessa http://localhost:{port}", + "stopping": "Pysäytetään palvelinta (PID {pid})...", + "stopped": "Palvelin pysäytetty.", + "notRunning": "Palvelin ei ole käynnissä.", + "port": "Kuunneltava portti (oletus: 20128)", + "no_open": "Älä avaa selainta automaattisesti", + "daemon": "Suorita palvelin taustapalveluna", + "log": "Näytä palvelinlokit suoraan", + "no_recovery": "Poista automaattinen uudelleenkäynnistys käytöstä kaatumisen jälkeen (virheenkorjaustila)", + "max_restarts": "Kaatumisen jälkeisten uudelleenkäynnistysten enimmäismäärä 30 sekunnin sisällä ennen luovuttamista (oletus: 2)", + "tray": "Käynnistä ilmaisinalueella (vain työpöytäympäristössä, valinnainen)", + "no_tray": "Poista ilmaisinalueen kuvake käytöstä", + "ready_timeout": "Valmiustarkistuksen aikakatkaisu millisekunteina (myös OMNIROUTE_READY_TIMEOUT_MS, oletus 60000)", + "tls_cert": "HTTPS-palvelussa käytettävän TLS-varmenteen (PEM) polku (myös OMNIROUTE_TLS_CERT)", + "tls_key": "HTTPS-palvelussa käytettävän yksityisen TLS-avaimen (PEM) polku (myös OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Varmuuskopiointi", + "description": "Luo OmniRoute-tiedoista varmuuskopio", + "creating": "Luodaan varmuuskopiota...", + "done": "Varmuuskopio tallennettu polkuun {path}", + "noFiles": "Ei varmuuskopioitavia tiedostoja (tietokantaa ei ole alustettu)", + "failed": "Varmuuskopiointi epäonnistui: {error}", + "restoring": "Palautetaan polusta {path}...", + "restored": "Palautus valmis.", + "restoreDescription": "Palauta varmuuskopiosta", + "listTitle": "Saatavilla olevat varmuuskopiot", + "noBackups": "Varmuuskopioita ei löytynyt.", + "notFound": "Varmuuskopiota ei löytynyt: {name}", + "confirmRestore": "Korvataanko nykyiset tiedot varmuuskopiolla ajankohdalta {ts}?", + "createDescription": "Luo varmuuskopio OmniRoute-tiedoista", + "nameOpt": "Mukautettu varmuuskopion nimi", + "cloudOpt": "Lataa varmuuskopio pilvitallennustilaan", + "encryptOpt": "Salaa varmuuskopio AES-256-GCM-salauksella", + "keyFileOpt": "Salauslausetta sisältävän tiedoston polku", + "excludeOpt": "Ohita tiedostot, jotka vastaavat kuviota (voidaan toistaa)", + "retentionOpt": "Säilytä vain viimeisimmät N varmuuskopiota", + "passphrasePrompt": "Salauslause:", + "noPassphrase": "Salauslause vaaditaan salattua varmuuskopiota varten.", + "cloudFailed": "Varoitus: lataus pilveen epäonnistui. Paikallinen varmuuskopio tallennettiin.", + "cloudUploaded": "Varmuuskopio ladattu pilveen: {url}", + "auto": { + "title": "Varmuuskopiointiaikataulu", + "enableDescription": "Ota ajastetut automaattiset varmuuskopiot käyttöön", + "disableDescription": "Poista ajastetut automaattiset varmuuskopiot käytöstä", + "statusDescription": "Näytä varmuuskopiointiaikataulun nykyinen tila", + "cronOpt": "Aikataulun cron-lauseke (oletus: päivittäin klo 3)", + "enabled": "Automaattinen varmuuskopiointi käytössä (cron: {cron}).", + "hint": "omniroute serve lukee aikataulun käynnistyksen yhteydessä.", + "disabled": "Automaattinen varmuuskopiointi poistettu käytöstä.", + "notConfigured": "Varmuuskopiointiaikataulua ei ole määritetty." + } + }, + "health": { + "description": "Tarkista palvelimen kunto ja komponenttien tila", + "noServer": "Palvelin ei ole käynnissä. Käynnistä komennolla: omniroute serve", + "title": "Kunto", + "status": "Tila: {status}", + "uptime": "Käyttöaika: {uptime}", + "requests": "Pyynnöt (24 h): {count}", + "cost": "Kustannukset (24 h): ${cost}" + }, + "quota": { + "description": "Näytä palveluntarjoajan kiintiön käyttö", + "noServer": "Palvelin ei ole käynnissä. Käynnistä komennolla: omniroute serve", + "noData": "Kiintiötietoja ei ole saatavilla." + }, + "cache": { + "description": "Hallitse vastausvälimuistia", + "noServer": "Palvelin ei ole käynnissä. Käynnistä komennolla: omniroute serve", + "cleared": "Välimuisti tyhjennetty.", + "clearFailed": "Välimuistin tyhjentäminen epäonnistui." + }, + "redis": { + "description": "Käynnistä paikallinen Redis-säiliö yhdellä napsautuksella (Podman tai Docker) OmniRoute-välimuistia ja kiintiöiden seurantaa varten" + }, + "test": { + "description": "Testaa yhteys palveluntarjoajaan", + "noServer": "Palvelin ei ole käynnissä. Käynnistä komennolla: omniroute serve", + "testing": "Testataan: {provider} / {model}...", + "passed": "Yhteys onnistui!", + "failed": "Yhteys epäonnistui: {error}", + "allProvidersOpt": "Testaa kaikki määritetyt palveluntarjoajat", + "latencyOpt": "Näytä viivemittaukset (keskiarvo/minimi/maksimi ms)", + "repeatOpt": "Toista testi N kertaa ja yhdistä tulokset", + "compareOpt": "Pilkuilla erotetut vertailtavat mallit (esim. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Tallenna tulokset JSON-tiedostoon", + "saved": "Tulokset tallennettu polkuun {path}", + "compareTitle": "Mallien vertailu", + "compareMinTwo": "Valitsin --compare vaatii vähintään kaksi mallia (pilkuilla eroteltuina)", + "noProviders": "Palveluntarjoajia ei ole määritetty. Lisää palveluntarjoaja komennolla: omniroute keys add" + }, + "update": { + "checking": "Tarkistetaan päivityksiä...", + "upToDate": "Käytössä on jo uusin versio ({version}).", + "available": "Päivitys saatavilla: {current} → {latest}", + "installing": "Asennetaan versiota {latest}...", + "done": "Päivitetty versioon {latest}. Ota päivitys käyttöön käynnistämällä palvelin uudelleen." + }, + "mcp": { + "title": "MCP-palvelin", + "running": "MCP-palvelin on käynnissä ({transport})", + "stopped": "MCP-palvelin pysäytetty.", + "restarted": "MCP-palvelin käynnistetty uudelleen.", + "stoppedHint": "Ota se käyttöön komennolla `omniroute mcp enable`.", + "enabled": "MCP-palvelin otettu käyttöön.", + "disabled": "MCP-palvelin poistettu käytöstä.", + "enable": { + "description": "Ota MCP-palvelin käyttöön", + "transport": "Käytettävä siirtotapa: stdio|sse|streamable-http" + }, + "disable": { + "description": "Poista MCP-palvelin käytöstä" + }, + "call": { + "description": "Kutsu MCP-työkalua suoraan", + "args": "JSON-argumenttiobjekti (sisäkkäisenä)", + "args_file": "JSON-argumenttitiedoston polku", + "stream": "Käytä suoratoistopäätepistettä (/api/mcp/stream)", + "scope": "Vaadittu käyttöoikeusalue (toistettavissa, esim. read:health)" + }, + "scopes": { + "description": "Luettele käytettävissä olevat MCP-käyttöoikeusalueet", + "tool": "Näytä tietyn työkalun vaatimat käyttöoikeusalueet" + }, + "tools": { + "description": "Tarkastele MCP-työkaluja", + "list": { + "description": "Luettele kaikki MCP-työkalut", + "scope": "Suodata käyttöoikeusalueen mukaan" + }, + "info": { + "description": "Näytä MCP-työkalun metatiedot" + }, + "schema": { + "description": "Näytä MCP-työkalun syötteen ja tulosteen JSON-skeema", + "io": "Skeeman tyyppi: input|output (oletus: input)" + } + }, + "audit": { + "description": "MCP-auditointiloki (alias komennolle audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Luettele agenttikortin käytettävissä olevat A2A-taidot" + }, + "invoke": { + "description": "Kutsu A2A-taitoa ja palauta tehtävän tunnus", + "input": "JSON-syöteobjekti", + "input_file": "JSON-syötetiedoston polku", + "wait": "Odota tehtävän valmistumista ennen palautusta", + "timeout": "Valmistumisen odotuksen aikakatkaisu millisekunteina (oletus: 60000)" + }, + "tasks": { + "description": "Hallinnoi A2A-tehtäviä", + "list": { + "status": "Suodata tilan mukaan", + "skill": "Suodata taidon tunnuksen mukaan" + }, + "watch": { + "description": "Tarkista tehtävän tila toistuvasti valmistumiseen asti" + }, + "stream": { + "description": "Suoratoista tehtävän suoritustapahtumat SSE:n kautta" + }, + "logs": { + "description": "Näytä tehtävän viestit ja artefaktit" + } + } + }, + "policy": { + "description": "Hallinnoi OmniRoute-valtuutuskäytäntöjä", + "list": { + "description": "Luettele käytännöt", + "kind": "Suodata tyypin mukaan (allow|deny|rate-limit|cost-cap)", + "scope": "Suodata käyttöalueen mukaan (global|api-key|provider)" + }, + "get": { + "description": "Hae käytännön tiedot tunnuksen perusteella" + }, + "create": { + "description": "Luo käytäntö JSON-tiedostosta", + "file": "Käytännön JSON-tiedoston polku" + }, + "update": { + "description": "Päivitä käytäntö JSON-tiedostosta", + "file": "Käytännön JSON-tiedoston polku" + }, + "delete": { + "description": "Poista käytäntö tunnuksen perusteella", + "yes": "Ohita vahvistuskehote" + }, + "evaluate": { + "description": "Käytännön arvioinnin kuiva-ajo (poistumiskoodi 0=sallittu, 4=estetty)", + "api_key": "Arvioitava API-avain", + "action": "Tarkistettava toiminto (esim. chat, embed, admin)", + "resource": "Resurssipolku tai tunniste", + "context": "Lisäkonteksti JSON-objektina" + }, + "export": { + "description": "Vie kaikki käytännöt JSON-tiedostoon" + }, + "import": { + "description": "Tuo käytännöt JSON-tiedostosta", + "overwrite": "Korvaa olemassa olevat käytännöt, joilla on sama tunnus" + } + }, + "compression": { + "description": "Määritä OmniRoute-pakkausputken asetukset ja tarkastele sitä", + "status": { + "description": "Näytä pakkauksen nykyinen tila ja asetukset" + }, + "configure": { + "description": "Määritä pakkausasetukset", + "engine": "Pakkausmoottori (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-aggressiivisuus 0.0–1.0", + "rtk_budget": "RTK-tunnistebudjetti", + "language_pack": "Aktivoitava kielipaketti" + }, + "engine": { + "description": "Hae tai aseta aktiivinen pakkausmoottori" + }, + "combos": { + "description": "Hallitse pakkausyhdistelmien tilastoja" + }, + "rules": { + "description": "Hallitse pakkaussääntöjä", + "add": { + "pattern": "Täsmättävä kuvio (regex tai kenttä:kuvio)", + "action": "Toiminto: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Luettele saatavilla olevat pakkauksen kielipaketit" + }, + "preview": { + "description": "Esikatsele pakkauksen vaikutusta pyyntöön", + "file": "Pyynnön JSON-tiedoston polku" + } + }, + "tunnel": { + "title": "Tunnelit", + "listDescription": "Luettele aktiiviset tunnelit", + "createDescription": "Luo tunneli", + "created": "Tunneli luotu: {url}", + "stopped": "Tunneli pysäytetty.", + "confirmStop": "Pysäytetäänkö tunneli {id}?", + "stopDescription": "Pysäytä tunneli", + "statusDescription": "Näytä tunnelin yksityiskohtainen tila", + "logsDescription": "Näytä tunnelin lokit", + "infoDescription": "Näytä tunnelin määritysten tiedot", + "rotateDescription": "Luo uusi tunnelin URL-osoite", + "tailOpt": "Näytettävien lokirivien määrä", + "typeRequired": "Tunnelin tyyppi vaaditaan.", + "noLogs": "Lokeja ei ole saatavilla.", + "notAvailable": "Tunnelin tietoja ei ole saatavilla.", + "noTunnels": "Ei aktiivisia tunneleita.", + "infoTitle": "Tunnelin tiedot: {type}", + "rotated": "Tunnelin URL-osoite vaihdettu: {url}", + "confirmRotate": "Vaihdetaanko tunnelin {type} URL-osoite? (uusi URL-osoite luodaan)" + }, + "stop": { + "description": "Pysäytä OmniRoute-palvelin", + "stopping": "Pysäytetään palvelinta (PID {pid})...", + "stopped": "Palvelin pysäytetty.", + "notRunning": "Palvelin ei ole käynnissä.", + "portFallback": "PID-tiedostoa ei löytynyt, yritetään pysäyttää portin perusteella..." + }, + "restart": { + "description": "Käynnistä OmniRoute-palvelin uudelleen", + "restarting": "Käynnistetään OmniRoute-palvelinta uudelleen..." + }, + "dashboard": { + "description": "Avaa OmniRoute-hallintapaneeli selaimessa", + "opening": "Avataan hallintapaneeli osoitteessa {url}", + "urlOnly": "Tulosta hallintapaneelin URL-osoite avaamatta selainta", + "tui": "Avaa interaktiivinen TUI-hallintapaneeli (päätelaitteen käyttöliittymä, 7 välilehteä)" + }, + "models": { + "description": "Luettele saatavilla olevat mallit (vaatii palvelimen)", + "search": "Suodata malleja tunnuksen, nimen, palveluntarjoajan tai kuvauksen perusteella", + "noServer": "Palvelin ei ole käynnissä. Käynnistä komennolla: omniroute serve", + "noModels": "Malleja ei löytynyt." + }, + "audit": { + "description": "Käytä vaatimustenmukaisuuden ja MCP:n valvontalokeja", + "source": "Lokilähde: all|compliance|mcp (oletus: all)", + "since": "Palauta merkinnät tästä aikaleimasta alkaen (ISO 8601)", + "until": "Palauta merkinnät tähän aikaleimaan asti (ISO 8601)", + "tail": { + "description": "Näytä viimeisimmät valvontalokimerkinnät", + "follow": "Seuraa jatkuvasti uusia merkintöjä (kysely 2 s:n välein)", + "limit": "Näytettävien merkintöjen enimmäismäärä (oletus: 100)" + }, + "search": { + "description": "Hae valvontalokimerkintöjä avainsanalla", + "limit": "Tulosten enimmäismäärä (oletus: 200)", + "actor": "Suodata toimijan tunnuksen perusteella", + "action": "Suodata toiminnon nimen perusteella" + }, + "export": { + "description": "Vie valvontaloki tiedostoon", + "format": "Tulostusmuoto: jsonl|csv (oletus: jsonl)" + }, + "stats": { + "description": "Näytä valvontalokin tilastot", + "period": "Ajanjakso: 1d|7d|30d (oletus: 7d)" + }, + "get": { + "description": "Hae yksittäinen valvontalokimerkintä tunnuksen perusteella" + } + }, + "skills": { + "description": "Hallinnoi OmniRoute-taitoja (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Luettele asennetut taidot", + "type": "Suodata tyypin perusteella (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Näytä vain käytössä olevat taidot", + "disabled": "Näytä vain käytöstä poistetut taidot", + "api_key": "Suodata API-avaimen perusteella" + }, + "get": { + "description": "Hae taidon tiedot tunnuksen perusteella" + }, + "install": { + "description": "Asenna taito tiedostosta tai URL-osoitteesta", + "from_file": "Taidon JSON-määritystiedoston polku", + "from_url": "Etätaidon määrityksen URL-osoite", + "type": "Taidon tyyppi (sandbox|custom|hybrid)", + "enable": "Ota taito käyttöön asennuksen jälkeen" + }, + "enable": { + "description": "Ota taito käyttöön tunnuksen perusteella" + }, + "disable": { + "description": "Poista taito käytöstä tunnuksen perusteella", + "yes": "Ohita vahvistuskehote" + }, + "delete": { + "description": "Poista taito tunnuksen perusteella", + "yes": "Ohita vahvistuskehote" + }, + "execute": { + "description": "Suorita taito tunnuksen perusteella", + "input": "JSON-syöteobjekti", + "input_file": "JSON-syötetiedoston polku", + "timeout": "Suorituksen aikakatkaisu millisekunteina (oletus: 30000)" + }, + "executions": { + "description": "Luettele taitojen suoritushistoria", + "skill": "Suodata taitotunnuksen mukaan", + "limit": "Tulosten enimmäismäärä (oletus: 50)", + "status": "Suodata tilan mukaan (running|completed|failed)" + }, + "skillssh": { + "description": "Hallitse SSH:n kautta asennettuja taitoja" + }, + "marketplace": { + "description": "Selaa ja asenna taitoja markkinapaikalta" + }, + "mp": { + "search": { + "description": "Hae markkinapaikan paketteja", + "category": "Suodata luokan mukaan", + "tag": "Suodata tunnisteen mukaan", + "limit": "Tulosten enimmäismäärä (oletus: 30)", + "sort": "Lajitteluperuste: downloads|rating|recent" + }, + "info": { + "description": "Näytä paketin tiedot ja readme-tiedosto" + }, + "install": { + "description": "Asenna markkinapaikan paketti", + "version": "Paketin versio (oletus: latest)", + "enable": "Ota käyttöön asennuksen jälkeen", + "yes": "Ohita vahvistuskehote" + }, + "categories": { + "description": "Luettele markkinapaikan luokat" + }, + "featured": { + "description": "Näytä markkinapaikan esittelyssä olevat paketit" + } + } + }, + "memory": { + "description": "Hallitse OmniRouten keskustelumuistia (FTS5 + vector)", + "search": { + "description": "Hae muistimerkintöjä semanttisella kyselyllä", + "type": "Suodata muistityypin mukaan (user|feedback|project|reference)", + "limit": "Tulosten enimmäismäärä (oletus: 20)", + "api_key": "Suodata API-avaimen mukaan", + "token_budget": "Rajoita tulosten tunnisteiden kokonaismäärää" + }, + "add": { + "description": "Lisää uusi muistimerkintä", + "content": "Muistin tekstisisältö", + "file": "Lue sisältö tiedostosta", + "type": "Muistityyppi (oletus: user)", + "metadata": "JSON-metatieto-objekti", + "api_key": "Liitä API-avaimeen" + }, + "clear": { + "description": "Poista suodattimia vastaavat muistimerkinnät", + "type": "Suodata tyypin mukaan", + "older": "Poista kestoa vanhemmat merkinnät (30d, 6m, 1y)", + "api_key": "Suodata API-avaimen mukaan", + "yes": "Ohita vahvistuskehote" + }, + "list": { + "description": "Luettele muistimerkinnät ilman hakutulosten järjestystä", + "type": "Suodata tyypin mukaan", + "limit": "Tulosten enimmäismäärä (oletus: 100)", + "api_key": "Suodata API-avaimen mukaan" + }, + "get": { + "description": "Hae yksittäinen muistimerkintä tunnuksen perusteella" + }, + "delete": { + "description": "Poista muistimerkintä tunnuksen perusteella", + "yes": "Ohita vahvistuskehote" + }, + "health": { + "description": "Näytä muistialijärjestelmän tila (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Hallitse OAuth-palveluntarjoajayhteyksiä", + "providers": { + "description": "Luettele OAuth-yhteensopivat palveluntarjoajat ja niiden työnkulkutyypit" + }, + "start": { + "description": "Käynnistä palveluntarjoajan OAuth-valtuutustyönkulku", + "provider": "Palveluntarjoajan tunnus (gemini, copilot, cursor, …)", + "no_browser": "Tulosta vain URL — älä avaa selainta", + "import_system": "Tuo tunnistetiedot automaattisesti paikallisista järjestelmäasetuksista", + "social": "Sosiaalisen kirjautumisen palveluntarjoaja (google|github) — pakollinen palvelulle kiro", + "timeout": "Valtuutuksen odotuksen aikakatkaisu millisekunteina (oletus: 300000)" + }, + "status": { + "description": "Luettele aktiiviset OAuth-yhteydet", + "provider": "Suodata palveluntarjoajan tunnuksen mukaan" + }, + "revoke": { + "description": "Peruuta OAuth-yhteys", + "provider": "Peruutettavan palveluntarjoajan tunnus", + "connection_id": "Peruuta tietty yhteys tunnuksen perusteella", + "yes": "Ohita vahvistuskehote" + } + }, + "cloud": { + "description": "Hallitse pilvipohjaisten AI-agenttien tehtäviä (codex, devin, jules)", + "agents": { + "description": "Luettele käytettävissä olevat pilviagentit" + }, + "agent": { + "description": "Hallitse pilviagentin {agent} tehtäviä", + "auth": { + "description": "Valtuuta {agent} OAuthilla" + } + }, + "task": { + "description": "Hallitse pilviagenttien tehtäviä", + "create": { + "description": "Luo uusi agenttitehtävä", + "title": "Tehtävän otsikko (oletuksena kehotteen ensimmäiset 80 merkkiä)", + "prompt": "Tehtäväkehotteen teksti", + "prompt_file": "Lue kehote tiedostosta", + "repo": "Tehtävää varten kloonattavan tietovaraston URL", + "branch": "Käytettävän haaran nimi", + "metadata": "JSON-metatieto-objekti" + }, + "list": { + "description": "Luettele agenttitehtävät", + "status": "Suodata tilan mukaan (running|completed|failed|cancelled)", + "limit": "Tulosten enimmäismäärä (oletus: 50)" + }, + "get": { + "description": "Hae tehtävän tiedot tunnuksen perusteella" + }, + "status": { + "description": "Tulosta tehtävän tila (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Peruuta käynnissä oleva tehtävä", + "yes": "Ohita vahvistuskehote" + }, + "approve": { + "description": "Hyväksy agentin suunnitelma suorituksen aloittamiseksi" + }, + "message": { + "description": "Lähetä viesti käynnissä olevaan tehtävään" + } + }, + "sources": { + "description": "Luettele tehtävän tuottamat lähdetiedostot" + } + }, + "eval": { + "description": "Hallitse arviointikokonaisuuksia ja arviointiajoja", + "suites": { + "description": "Hallitse arviointikokonaisuuksia", + "list": { + "description": "Listaa arviointikokonaisuudet" + }, + "get": { + "description": "Hae arviointikokonaisuuden tiedot tunnuksella" + }, + "create": { + "description": "Luo arviointikokonaisuus JSON-tiedostosta", + "file": "Kokonaisuuden määrityksen sisältävän JSON-tiedoston polku" + } + }, + "run": { + "description": "Aloita kokonaisuuden arviointiajo", + "model": "Arvioitavan mallin tunnus (oletus: auto)", + "combo": "Pakota tietty yhdistelmä nimen perusteella", + "concurrency": "Samanaikaisten näytteiden määrä (oletus: 4)", + "tag": "Merkitse tämä ajo tunnisteella myöhempää suodatusta varten", + "watch": "Seuraa ajon etenemistä valmistumiseen asti" + }, + "list": { + "description": "Listaa arviointiajot", + "suite": "Suodata kokonaisuuden tunnuksen perusteella", + "status": "Suodata tilan perusteella", + "since": "Palauta tämän aikaleiman jälkeiset ajot", + "limit": "Tulosten enimmäismäärä (oletus: 50)" + }, + "get": { + "description": "Hae arviointiajon tiedot tunnuksella" + }, + "results": { + "description": "Näytä arviointiajon näytetulokset", + "failed": "Näytä vain epäonnistuneet näytteet" + }, + "cancel": { + "description": "Peruuta käynnissä oleva arviointi", + "yes": "Ohita vahvistuskehote" + }, + "scorecard": { + "description": "Näytä valmistuneen arviointiajon tuloskortti" + } + }, + "webhooks": { + "description": "Hallitse OmniRoute-webhookeja", + "events": { + "description": "Listaa kaikki käytettävissä olevat webhook-tapahtumatyypit" + }, + "list": { + "description": "Listaa määritetyt webhookit" + }, + "get": { + "description": "Hae webhookin tiedot tunnuksella" + }, + "add": { + "description": "Rekisteröi uusi webhook", + "url": "Kohde-URL", + "events": "Pilkuilla eroteltu tapahtumatyyppien luettelo", + "secret": "HMAC-allekirjoitussalaisuus", + "header": "Ylimääräinen otsake muodossa key=value (toistettavissa)", + "no_enabled": "Luo webhook pois käytöstä -tilassa" + }, + "update": { + "description": "Päivitä olemassa oleva webhook", + "enabled": "Aseta käyttötila (true|false)" + }, + "remove": { + "description": "Poista webhook", + "yes": "Ohita vahvistuskehote" + }, + "test": { + "description": "Lähetä testitapahtuma webhookiin", + "event": "Simuloitava tapahtumatyyppi (oletus: request.completed)" + } + }, "program": { "description": "OmniRoute — Älykäs AI-reititin automaattisella fallbackilla", "version": "Tulosta versio ja poistu", @@ -26,7 +832,509 @@ "context": "Palvelimen konteksti/profiili tälle komennolle", "lang": "Aseta CLI-näyttökieli (ohittaa OMNIROUTE_LANG)" }, - "redis": { - "description": "Käynnistä paikallinen Redis-säiliö yhdellä napsautuksella (Podman tai Docker) OmniRoute-välimuistia ja kiintiöiden seurantaa varten" + "files": { + "description": "Hallitse tiedostoja (lähetä, listaa, hae, lataa, poista)", + "list": { + "purpose": "Suodata käyttötarkoituksen perusteella", + "limit": "Tulosten enimmäismäärä" + }, + "get": { + "description": "Hae tiedoston metatiedot" + }, + "upload": { + "description": "Lataa tiedosto palveluun", + "purpose": "Tiedoston käyttötarkoitus (batch, assistants, fine-tune)" + }, + "content": { + "description": "Lataa tiedoston sisältö", + "out": "Tallenna polkuun (oletus: stdout)" + }, + "delete": { + "yes": "Ohita vahvistus" + } + }, + "batches": { + "description": "Hallitse OpenAI-yhteensopivia erätöitä", + "list": { + "status": "Suodata tilan mukaan", + "limit": "Tulosten enimmäismäärä" + }, + "create": { + "description": "Luo erätyö", + "inputFile": "Syötetiedoston tunnus", + "endpoint": "Kohdepäätepiste", + "window": "Valmistumisaikaikkuna", + "metadata": "Lisää metatieto avain=arvo" + }, + "submit": { + "description": "Lataa JSONL-tiedosto palveluun ja luo erätyö", + "jsonl": "JSONL-tiedoston polku", + "endpoint": "Kohdepäätepiste", + "wait": "Odota valmistumista" + }, + "cancel": { + "yes": "Ohita vahvistus" + }, + "wait": { + "timeout": "Aikakatkaisu millisekunteina" + }, + "output": { + "out": "Tallenna tuloste polkuun" + }, + "errors": { + "out": "Tallenna virheet polkuun" + } + }, + "translator": { + "description": "Muunna pyyntöjen rungot LLM-muotojen välillä", + "detect": { + "description": "Tunnista rungon muoto" + }, + "translate": { + "description": "Muunna runko muodosta toiseen" + }, + "send": { + "description": "Muunna ja lähetä ylävirran palveluun" + }, + "stream": { + "description": "Muunna pyynnön runko suoratoistona" + }, + "from": "Lähdemuoto (openai|anthropic|gemini|cohere)", + "to": "Kohdemuoto (openai|anthropic|gemini|cohere)", + "file": "Pyynnön rungon sisältävän JSON-tiedoston polku", + "out": "Tallenna tuloste tiedostoon", + "model": "Ohita mallimääritys", + "history": { + "limit": "Tulosten enimmäismäärä" + } + }, + "pricing": { + "description": "Hallitse mallien hintatietoja", + "sync": { + "description": "Synkronoi hinnat ylävirran lähteistä", + "provider": "Suodata palveluntarjoajan mukaan", + "force": "Pakota uudelleensynkronointi" + }, + "list": { + "provider": "Suodata palveluntarjoajan mukaan", + "model": "Suodata mallin mukaan", + "limit": "Tulosten enimmäismäärä" + }, + "defaults": { + "description": "Hallitse oletushinnoittelua", + "input": "Syötteen hinta / 1 milj. tokenia (USD)", + "output": "Tulosteen hinta / 1 milj. tokenia (USD)", + "cacheRead": "Välimuistista lukemisen hinta / 1 milj. tokenia (USD)", + "cacheWrite": "Välimuistiin kirjoittamisen hinta / 1 milj. tokenia (USD)" + }, + "diff": { + "description": "Näytä poikkeama lähdehinnoista", + "model": "Suodata mallin mukaan" + } + }, + "radar": { + "description": "Tarkastele ja synkronoi paikallisia Radar-luettelosyötteitä", + "status": "Näytä paikalliset Radar-asetukset ja syötevälimuistin tila", + "sync": "Synkronoi luettelo, suosittelut, tarjoukset ja Intel paikallisen palvelimen kautta" + }, + "resilience": { + "description": "Tarkastele ja hallitse vikasietoisuusmekanismeja", + "status": { + "provider": "Suodata palveluntarjoajan mukaan" + }, + "breakers": { + "provider": "Suodata palveluntarjoajan mukaan" + }, + "cooldowns": { + "provider": "Suodata palveluntarjoajan mukaan", + "connectionId": "Suodata yhteystunnuksen mukaan" + }, + "lockouts": { + "provider": "Suodata palveluntarjoajan mukaan", + "model": "Suodata mallin mukaan" + }, + "reset": { + "description": "Nollaa katkaisijan/jäähdytysajan tila", + "provider": "Nollattava palveluntarjoaja", + "connectionId": "Nollattava yhteystunnus", + "model": "Malli, jonka lukitus nollataan", + "allCooldowns": "Nollaa kaikki palveluntarjoajan jäähdytysajat", + "yes": "Ohita vahvistus" + }, + "profile": { + "description": "Hallitse vikasietoisuusprofiilia", + "name": "Profiilin nimi" + }, + "config": { + "description": "Hallitse vikasietoisuusmäärityksiä", + "threshold": "Vikakynnys", + "resetTimeout": "Nollauksen aikakatkaisu millisekunteina", + "baseCooldown": "Perusjäähdytysaika millisekunteina" + } + }, + "nodes": { + "description": "Hallitse palveluntarjoajan solmuja (päätepisteitä)", + "list": { + "provider": "Suodata palveluntarjoajan mukaan", + "enabled": "Näytä vain käytössä olevat solmut" + }, + "add": { + "provider": "Palveluntarjoajan nimi", + "baseUrl": "Solmun perus-URL", + "name": "Solmun nimi", + "weight": "Kuormantasauksen painoarvo", + "region": "Aluetunniste", + "authHeader": "Mukautettu todennusotsake (key=value)" + }, + "update": { + "baseUrl": "Uusi perus-URL", + "name": "Uusi nimi", + "weight": "Uusi painotus", + "region": "Uusi alue", + "enabled": "Ota käyttöön tai poista käytöstä (true|false)" + }, + "remove": { + "yes": "Ohita vahvistus" + }, + "validate": { + "baseUrl": "Validoitava URL", + "provider": "Palveluntarjoaja, jota vasten validoidaan" + }, + "test": { + "description": "Lähetä testipyyntö solmulle" + }, + "metrics": { + "description": "Näytä solmun mittarit", + "period": "Ajanjakso (esim. 24h, 7d)" + } + }, + "context": { + "description": "Määritä kontekstinkäsittelyputki (Caveman, RTK)", + "analytics": { + "period": "Ajanjakso (esim. 7d, 30d)" + }, + "caveman": { + "description": "Hallitse Caveman-kontekstipakkaajaa", + "config": { + "description": "Näytä tai päivitä Caveman-määritykset", + "aggressiveness": "Aggressiivisuus 0.0–1.0", + "maxShrinkPct": "Kutistuksen enimmäisprosentti", + "preserveTags": "Säilytettävät pilkuin erotetut tunnisteet" + } + }, + "rtk": { + "description": "Hallitse RTK-kontekstioptimoijaa", + "config": { + "description": "Näytä tai päivitä RTK-määritykset", + "tokenBudget": "RTK:n tunnistebudjetti", + "reservePct": "Varaprosentti" + }, + "filters": { + "description": "Hallitse RTK-suodattimia", + "pattern": "Suodatusmalli (regex)", + "priority": "Suodattimen prioriteetti (oletus: 100)", + "action": "Suodattimen toiminto: drop|shrink|replace", + "yes": "Ohita vahvistus" + }, + "test": { + "file": "Pyynnön JSON-tiedoston polku" + } + }, + "combos": { + "description": "Kontekstitietoinen yhdistelmien hallinta" + } + }, + "sessions": { + "description": "Tarkastele ja hallitse aktiivisia istuntoja", + "list": { + "user": "Suodata käyttäjän mukaan", + "kind": "Suodata tyypin mukaan (dashboard|api-key|mcp|a2a)", + "active": "Näytä vain aktiiviset istunnot", + "limit": "Tulosten enimmäismäärä (oletus: 100)" + }, + "expire": { + "yes": "Ohita vahvistus" + }, + "expireAll": { + "user": "Käyttäjä, jonka istunnot vanhennetaan", + "yes": "Ohita vahvistus" + } + }, + "tags": { + "description": "Hallitse resurssitunnisteita", + "add": { + "color": "Tunnisteen väri (heksakoodi tai nimi)", + "description": "Tunnisteen kuvaus" + }, + "remove": { + "yes": "Ohita vahvistus" + }, + "assign": { + "tag": "Tunnisteen nimi", + "to": "Kohderesurssi muodossa tyyppi:id (esim. provider:openai)" + }, + "unassign": { + "tag": "Tunnisteen nimi", + "from": "Lähderesurssi muodossa tyyppi:id" + } + }, + "openapi": { + "description": "Käytä ja testaa OmniRoute OpenAPI -määritystä", + "dump": { + "description": "Tulosta OpenAPI-määritys vakiotulosteeseen tai tiedostoon", + "format": "Tulostusmuoto: yaml|json (oletus: yaml)", + "out": "Tallenna tiedostopolkuun" + }, + "validate": { + "description": "Validoi OpenAPI-määritys" + }, + "try": { + "description": "Testaa API-päätepistettä määrityksen avulla", + "method": "HTTP-menetelmä (oletus: GET)", + "body": "Pyynnön rungon JSON-tiedoston polku", + "query": "Kyselyparametri muodossa avain=arvo (voidaan toistaa)", + "header": "Otsake muodossa avain=arvo (voidaan toistaa)" + }, + "endpoints": { + "description": "Luettele kaikki API-päätepisteet", + "search": "Suodata polun tai yhteenvedon perusteella" + }, + "paths": { + "description": "Luettele kaikki API-polut" + } + }, + "combo": { + "title": "Yhdistelmät", + "switched": "Aktiivinen yhdistelmä: {name}", + "created": "Yhdistelmä luotu: {name}", + "deleted": "Yhdistelmä poistettu: {name}", + "noCombos": "Yhdistelmiä ei ole määritetty.", + "confirmDelete": "Poistetaanko yhdistelmä {name}?", + "suggest": { + "description": "Ehdota tehtävään parasta yhdistelmää tekoälypisteytyksen avulla", + "task": "Tehtävän kuvaus", + "maxCost": "Enimmäiskustannus pyyntöä kohden Yhdysvaltain dollareina", + "maxLatencyMs": "Enimmäisviive millisekunteina", + "weights": "JSON-pisteytyspainot, esim. {\"latency\":0.7,\"cost\":0.3}", + "top": "Näytettävien parhaiden ehdokkaiden määrä (oletus: 5)", + "explain": "Tulosta perustelut vakiovirhetulosteeseen", + "switch": "Aktivoi parhaaksi sijoittunut yhdistelmä" + } + }, + "oneproxy": { + "description": "Hallitse OneProxy-ylävirran välityspalvelinjoukkoa", + "stats": { + "provider": "Suodata palveluntarjoajan mukaan", + "period": "Ajanjakso (oletus: 24h)" + }, + "fetch": { + "description": "Nouda välityspalvelimia joukosta", + "count": "Noudettavien välityspalvelimien määrä (oletus: 1)", + "type": "Välityspalvelimen tyyppi: http|socks5 (oletus: http)" + }, + "rotate": { + "description": "Pakota välityspalvelimen vaihto", + "provider": "Palveluntarjoaja, jolle vaihto tehdään", + "connectionId": "Tietty vaihdettava yhteystunnus" + }, + "config": { + "description": "Näytä tai päivitä OneProxy-määritykset", + "enabled": "Ota välityspalvelinpooli käyttöön (true|false)", + "poolSize": "Poolin koko", + "providerSource": "Välityspalveluntarjoajan URL", + "rotationPolicy": "Kierrätyskäytäntö: sticky|per-request|periodic" + }, + "pool": { + "description": "Listaa nykyinen välityspalvelinpooli mittareineen" + } + }, + "open": { + "description": "Avaa tietty OmniRoute-hallintapaneelin sivu selaimessa", + "url": "Tulosta vain URL, älä avaa selainta" + }, + "telemetry": { + "description": "Käytä koostettuja telemetriatietoja", + "summary": { + "description": "Näytä koostettu telemetriayhteenveto", + "period": "Ajanjakso: 24h|7d|30d (oletus: 24h)", + "compareTo": "Vertaa edelliseen ajanjaksoon" + }, + "export": { + "description": "Vie telemetriatapahtumat JSONL-muotoon", + "out": "Tulostiedoston polku (oletus: telemetry.jsonl)", + "period": "Viennin ajanjakso (oletus: 7d)" + } + }, + "sync": { + "description": "Synkronoi määritykset OmniRoute-instanssien välillä", + "push": { + "description": "Lähetä määritykset pilveen tai etäinstanssiin", + "target": "Kohde (cloud tai context:name)", + "bundle": "Synkronoitavat paketin osat", + "dryRun": "Esikatsele ottamatta käyttöön" + }, + "pull": { + "description": "Nouda määritykset pilvestä tai etäinstanssista", + "source": "Lähde (cloud tai context:name)", + "merge": "Yhdistä olemassa oleviin määrityksiin", + "replace": "Korvaa olemassa olevat määritykset", + "dryRun": "Esikatsele ottamatta käyttöön" + }, + "diff": { + "source": "Lähdekonteksti", + "target": "Kohdekonteksti" + }, + "bundle": { + "description": "Vie määritykset pakettitiedostona", + "include": "Sisällytettävät osat (pilkuilla eroteltuina)" + }, + "import": { + "description": "Tuo pakettitiedosto", + "dryRun": "Vahvista ottamatta käyttöön" + }, + "initialize": { + "fromCloud": "Alusta pilvivarmuuskopiosta" + }, + "tokens": { + "description": "Hallitse synkronointitunnuksia", + "create": { + "name": "Tunnuksen nimi", + "scope": "Tunnuksen käyttöalue", + "ttl": "Tunnuksen TTL (esim. 30d)" + }, + "revoke": { + "yes": "Ohita vahvistus" + } + }, + "resolve": { + "description": "Ratkaise synkronointiristiriidat vuorovaikutteisesti" + } + }, + "config": { + "contexts": { + "description": "Hallitse palvelinkonteksteja/profiileja (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Hallitse CLI:n näyttökieltä", + "getDescription": "Näytä tällä hetkellä aktiivinen kielikoodi", + "setDescription": "Aseta näyttökieli ja tallenna se määrityksiin", + "listDescription": "Luettele kaikki saatavilla olevat kielet", + "listTitle": "Saatavilla olevat kielet", + "current": "Kieli: {code} ({name})", + "saved": "Kieleksi asetettiin {code} ({name}).", + "noCode": "Kielikoodi vaaditaan. Näet saatavilla olevat koodit suorittamalla komennon 'omniroute config lang list'.", + "unknown": "Tuntematon kielikoodi: {code}. Näet saatavilla olevat koodit suorittamalla komennon 'omniroute config lang list'.", + "alreadySet": "Kieleksi on jo asetettu {code}.", + "envHint": "Vinkki: voit myös asettaa ympäristössäsi muuttujan OMNIROUTE_LANG={code}." + } + }, + "completion": { + "description": "Luo tai asenna komentotulkin täydennysskriptit", + "zsh": "Tulosta zsh-täydennysskripti", + "bash": "Tulosta bash-täydennysskripti", + "fish": "Tulosta fish-täydennysskripti", + "install": "Asenna täydennysskripti järjestelmänlaajuisesti havaitulle komentotulkille", + "refresh": "Päivitä yhdistelmien, palveluntarjoajien ja mallien välimuisti" + }, + "logs": { + "description": "Suoratoista tai vie pyyntölokit", + "follow": "Suoratoista lokit reaaliajassa", + "filter": "Suodata tason mukaan (error,warn,info) — pilkuilla eroteltuina", + "lines": "Haettavien rivien määrä", + "timeout": "Yhteyden aikakatkaisu millisekunteina", + "baseUrl": "OmniRoute API:n perus-URL-osoite", + "requestId": "Suodata pyynnön tunnuksen mukaan", + "apiKey": "Suodata API-avaimen mukaan", + "combo": "Suodata yhdistelmän nimen mukaan", + "status": "Suodata HTTP-tilakoodin mukaan", + "durationMin": "Pyynnön vähimmäiskesto millisekunteina", + "durationMax": "Pyynnön enimmäiskesto millisekunteina", + "export": "Tallenna lokit tiedostoon (json/jsonl/csv)", + "exported": "Lokit tallennettiin polkuun {path}", + "stopped": "Lokien suoratoisto pysäytettiin.", + "streamError": "Virhe lokien suoratoistossa: {message}" + }, + "tray": { + "description": "Hallitse ilmaisinalueen kuvaketta", + "show": "Näytä ilmaisinalueen kuvake (jos palvelin on käynnissä valitsimella --tray)", + "hide": "Piilota ilmaisinalueen kuvake", + "quit": "Sulje OmniRoute ilmaisinalueen kautta" + }, + "autostart": { + "description": "Hallitse OmniRouten automaattista käynnistystä järjestelmän käynnistyessä (Linux: käyttäjän systemd-palvelu)", + "enable": "Ota automaattinen käynnistys käyttöön järjestelmän käynnistyessä", + "disable": "Poista automaattinen käynnistys käytöstä järjestelmän käynnistyessä", + "toggle": "Vaihda automaattisen käynnistyksen tilaa järjestelmän käynnistyessä", + "status": "Näytä automaattisen käynnistyksen tila" + }, + "runtime": { + "description": "Hallitse natiivien ajonaikaisten ympäristöjen riippuvuuksia", + "check": "Tarkista natiivien riippuvuuksien tila ajonaikaisen ympäristön hakemistossa", + "repair": "Asenna natiivit riippuvuudet uudelleen ajonaikaisen ympäristön hakemistoon", + "repair_force": "Pakota uudelleenasennus, vaikka riippuvuudet olisivat kelvollisia", + "clean": "Poista ajonaikaisen ympäristön hakemisto (vapauttaa levytilaa)", + "clean_yes": "Ohita vahvistus" + }, + "repl": { + "description": "Interaktiivinen monivaiheinen REPL LLM:n kanssa", + "model": "Käytettävä malli (oletus: auto)", + "combo": "Käytettävän yhdistelmän nimi", + "system": "Järjestelmäkehote", + "resume": "Jatka tallennettua istuntoa nimellä" + }, + "plugin": { + "description": "Hallitse CLI-liitännäisiä (omniroute-cmd-*)", + "list": "Luettele asennetut liitännäiset", + "install": "Asenna liitännäinen npm:stä tai paikallisesta polusta", + "remove": "Poista asennettu liitännäinen", + "info": "Näytä asennetun liitännäisen tiedot", + "search": "Etsi saatavilla olevia liitännäisiä npm-rekisteristä", + "update": "Päivitä asennetut liitännäiset", + "scaffold": "Luo uuden liitännäisen perusrakenne" + }, + "launch": { + "description": "Käynnistä Claude Code OmniRouteen yhdistettynä (paikallinen tai etäyhteys, --profile-valinnalla)", + "token": "Tunnus, joka Claude-asiakasohjelman tulee lähettää (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute ei ole tavoitettavissa portissa {port}. Käynnistä se komennolla 'omniroute serve'.", + "notFound": "'claude'-CLI:tä ei löytynyt PATH-ympäristömuuttujasta." + }, + "run": { + "description": "Käynnistä tuettu CLI-kohde OmniRouten kautta" + }, + "setupClaude": { + "description": "Luo ~/.claude/profiles Claude Code -profiilit OmniRouten malliluettelosta" + }, + "connect": { + "description": "Yhdistä OmniRoute-etäpalvelimeen ja siirry etätilaan" + }, + "tokens": { + "description": "Hallitse rajattuja CLI-käyttötunnuksia (etätila)" + }, + "configure": { + "description": "Valitse palveluntarjoaja ja malli aktiiviselta palvelimelta ja määritä tuettu paikallinen CLI" + }, + "launchCodex": { + "description": "Käynnistä Codex CLI OmniRouteen yhdistettynä (paikallinen tai VPS-etäpalvelin)" + }, + "setupCodex": { + "description": "Luo ~/.codex-profiilitiedostot OmniRouten reaaliaikaisesta malliluettelosta" + }, + "packs": { + "description": "Hallitse valinnaisia ajonaikaisen ympäristön paketteja (ML / selainautomaatio)", + "listDescription": "Luettele valinnaiset paketit ja niiden asennustila", + "installDescription": "Asenna valinnainen paketti DATA_DIR-hakemistoon", + "verifyDescription": "Tarkista asennetut paketit mukana toimitettua tarkistussummaindeksiä vasten", + "removeDescription": "Poista asennettu valinnainen paketti", + "sourceOpt": "Pakettien sisällöt ja paketti-indeksin sisältävä hakemisto", + "warnNoIndex": "optional-packs.index.json-tiedostoa ei löytynyt — asennus ja tarkistus eivät ole käytettävissä tässä lähdekopiossa (työpöytäsovelluspaketit sisältävät sen)", + "errUnknown": "tuntematon paketti: {name}", + "errNoIndex": "paketti-indeksiä ei löytynyt; anna --source , joka sisältää paketin sisällön (työpöytäsovelluspaketit sisältävät sen sovelluksen vieressä)", + "installed": "paketti \"{name}\" on asennettu ja tarkistettu hakemistossa {dir}", + "restartHint": "käynnistä OmniRoute-palvelin (tai työpöytäsovellus) uudelleen, jotta ajoympäristö ottaa paketin käyttöön", + "removed": "paketti \"{name}\" poistettu", + "notInstalled": "pakettia \"{name}\" ei ollut asennettu", + "verifyOk": "kaikki asennetut paketit tarkistettu", + "verifyFailed": "{count} paketin tarkistus epäonnistui", + "noneInstalled": "valinnaisia paketteja ei ole asennettu" } } diff --git a/bin/cli/locales/fr.json b/bin/cli/locales/fr.json index ceaa55afbd..776629ce6d 100644 --- a/bin/cli/locales/fr.json +++ b/bin/cli/locales/fr.json @@ -14,6 +14,812 @@ "jsonOpt": "Sortie au format JSON", "yesOpt": "Ignorer la confirmation" }, + "setup": { + "title": "Configuration d’OmniRoute", + "passwordPrompt": "Mot de passe administrateur", + "providerPrompt": "Fournisseur par défaut (laisser vide pour ignorer)", + "done": "Configuration terminée", + "passwordSet": "Mot de passe administrateur configuré", + "providerSet": "Fournisseur configuré : {name}", + "testingProvider": "Test de la connexion au fournisseur : {name}", + "testPassed": "Test du fournisseur réussi", + "testFailed": "Échec du test du fournisseur : {error}", + "loginEnabled": "Connexion : activée (mot de passe mis à jour)", + "loginDisabled": "Connexion : désactivée", + "providerInfo": "Fournisseur : {info}", + "opencode": "Installer et configurer le module @omniroute/opencode-plugin inclus pour OpenCode" + }, + "doctor": { + "title": "Diagnostic OmniRoute", + "dbOk": "Base de données : OK ({path})", + "dbMissing": "Base de données : non initialisée — exécutez `omniroute setup`", + "portOk": "Port {port} : disponible", + "portConflict": "Port {port} : utilisé par un autre processus", + "encryptionOk": "Clé de chiffrement : configurée", + "encryptionMissing": "Clé de chiffrement manquante — exécutez `omniroute setup`", + "allGood": "Toutes les vérifications ont réussi.", + "warnings": "{count} avertissement(s) — voir ci-dessus." + }, + "providers": { + "title": "Fournisseurs", + "noProviders": "Aucun fournisseur configuré. Exécutez : omniroute setup", + "testing": "Test de {name}...", + "available": "{count} fournisseur(s) disponible(s)", + "connected": "Connecté", + "disconnected": "Déconnecté", + "validationFailed": "Échec de la validation : {error}", + "metrics": { + "description": "Afficher les métriques de performance des fournisseurs (latence, taux de réussite, coût)", + "provider": "Filtrer par ID de fournisseur", + "connection_id": "Filtrer par ID de connexion", + "period": "Période : 1h|6h|24h|7d|30d (par défaut : 24h)", + "metric": "Se concentrer sur un champ de métrique spécifique", + "sort": "Trier par champ (ordre décroissant)", + "limit": "Nombre maximal de lignes (par défaut : 50)", + "watch": "Actualiser toutes les 5 s (mode direct)", + "compare": "ID de fournisseurs séparés par des virgules à comparer côte à côte" + }, + "metric_single": { + "description": "Obtenir une valeur de métrique unique pour une connexion spécifique" + }, + "rotate": { + "description": "Renouveler la clé d’API en amont pour une connexion de fournisseur", + "newKeyOpt": "Nouvelle valeur de clé API (à éviter : préférez --from-env)", + "fromEnvOpt": "Lire la nouvelle clé depuis la variable d’environnement VAR", + "oauthOpt": "Déclencher plutôt le flux de réauthentification OAuth", + "skipTestOpt": "Ignorer le test de connectivité après la rotation", + "dryRunOpt": "Afficher les modifications qui seraient apportées sans les enregistrer", + "confirmPrompt": "Remplacer la clé API de la connexion « {name} » ({id}) ? [o/N]", + "dryRunResult": "[dry-run] La clé de « {name} » ({id}) serait remplacée. Aucune modification effectuée.", + "oauthHint": "Connexion OAuth — exécutez : omniroute oauth {provider}", + "envVarEmpty": "La variable d’environnement {var} n’est pas définie ou est vide.", + "success": "Clé remplacée pour « {name} ». Exécutez `providers test {id}` pour vérifier.", + "testPassed": "Le test après rotation a réussi.", + "testFailed": "Échec du test après rotation : {error}" + }, + "status": { + "description": "Afficher l’état des clés pour toutes les connexions aux fournisseurs (âge, expiration, délai de récupération)", + "providerOpt": "Filtrer par nom de fournisseur", + "header": "ID Fournisseur Nom Expiration État État du test Récupération jusqu’au", + "noData": "Aucune donnée de connexion aux fournisseurs disponible.", + "requiresServer": "providers status nécessite que le serveur OmniRoute soit en cours d’exécution." + } + }, + "keys": { + "title": "Clés API", + "addDescription": "Ajouter ou mettre à jour une clé API pour un fournisseur", + "listDescription": "Répertorier toutes les clés API configurées", + "removeDescription": "Supprimer la clé API d’un fournisseur", + "regenerateDescription": "Régénérer une clé API OmniRoute", + "revokeDescription": "Révoquer une clé API OmniRoute", + "revealDescription": "Révéler la valeur non masquée de la clé API", + "usageDescription": "Afficher l’utilisation récente d’une clé API", + "usageLimitOpt": "Nombre de requêtes récentes", + "rotateDescription": "Générer une nouvelle clé et invalider l’ancienne", + "graceOpt": "Délai de grâce (ms) avant l’invalidation de l’ancienne clé", + "stdinOpt": "Lire la clé API depuis stdin plutôt que depuis un argument", + "added": "Clé ajoutée pour {provider}.", + "removed": "Clé supprimée.", + "listed": "{count} clé(s).", + "noKeys": "Aucune clé configurée.", + "noUsage": "Aucune donnée d’utilisation trouvée.", + "confirmRemove": "Supprimer la clé {id} ?", + "confirmRegenerate": "Régénérer la clé {id} ?", + "confirmRevoke": "Révoquer la clé {id} ?", + "confirmRotate": "Remplacer la clé {id} ? (l’ancienne clé sera invalidée après le délai de grâce)", + "regenerated": "Clé régénérée. Nouvelle clé : {key}", + "revoked": "Clé {id} révoquée.", + "rotated": "Clé {id} renouvelée. Nouvel ID de clé : {newId}", + "revealWarning": "⚠ Cette action affichera la clé complète non masquée. Assurez-vous que votre écran est à l’abri des regards.", + "providerRequired": "Le fournisseur est requis.", + "keyRequired": "La clé API est requise.", + "stdinEmpty": "Aucune clé API fournie via stdin.", + "unknownProvider": "Fournisseur inconnu : {provider}", + "policy": { + "title": "Politique de clé", + "showDescription": "Afficher la politique de débit/coût d’une clé", + "setDescription": "Définir la politique de débit/coût d’une clé", + "rateLimitOpt": "Nombre maximal de requêtes par minute", + "maxCostOpt": "Coût maximal par jour (USD)", + "allowedModelsOpt": "Liste des modèles autorisés, séparés par des virgules", + "nothingToSet": "Aucun champ de politique fourni. Utilisez --rate-limit, --max-cost ou --allowed-models.", + "updated": "Politique mise à jour." + }, + "expiration": { + "title": "Expiration des clés", + "listDescription": "Répertorier les clés qui expirent bientôt", + "daysOpt": "Afficher les clés expirant dans les N prochains jours", + "none": "Aucune clé n’expire dans les {days} prochains jours.", + "listTitle": "Clés expirant dans les {days} prochains jours :" + } + }, + "authExport": { + "description": "Exporter les identifiants de fournisseur DÉCHIFFRÉS (local uniquement, sortie en texte brut)", + "idOpt": "Exporter uniquement la connexion correspondant à cet ID/nom/fournisseur", + "formatOpt": "Format de sortie : json ou env", + "outOpt": "Écrire la sortie dans un fichier plutôt que dans stdout (avec les autorisations 0600)", + "forceOpt": "Confirmer que vous comprenez que cette opération affiche/écrit des secrets en texte brut", + "warning": "⚠ Cette opération affiche/écrit des clés API et des jetons OAuth DÉCHIFFRÉS en texte brut. Veillez à préserver la confidentialité de votre écran, de l’historique de votre shell et de tout fichier de sortie.", + "confirmHeading": "⚠ AVERTISSEMENT : cette opération exporte les identifiants de fournisseur DÉCHIFFRÉS en texte brut", + "confirmBody": "Cette commande déchiffre et affiche/écrit apiKey, accessToken, refreshToken et\nidToken pour la ou les connexions sélectionnées. Traitez la sortie comme un secret.", + "confirmFooter": "Pour confirmer, exécutez :\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY est requis pour exporter les identifiants.", + "notFound": "Connexion introuvable : {id}", + "invalidFormat": "Format non valide : {format}. Utilisez json ou env." + }, + "stream": { + "description": "Diffuser une réponse de chat avec des modes d’inspection SSE", + "file": "Lire l’invite depuis un fichier", + "stdin": "Lire l’invite depuis stdin", + "model": "ID du modèle (par défaut : auto)", + "system": "Invite système", + "combo": "Forcer une combinaison spécifique par son nom", + "max_tokens": "Nombre maximal de jetons dans la réponse", + "responses_api": "Utiliser /v1/responses au lieu de /v1/chat/completions", + "raw": "Afficher les lignes SSE brutes telles qu’elles sont reçues", + "debug": "Afficher les informations de temps par segment dans stderr", + "save": "Enregistrer tous les événements SSE dans un fichier .jsonl", + "error": { + "empty_prompt": "Erreur : le prompt est requis (argument positionnel, --file ou --stdin)" + } + }, + "usage": { + "description": "Analyses d’utilisation, budgets, quotas et journaux", + "analytics": { + "description": "Afficher les analyses d’utilisation agrégées", + "period": "Période : 1d|7d|30d|90d|ytd|all (par défaut : 30d)", + "provider": "Filtrer par ID de fournisseur" + }, + "budget": { + "description": "Gérer les budgets de coûts", + "set": { + "scope": "Portée du budget (par défaut : globale)", + "period": "Période budgétaire : daily|weekly|monthly (par défaut : monthly)" + } + }, + "quota": { + "description": "Afficher l’utilisation des quotas des fournisseurs", + "provider": "Filtrer par ID de fournisseur", + "check": "Indiquer si le quota est disponible pour une nouvelle requête" + }, + "logs": { + "description": "Afficher les journaux des appels de requêtes", + "limit": "Nombre d’entrées de journal à renvoyer (par défaut : 100)", + "search": "Requête de recherche pour filtrer les journaux", + "since": "Renvoyer les journaux depuis cet horodatage", + "follow": "Suivre en continu les nouvelles entrées de journal", + "api_key": "Filtrer les journaux par clé API" + }, + "utilization": { + "description": "Afficher les métriques d’utilisation des clés API", + "api_key": "Filtrer par clé API" + }, + "history": { + "description": "Afficher l’historique des requêtes", + "limit": "Nombre d’entrées d’historique (par défaut : 100)" + }, + "proxy_logs": { + "description": "Afficher les journaux de requêtes au niveau du proxy", + "limit": "Nombre d’entrées du journal du proxy (par défaut : 100)" + } + }, + "cost": { + "description": "Afficher le rapport de coûts ventilé par fournisseur, modèle, combinaison ou clé API", + "period": "Période : 1d|7d|30d|90d|ytd|all (par défaut : 30d)", + "since": "Date de début (format ISO, p. ex. 2026-01-01) — remplace --period", + "until": "Date de fin (format ISO)", + "group_by": "Regrouper les résultats par : provider|model|api-key|combo|day (par défaut : provider)", + "api_key_filter": "Filtrer par une clé API spécifique", + "limit": "Nombre maximal de lignes à afficher (par défaut : 100)" + }, + "simulate": { + "description": "Simulation de routage à blanc — afficher les fournisseurs qui seraient sélectionnés sans appeler le service en amont", + "file": "Charger le corps complet de la requête depuis un fichier JSON", + "model": "ID du modèle (par défaut : auto)", + "combo": "Forcer une combinaison spécifique par nom", + "reasoning": "Niveau d’effort de raisonnement (low|medium|high)", + "thinking": "Budget de jetons pour le raisonnement étendu", + "explain": "Afficher l’arbre de repli et la plage de coûts dans stderr", + "noCombo": "Aucune combinaison correspondante trouvée. Configurez-en une avec : omniroute combo create" + }, + "chat": { + "description": "Envoyer une invite de chat unique à OmniRoute", + "file": "Lire l’invite depuis un fichier", + "stdin": "Lire l’invite depuis stdin", + "system": "Invite système", + "model": "ID du modèle (par défaut : auto)", + "max_tokens": "Nombre maximal de jetons dans la réponse", + "temperature": "Température d’échantillonnage (0–2)", + "top_p": "Échantillonnage par noyau top-p", + "reasoning_effort": "Niveau d’effort de raisonnement (low|medium|high)", + "thinking_budget": "Budget de jetons pour la réflexion approfondie", + "combo": "Forcer une combinaison spécifique par son nom", + "responses_api": "Utiliser /v1/responses au lieu de /v1/chat/completions", + "stream": "Diffuser la réponse progressivement", + "no_history": "Ne pas enregistrer dans ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Erreur : l’invite est requise (argument positionnel, --file ou --stdin)" + } + }, + "serve": { + "description": "Démarrer le serveur OmniRoute (action par défaut)", + "starting": "Démarrage du serveur OmniRoute sur le port {port}...", + "ready": "Disponible à l’adresse http://localhost:{port}", + "stopping": "Arrêt du serveur (PID {pid})...", + "stopped": "Serveur arrêté.", + "notRunning": "Le serveur n’est pas en cours d’exécution.", + "port": "Port d’écoute (par défaut : 20128)", + "no_open": "Ne pas ouvrir automatiquement le navigateur", + "daemon": "Exécuter le serveur en tant que démon en arrière-plan", + "log": "Afficher les journaux du serveur en ligne", + "no_recovery": "Désactiver le redémarrage automatique après un plantage (mode débogage)", + "max_restarts": "Nombre maximal de redémarrages après plantage en 30 s avant abandon (par défaut : 2)", + "tray": "Démarrer dans la zone de notification système (ordinateur uniquement, option à activer)", + "no_tray": "Désactiver l’icône de la zone de notification système", + "ready_timeout": "Délai d’expiration de la sonde de disponibilité en ms (également OMNIROUTE_READY_TIMEOUT_MS, valeur par défaut : 60000)", + "tls_cert": "Chemin vers un certificat TLS (PEM) pour servir HTTPS (également OMNIROUTE_TLS_CERT)", + "tls_key": "Chemin vers la clé privée TLS (PEM) pour servir HTTPS (également OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sauvegarde", + "description": "Créer une sauvegarde des données d’OmniRoute", + "creating": "Création de la sauvegarde...", + "done": "Sauvegarde enregistrée dans {path}", + "noFiles": "Aucun fichier à sauvegarder (base de données non initialisée)", + "failed": "Échec de la sauvegarde : {error}", + "restoring": "Restauration depuis {path}...", + "restored": "Restauration terminée.", + "restoreDescription": "Restaurer à partir d’une sauvegarde", + "listTitle": "Sauvegardes disponibles", + "noBackups": "Aucune sauvegarde trouvée.", + "notFound": "Sauvegarde introuvable : {name}", + "confirmRestore": "Écraser les données actuelles avec la sauvegarde du {ts} ?", + "createDescription": "Créer une sauvegarde des données d’OmniRoute", + "nameOpt": "Nom personnalisé de la sauvegarde", + "cloudOpt": "Téléverser la sauvegarde vers un stockage cloud", + "encryptOpt": "Chiffrer la sauvegarde avec AES-256-GCM", + "keyFileOpt": "Chemin du fichier contenant la phrase secrète de chiffrement", + "excludeOpt": "Exclure les fichiers correspondant au motif (option répétable)", + "retentionOpt": "Ne conserver que les N dernières sauvegardes", + "passphrasePrompt": "Phrase secrète de chiffrement :", + "noPassphrase": "Une phrase secrète est requise pour une sauvegarde chiffrée.", + "cloudFailed": "Avertissement : le téléversement vers le cloud a échoué. La sauvegarde locale a été enregistrée.", + "cloudUploaded": "Sauvegarde téléversée vers le cloud : {url}", + "auto": { + "title": "Planification des sauvegardes", + "enableDescription": "Activer les sauvegardes automatiques planifiées", + "disableDescription": "Désactiver les sauvegardes automatiques planifiées", + "statusDescription": "Afficher l’état actuel de la planification des sauvegardes", + "cronOpt": "Expression cron de la planification (par défaut : tous les jours à 3 h)", + "enabled": "Sauvegarde automatique activée (cron : {cron}).", + "hint": "La planification est lue par omniroute serve au démarrage.", + "disabled": "Sauvegarde automatique désactivée.", + "notConfigured": "Aucune planification de sauvegarde configurée." + } + }, + "health": { + "description": "Vérifier l’état du serveur et des composants", + "noServer": "Le serveur n’est pas en cours d’exécution. Démarrez-le avec : omniroute serve", + "title": "État de santé", + "status": "État : {status}", + "uptime": "Durée de fonctionnement : {uptime}", + "requests": "Requêtes (24 h) : {count}", + "cost": "Coût (24 h) : ${cost}" + }, + "quota": { + "description": "Afficher l’utilisation des quotas des fournisseurs", + "noServer": "Le serveur n’est pas en cours d’exécution. Démarrez-le avec : omniroute serve", + "noData": "Aucune information sur les quotas n’est disponible." + }, + "cache": { + "description": "Gérer le cache des réponses", + "noServer": "Le serveur n’est pas en cours d’exécution. Démarrez-le avec : omniroute serve", + "cleared": "Cache vidé.", + "clearFailed": "Échec du vidage du cache." + }, + "redis": { + "description": "Lancer un conteneur Redis local en un clic (Podman ou Docker) pour la mise en cache et le suivi des quotas OmniRoute" + }, + "test": { + "description": "Tester la connexion à un fournisseur", + "noServer": "Serveur non démarré. Démarrez-le avec : omniroute serve", + "testing": "Test de {provider} / {model}...", + "passed": "Connexion réussie !", + "failed": "Échec de la connexion : {error}", + "allProvidersOpt": "Tester tous les fournisseurs configurés", + "latencyOpt": "Afficher les mesures de latence (moy./min./max. en ms)", + "repeatOpt": "Répéter le test N fois et agréger les résultats", + "compareOpt": "Modèles à comparer, séparés par des virgules (p. ex. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Enregistrer les résultats dans un fichier JSON", + "saved": "Résultats enregistrés dans {path}", + "compareTitle": "Comparaison des modèles", + "compareMinTwo": "Au moins deux modèles sont requis pour --compare (séparés par des virgules)", + "noProviders": "Aucun fournisseur configuré. Ajoutez-en un avec : omniroute keys add" + }, + "update": { + "checking": "Recherche de mises à jour...", + "upToDate": "Déjà à jour ({version}).", + "available": "Mise à jour disponible : {current} → {latest}", + "installing": "Installation de {latest}...", + "done": "Mise à jour vers {latest} effectuée. Redémarrez le serveur pour l’appliquer." + }, + "mcp": { + "title": "Serveur MCP", + "running": "Serveur MCP en cours d’exécution ({transport})", + "stopped": "Serveur MCP arrêté.", + "restarted": "Serveur MCP redémarré.", + "stoppedHint": "Exécutez `omniroute mcp enable` pour l’activer.", + "enabled": "Serveur MCP activé.", + "disabled": "Serveur MCP désactivé.", + "enable": { + "description": "Activer le serveur MCP", + "transport": "Transport à utiliser : stdio|sse|streamable-http" + }, + "disable": { + "description": "Désactiver le serveur MCP" + }, + "call": { + "description": "Appeler directement un outil MCP", + "args": "Objet d’arguments JSON (en ligne)", + "args_file": "Chemin vers le fichier d’arguments JSON", + "stream": "Utiliser le point de terminaison de streaming (/api/mcp/stream)", + "scope": "Portée requise (répétable, p. ex. read:health)" + }, + "scopes": { + "description": "Répertorier les portées MCP disponibles", + "tool": "Afficher les portées requises par un outil spécifique" + }, + "tools": { + "description": "Inspecter les outils MCP", + "list": { + "description": "Répertorier tous les outils MCP", + "scope": "Filtrer par portée" + }, + "info": { + "description": "Afficher les métadonnées d’un outil MCP" + }, + "schema": { + "description": "Afficher le schéma JSON d’entrée/sortie d’un outil MCP", + "io": "Type de schéma : input|output (par défaut : input)" + } + }, + "audit": { + "description": "Journal d’audit MCP (alias de audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Répertorier les compétences A2A disponibles depuis la fiche de l’agent" + }, + "invoke": { + "description": "Invoquer une compétence A2A et renvoyer l’ID de la tâche", + "input": "Objet d’entrée JSON", + "input_file": "Chemin vers le fichier d’entrée JSON", + "wait": "Attendre la fin de la tâche avant de renvoyer le résultat", + "timeout": "Délai d’attente maximal avant la fin, en ms (par défaut : 60000)" + }, + "tasks": { + "description": "Gérer les tâches A2A", + "list": { + "status": "Filtrer par statut", + "skill": "Filtrer par ID de compétence" + }, + "watch": { + "description": "Interroger le statut de la tâche jusqu’à sa fin" + }, + "stream": { + "description": "Diffuser les événements d’exécution de la tâche via SSE" + }, + "logs": { + "description": "Afficher les messages et les artefacts de la tâche" + } + } + }, + "policy": { + "description": "Gérer les politiques d’autorisation d’OmniRoute", + "list": { + "description": "Répertorier les politiques", + "kind": "Filtrer par type (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrer par portée (global|api-key|provider)" + }, + "get": { + "description": "Obtenir les détails d’une politique par son ID" + }, + "create": { + "description": "Créer une politique à partir d’un fichier JSON", + "file": "Chemin vers le fichier JSON de la politique" + }, + "update": { + "description": "Mettre à jour une politique à partir d’un fichier JSON", + "file": "Chemin vers le fichier JSON de la politique" + }, + "delete": { + "description": "Supprimer une politique par son ID", + "yes": "Ignorer la demande de confirmation" + }, + "evaluate": { + "description": "Simuler l’évaluation de la politique (code de sortie 0=autorisé, 4=refusé)", + "api_key": "Clé API à évaluer", + "action": "Action à vérifier (p. ex. chat, embed, admin)", + "resource": "Chemin ou identifiant de la ressource", + "context": "Contexte supplémentaire sous forme d’objet JSON" + }, + "export": { + "description": "Exporter toutes les politiques vers un fichier JSON" + }, + "import": { + "description": "Importer des politiques depuis un fichier JSON", + "overwrite": "Écraser les politiques existantes ayant le même ID" + } + }, + "compression": { + "description": "Configurer et inspecter le pipeline de compression d’OmniRoute", + "status": { + "description": "Afficher l’état et les paramètres actuels de la compression" + }, + "configure": { + "description": "Configurer les paramètres de compression", + "engine": "Moteur de compression (caveman|rtk|hybrid|none)", + "caveman_agg": "Agressivité de Caveman de 0.0 à 1.0", + "rtk_budget": "Budget de jetons RTK", + "language_pack": "Pack linguistique à activer" + }, + "engine": { + "description": "Obtenir ou définir le moteur de compression actif" + }, + "combos": { + "description": "Gérer les statistiques des combinaisons de compression" + }, + "rules": { + "description": "Gérer les règles de compression", + "add": { + "pattern": "Motif à rechercher (regex ou champ:motif)", + "action": "Action : drop|shrink|replace" + } + }, + "language_packs": { + "description": "Répertorier les packs linguistiques de compression disponibles" + }, + "preview": { + "description": "Prévisualiser l’effet de la compression sur une requête", + "file": "Chemin vers le fichier JSON de la requête" + } + }, + "tunnel": { + "title": "Tunnels", + "listDescription": "Répertorier les tunnels actifs", + "createDescription": "Créer un tunnel", + "created": "Tunnel créé : {url}", + "stopped": "Tunnel arrêté.", + "confirmStop": "Arrêter le tunnel {id} ?", + "stopDescription": "Arrêter un tunnel", + "statusDescription": "Afficher l’état détaillé d’un tunnel", + "logsDescription": "Afficher les journaux d’un tunnel", + "infoDescription": "Afficher les détails de configuration d’un tunnel", + "rotateDescription": "Générer une nouvelle URL de tunnel", + "tailOpt": "Nombre de lignes de journal à afficher", + "typeRequired": "Le type de tunnel est requis.", + "noLogs": "Aucun journal disponible.", + "notAvailable": "Informations sur le tunnel indisponibles.", + "noTunnels": "Aucun tunnel actif.", + "infoTitle": "Informations sur le tunnel : {type}", + "rotated": "URL du tunnel renouvelée : {url}", + "confirmRotate": "Renouveler l’URL du tunnel {type} ? (une nouvelle URL sera générée)" + }, + "stop": { + "description": "Arrêter le serveur OmniRoute", + "stopping": "Arrêt du serveur (PID {pid})...", + "stopped": "Serveur arrêté.", + "notRunning": "Aucun serveur n’est en cours d’exécution.", + "portFallback": "Aucun fichier PID trouvé, tentative d’arrêt via le port..." + }, + "restart": { + "description": "Redémarrer le serveur OmniRoute", + "restarting": "Redémarrage du serveur OmniRoute..." + }, + "dashboard": { + "description": "Ouvrir le tableau de bord OmniRoute dans un navigateur", + "opening": "Ouverture du tableau de bord à l’adresse {url}", + "urlOnly": "Afficher l’URL du tableau de bord sans ouvrir le navigateur", + "tui": "Ouvrir le tableau de bord TUI interactif (interface de terminal, 7 onglets)" + }, + "models": { + "description": "Répertorier les modèles disponibles (serveur requis)", + "search": "Filtrer les modèles par identifiant, nom, fournisseur ou description", + "noServer": "Serveur non démarré. Démarrez-le avec : omniroute serve", + "noModels": "Aucun modèle trouvé." + }, + "audit": { + "description": "Accéder aux journaux d’audit de conformité et MCP", + "source": "Source du journal : all|compliance|mcp (par défaut : all)", + "since": "Renvoyer les entrées depuis cet horodatage (ISO 8601)", + "until": "Renvoyer les entrées jusqu’à cet horodatage (ISO 8601)", + "tail": { + "description": "Afficher les entrées récentes du journal d’audit", + "follow": "Suivre en continu les nouvelles entrées (interrogation toutes les 2 s)", + "limit": "Nombre maximal d’entrées à afficher (par défaut : 100)" + }, + "search": { + "description": "Rechercher des entrées du journal d’audit par mot-clé", + "limit": "Nombre maximal de résultats (par défaut : 200)", + "actor": "Filtrer par ID d’acteur", + "action": "Filtrer par nom d’action" + }, + "export": { + "description": "Exporter le journal d’audit vers un fichier", + "format": "Format de sortie : jsonl|csv (par défaut : jsonl)" + }, + "stats": { + "description": "Afficher les statistiques du journal d’audit", + "period": "Période : 1d|7d|30d (par défaut : 7d)" + }, + "get": { + "description": "Obtenir une entrée du journal d’audit par ID" + } + }, + "skills": { + "description": "Gérer les compétences OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Répertorier les compétences installées", + "type": "Filtrer par type (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Afficher uniquement les compétences activées", + "disabled": "Afficher uniquement les compétences désactivées", + "api_key": "Filtrer par clé API" + }, + "get": { + "description": "Obtenir les détails d’une compétence par ID" + }, + "install": { + "description": "Installer une compétence à partir d’un fichier ou d’une URL", + "from_file": "Chemin du fichier de définition JSON de la compétence", + "from_url": "URL de la définition distante de la compétence", + "type": "Type de compétence (sandbox|custom|hybrid)", + "enable": "Activer la compétence après l’installation" + }, + "enable": { + "description": "Activer une compétence par ID" + }, + "disable": { + "description": "Désactiver une compétence par ID", + "yes": "Ignorer la demande de confirmation" + }, + "delete": { + "description": "Supprimer une compétence par ID", + "yes": "Ignorer la demande de confirmation" + }, + "execute": { + "description": "Exécuter une compétence par ID", + "input": "Objet d’entrée JSON", + "input_file": "Chemin du fichier d’entrée JSON", + "timeout": "Délai d’expiration de l’exécution en ms (par défaut : 30000)" + }, + "executions": { + "description": "Répertorier l’historique d’exécution des compétences", + "skill": "Filtrer par ID de compétence", + "limit": "Nombre maximal de résultats (par défaut : 50)", + "status": "Filtrer par statut (running|completed|failed)" + }, + "skillssh": { + "description": "Gérer les compétences installées via SSH" + }, + "marketplace": { + "description": "Parcourir et installer des compétences depuis la marketplace" + }, + "mp": { + "search": { + "description": "Rechercher des packages sur la marketplace", + "category": "Filtrer par catégorie", + "tag": "Filtrer par étiquette", + "limit": "Nombre maximal de résultats (par défaut : 30)", + "sort": "Trier par : downloads|rating|recent" + }, + "info": { + "description": "Afficher les détails et le fichier readme du package" + }, + "install": { + "description": "Installer un package de la marketplace", + "version": "Version du package (par défaut : latest)", + "enable": "Activer après l’installation", + "yes": "Ignorer la demande de confirmation" + }, + "categories": { + "description": "Répertorier les catégories de la marketplace" + }, + "featured": { + "description": "Afficher les packages mis en avant sur la marketplace" + } + } + }, + "memory": { + "description": "Gérer la mémoire conversationnelle d’OmniRoute (FTS5 + vector)", + "search": { + "description": "Rechercher des entrées de mémoire par requête sémantique", + "type": "Filtrer par type de mémoire (user|feedback|project|reference)", + "limit": "Nombre maximal de résultats (par défaut : 20)", + "api_key": "Filtrer par clé API", + "token_budget": "Limiter le nombre total de jetons dans les résultats" + }, + "add": { + "description": "Ajouter une nouvelle entrée de mémoire", + "content": "Contenu textuel de la mémoire", + "file": "Lire le contenu depuis un fichier", + "type": "Type de mémoire (par défaut : user)", + "metadata": "Objet de métadonnées JSON", + "api_key": "Associer à une clé API" + }, + "clear": { + "description": "Supprimer les entrées de mémoire correspondant aux filtres", + "type": "Filtrer par type", + "older": "Supprimer les entrées antérieures à une durée donnée (30d, 6m, 1y)", + "api_key": "Filtrer par clé API", + "yes": "Ignorer la demande de confirmation" + }, + "list": { + "description": "Répertorier les entrées de mémoire sans classement de recherche", + "type": "Filtrer par type", + "limit": "Nombre maximal de résultats (par défaut : 100)", + "api_key": "Filtrer par clé API" + }, + "get": { + "description": "Obtenir une seule entrée de mémoire par ID" + }, + "delete": { + "description": "Supprimer une entrée de mémoire par ID", + "yes": "Ignorer l’invite de confirmation" + }, + "health": { + "description": "Afficher l’état du sous-système de mémoire (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Gérer les connexions aux fournisseurs OAuth", + "providers": { + "description": "Lister les fournisseurs compatibles avec OAuth et leurs types de flux" + }, + "start": { + "description": "Démarrer le flux d’autorisation OAuth pour un fournisseur", + "provider": "ID du fournisseur (gemini, copilot, cursor, …)", + "no_browser": "Afficher uniquement l’URL — ne pas ouvrir le navigateur", + "import_system": "Importer automatiquement les identifiants depuis la configuration du système local", + "social": "Fournisseur de connexion sociale (google|github) — requis pour kiro", + "timeout": "Délai d’attente de l’autorisation en ms (par défaut : 300000)" + }, + "status": { + "description": "Lister les connexions OAuth actives", + "provider": "Filtrer par ID de fournisseur" + }, + "revoke": { + "description": "Révoquer une connexion OAuth", + "provider": "ID du fournisseur à révoquer", + "connection_id": "Révoquer une connexion spécifique par ID", + "yes": "Ignorer l’invite de confirmation" + } + }, + "cloud": { + "description": "Gérer les tâches des agents IA cloud (codex, devin, jules)", + "agents": { + "description": "Lister les agents cloud disponibles" + }, + "agent": { + "description": "Gérer les tâches de l’agent cloud {agent}", + "auth": { + "description": "Autoriser {agent} via OAuth" + } + }, + "task": { + "description": "Gérer les tâches des agents cloud", + "create": { + "description": "Créer une nouvelle tâche d’agent", + "title": "Titre de la tâche (par défaut, les 80 premiers caractères de l’invite)", + "prompt": "Texte de l’invite de la tâche", + "prompt_file": "Lire l’invite depuis un fichier", + "repo": "URL du dépôt à cloner pour la tâche", + "branch": "Nom de la branche à utiliser", + "metadata": "Objet de métadonnées JSON" + }, + "list": { + "description": "Lister les tâches des agents", + "status": "Filtrer par statut (running|completed|failed|cancelled)", + "limit": "Nombre maximal de résultats (par défaut : 50)" + }, + "get": { + "description": "Obtenir les détails d’une tâche par ID" + }, + "status": { + "description": "Afficher le statut de la tâche (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Annuler une tâche en cours d’exécution", + "yes": "Ignorer l’invite de confirmation" + }, + "approve": { + "description": "Approuver le plan de l’agent pour démarrer l’exécution" + }, + "message": { + "description": "Envoyer un message à une tâche en cours d’exécution" + } + }, + "sources": { + "description": "Lister les fichiers sources produits par une tâche" + } + }, + "eval": { + "description": "Gérer les suites et les exécutions d’évaluation", + "suites": { + "description": "Gérer les suites d’évaluation", + "list": { + "description": "Lister les suites d’évaluation" + }, + "get": { + "description": "Obtenir les détails d’une suite d’évaluation par ID" + }, + "create": { + "description": "Créer une suite d’évaluation à partir d’un fichier JSON", + "file": "Chemin vers le fichier JSON de définition de la suite" + } + }, + "run": { + "description": "Démarrer une exécution d’évaluation pour une suite", + "model": "ID du modèle à évaluer (par défaut : auto)", + "combo": "Forcer une combinaison spécifique par son nom", + "concurrency": "Nombre d’échantillons simultanés (par défaut : 4)", + "tag": "Ajouter une étiquette à cette exécution pour la filtrer ultérieurement", + "watch": "Suivre la progression de l’exécution jusqu’à son terme" + }, + "list": { + "description": "Lister les exécutions d’évaluation", + "suite": "Filtrer par ID de suite", + "status": "Filtrer par statut", + "since": "Renvoyer les exécutions depuis cet horodatage", + "limit": "Nombre maximal de résultats (par défaut : 50)" + }, + "get": { + "description": "Obtenir les détails d’une exécution d’évaluation par ID" + }, + "results": { + "description": "Afficher les résultats des échantillons d’une exécution d’évaluation", + "failed": "Afficher uniquement les échantillons ayant échoué" + }, + "cancel": { + "description": "Annuler une évaluation en cours", + "yes": "Ignorer l’invite de confirmation" + }, + "scorecard": { + "description": "Afficher la fiche de résultats d’une exécution d’évaluation terminée" + } + }, + "webhooks": { + "description": "Gérer les webhooks OmniRoute", + "events": { + "description": "Lister tous les types d’événements de webhook disponibles" + }, + "list": { + "description": "Lister les webhooks configurés" + }, + "get": { + "description": "Obtenir les détails d’un webhook par ID" + }, + "add": { + "description": "Enregistrer un nouveau webhook", + "url": "URL de destination", + "events": "Liste des types d’événements séparés par des virgules", + "secret": "Secret de signature HMAC", + "header": "En-tête supplémentaire au format key=value (répétable)", + "no_enabled": "Créer le webhook à l’état désactivé" + }, + "update": { + "description": "Mettre à jour un webhook existant", + "enabled": "Définir l’état d’activation (true|false)" + }, + "remove": { + "description": "Supprimer un webhook", + "yes": "Ignorer l’invite de confirmation" + }, + "test": { + "description": "Envoyer un événement de test à un webhook", + "event": "Type d’événement à simuler (par défaut : request.completed)" + } + }, "program": { "description": "OmniRoute — Routeur IA intelligent avec basculement automatique", "version": "Afficher la version et quitter", @@ -26,7 +832,509 @@ "context": "Contexte/profil du serveur pour cette commande", "lang": "Définir la langue d'affichage du CLI (remplace OMNIROUTE_LANG)" }, - "redis": { - "description": "Lancer un conteneur Redis local en un clic (Podman ou Docker) pour la mise en cache et le suivi des quotas OmniRoute" + "files": { + "description": "Gérer les fichiers (téléverser, lister, obtenir, télécharger, supprimer)", + "list": { + "purpose": "Filtrer par finalité", + "limit": "Nombre maximal de résultats" + }, + "get": { + "description": "Obtenir les métadonnées du fichier" + }, + "upload": { + "description": "Téléverser un fichier", + "purpose": "Usage du fichier (batch, assistants, fine-tune)" + }, + "content": { + "description": "Télécharger le contenu du fichier", + "out": "Enregistrer dans le chemin (par défaut : stdout)" + }, + "delete": { + "yes": "Ignorer la confirmation" + } + }, + "batches": { + "description": "Gérer les tâches batch compatibles avec OpenAI", + "list": { + "status": "Filtrer par statut", + "limit": "Nombre maximal de résultats" + }, + "create": { + "description": "Créer une tâche batch", + "inputFile": "ID du fichier d’entrée", + "endpoint": "Point de terminaison cible", + "window": "Fenêtre d’exécution", + "metadata": "Ajouter une métadonnée key=value" + }, + "submit": { + "description": "Téléverser un fichier JSONL et créer un batch", + "jsonl": "Chemin vers le fichier JSONL", + "endpoint": "Point de terminaison cible", + "wait": "Attendre la fin de l’exécution" + }, + "cancel": { + "yes": "Ignorer la confirmation" + }, + "wait": { + "timeout": "Délai d’expiration en ms" + }, + "output": { + "out": "Enregistrer la sortie dans le chemin" + }, + "errors": { + "out": "Enregistrer les erreurs dans le chemin" + } + }, + "translator": { + "description": "Traduire les corps de requête entre les formats de LLM", + "detect": { + "description": "Détecter le format du corps" + }, + "translate": { + "description": "Convertir le corps d’un format à un autre" + }, + "send": { + "description": "Traduire et transmettre en amont" + }, + "stream": { + "description": "Traduire en continu un corps de requête" + }, + "from": "Format source (openai|anthropic|gemini|cohere)", + "to": "Format cible (openai|anthropic|gemini|cohere)", + "file": "Chemin vers le fichier JSON du corps de la requête", + "out": "Enregistrer la sortie dans un fichier", + "model": "Remplacer le modèle", + "history": { + "limit": "Nombre maximal de résultats" + } + }, + "pricing": { + "description": "Gérer les données tarifaires des modèles", + "sync": { + "description": "Synchroniser les prix depuis les sources en amont", + "provider": "Filtrer par fournisseur", + "force": "Forcer la resynchronisation" + }, + "list": { + "provider": "Filtrer par fournisseur", + "model": "Filtrer par modèle", + "limit": "Nombre maximal de résultats" + }, + "defaults": { + "description": "Gérer la tarification par défaut", + "input": "Coût d’entrée par million de jetons (USD)", + "output": "Coût de sortie par million de jetons (USD)", + "cacheRead": "Coût de lecture du cache par million de jetons (USD)", + "cacheWrite": "Coût d’écriture dans le cache par million de jetons (USD)" + }, + "diff": { + "description": "Afficher l’écart par rapport aux prix en amont", + "model": "Filtrer par modèle" + } + }, + "radar": { + "description": "Inspecter et synchroniser les flux du catalogue Radar local", + "status": "Afficher les paramètres Radar locaux et l’état du cache des flux", + "sync": "Synchroniser le catalogue, les parrainages, les offres et Intel via le serveur local" + }, + "resilience": { + "description": "Inspecter et gérer les mécanismes de résilience", + "status": { + "provider": "Filtrer par fournisseur" + }, + "breakers": { + "provider": "Filtrer par fournisseur" + }, + "cooldowns": { + "provider": "Filtrer par fournisseur", + "connectionId": "Filtrer par ID de connexion" + }, + "lockouts": { + "provider": "Filtrer par fournisseur", + "model": "Filtrer par modèle" + }, + "reset": { + "description": "Réinitialiser l’état du disjoncteur/de la période de temporisation", + "provider": "Fournisseur à réinitialiser", + "connectionId": "ID de connexion à réinitialiser", + "model": "Modèle dont le verrouillage doit être réinitialisé", + "allCooldowns": "Réinitialiser toutes les périodes de temporisation du fournisseur", + "yes": "Ignorer la confirmation" + }, + "profile": { + "description": "Gérer le profil de résilience", + "name": "Nom du profil" + }, + "config": { + "description": "Gérer la configuration de résilience", + "threshold": "Seuil d’échec", + "resetTimeout": "Délai de réinitialisation en ms", + "baseCooldown": "Période de temporisation de base en ms" + } + }, + "nodes": { + "description": "Gérer les nœuds (points de terminaison) des fournisseurs", + "list": { + "provider": "Filtrer par fournisseur", + "enabled": "Afficher uniquement les nœuds activés" + }, + "add": { + "provider": "Nom du fournisseur", + "baseUrl": "URL de base du nœud", + "name": "Nom du nœud", + "weight": "Pondération de l’équilibrage de charge", + "region": "Étiquette de région", + "authHeader": "En-tête d’authentification personnalisé (key=value)" + }, + "update": { + "baseUrl": "Nouvelle URL de base", + "name": "Nouveau nom", + "weight": "Nouveau poids", + "region": "Nouvelle région", + "enabled": "Activer ou désactiver (true|false)" + }, + "remove": { + "yes": "Ignorer la confirmation" + }, + "validate": { + "baseUrl": "URL à valider", + "provider": "Fournisseur auprès duquel effectuer la validation" + }, + "test": { + "description": "Envoyer une requête de test au nœud" + }, + "metrics": { + "description": "Afficher les métriques du nœud", + "period": "Période (p. ex. 24h, 7d)" + } + }, + "context": { + "description": "Configurer le pipeline d’ingénierie du contexte (Caveman, RTK)", + "analytics": { + "period": "Période (p. ex. 7d, 30d)" + }, + "caveman": { + "description": "Gérer le compresseur de contexte Caveman", + "config": { + "description": "Afficher ou mettre à jour la configuration de Caveman", + "aggressiveness": "Agressivité de 0.0 à 1.0", + "maxShrinkPct": "Pourcentage maximal de réduction", + "preserveTags": "Tags séparés par des virgules à préserver" + } + }, + "rtk": { + "description": "Gérer l’optimiseur de contexte RTK", + "config": { + "description": "Afficher ou mettre à jour la configuration de RTK", + "tokenBudget": "Budget de tokens pour RTK", + "reservePct": "Pourcentage de réserve" + }, + "filters": { + "description": "Gérer les filtres RTK", + "pattern": "Motif du filtre (regex)", + "priority": "Priorité du filtre (par défaut : 100)", + "action": "Action du filtre : drop|shrink|replace", + "yes": "Ignorer la confirmation" + }, + "test": { + "file": "Chemin du fichier JSON de la requête" + } + }, + "combos": { + "description": "Gestion des combinaisons sensible au contexte" + } + }, + "sessions": { + "description": "Inspecter et gérer les sessions actives", + "list": { + "user": "Filtrer par utilisateur", + "kind": "Filtrer par type (dashboard|api-key|mcp|a2a)", + "active": "Afficher uniquement les sessions actives", + "limit": "Nombre maximal de résultats (par défaut : 100)" + }, + "expire": { + "yes": "Ignorer la confirmation" + }, + "expireAll": { + "user": "Utilisateur dont les sessions doivent expirer", + "yes": "Ignorer la confirmation" + } + }, + "tags": { + "description": "Gérer les tags de ressources", + "add": { + "color": "Couleur du tag (hexadécimale ou nom)", + "description": "Description du tag" + }, + "remove": { + "yes": "Ignorer la confirmation" + }, + "assign": { + "tag": "Nom du tag", + "to": "Ressource cible au format type:id (p. ex. provider:openai)" + }, + "unassign": { + "tag": "Nom du tag", + "from": "Ressource source au format type:id" + } + }, + "openapi": { + "description": "Accéder à la spécification OpenAPI d’OmniRoute et la tester", + "dump": { + "description": "Afficher la spécification OpenAPI dans stdout ou l’enregistrer dans un fichier", + "format": "Format de sortie : yaml|json (par défaut : yaml)", + "out": "Enregistrer dans un chemin de fichier" + }, + "validate": { + "description": "Valider la spécification OpenAPI" + }, + "try": { + "description": "Tester un point de terminaison d’API via la spécification", + "method": "Méthode HTTP (par défaut : GET)", + "body": "Chemin vers le fichier JSON du corps de la requête", + "query": "Paramètre de requête au format key=value (répétable)", + "header": "En-tête au format key=value (répétable)" + }, + "endpoints": { + "description": "Répertorier tous les points de terminaison de l’API", + "search": "Filtrer par chemin ou résumé" + }, + "paths": { + "description": "Répertorier tous les chemins de l’API" + } + }, + "combo": { + "title": "Combinaisons", + "switched": "Combinaison active : {name}", + "created": "Combinaison créée : {name}", + "deleted": "Combinaison supprimée : {name}", + "noCombos": "Aucune combinaison configurée.", + "confirmDelete": "Supprimer la combinaison {name} ?", + "suggest": { + "description": "Suggérer la meilleure combinaison pour une tâche à l’aide d’une évaluation par IA", + "task": "Description de la tâche", + "maxCost": "Coût maximal par requête en USD", + "maxLatencyMs": "Latence maximale en millisecondes", + "weights": "Pondérations d’évaluation JSON, p. ex. {\"latency\":0.7,\"cost\":0.3}", + "top": "Nombre de meilleurs candidats à afficher (par défaut : 5)", + "explain": "Afficher la justification dans stderr", + "switch": "Activer la combinaison la mieux classée" + } + }, + "oneproxy": { + "description": "Gérer le pool en amont de OneProxy", + "stats": { + "provider": "Filtrer par fournisseur", + "period": "Période (par défaut : 24h)" + }, + "fetch": { + "description": "Récupérer des proxys depuis le pool", + "count": "Nombre de proxys à récupérer (par défaut : 1)", + "type": "Type de proxy : http|socks5 (par défaut : http)" + }, + "rotate": { + "description": "Forcer la rotation du proxy", + "provider": "Fournisseur pour lequel effectuer la rotation", + "connectionId": "ID de connexion spécifique à renouveler" + }, + "config": { + "description": "Afficher ou mettre à jour la configuration de OneProxy", + "enabled": "Activer le pool de proxys (true|false)", + "poolSize": "Taille du pool", + "providerSource": "URL du fournisseur de proxys", + "rotationPolicy": "Politique de rotation : sticky|per-request|periodic" + }, + "pool": { + "description": "Répertorier le pool de proxys actuel avec ses métriques" + } + }, + "open": { + "description": "Ouvrir une page spécifique du tableau de bord OmniRoute dans le navigateur", + "url": "Afficher uniquement l’URL, sans ouvrir le navigateur" + }, + "telemetry": { + "description": "Accéder aux données de télémétrie agrégées", + "summary": { + "description": "Afficher le résumé de la télémétrie agrégée", + "period": "Période : 24h|7d|30d (par défaut : 24h)", + "compareTo": "Comparer à la période précédente" + }, + "export": { + "description": "Exporter les événements de télémétrie au format JSONL", + "out": "Chemin du fichier de sortie (par défaut : telemetry.jsonl)", + "period": "Période à exporter (par défaut : 7d)" + } + }, + "sync": { + "description": "Synchroniser la configuration entre les instances OmniRoute", + "push": { + "description": "Envoyer la configuration vers le cloud ou une instance distante", + "target": "Cible (cloud ou context:name)", + "bundle": "Éléments du bundle à synchroniser", + "dryRun": "Prévisualiser sans appliquer" + }, + "pull": { + "description": "Récupérer la configuration depuis le cloud ou une instance distante", + "source": "Source (cloud ou context:name)", + "merge": "Fusionner avec la configuration existante", + "replace": "Remplacer la configuration existante", + "dryRun": "Prévisualiser sans appliquer" + }, + "diff": { + "source": "Contexte source", + "target": "Contexte cible" + }, + "bundle": { + "description": "Exporter la configuration sous forme de fichier bundle", + "include": "Éléments à inclure (séparés par des virgules)" + }, + "import": { + "description": "Importer un fichier bundle", + "dryRun": "Valider sans appliquer" + }, + "initialize": { + "fromCloud": "Initialiser à partir d’une sauvegarde cloud" + }, + "tokens": { + "description": "Gérer les jetons de synchronisation", + "create": { + "name": "Nom du jeton", + "scope": "Portée du jeton", + "ttl": "Durée de vie du jeton (p. ex. 30d)" + }, + "revoke": { + "yes": "Ignorer la confirmation" + } + }, + "resolve": { + "description": "Résoudre les conflits de synchronisation de manière interactive" + } + }, + "config": { + "contexts": { + "description": "Gérer les contextes/profils de serveur (ajouter, utiliser, répertorier, afficher, supprimer, renommer, exporter, importer)" + }, + "lang": { + "description": "Gérer la langue d’affichage de la CLI", + "getDescription": "Afficher le code de la langue actuellement active", + "setDescription": "Définir la langue d’affichage et l’enregistrer dans la configuration", + "listDescription": "Répertorier toutes les langues disponibles", + "listTitle": "Langues disponibles", + "current": "Langue : {code} ({name})", + "saved": "Langue définie sur {code} ({name}).", + "noCode": "Code de langue requis. Exécutez « omniroute config lang list » pour afficher les codes disponibles.", + "unknown": "Code de langue inconnu : {code}. Exécutez « omniroute config lang list » pour afficher les codes disponibles.", + "alreadySet": "La langue est déjà définie sur {code}.", + "envHint": "Conseil : vous pouvez également définir OMNIROUTE_LANG={code} dans votre environnement." + } + }, + "completion": { + "description": "Générer ou installer les scripts d’autocomplétion du shell", + "zsh": "Afficher le script d’autocomplétion zsh", + "bash": "Afficher le script d’autocomplétion bash", + "fish": "Afficher le script d’autocomplétion fish", + "install": "Installer globalement le script d’autocomplétion pour le shell détecté", + "refresh": "Actualiser le cache des combinaisons, fournisseurs et modèles" + }, + "logs": { + "description": "Diffuser ou exporter les journaux de requêtes", + "follow": "Diffuser les journaux en temps réel", + "filter": "Filtrer par niveau (error,warn,info) — valeurs séparées par des virgules", + "lines": "Nombre de lignes à récupérer", + "timeout": "Délai d’expiration de la connexion en ms", + "baseUrl": "URL de base de l’API OmniRoute", + "requestId": "Filtrer par ID de requête", + "apiKey": "Filtrer par clé API", + "combo": "Filtrer par nom de combinaison", + "status": "Filtrer par code d’état HTTP", + "durationMin": "Durée minimale de la requête en ms", + "durationMax": "Durée maximale de la requête en ms", + "export": "Enregistrer les journaux dans un fichier (json/jsonl/csv)", + "exported": "Journaux enregistrés dans {path}", + "stopped": "Diffusion des journaux arrêtée.", + "streamError": "Erreur de diffusion des journaux : {message}" + }, + "tray": { + "description": "Contrôler l’icône de la zone de notification", + "show": "Afficher l’icône de la zone de notification (si le serveur s’exécute avec --tray)", + "hide": "Masquer l’icône de la zone de notification", + "quit": "Quitter OmniRoute depuis la zone de notification" + }, + "autostart": { + "description": "Gérer le démarrage automatique d’OmniRoute au démarrage du système (Linux : service utilisateur systemd)", + "enable": "Activer le démarrage automatique au démarrage du système", + "disable": "Désactiver le démarrage automatique au démarrage du système", + "toggle": "Activer ou désactiver le démarrage automatique au démarrage du système", + "status": "Afficher l’état du démarrage automatique" + }, + "runtime": { + "description": "Gérer les dépendances d’exécution natives", + "check": "Vérifier l’état des dépendances natives dans le répertoire d’exécution", + "repair": "Réinstaller les dépendances natives dans le répertoire d’exécution", + "repair_force": "Forcer la réinstallation même si elles sont valides", + "clean": "Supprimer le répertoire d’exécution (libère de l’espace disque)", + "clean_yes": "Ignorer la confirmation" + }, + "repl": { + "description": "REPL interactif multi-tour avec un LLM", + "model": "Modèle à utiliser (par défaut : auto)", + "combo": "Nom du combo à utiliser", + "system": "Prompt système", + "resume": "Reprendre une session enregistrée par son nom" + }, + "plugin": { + "description": "Gérer les plugins CLI (omniroute-cmd-*)", + "list": "Répertorier les plugins installés", + "install": "Installer un plugin depuis npm ou un chemin local", + "remove": "Supprimer un plugin installé", + "info": "Afficher les détails d’un plugin installé", + "search": "Rechercher les plugins disponibles dans le registre npm", + "update": "Mettre à jour les plugins installés", + "scaffold": "Générer la structure de base d’un nouveau plugin" + }, + "launch": { + "description": "Lancer Claude Code en le connectant à OmniRoute (local ou distant, avec --profile)", + "token": "Jeton que le client Claude doit envoyer (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute n’est pas accessible sur {port}. Démarrez-le avec 'omniroute serve'.", + "notFound": "La CLI 'claude' est introuvable dans PATH." + }, + "run": { + "description": "Lancer une cible CLI prise en charge via OmniRoute" + }, + "setupClaude": { + "description": "Générer des profils Claude Code dans ~/.claude/profiles à partir du catalogue de modèles OmniRoute" + }, + "connect": { + "description": "Se connecter à un serveur OmniRoute distant et passer en mode distant" + }, + "tokens": { + "description": "Gérer les jetons d’accès CLI à portée limitée (mode distant)" + }, + "configure": { + "description": "Choisir un fournisseur et un modèle sur le serveur actif, puis configurer une CLI locale prise en charge" + }, + "launchCodex": { + "description": "Lancer Codex CLI en le connectant à OmniRoute (VPS local ou distant)" + }, + "setupCodex": { + "description": "Générer des fichiers de profil dans ~/.codex à partir du catalogue de modèles OmniRoute en direct" + }, + "packs": { + "description": "Gérer les packs d’exécution facultatifs (ML / automatisation du navigateur)", + "listDescription": "Répertorier les packs facultatifs et leur état d’installation", + "installDescription": "Installer un pack facultatif dans DATA_DIR", + "verifyDescription": "Vérifier les packs installés à l’aide de l’index des sommes de contrôle fourni", + "removeDescription": "Supprimer un pack facultatif installé", + "sourceOpt": "Répertoire contenant les charges utiles des packs et leur index", + "warnNoIndex": "optional-packs.index.json est introuvable — l’installation et la vérification ne sont pas disponibles dans cette copie de travail (les bundles de bureau l’incluent)", + "errUnknown": "pack inconnu : {name}", + "errNoIndex": "index des packs introuvable ; utilisez --source en indiquant le répertoire contenant la charge utile du pack (les bundles de bureau le placent à côté de l’application)", + "installed": "pack « {name} » installé et vérifié dans {dir}", + "restartHint": "redémarrez le serveur OmniRoute (ou l’application de bureau) afin que l’environnement d’exécution prenne en compte le pack", + "removed": "pack « {name} » supprimé", + "notInstalled": "le pack « {name} » n’était pas installé", + "verifyOk": "tous les packs installés ont été vérifiés", + "verifyFailed": "échec de la vérification de {count} pack(s)", + "noneInstalled": "aucun pack facultatif installé" } } diff --git a/bin/cli/locales/ga.json b/bin/cli/locales/ga.json index 717f32f714..816c8f964f 100644 --- a/bin/cli/locales/ga.json +++ b/bin/cli/locales/ga.json @@ -256,6 +256,7 @@ "max_restarts": "Uaslíon atosuithe titim laistigh de 30 sula bhfágann tú suas (réamhshocrú: 2)", "tray": "Tosaigh i mbosca córas (leicsitheoir amháin, roghnach)", "no_tray": "Díchumasaigh deilbhín bosca córas", + "ready_timeout": "Teorainn ama an tseiceála ullmhachta i ms (OMNIROUTE_READY_TIMEOUT_MS freisin, réamhshocrú 60000)", "tls_cert": "Cosán go dtí deimhniú TLS (PEM) chun HTTPS a sheirbhísiú (freisin OMNIROUTE_TLS_CERT)", "tls_key": "Cosán go dtí eochair phríobháideach TLS (PEM) chun HTTPS a sheirbhísiú (freisin OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Tá freastalaí MCP ag rith ({transport})", "stopped": "Tá freastalaí MCP stoptha.", "restarted": "Tá freastalaí MCP atosaíte.", + "stoppedHint": "Rith `omniroute mcp enable` chun é a chur ar siúl.", + "enabled": "Freastalaí MCP cumasaithe.", + "disabled": "Freastalaí MCP díchumasaithe.", + "enable": { + "description": "Cumasaigh an freastalaí MCP", + "transport": "Iompar le húsáid: stdio|sse|streamable-http" + }, + "disable": { + "description": "Díchumasaigh an freastalaí MCP" + }, "call": { "description": "Glaoigh ar uirlis MCP go díreach", "args": "Réimse argóintí JSON (inlíne)", diff --git a/bin/cli/locales/gu.json b/bin/cli/locales/gu.json index 1fa0439820..4bb653bb5b 100644 --- a/bin/cli/locales/gu.json +++ b/bin/cli/locales/gu.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "ભૂલ: {message}", + "serverOffline": "OmniRoute સર્વર ઑફલાઇન છે. તેને આ કમાન્ડથી શરૂ કરો: omniroute serve", + "authRequired": "પ્રમાણીકરણ જરૂરી છે. OMNIROUTE_API_KEY સેટ કરો અથવા આ કમાન્ડ ચલાવો: omniroute setup", + "rateLimited": "દર મર્યાદા વટાવી ગઈ છે. {seconds}s પછી ફરી પ્રયાસ કરો.", + "timeout": "વિનંતીનો સમય {ms}ms પછી સમાપ્ત થયો.", + "success": "પૂર્ણ થયું.", + "yes": "હા", + "no": "ના", + "confirm": "શું તમે ખાતરીપૂર્વક કરવા માંગો છો? (હા/ના)", + "dryRun": "[dry-run] {action} કરાશે", + "cancelled": "રદ કરવામાં આવ્યું.", + "jsonOpt": "JSON તરીકે આઉટપુટ કરો", + "yesOpt": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "setup": { + "title": "OmniRoute સેટઅપ", + "passwordPrompt": "એડમિન પાસવર્ડ", + "providerPrompt": "ડિફૉલ્ટ પ્રદાતા (છોડવા માટે ખાલી રાખો)", + "done": "સેટઅપ પૂર્ણ થયું", + "passwordSet": "એડમિન પાસવર્ડ ગોઠવાયો", + "providerSet": "પ્રદાતા ગોઠવાયો: {name}", + "testingProvider": "પ્રદાતા કનેક્શનનું પરીક્ષણ થઈ રહ્યું છે: {name}", + "testPassed": "પ્રદાતાનું પરીક્ષણ સફળ થયું", + "testFailed": "પ્રદાતાનું પરીક્ષણ નિષ્ફળ ગયું: {error}", + "loginEnabled": "લૉગિન: સક્ષમ (પાસવર્ડ અપડેટ થયો)", + "loginDisabled": "લૉગિન: અક્ષમ", + "providerInfo": "પ્રદાતા: {info}", + "opencode": "OpenCode માટે બંડલ કરેલ @omniroute/opencode-plugin ઇન્સ્ટૉલ અને ગોઠવો" + }, + "doctor": { + "title": "OmniRoute નિદાન", + "dbOk": "ડેટાબેઝ: બરાબર ({path})", + "dbMissing": "ડેટાબેઝ: પ્રારંભિત નથી — `omniroute setup` ચલાવો", + "portOk": "પોર્ટ {port}: ઉપલબ્ધ", + "portConflict": "પોર્ટ {port}: અન્ય પ્રોસેસ દ્વારા ઉપયોગમાં છે", + "encryptionOk": "એન્ક્રિપ્શન કી: ગોઠવેલી છે", + "encryptionMissing": "એન્ક્રિપ્શન કી ખૂટે છે — `omniroute setup` ચલાવો", + "allGood": "તમામ ચકાસણીઓ સફળ થઈ.", + "warnings": "{count} ચેતવણી(ઓ) — ઉપર જુઓ." + }, + "providers": { + "title": "પ્રદાતાઓ", + "noProviders": "કોઈ પ્રદાતા ગોઠવાયેલો નથી. આ કમાન્ડ ચલાવો: omniroute setup", + "testing": "{name}નું પરીક્ષણ થઈ રહ્યું છે...", + "available": "{count} પ્રદાતા ઉપલબ્ધ", + "connected": "કનેક્ટેડ", + "disconnected": "ડિસ્કનેક્ટ થયેલ", + "validationFailed": "ચકાસણી નિષ્ફળ: {error}", + "metrics": { + "description": "પ્રદાતાના પ્રદર્શન મેટ્રિક્સ બતાવો (વિલંબ, સફળતા દર, ખર્ચ)", + "provider": "પ્રદાતા ID દ્વારા ફિલ્ટર કરો", + "connection_id": "કનેક્શન ID દ્વારા ફિલ્ટર કરો", + "period": "સમયગાળો: 1h|6h|24h|7d|30d (ડિફૉલ્ટ: 24h)", + "metric": "ચોક્કસ મેટ્રિક ફીલ્ડ પર ધ્યાન કેન્દ્રિત કરો", + "sort": "ફીલ્ડ મુજબ ગોઠવો (ઉતરતા ક્રમમાં)", + "limit": "મહત્તમ પંક્તિઓ (ડિફૉલ્ટ: 50)", + "watch": "દર 5s એ રિફ્રેશ કરો (લાઇવ મોડ)", + "compare": "સાથે-સાથે સરખાવવા માટે અલ્પવિરામથી અલગ કરેલા પ્રદાતા ID" + }, + "metric_single": { + "description": "ચોક્કસ કનેક્શન માટે એક જ મેટ્રિક મૂલ્ય મેળવો" + }, + "rotate": { + "description": "પ્રદાતા કનેક્શન માટે અપસ્ટ્રીમ API કી ફેરવો", + "newKeyOpt": "નવી API કીનું મૂલ્ય (ટાળો: તેના બદલે --from-env વાપરો)", + "fromEnvOpt": "એન્વાયરમેન્ટ વેરિએબલ VAR માંથી નવી કી વાંચો", + "oauthOpt": "તેના બદલે OAuth પુનઃપ્રમાણીકરણ પ્રવાહ શરૂ કરો", + "skipTestOpt": "ફેરવ્યા પછીની કનેક્ટિવિટી કસોટી છોડો", + "dryRunOpt": "લખ્યા વિના શું બદલાશે તે બતાવો", + "confirmPrompt": "કનેક્શન \"{name}\" ({id}) માટે API કી બદલવી છે? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) માટે કી ફેરવવામાં આવી હોત. કોઈ ફેરફાર કરવામાં આવ્યા નથી.", + "oauthHint": "OAuth કનેક્શન — ચલાવો: omniroute oauth {provider}", + "envVarEmpty": "એન્વાયરમેન્ટ વેરિએબલ {var} સેટ નથી અથવા ખાલી છે.", + "success": "\"{name}\" માટે કી ફેરવાઈ. ચકાસવા માટે `providers test {id}` ચલાવો.", + "testPassed": "ફેરવ્યા પછીની કસોટી સફળ થઈ.", + "testFailed": "ફેરવ્યા પછીની કસોટી નિષ્ફળ: {error}" + }, + "status": { + "description": "બધા પ્રદાતા કનેક્શન માટે કીની સ્થિતિ બતાવો (ઉંમર, સમાપ્તિ, કૂલડાઉન)", + "providerOpt": "પ્રદાતાના નામ દ્વારા ફિલ્ટર કરો", + "header": "ID પ્રદાતા નામ સમાપ્તિ સ્થિતિ કસોટી સ્થિતિ કૂલડાઉન સુધી", + "noData": "કોઈ પ્રદાતા કનેક્શન ડેટા ઉપલબ્ધ નથી.", + "requiresServer": "providers status માટે OmniRoute સર્વર ચાલુ હોવું જરૂરી છે." + } + }, + "keys": { + "title": "API કીઓ", + "addDescription": "પ્રદાતા માટે API કી ઉમેરો અથવા અપડેટ કરો", + "listDescription": "ગોઠવેલી બધી API કીઓની યાદી બતાવો", + "removeDescription": "પ્રદાતા માટેની API કી દૂર કરો", + "regenerateDescription": "OmniRoute API કી ફરીથી બનાવો", + "revokeDescription": "OmniRoute API કી રદ કરો", + "revealDescription": "માસ્ક ન કરેલું API કી મૂલ્ય બતાવો", + "usageDescription": "API કીનો તાજેતરનો ઉપયોગ બતાવો", + "usageLimitOpt": "તાજેતરની વિનંતીઓની સંખ્યા", + "rotateDescription": "નવી કી બનાવો અને જૂની કીને અમાન્ય કરો", + "graceOpt": "જૂની કી અમાન્ય થાય તે પહેલાંનો ગ્રેસ પિરિયડ (ms)", + "stdinOpt": "આર્ગ્યુમેન્ટને બદલે stdin માંથી API કી વાંચો", + "added": "{provider} માટે કી ઉમેરવામાં આવી.", + "removed": "કી દૂર કરવામાં આવી.", + "listed": "{count} કી.", + "noKeys": "કોઈ કી કૉન્ફિગર કરેલી નથી.", + "noUsage": "કોઈ ઉપયોગ ડેટા મળ્યો નથી.", + "confirmRemove": "કી {id} દૂર કરવી છે?", + "confirmRegenerate": "કી {id} ફરીથી જનરેટ કરવી છે?", + "confirmRevoke": "કી {id} રદ કરવી છે?", + "confirmRotate": "કી {id} રોટેટ કરવી છે? (ગ્રેસ પિરિયડ પછી જૂની કી અમાન્ય થઈ જશે)", + "regenerated": "ફરીથી જનરેટ થઈ. નવી કી: {key}", + "revoked": "કી {id} રદ કરવામાં આવી.", + "rotated": "કી {id} રોટેટ થઈ. નવી કી ID: {newId}", + "revealWarning": "⚠ આ સંપૂર્ણ અનમાસ્ક કરેલી કી દર્શાવશે. ખાતરી કરો કે તમારી સ્ક્રીન ખાનગી છે.", + "providerRequired": "પ્રોવાઇડર આવશ્યક છે.", + "keyRequired": "API કી આવશ્યક છે.", + "stdinEmpty": "stdin દ્વારા કોઈ API કી આપવામાં આવી નથી.", + "unknownProvider": "અજ્ઞાત પ્રોવાઇડર: {provider}", + "policy": { + "title": "કી નીતિ", + "showDescription": "કી માટે દર/ખર્ચ નીતિ બતાવો", + "setDescription": "કી માટે દર/ખર્ચ નીતિ સેટ કરો", + "rateLimitOpt": "પ્રતિ મિનિટ મહત્તમ વિનંતીઓ", + "maxCostOpt": "પ્રતિ દિવસ મહત્તમ ખર્ચ (USD)", + "allowedModelsOpt": "મંજૂર મોડેલોની અલ્પવિરામથી અલગ કરેલી સૂચિ", + "nothingToSet": "કોઈ નીતિ ફીલ્ડ આપવામાં આવી નથી. --rate-limit, --max-cost, અથવા --allowed-models નો ઉપયોગ કરો.", + "updated": "નીતિ અપડેટ થઈ." + }, + "expiration": { + "title": "કીની સમાપ્તિ", + "listDescription": "ટૂંક સમયમાં સમાપ્ત થતી કીઓની સૂચિ બતાવો", + "daysOpt": "N દિવસમાં સમાપ્ત થતી કીઓ બતાવો", + "none": "{days} દિવસમાં કોઈ કી સમાપ્ત થતી નથી.", + "listTitle": "{days} દિવસમાં સમાપ્ત થતી કીઓ:" + } + }, + "authExport": { + "description": "ડિક્રિપ્ટ કરેલા પ્રોવાઇડર ક્રેડેન્શિયલ્સ એક્સપોર્ટ કરો (ફક્ત સ્થાનિક ઉપયોગ માટે, પ્લેનટેક્સ્ટ આઉટપુટ)", + "idOpt": "ફક્ત આ id/નામ/પ્રોવાઇડર સાથે મેળ ખાતું કનેક્શન એક્સપોર્ટ કરો", + "formatOpt": "આઉટપુટ ફોર્મેટ: json અથવા env", + "outOpt": "stdout ને બદલે આઉટપુટ ફાઇલમાં લખો (0600 પરવાનગીઓ સાથે લખાશે)", + "forceOpt": "પુષ્ટિ કરો કે તમે સમજો છો કે આ પ્લેનટેક્સ્ટ સિક્રેટ્સ પ્રિન્ટ/લખે છે", + "warning": "⚠ આ ડિક્રિપ્ટ કરેલી પ્લેનટેક્સ્ટ API કીઓ અને OAuth ટોકન્સ પ્રિન્ટ/લખે છે. ખાતરી કરો કે તમારી સ્ક્રીન, શેલ હિસ્ટ્રી અને કોઈપણ આઉટપુટ ફાઇલ ખાનગી રહે.", + "confirmHeading": "⚠ ચેતવણી: આ ડિક્રિપ્ટ કરેલા પ્રોવાઇડર ક્રેડેન્શિયલ્સને પ્લેનટેક્સ્ટમાં એક્સપોર્ટ કરે છે", + "confirmBody": "આ કમાન્ડ પસંદ કરેલા કનેક્શન માટે apiKey, accessToken, refreshToken અને\nidToken ડિક્રિપ્ટ કરીને પ્રિન્ટ/લખે છે. આઉટપુટને સિક્રેટ તરીકે સાચવો.", + "confirmFooter": "પુષ્ટિ કરવા માટે, ચલાવો:\n omniroute auth export --force", + "missingKey": "ક્રેડેન્શિયલ્સ નિકાસ કરવા માટે STORAGE_ENCRYPTION_KEY જરૂરી છે.", + "notFound": "કનેક્શન મળ્યું નથી: {id}", + "invalidFormat": "અમાન્ય ફોર્મેટ: {format}. json અથવા env વાપરો." + }, + "stream": { + "description": "SSE નિરીક્ષણ મોડ્સ સાથે ચેટ પ્રતિસાદ સ્ટ્રીમ કરો", + "file": "ફાઇલમાંથી પ્રોમ્પ્ટ વાંચો", + "stdin": "stdin માંથી પ્રોમ્પ્ટ વાંચો", + "model": "મોડેલ ID (ડિફૉલ્ટ: auto)", + "system": "સિસ્ટમ પ્રોમ્પ્ટ", + "combo": "નામ દ્વારા ચોક્કસ કોમ્બો ફરજિયાત કરો", + "max_tokens": "પ્રતિસાદમાં મહત્તમ ટોકન્સ", + "responses_api": "/v1/chat/completions ને બદલે /v1/responses વાપરો", + "raw": "પ્રાપ્ત થયેલી કાચી SSE લાઇનો પ્રિન્ટ કરો", + "debug": "પ્રતિ-ચંક સમયની માહિતી stderr પર પ્રિન્ટ કરો", + "save": "બધી SSE ઇવેન્ટ્સને .jsonl ફાઇલમાં સાચવો", + "error": { + "empty_prompt": "ભૂલ: પ્રોમ્પ્ટ જરૂરી છે (સ્થાનસૂચક આર્ગ્યુમેન્ટ, --file, અથવા --stdin)" + } + }, + "usage": { + "description": "વપરાશ વિશ્લેષણ, બજેટ, ક્વોટા અને લૉગ્સ", + "analytics": { + "description": "એકત્રિત વપરાશ વિશ્લેષણ બતાવો", + "period": "સમયગાળો: 1d|7d|30d|90d|ytd|all (ડિફૉલ્ટ: 30d)", + "provider": "પ્રોવાઇડર ID દ્વારા ફિલ્ટર કરો" + }, + "budget": { + "description": "ખર્ચના બજેટ મેનેજ કરો", + "set": { + "scope": "બજેટનો વ્યાપ (ડિફૉલ્ટ: global)", + "period": "બજેટ અવધિ: daily|weekly|monthly (ડિફૉલ્ટ: monthly)" + } + }, + "quota": { + "description": "પ્રોવાઇડરના ક્વોટાનો વપરાશ બતાવો", + "provider": "પ્રોવાઇડર ID દ્વારા ફિલ્ટર કરો", + "check": "નવી વિનંતી માટે ક્વોટા ઉપલબ્ધ છે કે કેમ તે બતાવો" + }, + "logs": { + "description": "વિનંતી કૉલ લૉગ્સ બતાવો", + "limit": "પરત કરવાની લૉગ એન્ટ્રીઓની સંખ્યા (ડિફૉલ્ટ: 100)", + "search": "લૉગ્સ ફિલ્ટર કરવા માટે શોધ ક્વેરી", + "since": "આ ટાઇમસ્ટૅમ્પ પછીના લૉગ્સ પરત કરો", + "follow": "નવી લૉગ એન્ટ્રીઓ સતત અનુસરો", + "api_key": "API કી દ્વારા લૉગ્સ ફિલ્ટર કરો" + }, + "utilization": { + "description": "API કીના ઉપયોગના મેટ્રિક્સ બતાવો", + "api_key": "API કી દ્વારા ફિલ્ટર કરો" + }, + "history": { + "description": "વિનંતી ઇતિહાસ બતાવો", + "limit": "ઇતિહાસ એન્ટ્રીઓની સંખ્યા (ડિફૉલ્ટ: 100)" + }, + "proxy_logs": { + "description": "પ્રોક્સી-સ્તરના વિનંતી લૉગ્સ બતાવો", + "limit": "પ્રોક્સી લૉગ એન્ટ્રીઓની સંખ્યા (ડિફૉલ્ટ: 100)" + } + }, + "cost": { + "description": "પ્રોવાઇડર, મોડેલ, કોમ્બો અથવા API કી પ્રમાણે વિભાજન સાથે ખર્ચ રિપોર્ટ બતાવો", + "period": "સમયગાળો: 1d|7d|30d|90d|ytd|all (ડિફૉલ્ટ: 30d)", + "since": "શરૂઆતની તારીખ (ISO ફોર્મેટ, દા.ત. 2026-01-01) — --period ને ઓવરરાઇડ કરે છે", + "until": "સમાપ્તિ તારીખ (ISO ફોર્મેટ)", + "group_by": "પરિણામોને આ પ્રમાણે જૂથબદ્ધ કરો: provider|model|api-key|combo|day (ડિફૉલ્ટ: provider)", + "api_key_filter": "ચોક્કસ API કી દ્વારા ફિલ્ટર કરો", + "limit": "બતાવવા માટેની પંક્તિઓની મહત્તમ સંખ્યા (ડિફૉલ્ટ: 100)" + }, + "simulate": { + "description": "ડ્રાય-રન રાઉટિંગ સિમ્યુલેશન — અપસ્ટ્રીમને કૉલ કર્યા વિના કયા providers પસંદ થશે તે બતાવો", + "file": "JSON ફાઇલમાંથી સંપૂર્ણ રિક્વેસ્ટ બોડી લોડ કરો", + "model": "મોડેલ ID (ડિફૉલ્ટ: auto)", + "combo": "નામ દ્વારા ચોક્કસ combo ફરજિયાત કરો", + "reasoning": "રિઝનિંગ પ્રયાસનું સ્તર (low|medium|high)", + "thinking": "વિસ્તૃત વિચારણા માટેનું ટોકન બજેટ", + "explain": "ફૉલબૅક ટ્રી અને ખર્ચની શ્રેણી stderr પર પ્રિન્ટ કરો", + "noCombo": "કોઈ મેળ ખાતો combo મળ્યો નથી. આના વડે એક કન્ફિગર કરો: omniroute combo create" + }, + "chat": { + "description": "OmniRoute ને એક-વખતનો ચૅટ પ્રોમ્પ્ટ મોકલો", + "file": "ફાઇલમાંથી પ્રોમ્પ્ટ વાંચો", + "stdin": "stdin માંથી પ્રોમ્પ્ટ વાંચો", + "system": "સિસ્ટમ પ્રોમ્પ્ટ", + "model": "મોડેલ ID (ડિફૉલ્ટ: auto)", + "max_tokens": "પ્રતિસાદમાં મહત્તમ ટોકન્સ", + "temperature": "સૅમ્પલિંગ ટેમ્પરેચર (0–2)", + "top_p": "Top-p ન્યુક્લિયસ સૅમ્પલિંગ", + "reasoning_effort": "રિઝનિંગ પ્રયાસનું સ્તર (low|medium|high)", + "thinking_budget": "વિસ્તૃત વિચારણા માટેનું ટોકન બજેટ", + "combo": "નામ દ્વારા ચોક્કસ combo ફરજિયાત કરો", + "responses_api": "/v1/chat/completions ને બદલે /v1/responses નો ઉપયોગ કરો", + "stream": "પ્રતિસાદને ક્રમશઃ સ્ટ્રીમ કરો", + "no_history": "~/.omniroute/cli-history.jsonl માં સાચવશો નહીં", + "error": { + "empty_prompt": "ભૂલ: પ્રોમ્પ્ટ જરૂરી છે (પોઝિશનલ આર્ગ્યુમેન્ટ, --file, અથવા --stdin)" + } + }, + "serve": { + "description": "OmniRoute સર્વર શરૂ કરો (ડિફૉલ્ટ ક્રિયા)", + "starting": "પોર્ટ {port} પર OmniRoute સર્વર શરૂ થઈ રહ્યું છે...", + "ready": "http://localhost:{port} પર તૈયાર છે", + "stopping": "સર્વર બંધ થઈ રહ્યું છે (PID {pid})...", + "stopped": "સર્વર બંધ થયું.", + "notRunning": "સર્વર ચાલી રહ્યું નથી.", + "port": "સાંભળવા માટેનો પોર્ટ (ડિફૉલ્ટ: 20128)", + "no_open": "બ્રાઉઝર આપમેળે ખોલશો નહીં", + "daemon": "સર્વરને બૅકગ્રાઉન્ડ ડીમન તરીકે ચલાવો", + "log": "સર્વર લૉગ્સ ઇનલાઇન બતાવો", + "no_recovery": "ક્રૅશ થવા પર ઑટો-રીસ્ટાર્ટ અક્ષમ કરો (ડિબગિંગ મોડ)", + "max_restarts": "હાર માની લેતા પહેલાં 30sમાં ક્રૅશ રીસ્ટાર્ટની મહત્તમ સંખ્યા (ડિફૉલ્ટ: 2)", + "tray": "સિસ્ટમ ટ્રેમાં શરૂ કરો (માત્ર ડેસ્કટોપ, પસંદગીથી સક્ષમ)", + "no_tray": "સિસ્ટમ ટ્રે આઇકન અક્ષમ કરો", + "ready_timeout": "મિલિસેકન્ડમાં તૈયારી પ્રોબનો સમયસમાપ્તિ સમય (OMNIROUTE_READY_TIMEOUT_MS પણ, ડિફૉલ્ટ 60000)", + "tls_cert": "HTTPS સર્વ કરવા માટે TLS પ્રમાણપત્ર (PEM)નો પાથ (OMNIROUTE_TLS_CERT પણ)", + "tls_key": "HTTPS સર્વ કરવા માટે TLS ખાનગી કી (PEM)નો પાથ (OMNIROUTE_TLS_KEY પણ)" + }, + "backup": { + "title": "બૅકઅપ", + "description": "OmniRoute ડેટાનો બૅકઅપ બનાવો", + "creating": "બૅકઅપ બનાવી રહ્યાં છીએ...", + "done": "બૅકઅપ {path} પર સાચવવામાં આવ્યો", + "noFiles": "બૅકઅપ લેવા માટે કોઈ ફાઇલો નથી (ડેટાબેઝ પ્રારંભિત નથી)", + "failed": "બૅકઅપ નિષ્ફળ ગયો: {error}", + "restoring": "{path}માંથી પુનઃસ્થાપિત કરી રહ્યાં છીએ...", + "restored": "પુનઃસ્થાપન પૂર્ણ થયું.", + "restoreDescription": "બૅકઅપમાંથી પુનઃસ્થાપિત કરો", + "listTitle": "ઉપલબ્ધ બૅકઅપ્સ", + "noBackups": "કોઈ બૅકઅપ મળ્યા નથી.", + "notFound": "બૅકઅપ મળ્યો નથી: {name}", + "confirmRestore": "{ts}ના બૅકઅપ વડે વર્તમાન ડેટાને ઓવરરાઇટ કરવો છે?", + "createDescription": "OmniRoute ડેટાનો બૅકઅપ બનાવો", + "nameOpt": "કસ્ટમ બૅકઅપ નામ", + "cloudOpt": "બૅકઅપને ક્લાઉડ સ્ટોરેજ પર અપલોડ કરો", + "encryptOpt": "AES-256-GCM વડે બૅકઅપ એન્ક્રિપ્ટ કરો", + "keyFileOpt": "એન્ક્રિપ્શન પાસફ્રેઝ ધરાવતી ફાઇલનો પાથ", + "excludeOpt": "પૅટર્ન સાથે મેળ ખાતી ફાઇલને બાકાત રાખો (પુનરાવર્તિત)", + "retentionOpt": "માત્ર છેલ્લા N બૅકઅપ્સ રાખો", + "passphrasePrompt": "એન્ક્રિપ્શન પાસફ્રેઝ:", + "noPassphrase": "એન્ક્રિપ્ટેડ બૅકઅપ માટે પાસફ્રેઝ જરૂરી છે.", + "cloudFailed": "ચેતવણી: ક્લાઉડ અપલોડ નિષ્ફળ ગયું. સ્થાનિક બૅકઅપ સાચવવામાં આવ્યો.", + "cloudUploaded": "ક્લાઉડ બૅકઅપ અપલોડ થયો: {url}", + "auto": { + "title": "બૅકઅપ સમયપત્રક", + "enableDescription": "નિર્ધારિત સ્વચાલિત બૅકઅપ્સ સક્ષમ કરો", + "disableDescription": "નિર્ધારિત સ્વચાલિત બૅકઅપ્સ અક્ષમ કરો", + "statusDescription": "વર્તમાન બૅકઅપ સમયપત્રકની સ્થિતિ બતાવો", + "cronOpt": "સમયપત્રક માટે Cron અભિવ્યક્તિ (ડિફૉલ્ટ: દરરોજ સવારે 3 વાગ્યે)", + "enabled": "સ્વચાલિત બૅકઅપ સક્ષમ છે (cron: {cron}).", + "hint": "આ સમયપત્રક સ્ટાર્ટઅપ વખતે omniroute serve દ્વારા વાંચવામાં આવે છે.", + "disabled": "સ્વચાલિત બૅકઅપ અક્ષમ છે.", + "notConfigured": "કોઈ બૅકઅપ સમયપત્રક ગોઠવેલું નથી." + } + }, + "health": { + "description": "સર્વરની કાર્યક્ષમતા અને ઘટકોની સ્થિતિ તપાસો", + "noServer": "સર્વર ચાલી રહ્યું નથી. આ સાથે શરૂ કરો: omniroute serve", + "title": "આરોગ્ય", + "status": "સ્થિતિ: {status}", + "uptime": "ચાલુ સમય: {uptime}", + "requests": "વિનંતીઓ (24 કલાક): {count}", + "cost": "ખર્ચ (24 કલાક): ${cost}" + }, + "quota": { + "description": "પ્રદાતાના ક્વોટાનો ઉપયોગ બતાવો", + "noServer": "સર્વર ચાલુ નથી. આની મદદથી શરૂ કરો: omniroute serve", + "noData": "ક્વોટાની કોઈ માહિતી ઉપલબ્ધ નથી." + }, + "cache": { + "description": "પ્રતિસાદ કૅશ સંચાલિત કરો", + "noServer": "સર્વર ચાલુ નથી. આની મદદથી શરૂ કરો: omniroute serve", + "cleared": "કૅશ સાફ કરવામાં આવ્યો.", + "clearFailed": "કૅશ સાફ કરવામાં નિષ્ફળતા." + }, "redis": { "description": "OmniRoute કેચિંગ અને ક્વોટા ટ્રેકિંગ માટે એક ક્લિકમાં સ્થાનિક Redis કન્ટેનર (Podman અથવા Docker) શરૂ કરો" + }, + "test": { + "description": "પ્રદાતાના કનેક્શનનું પરીક્ષણ કરો", + "noServer": "સર્વર ચાલુ નથી. આની મદદથી શરૂ કરો: omniroute serve", + "testing": "{provider} / {model}નું પરીક્ષણ થઈ રહ્યું છે...", + "passed": "કનેક્શન સફળ થયું!", + "failed": "કનેક્શન નિષ્ફળ થયું: {error}", + "allProvidersOpt": "રૂપરેખાંકિત કરેલા તમામ પ્રદાતાઓનું પરીક્ષણ કરો", + "latencyOpt": "વિલંબ માપન બતાવો (સરેરાશ/ન્યૂનતમ/મહત્તમ ms)", + "repeatOpt": "પરીક્ષણ N વખત પુનરાવર્તિત કરો અને પરિણામો એકત્રિત કરો", + "compareOpt": "સરખામણી કરવા માટે અલ્પવિરામથી અલગ કરેલા મોડેલ્સ (દા.ત. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "પરિણામોને JSON ફાઇલમાં સાચવો", + "saved": "પરિણામો {path}માં સાચવવામાં આવ્યા", + "compareTitle": "મોડેલ સરખામણી", + "compareMinTwo": "--compare માટે ઓછામાં ઓછા બે મોડેલ્સ જરૂરી છે (અલ્પવિરામથી અલગ કરેલા)", + "noProviders": "કોઈ પ્રદાતા રૂપરેખાંકિત નથી. આની મદદથી એક ઉમેરો: omniroute keys add" + }, + "update": { + "checking": "અપડેટ્સ માટે તપાસ થઈ રહી છે...", + "upToDate": "પહેલેથી જ અદ્યતન છે ({version}).", + "available": "અપડેટ ઉપલબ્ધ છે: {current} → {latest}", + "installing": "{latest} ઇન્સ્ટોલ થઈ રહ્યું છે...", + "done": "{latest} પર અપડેટ થયું. લાગુ કરવા માટે સર્વરને ફરી શરૂ કરો." + }, + "mcp": { + "title": "MCP સર્વર", + "running": "MCP સર્વર ચાલુ છે ({transport})", + "stopped": "MCP સર્વર બંધ થયું.", + "restarted": "MCP સર્વર ફરી શરૂ થયું.", + "stoppedHint": "તેને ચાલુ કરવા માટે `omniroute mcp enable` ચલાવો.", + "enabled": "MCP સર્વર સક્ષમ કરવામાં આવ્યું.", + "disabled": "MCP સર્વર અક્ષમ કરવામાં આવ્યું.", + "enable": { + "description": "MCP સર્વર સક્ષમ કરો", + "transport": "ઉપયોગ કરવા માટેનું ટ્રાન્સપોર્ટ: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP સર્વરને અક્ષમ કરો" + }, + "call": { + "description": "MCP ટૂલને સીધું ચલાવો", + "args": "JSON આર્ગ્યુમેન્ટ્સ ઑબ્જેક્ટ (ઇનલાઇન)", + "args_file": "JSON આર્ગ્યુમેન્ટ્સ ફાઇલનો પાથ", + "stream": "સ્ટ્રીમિંગ એન્ડપોઇન્ટ (/api/mcp/stream) નો ઉપયોગ કરો", + "scope": "જરૂરી સ્કોપ (પુનરાવર્તિત, દા.ત. read:health)" + }, + "scopes": { + "description": "ઉપલબ્ધ MCP સ્કોપ્સની યાદી બતાવો", + "tool": "ચોક્કસ ટૂલ માટે જરૂરી સ્કોપ્સ બતાવો" + }, + "tools": { + "description": "MCP ટૂલ્સનું નિરીક્ષણ કરો", + "list": { + "description": "તમામ MCP ટૂલ્સની યાદી બતાવો", + "scope": "સ્કોપ દ્વારા ફિલ્ટર કરો" + }, + "info": { + "description": "MCP ટૂલ માટે મેટાડેટા બતાવો" + }, + "schema": { + "description": "MCP ટૂલ માટે ઇનપુટ/આઉટપુટ JSON સ્કીમા બતાવો", + "io": "સ્કીમાનો પ્રકાર: input|output (ડિફૉલ્ટ: input)" + } + }, + "audit": { + "description": "MCP ઑડિટ લૉગ (audit --source mcp માટે ઉપનામ)" + } + }, + "a2a": { + "skills": { + "description": "એજન્ટ કાર્ડમાંથી ઉપલબ્ધ A2A કૌશલ્યોની યાદી બતાવો" + }, + "invoke": { + "description": "A2A કૌશલ્ય ચલાવો અને ટાસ્ક ID પરત કરો", + "input": "JSON ઇનપુટ ઑબ્જેક્ટ", + "input_file": "JSON ઇનપુટ ફાઇલનો પાથ", + "wait": "પરત ફરતા પહેલાં ટાસ્ક પૂર્ણ થવાની રાહ જુઓ", + "timeout": "પૂર્ણ થવાની રાહ જોવા માટેનો સમયસમાપ્તિ સમય ms માં (ડિફૉલ્ટ: 60000)" + }, + "tasks": { + "description": "A2A ટાસ્ક્સ મેનેજ કરો", + "list": { + "status": "સ્થિતિ દ્વારા ફિલ્ટર કરો", + "skill": "કૌશલ્ય ID દ્વારા ફિલ્ટર કરો" + }, + "watch": { + "description": "પૂર્ણ થાય ત્યાં સુધી ટાસ્કની સ્થિતિ તપાસતા રહો" + }, + "stream": { + "description": "SSE દ્વારા ટાસ્ક અમલીકરણ ઇવેન્ટ્સ સ્ટ્રીમ કરો" + }, + "logs": { + "description": "ટાસ્ક સંદેશાઓ અને આર્ટિફેક્ટ્સ બતાવો" + } + } + }, + "policy": { + "description": "OmniRoute અધિકૃતતા નીતિઓ મેનેજ કરો", + "list": { + "description": "નીતિઓની યાદી બતાવો", + "kind": "પ્રકાર દ્વારા ફિલ્ટર કરો (allow|deny|rate-limit|cost-cap)", + "scope": "સ્કોપ દ્વારા ફિલ્ટર કરો (global|api-key|provider)" + }, + "get": { + "description": "ID દ્વારા નીતિની વિગતો મેળવો" + }, + "create": { + "description": "JSON ફાઇલમાંથી નીતિ બનાવો", + "file": "નીતિ JSON ફાઇલનો પાથ" + }, + "update": { + "description": "JSON ફાઇલમાંથી નીતિ અપડેટ કરો", + "file": "નીતિ JSON ફાઇલનો પાથ" + }, + "delete": { + "description": "ID દ્વારા નીતિ કાઢી નાખો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "evaluate": { + "description": "ડ્રાય-રન નીતિ મૂલ્યાંકન (એક્ઝિટ 0=મંજૂર, 4=નકારેલ)", + "api_key": "મૂલ્યાંકન કરવા માટેની API કી", + "action": "તપાસવાની ક્રિયા (દા.ત. chat, embed, admin)", + "resource": "રિસોર્સ પાથ અથવા ઓળખકર્તા", + "context": "JSON ઑબ્જેક્ટ તરીકે વધારાનો સંદર્ભ" + }, + "export": { + "description": "બધી નીતિઓને JSON ફાઇલમાં નિકાસ કરો" + }, + "import": { + "description": "JSON ફાઇલમાંથી નીતિઓ આયાત કરો", + "overwrite": "સમાન ID ધરાવતી હાલની નીતિઓને ઓવરરાઇટ કરો" + } + }, + "compression": { + "description": "OmniRoute કમ્પ્રેશન પાઇપલાઇનને કન્ફિગર કરો અને તપાસો", + "status": { + "description": "વર્તમાન કમ્પ્રેશન સ્થિતિ અને સેટિંગ્સ બતાવો" + }, + "configure": { + "description": "કમ્પ્રેશન સેટિંગ્સ કન્ફિગર કરો", + "engine": "કમ્પ્રેશન એન્જિન (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman આક્રમકતા 0.0–1.0", + "rtk_budget": "RTK ટોકન બજેટ", + "language_pack": "સક્રિય કરવા માટેનું ભાષા પૅક" + }, + "engine": { + "description": "સક્રિય કમ્પ્રેશન એન્જિન મેળવો અથવા સેટ કરો" + }, + "combos": { + "description": "કમ્પ્રેશન કોમ્બોના આંકડા મેનેજ કરો" + }, + "rules": { + "description": "કમ્પ્રેશન નિયમો મેનેજ કરો", + "add": { + "pattern": "મેળવવાની પેટર્ન (regex અથવા field:pattern)", + "action": "ક્રિયા: drop|shrink|replace" + } + }, + "language_packs": { + "description": "ઉપલબ્ધ કમ્પ્રેશન ભાષા પૅક્સની સૂચિ બતાવો" + }, + "preview": { + "description": "વિનંતી પર કમ્પ્રેશનની અસરનું પૂર્વાવલોકન કરો", + "file": "વિનંતીની JSON ફાઇલનો પાથ" + } + }, + "tunnel": { + "title": "ટનલ્સ", + "listDescription": "સક્રિય ટનલ્સની સૂચિ બતાવો", + "createDescription": "ટનલ બનાવો", + "created": "ટનલ બનાવવામાં આવી: {url}", + "stopped": "ટનલ બંધ કરવામાં આવી.", + "confirmStop": "ટનલ {id} બંધ કરવી છે?", + "stopDescription": "ટનલ બંધ કરો", + "statusDescription": "ટનલની વિગતવાર સ્થિતિ બતાવો", + "logsDescription": "ટનલના લૉગ્સ બતાવો", + "infoDescription": "ટનલની કન્ફિગરેશન વિગતો બતાવો", + "rotateDescription": "નવું ટનલ URL જનરેટ કરો", + "tailOpt": "બતાવવાની લૉગ લાઇનોની સંખ્યા", + "typeRequired": "ટનલનો પ્રકાર આવશ્યક છે.", + "noLogs": "કોઈ લૉગ્સ ઉપલબ્ધ નથી.", + "notAvailable": "ટનલની માહિતી ઉપલબ્ધ નથી.", + "noTunnels": "કોઈ સક્રિય ટનલ્સ નથી.", + "infoTitle": "ટનલની માહિતી: {type}", + "rotated": "ટનલ URL બદલાયું: {url}", + "confirmRotate": "ટનલ {type}નું URL બદલવું છે? (નવું URL જનરેટ થશે)" + }, + "stop": { + "description": "OmniRoute સર્વર બંધ કરો", + "stopping": "સર્વર બંધ થઈ રહ્યું છે (PID {pid})...", + "stopped": "સર્વર બંધ થયું.", + "notRunning": "કોઈ સર્વર ચાલી રહ્યું નથી.", + "portFallback": "કોઈ PID ફાઇલ મળી નથી, પોર્ટ-આધારિત રીતે બંધ કરવાનો પ્રયાસ થઈ રહ્યો છે..." + }, + "restart": { + "description": "OmniRoute સર્વર ફરી શરૂ કરો", + "restarting": "OmniRoute સર્વર ફરી શરૂ થઈ રહ્યું છે..." + }, + "dashboard": { + "description": "બ્રાઉઝરમાં OmniRoute ડૅશબોર્ડ ખોલો", + "opening": "{url} પર ડૅશબોર્ડ ખોલાઈ રહ્યું છે", + "urlOnly": "બ્રાઉઝર ખોલ્યા વિના ડૅશબોર્ડ URL પ્રિન્ટ કરો", + "tui": "ઇન્ટરેક્ટિવ TUI ડૅશબોર્ડ ખોલો (ટર્મિનલ UI, 7 ટૅબ)" + }, + "models": { + "description": "ઉપલબ્ધ મોડેલોની યાદી બતાવો (સર્વર જરૂરી છે)", + "search": "ID, નામ, પ્રદાતા અથવા વર્ણન દ્વારા મોડેલો ફિલ્ટર કરો", + "noServer": "સર્વર ચાલી રહ્યું નથી. આના વડે શરૂ કરો: omniroute serve", + "noModels": "કોઈ મોડેલ મળ્યાં નથી." + }, + "audit": { + "description": "અનુપાલન અને MCP ઑડિટ લૉગ્સ ઍક્સેસ કરો", + "source": "લૉગ સ્રોત: all|compliance|mcp (ડિફૉલ્ટ: all)", + "since": "આ ટાઇમસ્ટૅમ્પ પછીની એન્ટ્રીઓ પરત કરો (ISO 8601)", + "until": "આ ટાઇમસ્ટૅમ્પ સુધીની એન્ટ્રીઓ પરત કરો (ISO 8601)", + "tail": { + "description": "તાજેતરની ઑડિટ લૉગ એન્ટ્રીઓ બતાવો", + "follow": "નવી એન્ટ્રીઓ સતત બતાવતા રહો (2s પોલ)", + "limit": "બતાવવાની મહત્તમ એન્ટ્રીઓ (ડિફૉલ્ટ: 100)" + }, + "search": { + "description": "કીવર્ડ દ્વારા ઑડિટ લૉગ એન્ટ્રીઓ શોધો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 200)", + "actor": "ઍક્ટર ID દ્વારા ફિલ્ટર કરો", + "action": "ક્રિયાના નામ દ્વારા ફિલ્ટર કરો" + }, + "export": { + "description": "ઑડિટ લૉગને ફાઇલમાં નિકાસ કરો", + "format": "આઉટપુટ ફોર્મેટ: jsonl|csv (ડિફૉલ્ટ: jsonl)" + }, + "stats": { + "description": "ઑડિટ લૉગનાં આંકડા બતાવો", + "period": "સમયગાળો: 1d|7d|30d (ડિફૉલ્ટ: 7d)" + }, + "get": { + "description": "ID દ્વારા એક ઑડિટ લૉગ એન્ટ્રી મેળવો" + } + }, + "skills": { + "description": "OmniRoute સ્કિલ્સનું સંચાલન કરો (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "ઇન્સ્ટોલ કરેલી સ્કિલ્સની યાદી બતાવો", + "type": "પ્રકાર દ્વારા ફિલ્ટર કરો (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "ફક્ત સક્ષમ સ્કિલ્સ બતાવો", + "disabled": "ફક્ત અક્ષમ સ્કિલ્સ બતાવો", + "api_key": "API કી દ્વારા ફિલ્ટર કરો" + }, + "get": { + "description": "ID દ્વારા સ્કિલની વિગતો મેળવો" + }, + "install": { + "description": "ફાઇલ અથવા URL પરથી સ્કિલ ઇન્સ્ટોલ કરો", + "from_file": "સ્કિલ JSON વ્યાખ્યા ફાઇલનો પાથ", + "from_url": "રિમોટ સ્કિલ વ્યાખ્યાનું URL", + "type": "સ્કિલ પ્રકાર (sandbox|custom|hybrid)", + "enable": "ઇન્સ્ટોલ કર્યા પછી સ્કિલ સક્ષમ કરો" + }, + "enable": { + "description": "ID દ્વારા સ્કિલ સક્ષમ કરો" + }, + "disable": { + "description": "ID દ્વારા સ્કિલ અક્ષમ કરો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "delete": { + "description": "ID દ્વારા સ્કિલ કાઢી નાખો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "execute": { + "description": "ID દ્વારા સ્કિલ ચલાવો", + "input": "JSON ઇનપુટ ઑબ્જેક્ટ", + "input_file": "JSON ઇનપુટ ફાઇલનો પાથ", + "timeout": "એક્ઝિક્યુશન સમયસમાપ્તિ msમાં (ડિફૉલ્ટ: 30000)" + }, + "executions": { + "description": "સ્કિલ એક્ઝિક્યુશન ઇતિહાસની સૂચિ બતાવો", + "skill": "સ્કિલ ID મુજબ ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 50)", + "status": "સ્થિતિ મુજબ ફિલ્ટર કરો (running|completed|failed)" + }, + "skillssh": { + "description": "SSH દ્વારા ઇન્સ્ટોલ કરેલી સ્કિલ્સનું સંચાલન કરો" + }, + "marketplace": { + "description": "માર્કેટપ્લેસમાંથી સ્કિલ્સ બ્રાઉઝ અને ઇન્સ્ટોલ કરો" + }, + "mp": { + "search": { + "description": "માર્કેટપ્લેસ પૅકેજ શોધો", + "category": "કૅટેગરી મુજબ ફિલ્ટર કરો", + "tag": "ટૅગ મુજબ ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 30)", + "sort": "આના આધારે ક્રમબદ્ધ કરો: downloads|rating|recent" + }, + "info": { + "description": "પૅકેજની વિગતો અને readme બતાવો" + }, + "install": { + "description": "માર્કેટપ્લેસ પૅકેજ ઇન્સ્ટોલ કરો", + "version": "પૅકેજ વર્ઝન (ડિફૉલ્ટ: latest)", + "enable": "ઇન્સ્ટોલ કર્યા પછી સક્ષમ કરો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "categories": { + "description": "માર્કેટપ્લેસ કૅટેગરીઝની સૂચિ બતાવો" + }, + "featured": { + "description": "વિશેષરૂપે દર્શાવેલા માર્કેટપ્લેસ પૅકેજ બતાવો" + } + } + }, + "memory": { + "description": "OmniRoute વાર્તાલાપ મેમરીનું સંચાલન કરો (FTS5 + vector)", + "search": { + "description": "સિમેન્ટિક ક્વેરી દ્વારા મેમરી એન્ટ્રીઓ શોધો", + "type": "મેમરી પ્રકાર મુજબ ફિલ્ટર કરો (user|feedback|project|reference)", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 20)", + "api_key": "API કી મુજબ ફિલ્ટર કરો", + "token_budget": "પરિણામોમાં કુલ ટોકન્સ મર્યાદિત કરો" + }, + "add": { + "description": "નવી મેમરી એન્ટ્રી ઉમેરો", + "content": "મેમરી ટેક્સ્ટ સામગ્રી", + "file": "ફાઇલમાંથી સામગ્રી વાંચો", + "type": "મેમરી પ્રકાર (ડિફૉલ્ટ: user)", + "metadata": "JSON મેટાડેટા ઑબ્જેક્ટ", + "api_key": "API કી સાથે સાંકળો" + }, + "clear": { + "description": "ફિલ્ટર્સ સાથે મેળ ખાતી મેમરી એન્ટ્રીઓ કાઢી નાખો", + "type": "પ્રકાર પ્રમાણે ફિલ્ટર કરો", + "older": "નિર્ધારિત સમયગાળા કરતાં જૂની એન્ટ્રીઓ કાઢી નાખો (30d, 6m, 1y)", + "api_key": "API કી પ્રમાણે ફિલ્ટર કરો", + "yes": "પુષ્ટિ માટેનો પ્રોમ્પ્ટ છોડો" + }, + "list": { + "description": "સર્ચ રેન્કિંગ વિના મેમરી એન્ટ્રીઓની યાદી બતાવો", + "type": "પ્રકાર પ્રમાણે ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 100)", + "api_key": "API કી પ્રમાણે ફિલ્ટર કરો" + }, + "get": { + "description": "ID દ્વારા એક મેમરી એન્ટ્રી મેળવો" + }, + "delete": { + "description": "ID દ્વારા મેમરી એન્ટ્રી કાઢી નાખો", + "yes": "પુષ્ટિ માટેનો પ્રોમ્પ્ટ છોડો" + }, + "health": { + "description": "મેમરી સબસિસ્ટમની સ્થિતિ બતાવો (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth પ્રોવાઇડર કનેક્શન્સ મેનેજ કરો", + "providers": { + "description": "OAuth-સક્ષમ પ્રોવાઇડર્સ અને તેમના ફ્લોના પ્રકારોની યાદી બતાવો" + }, + "start": { + "description": "પ્રોવાઇડર માટે OAuth અધિકૃતતા ફ્લો શરૂ કરો", + "provider": "પ્રોવાઇડર ID (gemini, copilot, cursor, …)", + "no_browser": "માત્ર URL પ્રિન્ટ કરો — બ્રાઉઝર ખોલશો નહીં", + "import_system": "લોકલ સિસ્ટમ કન્ફિગમાંથી ક્રેડેન્શિયલ્સ આપમેળે ઇમ્પોર્ટ કરો", + "social": "સોશિયલ લૉગિન પ્રોવાઇડર (google|github) — kiro માટે જરૂરી", + "timeout": "અધિકૃતતાની રાહ જોવાનો સમયસમાપ્તિ સમય msમાં (ડિફૉલ્ટ: 300000)" + }, + "status": { + "description": "સક્રિય OAuth કનેક્શન્સની યાદી બતાવો", + "provider": "પ્રોવાઇડર ID પ્રમાણે ફિલ્ટર કરો" + }, + "revoke": { + "description": "OAuth કનેક્શન રદ કરો", + "provider": "રદ કરવા માટેનું પ્રોવાઇડર ID", + "connection_id": "ID દ્વારા ચોક્કસ કનેક્શન રદ કરો", + "yes": "પુષ્ટિ માટેનો પ્રોમ્પ્ટ છોડો" + } + }, + "cloud": { + "description": "ક્લાઉડ AI એજન્ટ ટાસ્ક્સ મેનેજ કરો (codex, devin, jules)", + "agents": { + "description": "ઉપલબ્ધ ક્લાઉડ એજન્ટ્સની યાદી બતાવો" + }, + "agent": { + "description": "{agent} ક્લાઉડ એજન્ટ ટાસ્ક્સ મેનેજ કરો", + "auth": { + "description": "OAuth દ્વારા {agent}ને અધિકૃત કરો" + } + }, + "task": { + "description": "ક્લાઉડ એજન્ટ ટાસ્ક્સ મેનેજ કરો", + "create": { + "description": "નવું એજન્ટ ટાસ્ક બનાવો", + "title": "ટાસ્કનું શીર્ષક (ડિફૉલ્ટ રૂપે પ્રોમ્પ્ટના પ્રથમ 80 અક્ષરો)", + "prompt": "ટાસ્ક પ્રોમ્પ્ટ ટેક્સ્ટ", + "prompt_file": "ફાઇલમાંથી પ્રોમ્પ્ટ વાંચો", + "repo": "ટાસ્ક માટે ક્લોન કરવાની રિપોઝિટરી URL", + "branch": "ઉપયોગ કરવા માટેની બ્રાન્ચનું નામ", + "metadata": "JSON મેટાડેટા ઑબ્જેક્ટ" + }, + "list": { + "description": "એજન્ટના કાર્યોની યાદી આપો", + "status": "સ્થિતિ પ્રમાણે ફિલ્ટર કરો (running|completed|failed|cancelled)", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 50)" + }, + "get": { + "description": "ID દ્વારા કાર્યની વિગતો મેળવો" + }, + "status": { + "description": "કાર્યની સ્થિતિ પ્રિન્ટ કરો (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "ચાલુ કાર્ય રદ કરો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "approve": { + "description": "અમલીકરણ શરૂ કરવા માટે એજન્ટની યોજનાને મંજૂરી આપો" + }, + "message": { + "description": "ચાલુ કાર્યને સંદેશ મોકલો" + } + }, + "sources": { + "description": "કાર્ય દ્વારા બનાવવામાં આવેલી સ્રોત ફાઇલોની યાદી આપો" + } + }, + "eval": { + "description": "મૂલ્યાંકન સ્યુટ્સ અને રન્સનું સંચાલન કરો", + "suites": { + "description": "મૂલ્યાંકન સ્યુટ્સનું સંચાલન કરો", + "list": { + "description": "મૂલ્યાંકન સ્યુટ્સની યાદી આપો" + }, + "get": { + "description": "ID દ્વારા મૂલ્યાંકન સ્યુટની વિગતો મેળવો" + }, + "create": { + "description": "JSON ફાઇલમાંથી મૂલ્યાંકન સ્યુટ બનાવો", + "file": "સ્યુટની વ્યાખ્યાવાળી JSON ફાઇલનો પાથ" + } + }, + "run": { + "description": "સ્યુટ માટે મૂલ્યાંકન રન શરૂ કરો", + "model": "મૂલ્યાંકન માટેનું મૉડલ ID (ડિફૉલ્ટ: auto)", + "combo": "નામ દ્વારા ચોક્કસ કૉમ્બો ફરજિયાત કરો", + "concurrency": "એકસાથે ચાલતા નમૂનાઓની સંખ્યા (ડિફૉલ્ટ: 4)", + "tag": "પછીથી ફિલ્ટર કરવા માટે આ રનને ટૅગ કરો", + "watch": "પૂર્ણ થાય ત્યાં સુધી રનની પ્રગતિ પર નજર રાખો" + }, + "list": { + "description": "મૂલ્યાંકન રન્સની યાદી આપો", + "suite": "સ્યુટ ID દ્વારા ફિલ્ટર કરો", + "status": "સ્થિતિ દ્વારા ફિલ્ટર કરો", + "since": "આ ટાઇમસ્ટૅમ્પ પછીના રન્સ પરત કરો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 50)" + }, + "get": { + "description": "ID દ્વારા મૂલ્યાંકન રનની વિગતો મેળવો" + }, + "results": { + "description": "મૂલ્યાંકન રન માટે નમૂનાનાં પરિણામો બતાવો", + "failed": "ફક્ત નિષ્ફળ નમૂનાઓ બતાવો" + }, + "cancel": { + "description": "ચાલુ મૂલ્યાંકન રદ કરો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ છોડો" + }, + "scorecard": { + "description": "પૂર્ણ થયેલા મૂલ્યાંકન રન માટે સ્કોરકાર્ડ બતાવો" + } + }, + "webhooks": { + "description": "OmniRoute વેબહુક્સનું સંચાલન કરો", + "events": { + "description": "તમામ ઉપલબ્ધ વેબહુક ઇવેન્ટ પ્રકારોની યાદી આપો" + }, + "list": { + "description": "ગોઠવેલા વેબહુક્સની યાદી આપો" + }, + "get": { + "description": "ID દ્વારા વેબહુકની વિગતો મેળવો" + }, + "add": { + "description": "નવો વેબહુક રજિસ્ટર કરો", + "url": "ગંતવ્ય URL", + "events": "ઇવેન્ટ પ્રકારોની અલ્પવિરામથી અલગ કરેલી સૂચિ", + "secret": "HMAC સાઇનિંગ સિક્રેટ", + "header": "key=value ફોર્મેટમાં વધારાનું હેડર (પુનરાવર્તિત)", + "no_enabled": "અક્ષમ સ્થિતિમાં webhook બનાવો" + }, + "update": { + "description": "હાલના webhookને અપડેટ કરો", + "enabled": "સક્ષમ સ્થિતિ સેટ કરો (true|false)" + }, + "remove": { + "description": "webhook કાઢી નાખો", + "yes": "પુષ્ટિકરણ પ્રોમ્પ્ટ અવગણો" + }, + "test": { + "description": "webhook પર ટેસ્ટ ઇવેન્ટ મોકલો", + "event": "અનુકરણ કરવા માટેનો ઇવેન્ટ પ્રકાર (ડિફૉલ્ટ: request.completed)" + } + }, + "program": { + "description": "OmniRoute — ઑટો ફૉલબૅક સાથેનું સ્માર્ટ AI રાઉટર", + "version": "વર્ઝન પ્રિન્ટ કરીને બહાર નીકળો", + "output": "આઉટપુટ ફોર્મેટ (table, json, jsonl, csv)", + "quiet": "બિનજરૂરી આઉટપુટ દબાવો", + "no_color": "રંગીન આઉટપુટ અક્ષમ કરો", + "timeout": "મિલિસેકન્ડમાં HTTP વિનંતી સમયસમાપ્તિ", + "api_key": "OmniRoute સર્વર માટેની API કી", + "base_url": "OmniRoute સર્વરનો બેઝ URL", + "context": "આ કમાન્ડ માટે ઉપયોગ કરવાનો સર્વર કોન્ટેક્સ્ટ/પ્રોફાઇલ", + "lang": "CLI ડિસ્પ્લેની ભાષા સેટ કરો (OMNIROUTE_LANGને ઓવરરાઇડ કરે છે)" + }, + "files": { + "description": "ફાઇલો મેનેજ કરો (અપલોડ, સૂચિ, મેળવો, ડાઉનલોડ, કાઢી નાખો)", + "list": { + "purpose": "હેતુ પ્રમાણે ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો" + }, + "get": { + "description": "ફાઇલ મેટાડેટા મેળવો" + }, + "upload": { + "description": "ફાઇલ અપલોડ કરો", + "purpose": "ફાઇલનો હેતુ (batch, assistants, fine-tune)" + }, + "content": { + "description": "ફાઇલની સામગ્રી ડાઉનલોડ કરો", + "out": "પાથ પર સાચવો (ડિફૉલ્ટ: stdout)" + }, + "delete": { + "yes": "પુષ્ટિકરણ અવગણો" + } + }, + "batches": { + "description": "OpenAI-સુસંગત batch જોબ્સ મેનેજ કરો", + "list": { + "status": "સ્થિતિ પ્રમાણે ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો" + }, + "create": { + "description": "batch જોબ બનાવો", + "inputFile": "ઇનપુટ ફાઇલ ID", + "endpoint": "લક્ષ્ય endpoint", + "window": "પૂર્ણતાની સમયમર્યાદા", + "metadata": "મેટાડેટા key=value ઉમેરો" + }, + "submit": { + "description": "JSONL ફાઇલ અપલોડ કરીને batch બનાવો", + "jsonl": "JSONL ફાઇલનો પાથ", + "endpoint": "લક્ષ્ય endpoint", + "wait": "પૂર્ણ થવાની રાહ જુઓ" + }, + "cancel": { + "yes": "પુષ્ટિ છોડો" + }, + "wait": { + "timeout": "સમયસમાપ્તિ ms માં" + }, + "output": { + "out": "આઉટપુટ પાથ પર સાચવો" + }, + "errors": { + "out": "ભૂલો પાથ પર સાચવો" + } + }, + "translator": { + "description": "LLM ફોર્મેટ્સ વચ્ચે વિનંતી બોડીઝનું ભાષાંતર કરો", + "detect": { + "description": "બોડી ફોર્મેટ શોધો" + }, + "translate": { + "description": "બોડીને એક ફોર્મેટમાંથી બીજા ફોર્મેટમાં રૂપાંતરિત કરો" + }, + "send": { + "description": "ભાષાંતર કરીને અપસ્ટ્રીમ મોકલો" + }, + "stream": { + "description": "વિનંતી બોડીનું સ્ટ્રીમિંગ સાથે ભાષાંતર કરો" + }, + "from": "સ્રોત ફોર્મેટ (openai|anthropic|gemini|cohere)", + "to": "લક્ષ્ય ફોર્મેટ (openai|anthropic|gemini|cohere)", + "file": "વિનંતી બોડીની JSON ફાઇલનો પાથ", + "out": "આઉટપુટ ફાઇલમાં સાચવો", + "model": "મોડેલ ઓવરરાઇડ કરો", + "history": { + "limit": "મહત્તમ પરિણામો" + } + }, + "pricing": { + "description": "મોડેલ્સ માટેના કિંમત ડેટાનું સંચાલન કરો", + "sync": { + "description": "અપસ્ટ્રીમ સ્રોતોમાંથી કિંમતો સમન્વયિત કરો", + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો", + "force": "ફરીથી સમન્વય કરવા દબાણ કરો" + }, + "list": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો", + "model": "મોડેલ મુજબ ફિલ્ટર કરો", + "limit": "મહત્તમ પરિણામો" + }, + "defaults": { + "description": "ડિફૉલ્ટ કિંમતોનું સંચાલન કરો", + "input": "1M ટોકન્સ દીઠ ઇનપુટ ખર્ચ (USD)", + "output": "1M ટોકન્સ દીઠ આઉટપુટ ખર્ચ (USD)", + "cacheRead": "1M ટોકન્સ દીઠ કૅશ વાંચન ખર્ચ (USD)", + "cacheWrite": "1M ટોકન્સ દીઠ કૅશ લેખન ખર્ચ (USD)" + }, + "diff": { + "description": "અપસ્ટ્રીમ કિંમતોથી તફાવત બતાવો", + "model": "મોડેલ મુજબ ફિલ્ટર કરો" + } + }, + "radar": { + "description": "સ્થાનિક Radar કૅટલૉગ ફીડ્સનું નિરીક્ષણ અને સમન્વય કરો", + "status": "સ્થાનિક Radar સેટિંગ્સ અને ફીડ કૅશની સ્થિતિ બતાવો", + "sync": "સ્થાનિક સર્વર મારફતે કૅટલૉગ, રેફરલ્સ, ઑફર્સ અને Intel સમન્વયિત કરો" + }, + "resilience": { + "description": "સ્થિતિસ્થાપકતા મિકેનિઝમ્સનું નિરીક્ષણ અને સંચાલન કરો", + "status": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો" + }, + "breakers": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો" + }, + "cooldowns": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો", + "connectionId": "કનેક્શન ID મુજબ ફિલ્ટર કરો" + }, + "lockouts": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો", + "model": "મોડેલ મુજબ ફિલ્ટર કરો" + }, + "reset": { + "description": "બ્રેકર/કૂલડાઉન સ્થિતિ રીસેટ કરો", + "provider": "રીસેટ કરવા માટેનો પ્રદાતા", + "connectionId": "રીસેટ કરવા માટેનું કનેક્શન ID", + "model": "લૉકઆઉટ રીસેટ કરવા માટેનું મોડેલ", + "allCooldowns": "પ્રદાતા માટેના બધા કૂલડાઉન રીસેટ કરો", + "yes": "પુષ્ટિ છોડો" + }, + "profile": { + "description": "રેઝિલિયન્સ પ્રોફાઇલ મેનેજ કરો", + "name": "પ્રોફાઇલનું નામ" + }, + "config": { + "description": "રેઝિલિયન્સ રૂપરેખાંકન મેનેજ કરો", + "threshold": "નિષ્ફળતાની સીમા", + "resetTimeout": "રીસેટ સમયસમાપ્તિ ms માં", + "baseCooldown": "મૂળ કૂલડાઉન ms માં" + } + }, + "nodes": { + "description": "પ્રદાતા નોડ્સ (એન્ડપોઇન્ટ્સ) મેનેજ કરો", + "list": { + "provider": "પ્રદાતા મુજબ ફિલ્ટર કરો", + "enabled": "ફક્ત સક્ષમ નોડ્સ બતાવો" + }, + "add": { + "provider": "પ્રદાતાનું નામ", + "baseUrl": "નોડ માટેનો મૂળ URL", + "name": "નોડનું નામ", + "weight": "લોડ બેલેન્સિંગ વજન", + "region": "પ્રદેશ ટૅગ", + "authHeader": "કસ્ટમ ઑથ હેડર (key=value)" + }, + "update": { + "baseUrl": "નવો મૂળ URL", + "name": "નવું નામ", + "weight": "નવું વજન", + "region": "નવો પ્રદેશ", + "enabled": "સક્ષમ અથવા અક્ષમ કરો (true|false)" + }, + "remove": { + "yes": "પુષ્ટિ છોડો" + }, + "validate": { + "baseUrl": "માન્ય કરવા માટેનો URL", + "provider": "જેની સામે માન્ય કરવાનું છે તે પ્રદાતા" + }, + "test": { + "description": "નોડને પરીક્ષણ વિનંતી મોકલો" + }, + "metrics": { + "description": "નોડના મેટ્રિક્સ બતાવો", + "period": "સમયગાળો (દા.ત. 24h, 7d)" + } + }, + "context": { + "description": "કૉન્ટેક્સ્ટ એન્જિનિયરિંગ પાઇપલાઇન રૂપરેખાંકિત કરો (Caveman, RTK)", + "analytics": { + "period": "સમયગાળો (દા.ત. 7d, 30d)" + }, + "caveman": { + "description": "Caveman કૉન્ટેક્સ્ટ કમ્પ્રેસર મેનેજ કરો", + "config": { + "description": "Caveman રૂપરેખાંકન બતાવો અથવા અપડેટ કરો", + "aggressiveness": "આક્રમકતા 0.0–1.0", + "maxShrinkPct": "મહત્તમ સંકોચન ટકાવારી", + "preserveTags": "સાચવવાના અલ્પવિરામથી અલગ કરેલા ટૅગ્સ" + } + }, + "rtk": { + "description": "RTK કૉન્ટેક્સ્ટ ઑપ્ટિમાઇઝર મેનેજ કરો", + "config": { + "description": "RTK ગોઠવણી બતાવો અથવા અપડેટ કરો", + "tokenBudget": "RTK માટે ટોકન બજેટ", + "reservePct": "અનામત ટકાવારી" + }, + "filters": { + "description": "RTK ફિલ્ટર્સનું સંચાલન કરો", + "pattern": "ફિલ્ટર પેટર્ન (regex)", + "priority": "ફિલ્ટરની પ્રાથમિકતા (ડિફૉલ્ટ: 100)", + "action": "ફિલ્ટર ક્રિયા: drop|shrink|replace", + "yes": "પુષ્ટિ છોડો" + }, + "test": { + "file": "વિનંતીની JSON ફાઇલનો પાથ" + } + }, + "combos": { + "description": "સંદર્ભ-જાગૃત કૉમ્બો સંચાલન" + } + }, + "sessions": { + "description": "સક્રિય સત્રો તપાસો અને સંચાલિત કરો", + "list": { + "user": "વપરાશકર્તા મુજબ ફિલ્ટર કરો", + "kind": "પ્રકાર મુજબ ફિલ્ટર કરો (dashboard|api-key|mcp|a2a)", + "active": "ફક્ત સક્રિય સત્રો બતાવો", + "limit": "મહત્તમ પરિણામો (ડિફૉલ્ટ: 100)" + }, + "expire": { + "yes": "પુષ્ટિ છોડો" + }, + "expireAll": { + "user": "જે વપરાશકર્તાના સત્રોની મુદત સમાપ્ત કરવાની છે", + "yes": "પુષ્ટિ છોડો" + } + }, + "tags": { + "description": "સંસાધન ટૅગ્સનું સંચાલન કરો", + "add": { + "color": "ટૅગનો રંગ (hex અથવા નામ)", + "description": "ટૅગનું વર્ણન" + }, + "remove": { + "yes": "પુષ્ટિ છોડો" + }, + "assign": { + "tag": "ટૅગનું નામ", + "to": "લક્ષ્ય સંસાધન type:id તરીકે (દા.ત. provider:openai)" + }, + "unassign": { + "tag": "ટૅગનું નામ", + "from": "સ્રોત સંસાધન type:id તરીકે" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI સ્પેક ઍક્સેસ કરો અને ચકાસો", + "dump": { + "description": "OpenAPI સ્પેકને stdout અથવા ફાઇલમાં ડમ્પ કરો", + "format": "આઉટપુટ ફોર્મેટ: yaml|json (ડિફૉલ્ટ: yaml)", + "out": "ફાઇલ પાથ પર સાચવો" + }, + "validate": { + "description": "OpenAPI સ્પેક માન્ય કરો" + }, + "try": { + "description": "સ્પેક દ્વારા API એન્ડપોઇન્ટનું પરીક્ષણ કરો", + "method": "HTTP પદ્ધતિ (ડિફૉલ્ટ: GET)", + "body": "વિનંતી બૉડીની JSON ફાઇલનો પાથ", + "query": "ક્વેરી પેરામિટર key=value તરીકે (પુનરાવર્તનીય)", + "header": "હેડર key=value તરીકે (પુનરાવર્તનીય)" + }, + "endpoints": { + "description": "બધા API એન્ડપોઇન્ટ્સની યાદી બતાવો", + "search": "પાથ અથવા સારાંશ મુજબ ફિલ્ટર કરો" + }, + "paths": { + "description": "બધા API પાથની યાદી બતાવો" + } + }, + "combo": { + "title": "કૉમ્બોઝ", + "switched": "સક્રિય કોમ્બો: {name}", + "created": "કોમ્બો બનાવ્યો: {name}", + "deleted": "કોમ્બો કાઢી નાખ્યો: {name}", + "noCombos": "કોઈ કોમ્બો ગોઠવેલા નથી.", + "confirmDelete": "કોમ્બો {name} કાઢી નાખવો છે?", + "suggest": { + "description": "AI સ્કોરિંગનો ઉપયોગ કરીને કાર્ય માટે શ્રેષ્ઠ કોમ્બો સૂચવો", + "task": "કાર્યનું વર્ણન", + "maxCost": "USDમાં પ્રતિ વિનંતી મહત્તમ ખર્ચ", + "maxLatencyMs": "મિલિસેકન્ડમાં મહત્તમ વિલંબ", + "weights": "JSON સ્કોરિંગ વેઇટ્સ, દા.ત. {\"latency\":0.7,\"cost\":0.3}", + "top": "દર્શાવવા માટેના ટોચના ઉમેદવારોની સંખ્યા (ડિફૉલ્ટ: 5)", + "explain": "તર્ક stderr પર પ્રિન્ટ કરો", + "switch": "સર્વોચ્ચ ક્રમાંકિત કોમ્બો સક્રિય કરો" + } + }, + "oneproxy": { + "description": "OneProxy અપસ્ટ્રીમ પૂલનું સંચાલન કરો", + "stats": { + "provider": "પ્રદાતા પ્રમાણે ફિલ્ટર કરો", + "period": "સમયગાળો (ડિફૉલ્ટ: 24h)" + }, + "fetch": { + "description": "પૂલમાંથી પ્રોક્સીઓ મેળવો", + "count": "મેળવવા માટેની પ્રોક્સીઓની સંખ્યા (ડિફૉલ્ટ: 1)", + "type": "પ્રોક્સી પ્રકાર: http|socks5 (ડિફૉલ્ટ: http)" + }, + "rotate": { + "description": "પ્રોક્સી રોટેશન ફરજિયાત કરો", + "provider": "જે પ્રદાતા માટે રોટેટ કરવું છે", + "connectionId": "રોટેટ કરવા માટેની ચોક્કસ કનેક્શન ID" + }, + "config": { + "description": "OneProxy કૉન્ફિગ બતાવો અથવા અપડેટ કરો", + "enabled": "પ્રોક્સી પૂલ સક્ષમ કરો (true|false)", + "poolSize": "પૂલનું કદ", + "providerSource": "પ્રોક્સી પ્રદાતા માટેનું URL", + "rotationPolicy": "રોટેશન નીતિ: sticky|per-request|periodic" + }, + "pool": { + "description": "મેટ્રિક્સ સાથે વર્તમાન પ્રોક્સી પૂલની યાદી બતાવો" + } + }, + "open": { + "description": "બ્રાઉઝરમાં ચોક્કસ OmniRoute ડૅશબોર્ડ પેજ ખોલો", + "url": "ફક્ત URL પ્રિન્ટ કરો, બ્રાઉઝર ખોલશો નહીં" + }, + "telemetry": { + "description": "એકત્રિત ટેલિમેટ્રી ડેટાને ઍક્સેસ કરો", + "summary": { + "description": "એકત્રિત ટેલિમેટ્રીનો સારાંશ બતાવો", + "period": "સમયગાળો: 24h|7d|30d (ડિફૉલ્ટ: 24h)", + "compareTo": "અગાઉના સમયગાળા સાથે સરખામણી કરો" + }, + "export": { + "description": "ટેલિમેટ્રી ઇવેન્ટ્સને JSONLમાં નિકાસ કરો", + "out": "આઉટપુટ ફાઇલ પાથ (ડિફૉલ્ટ: telemetry.jsonl)", + "period": "નિકાસ માટેનો સમયગાળો (ડિફૉલ્ટ: 7d)" + } + }, + "sync": { + "description": "OmniRoute ઇન્સ્ટન્સ વચ્ચે કૉન્ફિગરેશન સિંક કરો", + "push": { + "description": "કૉન્ફિગને ક્લાઉડ અથવા રિમોટ ઇન્સ્ટન્સ પર પુશ કરો", + "target": "લક્ષ્ય (cloud અથવા context:name)", + "bundle": "સિંક કરવા માટેના બંડલના ભાગો", + "dryRun": "લાગુ કર્યા વિના પૂર્વાવલોકન કરો" + }, + "pull": { + "description": "ક્લાઉડ અથવા રિમોટમાંથી કૉન્ફિગ ખેંચો", + "source": "સ્રોત (ક્લાઉડ અથવા context:name)", + "merge": "હાલના કૉન્ફિગ સાથે મર્જ કરો", + "replace": "હાલના કૉન્ફિગને બદલો", + "dryRun": "લાગુ કર્યા વિના પૂર્વાવલોકન કરો" + }, + "diff": { + "source": "સ્રોત કોન્ટેક્સ્ટ", + "target": "લક્ષ્ય કોન્ટેક્સ્ટ" + }, + "bundle": { + "description": "કૉન્ફિગને બંડલ ફાઇલ તરીકે નિકાસ કરો", + "include": "સમાવવા માટેના ભાગો (અલ્પવિરામથી અલગ કરેલા)" + }, + "import": { + "description": "બંડલ ફાઇલ આયાત કરો", + "dryRun": "લાગુ કર્યા વિના માન્યતા ચકાસો" + }, + "initialize": { + "fromCloud": "ક્લાઉડ બૅકઅપમાંથી પ્રારંભ કરો" + }, + "tokens": { + "description": "સિંક ટોકન મેનેજ કરો", + "create": { + "name": "ટોકનનું નામ", + "scope": "ટોકનનો વ્યાપ", + "ttl": "ટોકન TTL (દા.ત. 30d)" + }, + "revoke": { + "yes": "પુષ્ટિ છોડો" + } + }, + "resolve": { + "description": "સિંકના વિરોધાભાસો ઇન્ટરેક્ટિવ રીતે ઉકેલો" + } + }, + "config": { + "contexts": { + "description": "સર્વર કોન્ટેક્સ્ટ/પ્રોફાઇલ મેનેજ કરો (ઉમેરો, વાપરો, સૂચિ જુઓ, બતાવો, દૂર કરો, નામ બદલો, નિકાસ કરો, આયાત કરો)" + }, + "lang": { + "description": "CLI પ્રદર્શન ભાષા મેનેજ કરો", + "getDescription": "હાલમાં સક્રિય ભાષાનો કોડ બતાવો", + "setDescription": "પ્રદર્શન ભાષા સેટ કરો અને તેને કૉન્ફિગમાં સાચવો", + "listDescription": "ઉપલબ્ધ બધી ભાષાઓની સૂચિ બતાવો", + "listTitle": "ઉપલબ્ધ ભાષાઓ", + "current": "ભાષા: {code} ({name})", + "saved": "ભાષા {code} ({name}) પર સેટ થઈ.", + "noCode": "ભાષાનો કોડ આવશ્યક છે. ઉપલબ્ધ કોડ જોવા માટે 'omniroute config lang list' ચલાવો.", + "unknown": "અજ્ઞાત ભાષા કોડ: {code}. ઉપલબ્ધ કોડ જોવા માટે 'omniroute config lang list' ચલાવો.", + "alreadySet": "ભાષા પહેલેથી જ {code} પર સેટ છે.", + "envHint": "સૂચન: તમે તમારા એન્વાયર્નમેન્ટમાં OMNIROUTE_LANG={code} પણ સેટ કરી શકો છો." + } + }, + "completion": { + "description": "શેલ કમ્પ્લીશન સ્ક્રિપ્ટ જનરેટ અથવા ઇન્સ્ટૉલ કરો", + "zsh": "zsh કમ્પ્લીશન સ્ક્રિપ્ટ પ્રિન્ટ કરો", + "bash": "bash કમ્પ્લીશન સ્ક્રિપ્ટ પ્રિન્ટ કરો", + "fish": "fish કમ્પ્લીશન સ્ક્રિપ્ટ પ્રિન્ટ કરો", + "install": "શોધાયેલા શેલ માટે કમ્પ્લીશન સ્ક્રિપ્ટ વૈશ્વિક રીતે ઇન્સ્ટૉલ કરો", + "refresh": "કોમ્બો/પ્રોવાઇડર/મોડલની કૅશ રિફ્રેશ કરો" + }, + "logs": { + "description": "વિનંતી લૉગ્સ સ્ટ્રીમ અથવા નિકાસ કરો", + "follow": "લૉગ્સને રિયલ-ટાઇમમાં સ્ટ્રીમ કરો", + "filter": "લેવલ દ્વારા ફિલ્ટર કરો (error,warn,info) — અલ્પવિરામથી અલગ કરેલ", + "lines": "મેળવવાની લાઇનોની સંખ્યા", + "timeout": "કનેક્શન સમયસમાપ્તિ ms માં", + "baseUrl": "OmniRoute API બેઝ URL", + "requestId": "રિક્વેસ્ટ ID દ્વારા ફિલ્ટર કરો", + "apiKey": "API કી દ્વારા ફિલ્ટર કરો", + "combo": "કોમ્બો નામ દ્વારા ફિલ્ટર કરો", + "status": "HTTP સ્ટેટસ કોડ દ્વારા ફિલ્ટર કરો", + "durationMin": "ન્યૂનતમ રિક્વેસ્ટ અવધિ ms માં", + "durationMax": "મહત્તમ રિક્વેસ્ટ અવધિ ms માં", + "export": "લૉગ્સને ફાઇલમાં સાચવો (json/jsonl/csv)", + "exported": "લૉગ્સ {path} પર સાચવવામાં આવ્યા", + "stopped": "લૉગ સ્ટ્રીમ બંધ થયો.", + "streamError": "લૉગ સ્ટ્રીમ ભૂલ: {message}" + }, + "tray": { + "description": "સિસ્ટમ ટ્રે આઇકનને નિયંત્રિત કરો", + "show": "ટ્રે આઇકન બતાવો (જો સર્વર --tray સાથે ચાલી રહ્યું હોય)", + "hide": "ટ્રે આઇકન છુપાવો", + "quit": "ટ્રે મારફતે OmniRoute બંધ કરો" + }, + "autostart": { + "description": "બૂટ વખતે OmniRoute ઑટોસ્ટાર્ટનું સંચાલન કરો (Linux: systemd યુઝર સર્વિસ)", + "enable": "બૂટ વખતે ઑટોસ્ટાર્ટ સક્ષમ કરો", + "disable": "બૂટ વખતે ઑટોસ્ટાર્ટ અક્ષમ કરો", + "toggle": "બૂટ વખતે ઑટોસ્ટાર્ટ ટૉગલ કરો", + "status": "ઑટોસ્ટાર્ટ સ્થિતિ બતાવો" + }, + "runtime": { + "description": "નેટિવ રનટાઇમ ડિપેન્ડન્સીઓનું સંચાલન કરો", + "check": "રનટાઇમ ડિરેક્ટરીમાં નેટિવ ડિપેન્ડન્સીઓની સ્થિતિ તપાસો", + "repair": "રનટાઇમ ડિરેક્ટરીમાં નેટિવ ડિપેન્ડન્સીઓ ફરીથી ઇન્સ્ટૉલ કરો", + "repair_force": "માન્ય હોય તો પણ બળજબરીથી ફરીથી ઇન્સ્ટૉલ કરો", + "clean": "રનટાઇમ ડિરેક્ટરી દૂર કરો (ડિસ્ક જગ્યા ખાલી કરે છે)", + "clean_yes": "પુષ્ટિ છોડો" + }, + "repl": { + "description": "LLM સાથે ઇન્ટરેક્ટિવ મલ્ટિ-ટર્ન REPL", + "model": "ઉપયોગ કરવા માટેનું મોડલ (ડિફૉલ્ટ: auto)", + "combo": "ઉપયોગ કરવા માટેનું કોમ્બો નામ", + "system": "સિસ્ટમ પ્રૉમ્પ્ટ", + "resume": "નામ દ્વારા સાચવેલ સેશન ફરી શરૂ કરો" + }, + "plugin": { + "description": "CLI પ્લગઇન્સ (omniroute-cmd-*)નું સંચાલન કરો", + "list": "ઇન્સ્ટૉલ કરેલા પ્લગઇન્સની યાદી બતાવો", + "install": "npm અથવા લોકલ પાથ પરથી પ્લગઇન ઇન્સ્ટૉલ કરો", + "remove": "ઇન્સ્ટૉલ કરેલું પ્લગઇન દૂર કરો", + "info": "ઇન્સ્ટૉલ કરેલા પ્લગઇનની વિગતો બતાવો", + "search": "ઉપલબ્ધ પ્લગઇન્સ માટે npm રજિસ્ટ્રીમાં શોધો", + "update": "ઇન્સ્ટોલ કરેલ પ્લગઇન અપડેટ કરો", + "scaffold": "નવા પ્લગઇન માટે બોઇલરપ્લેટ સ્કેફોલ્ડ કરો" + }, + "launch": { + "description": "OmniRoute તરફ નિર્દેશિત Claude Code લૉન્ચ કરો (સ્થાનિક અથવા રિમોટ, --profile સાથે)", + "token": "Claude ક્લાયન્ટે મોકલવાનો ટોકન (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute {port} પર પહોંચી શકાય તેમ નથી. તેને 'omniroute serve' વડે શરૂ કરો.", + "notFound": "'claude' CLI PATH માં મળ્યું નથી." + }, + "run": { + "description": "OmniRoute મારફતે સમર્થિત CLI લક્ષ્ય લૉન્ચ કરો" + }, + "setupClaude": { + "description": "OmniRoute મોડેલ કેટલોગમાંથી ~/.claude/profiles Claude Code પ્રોફાઇલ્સ જનરેટ કરો" + }, + "connect": { + "description": "રિમોટ OmniRoute સર્વર સાથે કનેક્ટ કરો અને રિમોટ મોડમાં પ્રવેશો" + }, + "tokens": { + "description": "સ્કોપ કરેલા CLI ઍક્સેસ ટોકન્સ મેનેજ કરો (રિમોટ મોડ)" + }, + "configure": { + "description": "સક્રિય સર્વરમાંથી પ્રદાતા+મોડેલ પસંદ કરો અને સમર્થિત સ્થાનિક CLI કૉન્ફિગર કરો" + }, + "launchCodex": { + "description": "OmniRoute તરફ નિર્દેશિત Codex CLI લૉન્ચ કરો (સ્થાનિક અથવા રિમોટ VPS)" + }, + "setupCodex": { + "description": "OmniRoute લાઇવ મોડેલ કેટલોગમાંથી ~/.codex પ્રોફાઇલ ફાઇલો જનરેટ કરો" + }, + "packs": { + "description": "વૈકલ્પિક રનટાઇમ પૅક્સ મેનેજ કરો (ML / બ્રાઉઝર ઑટોમેશન)", + "listDescription": "વૈકલ્પિક પૅક્સ અને તેમની ઇન્સ્ટોલેશન સ્થિતિની સૂચિ બતાવો", + "installDescription": "DATA_DIR માં વૈકલ્પિક પૅક ઇન્સ્ટોલ કરો", + "verifyDescription": "મોકલાયેલા ચેકસમ ઇન્ડેક્સ સામે ઇન્સ્ટોલ કરેલા પૅક્સ ચકાસો", + "removeDescription": "ઇન્સ્ટોલ કરેલું વૈકલ્પિક પૅક દૂર કરો", + "sourceOpt": "પૅક પેલોડ્સ અને પૅક ઇન્ડેક્સ ધરાવતી ડિરેક્ટરી", + "warnNoIndex": "optional-packs.index.json મળ્યું નથી — આ ચેકઆઉટમાં ઇન્સ્ટોલ/ચકાસણી ઉપલબ્ધ નથી (ડેસ્કટોપ બંડલ્સમાં તે સામેલ હોય છે)", + "errUnknown": "અજ્ઞાત પૅક: {name}", + "errNoIndex": "પૅક ઇન્ડેક્સ મળ્યો નથી; પૅક પેલોડ ધરાવતી --source આપો (ડેસ્કટોપ બંડલ્સમાં તે ઍપની બાજુમાં સામેલ હોય છે)", + "installed": "પૅક \"{name}\" {dir} પર ઇન્સ્ટોલ અને ચકાસવામાં આવ્યું", + "restartHint": "રનટાઇમ પૅકને લોડ કરે તે માટે OmniRoute સર્વર (અથવા ડેસ્કટોપ ઍપ) પુનઃશરૂ કરો", + "removed": "પૅક \"{name}\" દૂર કરવામાં આવ્યું", + "notInstalled": "પૅક \"{name}\" ઇન્સ્ટોલ કરેલું નહોતું", + "verifyOk": "બધા ઇન્સ્ટોલ કરેલા પૅક્સ ચકાસાયા", + "verifyFailed": "{count} પૅકની ચકાસણી નિષ્ફળ ગઈ", + "noneInstalled": "કોઈ વૈકલ્પિક પૅક ઇન્સ્ટોલ કરેલું નથી" } } diff --git a/bin/cli/locales/ha.json b/bin/cli/locales/ha.json index 76bfa98ac8..bb1fa2d759 100644 --- a/bin/cli/locales/ha.json +++ b/bin/cli/locales/ha.json @@ -256,6 +256,7 @@ "max_restarts": "Matsakaicin sake farawa bayan rushewa cikin daƙiƙa 30 kafin a haƙura (tsoho: 2)", "tray": "Fara a tiren tsarin (na kwamfutar tebur kawai, sai an zaɓa)", "no_tray": "Kashe gunkin tiren tsarin", + "ready_timeout": "Lokacin ƙarewar gwajin shiri a ms (har ila yau OMNIROUTE_READY_TIMEOUT_MS, tsoho 60000)", "tls_cert": "Hanyar zuwa takardar shaidar TLS (PEM) don samar da HTTPS (haka kuma OMNIROUTE_TLS_CERT)", "tls_key": "Hanyar zuwa maɓallin sirri na TLS (PEM) don samar da HTTPS (haka kuma OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Sabar MCP tana aiki ({transport})", "stopped": "An dakatar da sabar MCP.", "restarted": "An sake kunna sabar MCP.", + "stoppedHint": "Gudanar da `omniroute mcp enable` don kunna shi.", + "enabled": "An kunna sabar MCP.", + "disabled": "An kashe sabar MCP.", + "enable": { + "description": "Kunna sabar MCP", + "transport": "Hanyar jigilar da za a yi amfani da ita: stdio|sse|streamable-http" + }, + "disable": { + "description": "Kashe sabar MCP" + }, "call": { "description": "Kira kayan aikin MCP kai tsaye", "args": "Abun hujjojin JSON (a cikin layi)", @@ -475,7 +486,7 @@ } }, "tunnel": { - "title": "Tunnels", + "title": "Ramuka", "listDescription": "Jera tunnels masu aiki", "createDescription": "Ƙirƙiri tunnel", "created": "An ƙirƙiri tunnel: {url}", diff --git a/bin/cli/locales/he.json b/bin/cli/locales/he.json index d28e119e19..01cb4e84ba 100644 --- a/bin/cli/locales/he.json +++ b/bin/cli/locales/he.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "שגיאה: {message}", + "serverOffline": "שרת OmniRoute אינו מקוון. הפעילו אותו באמצעות: omniroute serve", + "authRequired": "נדרש אימות. הגדירו את OMNIROUTE_API_KEY או הריצו: omniroute setup", + "rateLimited": "חריגה ממגבלת הקצב. נסו שוב בעוד {seconds} שניות.", + "timeout": "תם הזמן שהוקצב לבקשה לאחר {ms} אלפיות השנייה.", + "success": "הושלם.", + "yes": "כן", + "no": "לא", + "confirm": "האם אתם בטוחים? (כן/לא)", + "dryRun": "[הרצה-יבשה] הפעולה שהייתה מתבצעת: {action}", + "cancelled": "בוטל.", + "jsonOpt": "פלט בפורמט JSON", + "yesOpt": "דילוג על בקשת האישור" + }, + "setup": { + "title": "הגדרת OmniRoute", + "passwordPrompt": "סיסמת מנהל מערכת", + "providerPrompt": "ספק ברירת מחדל (השאירו ריק כדי לדלג)", + "done": "ההגדרה הושלמה", + "passwordSet": "סיסמת מנהל המערכת הוגדרה", + "providerSet": "הספק הוגדר: {name}", + "testingProvider": "בדיקת החיבור לספק: {name}", + "testPassed": "בדיקת הספק הצליחה", + "testFailed": "בדיקת הספק נכשלה: {error}", + "loginEnabled": "כניסה: מופעלת (הסיסמה עודכנה)", + "loginDisabled": "כניסה: מושבתת", + "providerInfo": "ספק: {info}", + "opencode": "התקנה והגדרה של @omniroute/opencode-plugin המצורף עבור OpenCode" + }, + "doctor": { + "title": "אבחון OmniRoute", + "dbOk": "מסד הנתונים: תקין ({path})", + "dbMissing": "מסד הנתונים: לא אותחל — הריצו `omniroute setup`", + "portOk": "יציאה {port}: זמינה", + "portConflict": "יציאה {port}: נמצאת בשימוש על ידי תהליך אחר", + "encryptionOk": "מפתח הצפנה: מוגדר", + "encryptionMissing": "מפתח ההצפנה חסר — הריצו `omniroute setup`", + "allGood": "כל הבדיקות עברו בהצלחה.", + "warnings": "{count} אזהרות — ראו לעיל." + }, + "providers": { + "title": "ספקים", + "noProviders": "לא הוגדרו ספקים. הריצו: omniroute setup", + "testing": "מתבצעת בדיקה של {name}...", + "available": "{count} ספקים זמינים", + "connected": "מחובר", + "disconnected": "מנותק", + "validationFailed": "האימות נכשל: {error}", + "metrics": { + "description": "הצגת מדדי ביצועים של ספקים (זמן השהיה, שיעור הצלחה, עלות)", + "provider": "סינון לפי מזהה ספק", + "connection_id": "סינון לפי מזהה חיבור", + "period": "פרק זמן: 1h|6h|24h|7d|30d (ברירת מחדל: 24h)", + "metric": "התמקדות בשדה מדד מסוים", + "sort": "מיון לפי שדה (בסדר יורד)", + "limit": "מספר שורות מרבי (ברירת מחדל: 50)", + "watch": "רענון כל 5s (מצב חי)", + "compare": "מזהי ספקים מופרדים בפסיקים להשוואה זה לצד זה" + }, + "metric_single": { + "description": "קבלת ערך מדד יחיד עבור חיבור מסוים" + }, + "rotate": { + "description": "החלפת מפתח ה-API במעלה הזרם עבור חיבור לספק", + "newKeyOpt": "ערך מפתח API חדש (מומלץ להימנע: עדיף להשתמש ב---from-env)", + "fromEnvOpt": "קריאת המפתח החדש ממשתנה הסביבה VAR", + "oauthOpt": "הפעלת תהליך אימות מחדש באמצעות OAuth במקום זאת", + "skipTestOpt": "דילוג על בדיקת הקישוריות לאחר החלפת המפתח", + "dryRunOpt": "הצגת השינויים שהיו מתבצעים מבלי לכתוב אותם", + "confirmPrompt": "להחליף את מפתח ה-API עבור החיבור \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] המפתח עבור \"{name}\" ({id}) היה מוחלף. לא בוצעו שינויים.", + "oauthHint": "חיבור OAuth — יש להריץ: omniroute oauth {provider}", + "envVarEmpty": "משתנה הסביבה {var} אינו מוגדר או ריק.", + "success": "המפתח עבור \"{name}\" הוחלף. יש להריץ `providers test {id}` כדי לאמת.", + "testPassed": "הבדיקה שלאחר החלפת המפתח הצליחה.", + "testFailed": "הבדיקה שלאחר החלפת המפתח נכשלה: {error}" + }, + "status": { + "description": "הצגת תקינות המפתחות עבור כל חיבורי הספקים (גיל, תפוגה, תקופת צינון)", + "providerOpt": "סינון לפי שם ספק", + "header": "מזהה ספק שם מצב תפוגה מצב בדיקה צינון עד", + "noData": "אין נתונים זמינים על חיבורי ספקים.", + "requiresServer": "הפקודה providers status מחייבת ששרת OmniRoute יהיה פעיל." + } + }, + "keys": { + "title": "מפתחות API", + "addDescription": "הוספה או עדכון של מפתח API עבור ספק", + "listDescription": "הצגת כל מפתחות ה-API שהוגדרו", + "removeDescription": "הסרת מפתח API עבור ספק", + "regenerateDescription": "יצירה מחדש של מפתח API של OmniRoute", + "revokeDescription": "ביטול מפתח API של OmniRoute", + "revealDescription": "חשיפת הערך הלא מוסתר של מפתח ה-API", + "usageDescription": "הצגת השימוש האחרון במפתח API", + "usageLimitOpt": "מספר הבקשות האחרונות", + "rotateDescription": "יצירת מפתח חדש וביטול תוקף המפתח הישן", + "graceOpt": "תקופת חסד (מ״ש) לפני ביטול תוקפו של המפתח הישן", + "stdinOpt": "קריאת מפתח API מ-stdin במקום מארגומנט", + "added": "נוסף מפתח עבור {provider}.", + "removed": "המפתח הוסר.", + "listed": "{count} מפתחות.", + "noKeys": "לא הוגדרו מפתחות.", + "noUsage": "לא נמצאו נתוני שימוש.", + "confirmRemove": "להסיר את המפתח {id}?", + "confirmRegenerate": "ליצור מחדש את המפתח {id}?", + "confirmRevoke": "לבטל את המפתח {id}?", + "confirmRotate": "להחליף את המפתח {id}? (תוקף המפתח הישן יבוטל לאחר תקופת החסד)", + "regenerated": "נוצר מחדש. מפתח חדש: {key}", + "revoked": "המפתח {id} בוטל.", + "rotated": "המפתח {id} הוחלף. מזהה המפתח החדש: {newId}", + "revealWarning": "⚠ פעולה זו תציג את המפתח המלא ללא הסתרה. ודאו שהמסך שלכם פרטי.", + "providerRequired": "נדרש ספק.", + "keyRequired": "נדרש מפתח API.", + "stdinEmpty": "לא סופק מפתח API דרך stdin.", + "unknownProvider": "ספק לא מוכר: {provider}", + "policy": { + "title": "מדיניות מפתח", + "showDescription": "הצגת מדיניות קצב/עלות עבור מפתח", + "setDescription": "הגדרת מדיניות קצב/עלות עבור מפתח", + "rateLimitOpt": "מספר בקשות מרבי לדקה", + "maxCostOpt": "עלות מרבית ליום (USD)", + "allowedModelsOpt": "רשימה מופרדת בפסיקים של מודלים מורשים", + "nothingToSet": "לא סופקו שדות מדיניות. השתמשו ב---rate-limit, ב---max-cost או ב---allowed-models.", + "updated": "המדיניות עודכנה." + }, + "expiration": { + "title": "תפוגת מפתח", + "listDescription": "הצגת מפתחות שתוקפם יפוג בקרוב", + "daysOpt": "הצגת מפתחות שתוקפם יפוג בתוך N ימים", + "none": "אין מפתחות שתוקפם יפוג בתוך {days} ימים.", + "listTitle": "מפתחות שתוקפם יפוג בתוך {days} ימים:" + } + }, + "authExport": { + "description": "ייצוא פרטי גישה מפוענחים של ספקים (מקומי בלבד, פלט טקסט גלוי)", + "idOpt": "ייצוא החיבור בלבד שתואם למזהה/שם/ספק הזה", + "formatOpt": "פורמט פלט: json או env", + "outOpt": "כתיבת הפלט לקובץ במקום ל-stdout (עם הרשאות 0600)", + "forceOpt": "אישור שהבנתם שפעולה זו מדפיסה/כותבת סודות כטקסט גלוי", + "warning": "⚠ פעולה זו מדפיסה/כותבת מפתחות API ואסימוני OAuth מפוענחים כטקסט גלוי. ודאו שהמסך, היסטוריית המעטפת וכל קובץ פלט נשארים פרטיים.", + "confirmHeading": "⚠ אזהרה: פעולה זו מייצאת פרטי גישה מפוענחים של ספקים כטקסט גלוי", + "confirmBody": "פקודה זו מפענחת ומדפיסה/כותבת apiKey, accessToken, refreshToken ו-\nidToken עבור החיבורים שנבחרו. יש להתייחס לפלט כאל סוד.", + "confirmFooter": "לאישור, הריצו:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY נדרש לייצוא פרטי גישה.", + "notFound": "החיבור לא נמצא: {id}", + "invalidFormat": "פורמט לא תקין: {format}. השתמשו ב-json או ב-env." + }, + "stream": { + "description": "הזרמת תגובת צ'אט עם מצבי בדיקת SSE", + "file": "קריאת הנחיה מקובץ", + "stdin": "קריאת הנחיה מ-stdin", + "model": "מזהה מודל (ברירת מחדל: auto)", + "system": "הנחיית מערכת", + "combo": "אילוץ שילוב מסוים לפי שם", + "max_tokens": "מספר האסימונים המרבי בתגובה", + "responses_api": "שימוש ב-/v1/responses במקום ב-/v1/chat/completions", + "raw": "הדפסת שורות SSE גולמיות כפי שהתקבלו", + "debug": "הדפסת פרטי תזמון לכל מקטע אל stderr", + "save": "שמירת כל אירועי SSE בקובץ .jsonl", + "error": { + "empty_prompt": "שגיאה: נדרשת הנחיה (ארגומנט מיקומי, --file או --stdin)" + } + }, + "usage": { + "description": "ניתוח שימוש, תקציבים, מכסות ויומנים", + "analytics": { + "description": "הצגת ניתוח שימוש מצטבר", + "period": "טווח זמן: 1d|7d|30d|90d|ytd|all (ברירת מחדל: 30d)", + "provider": "סינון לפי מזהה ספק" + }, + "budget": { + "description": "ניהול תקציבי עלויות", + "set": { + "scope": "תחום התקציב (ברירת מחדל: global)", + "period": "תקופת התקציב: daily|weekly|monthly (ברירת מחדל: monthly)" + } + }, + "quota": { + "description": "הצגת ניצול מכסת הספק", + "provider": "סינון לפי מזהה ספק", + "check": "הצגה אם המכסה זמינה לבקשה חדשה" + }, + "logs": { + "description": "הצגת יומני קריאות בקשות", + "limit": "מספר רשומות היומן שיוחזרו (ברירת מחדל: 100)", + "search": "שאילתת חיפוש לסינון יומנים", + "since": "החזרת יומנים מאז חותמת זמן זו", + "follow": "מעקב רציף אחר רשומות יומן חדשות", + "api_key": "סינון יומנים לפי מפתח API" + }, + "utilization": { + "description": "הצגת מדדי ניצול של מפתח API", + "api_key": "סינון לפי מפתח API" + }, + "history": { + "description": "הצגת היסטוריית בקשות", + "limit": "מספר רשומות ההיסטוריה (ברירת מחדל: 100)" + }, + "proxy_logs": { + "description": "הצגת יומני בקשות ברמת ה-proxy", + "limit": "מספר רשומות יומן ה-proxy (ברירת מחדל: 100)" + } + }, + "cost": { + "description": "הצגת דוח עלויות עם פירוט לפי ספק, מודל, שילוב או מפתח API", + "period": "טווח זמן: 1d|7d|30d|90d|ytd|all (ברירת מחדל: 30d)", + "since": "תאריך התחלה (בפורמט ISO, לדוגמה 2026-01-01) — עוקף את --period", + "until": "תאריך סיום (בפורמט ISO)", + "group_by": "קיבוץ תוצאות לפי: provider|model|api-key|combo|day (ברירת מחדל: provider)", + "api_key_filter": "סינון לפי מפתח API מסוים", + "limit": "מספר השורות המרבי להצגה (ברירת מחדל: 100)" + }, + "simulate": { + "description": "הדמיית ניתוב בהרצה יבשה — הצגת הספקים שהיו נבחרים מבלי לפנות לשירותי upstream", + "file": "טעינת גוף הבקשה המלא מקובץ JSON", + "model": "מזהה מודל (ברירת מחדל: auto)", + "combo": "אילוץ combo מסוים לפי שם", + "reasoning": "רמת מאמץ החשיבה (low|medium|high)", + "thinking": "תקציב טוקנים לחשיבה מורחבת", + "explain": "הדפסת עץ הגיבויים וטווח העלויות אל stderr", + "noCombo": "לא נמצא combo תואם. ניתן להגדיר אחד באמצעות: omniroute combo create" + }, + "chat": { + "description": "שליחת הנחיית צ׳אט חד-פעמית אל OmniRoute", + "file": "קריאת ההנחיה מקובץ", + "stdin": "קריאת ההנחיה מ-stdin", + "system": "הנחיית מערכת", + "model": "מזהה מודל (ברירת מחדל: auto)", + "max_tokens": "מספר הטוקנים המרבי בתגובה", + "temperature": "טמפרטורת דגימה (0–2)", + "top_p": "דגימת גרעין Top-p", + "reasoning_effort": "רמת מאמץ החשיבה (low|medium|high)", + "thinking_budget": "תקציב טוקנים לחשיבה מורחבת", + "combo": "אילוץ combo מסוים לפי שם", + "responses_api": "שימוש ב-/v1/responses במקום ב-/v1/chat/completions", + "stream": "הזרמת התגובה בהדרגה", + "no_history": "אין לשמור ב-~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "שגיאה: נדרשת הנחיה (ארגומנט מיקומי, --file או --stdin)" + } + }, + "serve": { + "description": "הפעלת שרת OmniRoute (פעולת ברירת המחדל)", + "starting": "שרת OmniRoute מופעל ביציאה {port}...", + "ready": "מוכן בכתובת http://localhost:{port}", + "stopping": "השרת נעצר (PID {pid})...", + "stopped": "השרת נעצר.", + "notRunning": "השרת אינו פועל.", + "port": "יציאה להאזנה (ברירת מחדל: 20128)", + "no_open": "אין לפתוח את הדפדפן באופן אוטומטי", + "daemon": "הפעלת השרת כתהליך רקע", + "log": "הצגת יומני השרת בתוך הפלט", + "no_recovery": "השבתת הפעלה מחדש אוטומטית לאחר קריסה (מצב ניפוי שגיאות)", + "max_restarts": "מספר ההפעלות מחדש המרבי עקב קריסה בתוך 30 שניות לפני ויתור (ברירת מחדל: 2)", + "tray": "הפעלה במגש המערכת (שולחן עבודה בלבד, בהסכמה)", + "no_tray": "השבתת סמל מגש המערכת", + "ready_timeout": "זמן קצוב לבדיקת מוכנות באלפיות שנייה (גם OMNIROUTE_READY_TIMEOUT_MS, ברירת מחדל 60000)", + "tls_cert": "נתיב לאישור TLS‏ (PEM) לצורך אספקת HTTPS (גם OMNIROUTE_TLS_CERT)", + "tls_key": "נתיב למפתח TLS הפרטי (PEM) לצורך אספקת HTTPS (גם OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "גיבוי", + "description": "יצירת גיבוי של נתוני OmniRoute", + "creating": "הגיבוי נוצר...", + "done": "הגיבוי נשמר ב-{path}", + "noFiles": "אין קבצים לגיבוי (מסד הנתונים לא אותחל)", + "failed": "הגיבוי נכשל: {error}", + "restoring": "מתבצע שחזור מ-{path}...", + "restored": "השחזור הושלם.", + "restoreDescription": "שחזור מגיבוי", + "listTitle": "גיבויים זמינים", + "noBackups": "לא נמצאו גיבויים.", + "notFound": "הגיבוי לא נמצא: {name}", + "confirmRestore": "להחליף את הנתונים הנוכחיים בגיבוי מתאריך {ts}?", + "createDescription": "יצירת גיבוי של נתוני OmniRoute", + "nameOpt": "שם מותאם אישית לגיבוי", + "cloudOpt": "העלאת הגיבוי לאחסון בענן", + "encryptOpt": "הצפנת הגיבוי באמצעות AES-256-GCM", + "keyFileOpt": "נתיב לקובץ המכיל את ביטוי הסיסמה להצפנה", + "excludeOpt": "אי-הכללת קובץ התואם לתבנית (ניתן לחזור על האפשרות)", + "retentionOpt": "שמירת N הגיבויים האחרונים בלבד", + "passphrasePrompt": "ביטוי סיסמה להצפנה:", + "noPassphrase": "נדרש ביטוי סיסמה עבור גיבוי מוצפן.", + "cloudFailed": "אזהרה: ההעלאה לענן נכשלה. הגיבוי המקומי נשמר.", + "cloudUploaded": "הגיבוי הועלה לענן: {url}", + "auto": { + "title": "תזמון גיבויים", + "enableDescription": "הפעלת גיבויים אוטומטיים מתוזמנים", + "disableDescription": "השבתת גיבויים אוטומטיים מתוזמנים", + "statusDescription": "הצגת המצב הנוכחי של תזמון הגיבויים", + "cronOpt": "ביטוי Cron לתזמון (ברירת מחדל: מדי יום ב-3 לפנות בוקר)", + "enabled": "גיבוי אוטומטי הופעל (Cron: {cron}).", + "hint": "התזמון נקרא על ידי omniroute serve בעת ההפעלה.", + "disabled": "הגיבוי האוטומטי הושבת.", + "notConfigured": "לא הוגדר תזמון גיבויים." + } + }, + "health": { + "description": "בדיקת תקינות השרת ומצב הרכיבים", + "noServer": "השרת אינו פועל. יש להפעיל אותו באמצעות: omniroute serve", + "title": "תקינות", + "status": "מצב: {status}", + "uptime": "זמן פעילות: {uptime}", + "requests": "בקשות (24 שעות): {count}", + "cost": "עלות (24 שעות): ${cost}" + }, + "quota": { + "description": "הצגת ניצול המכסה של הספק", + "noServer": "השרת אינו פועל. יש להפעיל אותו באמצעות: omniroute serve", + "noData": "אין מידע זמין על המכסה." + }, + "cache": { + "description": "ניהול מטמון התגובות", + "noServer": "השרת אינו פועל. יש להפעיל אותו באמצעות: omniroute serve", + "cleared": "המטמון נוקה.", + "clearFailed": "ניקוי המטמון נכשל." + }, "redis": { "description": "הפעל מכולת Redis מקומית בלחיצה אחת (Podman או Docker) לשמירת מטמון ומעקב מכסות של OmniRoute" + }, + "test": { + "description": "בדיקת חיבור לספק", + "noServer": "השרת אינו פועל. יש להפעיל אותו באמצעות: omniroute serve", + "testing": "מתבצעת בדיקה של {provider} / {model}...", + "passed": "החיבור הצליח!", + "failed": "החיבור נכשל: {error}", + "allProvidersOpt": "בדיקת כל הספקים שהוגדרו", + "latencyOpt": "הצגת מדידות השהיה (ממוצע/מינימום/מקסימום במילישניות)", + "repeatOpt": "חזרה על הבדיקה N פעמים ואיגוד התוצאות", + "compareOpt": "מודלים מופרדים בפסיקים להשוואה (למשל gpt-4o,claude-3-5-sonnet)", + "saveOpt": "שמירת התוצאות בקובץ JSON", + "saved": "התוצאות נשמרו ב-{path}", + "compareTitle": "השוואת מודלים", + "compareMinTwo": "נדרשים לפחות שני מודלים עבור --compare (מופרדים בפסיקים)", + "noProviders": "לא הוגדרו ספקים. ניתן להוסיף ספק באמצעות: omniroute keys add" + }, + "update": { + "checking": "מתבצעת בדיקה אם קיימים עדכונים...", + "upToDate": "הגרסה כבר עדכנית ({version}).", + "available": "קיים עדכון: {current} → {latest}", + "installing": "מתבצעת התקנה של {latest}...", + "done": "עודכן לגרסה {latest}. יש להפעיל מחדש את השרת כדי להחיל את העדכון." + }, + "mcp": { + "title": "שרת MCP", + "running": "שרת MCP פועל ({transport})", + "stopped": "שרת MCP נעצר.", + "restarted": "שרת MCP הופעל מחדש.", + "stoppedHint": "יש להריץ את `omniroute mcp enable` כדי להפעיל אותו.", + "enabled": "שרת MCP הופעל.", + "disabled": "שרת MCP הושבת.", + "enable": { + "description": "הפעלת שרת MCP", + "transport": "תעבורה לשימוש: stdio|sse|streamable-http" + }, + "disable": { + "description": "השבתת שרת ה-MCP" + }, + "call": { + "description": "הפעלת כלי MCP ישירות", + "args": "אובייקט ארגומנטים מסוג JSON (מוטבע)", + "args_file": "נתיב לקובץ ארגומנטים מסוג JSON", + "stream": "שימוש בנקודת קצה להזרמה (/api/mcp/stream)", + "scope": "הרשאה נדרשת (ניתנת לחזרה, לדוגמה read:health)" + }, + "scopes": { + "description": "הצגת הרשאות ה-MCP הזמינות", + "tool": "הצגת ההרשאות הנדרשות על ידי כלי מסוים" + }, + "tools": { + "description": "בדיקת כלי MCP", + "list": { + "description": "הצגת כל כלי ה-MCP", + "scope": "סינון לפי הרשאה" + }, + "info": { + "description": "הצגת מטא-נתונים עבור כלי MCP" + }, + "schema": { + "description": "הצגת סכמת JSON של הקלט/פלט עבור כלי MCP", + "io": "סוג סכמה: input|output (ברירת מחדל: input)" + } + }, + "audit": { + "description": "יומן הביקורת של MCP (כינוי עבור audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "הצגת כישורי A2A הזמינים מכרטיס הסוכן" + }, + "invoke": { + "description": "הפעלת כישור A2A והחזרת מזהה המשימה", + "input": "אובייקט קלט מסוג JSON", + "input_file": "נתיב לקובץ קלט מסוג JSON", + "wait": "המתנה להשלמת המשימה לפני החזרה", + "timeout": "זמן קצוב להמתנה להשלמה במילישניות (ברירת מחדל: 60000)" + }, + "tasks": { + "description": "ניהול משימות A2A", + "list": { + "status": "סינון לפי סטטוס", + "skill": "סינון לפי מזהה כישור" + }, + "watch": { + "description": "בדיקה מחזורית של סטטוס המשימה עד להשלמתה" + }, + "stream": { + "description": "הזרמת אירועי ביצוע המשימה באמצעות SSE" + }, + "logs": { + "description": "הצגת הודעות ותוצרים של המשימה" + } + } + }, + "policy": { + "description": "ניהול מדיניות ההרשאות של OmniRoute", + "list": { + "description": "הצגת מדיניות", + "kind": "סינון לפי סוג (allow|deny|rate-limit|cost-cap)", + "scope": "סינון לפי תחום (global|api-key|provider)" + }, + "get": { + "description": "קבלת פרטי מדיניות לפי מזהה" + }, + "create": { + "description": "יצירת מדיניות מקובץ JSON", + "file": "נתיב לקובץ JSON של המדיניות" + }, + "update": { + "description": "עדכון מדיניות מקובץ JSON", + "file": "נתיב לקובץ JSON של המדיניות" + }, + "delete": { + "description": "מחיקת מדיניות לפי מזהה", + "yes": "דילוג על בקשת האישור" + }, + "evaluate": { + "description": "הערכת מדיניות בהרצה יבשה (יציאה 0=מותר, 4=נדחה)", + "api_key": "מפתח API להערכה", + "action": "פעולה לבדיקה (למשל chat, embed, admin)", + "resource": "נתיב או מזהה של המשאב", + "context": "הקשר נוסף כאובייקט JSON" + }, + "export": { + "description": "ייצוא כל כללי המדיניות לקובץ JSON" + }, + "import": { + "description": "ייבוא כללי מדיניות מקובץ JSON", + "overwrite": "דריסת כללי מדיניות קיימים בעלי אותו ID" + } + }, + "compression": { + "description": "הגדרה ובדיקה של תהליך הדחיסה של OmniRoute", + "status": { + "description": "הצגת מצב הדחיסה וההגדרות הנוכחיים" + }, + "configure": { + "description": "הגדרת אפשרויות הדחיסה", + "engine": "מנוע דחיסה (caveman|rtk|hybrid|none)", + "caveman_agg": "רמת האגרסיביות של Caveman‏ 0.0–1.0", + "rtk_budget": "תקציב הטוקנים של RTK", + "language_pack": "חבילת שפה להפעלה" + }, + "engine": { + "description": "קבלה או הגדרה של מנוע הדחיסה הפעיל" + }, + "combos": { + "description": "ניהול סטטיסטיקות של שילובי דחיסה" + }, + "rules": { + "description": "ניהול כללי דחיסה", + "add": { + "pattern": "תבנית להתאמה (regex או field:pattern)", + "action": "פעולה: drop|shrink|replace" + } + }, + "language_packs": { + "description": "הצגת חבילות השפה הזמינות לדחיסה" + }, + "preview": { + "description": "תצוגה מקדימה של השפעת הדחיסה על בקשה", + "file": "נתיב לקובץ JSON של הבקשה" + } + }, + "tunnel": { + "title": "מנהרות", + "listDescription": "הצגת מנהרות פעילות", + "createDescription": "יצירת מנהרה", + "created": "המנהרה נוצרה: {url}", + "stopped": "המנהרה נעצרה.", + "confirmStop": "לעצור את המנהרה {id}?", + "stopDescription": "עצירת מנהרה", + "statusDescription": "הצגת מצב מפורט של מנהרה", + "logsDescription": "הצגת יומנים של מנהרה", + "infoDescription": "הצגת פרטי התצורה של מנהרה", + "rotateDescription": "יצירת כתובת URL חדשה למנהרה", + "tailOpt": "מספר שורות היומן להצגה", + "typeRequired": "יש לציין את סוג המנהרה.", + "noLogs": "אין יומנים זמינים.", + "notAvailable": "פרטי המנהרה אינם זמינים.", + "noTunnels": "אין מנהרות פעילות.", + "infoTitle": "פרטי המנהרה: {type}", + "rotated": "כתובת ה-URL של המנהרה הוחלפה: {url}", + "confirmRotate": "להחליף את כתובת המנהרה מסוג {type}? (תיווצר כתובת URL חדשה)" + }, + "stop": { + "description": "עצירת שרת OmniRoute", + "stopping": "עוצר את השרת (PID {pid})...", + "stopped": "השרת נעצר.", + "notRunning": "אין שרת שפועל.", + "portFallback": "לא נמצא קובץ PID, מנסה לעצור לפי יציאה..." + }, + "restart": { + "description": "הפעלת שרת OmniRoute מחדש", + "restarting": "מפעיל מחדש את שרת OmniRoute..." + }, + "dashboard": { + "description": "פתיחת לוח הבקרה של OmniRoute בדפדפן", + "opening": "פותח את לוח הבקרה בכתובת {url}", + "urlOnly": "הדפסת כתובת ה-URL של לוח הבקרה מבלי לפתוח דפדפן", + "tui": "פתיחת לוח בקרה אינטראקטיבי בממשק TUI (ממשק מסוף, 7 כרטיסיות)" + }, + "models": { + "description": "הצגת המודלים הזמינים (דורש שרת)", + "search": "סינון מודלים לפי מזהה, שם, ספק או תיאור", + "noServer": "השרת אינו פועל. יש להפעילו באמצעות: omniroute serve", + "noModels": "לא נמצאו מודלים." + }, + "audit": { + "description": "גישה ליומני ביקורת של תאימות ו-MCP", + "source": "מקור היומן: all|compliance|mcp (ברירת מחדל: all)", + "since": "החזרת רשומות החל מחותמת זמן זו (ISO 8601)", + "until": "החזרת רשומות עד לחותמת זמן זו (ISO 8601)", + "tail": { + "description": "הצגת רשומות אחרונות מיומן הביקורת", + "follow": "מעקב רציף אחר רשומות חדשות (תשאול כל 2 שניות)", + "limit": "מספר הרשומות המרבי להצגה (ברירת מחדל: 100)" + }, + "search": { + "description": "חיפוש רשומות ביומן הביקורת לפי מילת מפתח", + "limit": "מספר התוצאות המרבי (ברירת מחדל: 200)", + "actor": "סינון לפי מזהה גורם מבצע", + "action": "סינון לפי שם פעולה" + }, + "export": { + "description": "ייצוא יומן הביקורת לקובץ", + "format": "תבנית פלט: jsonl|csv (ברירת מחדל: jsonl)" + }, + "stats": { + "description": "הצגת נתונים סטטיסטיים של יומן הביקורת", + "period": "תקופת זמן: 1d|7d|30d (ברירת מחדל: 7d)" + }, + "get": { + "description": "קבלת רשומה יחידה מיומן הביקורת לפי מזהה" + } + }, + "skills": { + "description": "ניהול מיומנויות OmniRoute‏ (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "הצגת המיומנויות המותקנות", + "type": "סינון לפי סוג (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "הצגת מיומנויות מופעלות בלבד", + "disabled": "הצגת מיומנויות מושבתות בלבד", + "api_key": "סינון לפי מפתח API" + }, + "get": { + "description": "קבלת פרטים על מיומנות לפי מזהה" + }, + "install": { + "description": "התקנת מיומנות מקובץ או מכתובת URL", + "from_file": "נתיב לקובץ הגדרת המיומנות בפורמט JSON", + "from_url": "כתובת URL של הגדרת מיומנות מרוחקת", + "type": "סוג מיומנות (sandbox|custom|hybrid)", + "enable": "הפעלת המיומנות לאחר ההתקנה" + }, + "enable": { + "description": "הפעלת מיומנות לפי מזהה" + }, + "disable": { + "description": "השבתת מיומנות לפי מזהה", + "yes": "דילוג על בקשת האישור" + }, + "delete": { + "description": "מחיקת מיומנות לפי מזהה", + "yes": "דילוג על בקשת האישור" + }, + "execute": { + "description": "הרצת מיומנות לפי מזהה", + "input": "אובייקט קלט מסוג JSON", + "input_file": "נתיב לקובץ קלט מסוג JSON", + "timeout": "זמן קצוב להרצה במילישניות (ברירת מחדל: 30000)" + }, + "executions": { + "description": "הצגת היסטוריית הרצות המיומנויות", + "skill": "סינון לפי מזהה מיומנות", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 50)", + "status": "סינון לפי סטטוס (running|completed|failed)" + }, + "skillssh": { + "description": "ניהול מיומנויות שהותקנו באמצעות SSH" + }, + "marketplace": { + "description": "עיון במיומנויות והתקנתן מהמרקטפלייס" + }, + "mp": { + "search": { + "description": "חיפוש חבילות במרקטפלייס", + "category": "סינון לפי קטגוריה", + "tag": "סינון לפי תגית", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 30)", + "sort": "מיון לפי: downloads|rating|recent" + }, + "info": { + "description": "הצגת פרטי החבילה וקובץ ה-readme" + }, + "install": { + "description": "התקנת חבילה מהמרקטפלייס", + "version": "גרסת החבילה (ברירת מחדל: latest)", + "enable": "הפעלה לאחר ההתקנה", + "yes": "דילוג על בקשת האישור" + }, + "categories": { + "description": "הצגת קטגוריות המרקטפלייס" + }, + "featured": { + "description": "הצגת חבילות מומלצות מהמרקטפלייס" + } + } + }, + "memory": { + "description": "ניהול הזיכרון השיחתי של OmniRoute‏ (FTS5 + vector)", + "search": { + "description": "חיפוש רשומות זיכרון באמצעות שאילתה סמנטית", + "type": "סינון לפי סוג זיכרון (user|feedback|project|reference)", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 20)", + "api_key": "סינון לפי מפתח API", + "token_budget": "הגבלת מספר הטוקנים הכולל בתוצאות" + }, + "add": { + "description": "הוספת רשומת זיכרון חדשה", + "content": "תוכן הטקסט של הזיכרון", + "file": "קריאת תוכן מקובץ", + "type": "סוג זיכרון (ברירת מחדל: user)", + "metadata": "אובייקט מטא-נתונים מסוג JSON", + "api_key": "שיוך למפתח API" + }, + "clear": { + "description": "מחיקת רשומות זיכרון התואמות למסננים", + "type": "סינון לפי סוג", + "older": "מחיקת רשומות הישנות ממשך הזמן שצוין (30d, 6m, 1y)", + "api_key": "סינון לפי מפתח API", + "yes": "דילוג על בקשת האישור" + }, + "list": { + "description": "הצגת רשומות זיכרון ללא דירוג חיפוש", + "type": "סינון לפי סוג", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 100)", + "api_key": "סינון לפי מפתח API" + }, + "get": { + "description": "קבלת רשומת זיכרון יחידה לפי מזהה" + }, + "delete": { + "description": "מחיקת רשומת זיכרון לפי מזהה", + "yes": "דילוג על בקשת האישור" + }, + "health": { + "description": "הצגת תקינותה של תת-מערכת הזיכרון (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "ניהול חיבורים לספקי OAuth", + "providers": { + "description": "הצגת ספקים התומכים ב-OAuth וסוגי תהליכי האימות שלהם" + }, + "start": { + "description": "התחלת תהליך הרשאת OAuth עבור ספק", + "provider": "מזהה ספק (gemini, copilot, cursor, …)", + "no_browser": "הדפסת ה-URL בלבד — אין לפתוח דפדפן", + "import_system": "ייבוא אוטומטי של פרטי גישה מתצורת המערכת המקומית", + "social": "ספק התחברות באמצעות רשת חברתית (google|github) — נדרש עבור kiro", + "timeout": "זמן קצוב להמתנה להרשאה באלפיות שנייה (ברירת מחדל: 300000)" + }, + "status": { + "description": "הצגת חיבורי OAuth פעילים", + "provider": "סינון לפי מזהה ספק" + }, + "revoke": { + "description": "ביטול חיבור OAuth", + "provider": "מזהה הספק לביטול", + "connection_id": "ביטול חיבור מסוים לפי מזהה", + "yes": "דילוג על בקשת האישור" + } + }, + "cloud": { + "description": "ניהול משימות של סוכני AI בענן (codex, devin, jules)", + "agents": { + "description": "הצגת סוכני הענן הזמינים" + }, + "agent": { + "description": "ניהול משימות סוכן הענן {agent}", + "auth": { + "description": "הרשאת {agent} באמצעות OAuth" + } + }, + "task": { + "description": "ניהול משימות של סוכני ענן", + "create": { + "description": "יצירת משימת סוכן חדשה", + "title": "כותרת המשימה (ברירת המחדל היא 80 התווים הראשונים של ההנחיה)", + "prompt": "טקסט ההנחיה למשימה", + "prompt_file": "קריאת ההנחיה מקובץ", + "repo": "כתובת ה-URL של המאגר לשכפול עבור המשימה", + "branch": "שם הענף לשימוש", + "metadata": "אובייקט מטא-נתונים של JSON" + }, + "list": { + "description": "הצגת משימות סוכן", + "status": "סינון לפי סטטוס (running|completed|failed|cancelled)", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 50)" + }, + "get": { + "description": "קבלת פרטי משימה לפי ID" + }, + "status": { + "description": "הצגת סטטוס המשימה (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "ביטול משימה פעילה", + "yes": "דילוג על בקשת האישור" + }, + "approve": { + "description": "אישור תוכנית הסוכן כדי להתחיל בביצוע" + }, + "message": { + "description": "שליחת הודעה למשימה פעילה" + } + }, + "sources": { + "description": "הצגת קובצי המקור שהופקו על ידי משימה" + } + }, + "eval": { + "description": "ניהול חבילות הערכה והרצות", + "suites": { + "description": "ניהול חבילות הערכה", + "list": { + "description": "הצגת חבילות הערכה" + }, + "get": { + "description": "קבלת פרטי חבילת הערכה לפי ID" + }, + "create": { + "description": "יצירת חבילת הערכה מקובץ JSON", + "file": "נתיב לקובץ JSON המגדיר את החבילה" + } + }, + "run": { + "description": "התחלת הרצת הערכה עבור חבילה", + "model": "ID המודל להערכה (ברירת מחדל: auto)", + "combo": "אילוץ שילוב מסוים לפי שם", + "concurrency": "מספר דגימות מקבילות (ברירת מחדל: 4)", + "tag": "תיוג הרצה זו לצורך סינון מאוחר יותר", + "watch": "מעקב אחר התקדמות ההרצה עד להשלמתה" + }, + "list": { + "description": "הצגת הרצות הערכה", + "suite": "סינון לפי ID החבילה", + "status": "סינון לפי סטטוס", + "since": "החזרת הרצות מאז חותמת זמן זו", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 50)" + }, + "get": { + "description": "קבלת פרטי הרצת הערכה לפי ID" + }, + "results": { + "description": "הצגת תוצאות דגימות עבור הרצת הערכה", + "failed": "הצגת דגימות שנכשלו בלבד" + }, + "cancel": { + "description": "ביטול הערכה פעילה", + "yes": "דילוג על בקשת האישור" + }, + "scorecard": { + "description": "הצגת כרטיס ניקוד עבור הרצת הערכה שהושלמה" + } + }, + "webhooks": { + "description": "ניהול רכיבי webhook של OmniRoute", + "events": { + "description": "הצגת כל סוגי אירועי ה-webhook הזמינים" + }, + "list": { + "description": "הצגת רכיבי webhook שהוגדרו" + }, + "get": { + "description": "קבלת פרטי webhook לפי ID" + }, + "add": { + "description": "רישום webhook חדש", + "url": "כתובת URL של היעד", + "events": "רשימה מופרדת בפסיקים של סוגי אירועים", + "secret": "סוד חתימת HMAC", + "header": "כותרת נוספת בפורמט key=value (ניתן לחזור עליה)", + "no_enabled": "יצירת webhook במצב מושבת" + }, + "update": { + "description": "עדכון webhook קיים", + "enabled": "הגדרת מצב הפעלה (true|false)" + }, + "remove": { + "description": "מחיקת webhook", + "yes": "דילוג על בקשת האישור" + }, + "test": { + "description": "שליחת אירוע בדיקה ל-webhook", + "event": "סוג האירוע להדמיה (ברירת מחדל: request.completed)" + } + }, + "program": { + "description": "OmniRoute — נתב AI חכם עם מעבר אוטומטי לגיבוי", + "version": "הדפסת הגרסה ויציאה", + "output": "פורמט פלט (table, json, jsonl, csv)", + "quiet": "הסתרת פלט שאינו חיוני", + "no_color": "השבתת פלט צבעוני", + "timeout": "זמן קצוב לבקשת HTTP באלפיות שנייה", + "api_key": "מפתח API עבור שרת OmniRoute", + "base_url": "כתובת URL בסיסית של שרת OmniRoute", + "context": "הקשר/פרופיל שרת לשימוש עבור פקודה זו", + "lang": "הגדרת שפת התצוגה של CLI (דורסת את OMNIROUTE_LANG)" + }, + "files": { + "description": "ניהול קבצים (העלאה, הצגת רשימה, אחזור, הורדה, מחיקה)", + "list": { + "purpose": "סינון לפי מטרה", + "limit": "מספר תוצאות מרבי" + }, + "get": { + "description": "אחזור מטא-נתונים של קובץ" + }, + "upload": { + "description": "העלאת קובץ", + "purpose": "מטרת הקובץ (batch, assistants, fine-tune)" + }, + "content": { + "description": "הורדת תוכן הקובץ", + "out": "שמירה לנתיב (ברירת מחדל: stdout)" + }, + "delete": { + "yes": "דילוג על האישור" + } + }, + "batches": { + "description": "ניהול משימות אצווה תואמות OpenAI", + "list": { + "status": "סינון לפי סטטוס", + "limit": "מספר תוצאות מרבי" + }, + "create": { + "description": "יצירת משימת אצווה", + "inputFile": "מזהה קובץ הקלט", + "endpoint": "נקודת קצה יעד", + "window": "חלון זמן להשלמה", + "metadata": "הוספת מטא-נתונים key=value" + }, + "submit": { + "description": "העלאת קובץ JSONL ויצירת אצווה", + "jsonl": "נתיב לקובץ JSONL", + "endpoint": "נקודת קצה יעד", + "wait": "המתנה להשלמה" + }, + "cancel": { + "yes": "דילוג על אישור" + }, + "wait": { + "timeout": "זמן קצוב באלפיות שנייה" + }, + "output": { + "out": "שמירת הפלט בנתיב" + }, + "errors": { + "out": "שמירת שגיאות בנתיב" + } + }, + "translator": { + "description": "תרגום גופי בקשות בין פורמטים של LLM", + "detect": { + "description": "זיהוי פורמט הגוף" + }, + "translate": { + "description": "המרת הגוף מפורמט אחד לאחר" + }, + "send": { + "description": "תרגום ושליחה לשירות במעלה הזרם" + }, + "stream": { + "description": "תרגום בהזרמה של גוף בקשה" + }, + "from": "פורמט מקור (openai|anthropic|gemini|cohere)", + "to": "פורמט יעד (openai|anthropic|gemini|cohere)", + "file": "נתיב לקובץ JSON של גוף הבקשה", + "out": "שמירת הפלט בקובץ", + "model": "דריסת המודל", + "history": { + "limit": "מספר תוצאות מרבי" + } + }, + "pricing": { + "description": "ניהול נתוני תמחור למודלים", + "sync": { + "description": "סנכרון מחירים ממקורות במעלה הזרם", + "provider": "סינון לפי ספק", + "force": "אילוץ סנכרון מחדש" + }, + "list": { + "provider": "סינון לפי ספק", + "model": "סינון לפי מודל", + "limit": "מספר תוצאות מרבי" + }, + "defaults": { + "description": "ניהול תמחור ברירת המחדל", + "input": "עלות קלט למיליון טוקנים (USD)", + "output": "עלות פלט למיליון טוקנים (USD)", + "cacheRead": "עלות קריאה מהמטמון למיליון טוקנים (USD)", + "cacheWrite": "עלות כתיבה למטמון למיליון טוקנים (USD)" + }, + "diff": { + "description": "הצגת סטייה מהמחירים במעלה הזרם", + "model": "סינון לפי מודל" + } + }, + "radar": { + "description": "בדיקה וסנכרון של הזנות קטלוג Radar המקומיות", + "status": "הצגת הגדרות Radar המקומיות ומצב מטמון ההזנות", + "sync": "סנכרון קטלוג, הפניות, הצעות ו-Intel דרך השרת המקומי" + }, + "resilience": { + "description": "בדיקה וניהול של מנגנוני עמידות", + "status": { + "provider": "סינון לפי ספק" + }, + "breakers": { + "provider": "סינון לפי ספק" + }, + "cooldowns": { + "provider": "סינון לפי ספק", + "connectionId": "סינון לפי מזהה חיבור" + }, + "lockouts": { + "provider": "סינון לפי ספק", + "model": "סינון לפי מודל" + }, + "reset": { + "description": "איפוס מצב המפסק/הצינון", + "provider": "ספק לאיפוס", + "connectionId": "מזהה חיבור לאיפוס", + "model": "מודל לאיפוס הנעילה", + "allCooldowns": "איפוס כל זמני הצינון עבור הספק", + "yes": "דילוג על האישור" + }, + "profile": { + "description": "ניהול פרופיל עמידות", + "name": "שם הפרופיל" + }, + "config": { + "description": "ניהול תצורת העמידות", + "threshold": "סף כשלים", + "resetTimeout": "זמן איפוס באלפיות השנייה", + "baseCooldown": "זמן צינון בסיסי באלפיות השנייה" + } + }, + "nodes": { + "description": "ניהול צומתי ספק (נקודות קצה)", + "list": { + "provider": "סינון לפי ספק", + "enabled": "הצגת צמתים מופעלים בלבד" + }, + "add": { + "provider": "שם הספק", + "baseUrl": "כתובת URL בסיסית של הצומת", + "name": "שם הצומת", + "weight": "משקל איזון עומסים", + "region": "תג אזור", + "authHeader": "כותרת אימות מותאמת אישית (key=value)" + }, + "update": { + "baseUrl": "כתובת URL בסיסית חדשה", + "name": "שם חדש", + "weight": "משקל חדש", + "region": "אזור חדש", + "enabled": "הפעלה או השבתה (true|false)" + }, + "remove": { + "yes": "דילוג על האישור" + }, + "validate": { + "baseUrl": "כתובת URL לאימות", + "provider": "ספק לביצוע האימות מולו" + }, + "test": { + "description": "שליחת בקשת בדיקה לצומת" + }, + "metrics": { + "description": "הצגת מדדי הצומת", + "period": "פרק זמן (למשל 24h, 7d)" + } + }, + "context": { + "description": "הגדרת צינור עיבוד להנדסת הקשר (Caveman, RTK)", + "analytics": { + "period": "פרק זמן (למשל 7d, 30d)" + }, + "caveman": { + "description": "ניהול דוחס ההקשר Caveman", + "config": { + "description": "הצגה או עדכון של תצורת Caveman", + "aggressiveness": "רמת אגרסיביות 0.0–1.0", + "maxShrinkPct": "אחוז הכיווץ המרבי", + "preserveTags": "תגים לשימור, מופרדים בפסיקים" + } + }, + "rtk": { + "description": "ניהול ממטב ההקשר RTK", + "config": { + "description": "הצגה או עדכון של תצורת RTK", + "tokenBudget": "תקציב טוקנים עבור RTK", + "reservePct": "אחוז רזרבה" + }, + "filters": { + "description": "ניהול מסנני RTK", + "pattern": "תבנית סינון (regex)", + "priority": "עדיפות המסנן (ברירת מחדל: 100)", + "action": "פעולת המסנן: drop|shrink|replace", + "yes": "דילוג על אישור" + }, + "test": { + "file": "נתיב לקובץ JSON של הבקשה" + } + }, + "combos": { + "description": "ניהול קומבינציות מודע-הקשר" + } + }, + "sessions": { + "description": "בדיקה וניהול של הפעלות פעילות", + "list": { + "user": "סינון לפי משתמש", + "kind": "סינון לפי סוג (dashboard|api-key|mcp|a2a)", + "active": "הצגת הפעלות פעילות בלבד", + "limit": "מספר תוצאות מרבי (ברירת מחדל: 100)" + }, + "expire": { + "yes": "דילוג על אישור" + }, + "expireAll": { + "user": "המשתמש שתוקף ההפעלות שלו יפוג", + "yes": "דילוג על אישור" + } + }, + "tags": { + "description": "ניהול תגיות משאבים", + "add": { + "color": "צבע התגית (hex או שם)", + "description": "תיאור התגית" + }, + "remove": { + "yes": "דילוג על אישור" + }, + "assign": { + "tag": "שם התגית", + "to": "משאב יעד בתבנית type:id (לדוגמה: provider:openai)" + }, + "unassign": { + "tag": "שם התגית", + "from": "משאב מקור בתבנית type:id" + } + }, + "openapi": { + "description": "גישה למפרט OpenAPI של OmniRoute ובדיקתו", + "dump": { + "description": "הפקת מפרט OpenAPI אל stdout או לקובץ", + "format": "פורמט פלט: yaml|json (ברירת מחדל: yaml)", + "out": "שמירה בנתיב קובץ" + }, + "validate": { + "description": "אימות מפרט OpenAPI" + }, + "try": { + "description": "בדיקת נקודת קצה של API באמצעות המפרט", + "method": "שיטת HTTP (ברירת מחדל: GET)", + "body": "נתיב לקובץ JSON של גוף הבקשה", + "query": "פרמטר שאילתה בתבנית key=value (ניתן לחזרה)", + "header": "כותרת בתבנית key=value (ניתן לחזרה)" + }, + "endpoints": { + "description": "הצגת כל נקודות הקצה של ה-API", + "search": "סינון לפי נתיב או תקציר" + }, + "paths": { + "description": "הצגת כל נתיבי ה-API" + } + }, + "combo": { + "title": "קומבינציות", + "switched": "שילוב פעיל: {name}", + "created": "השילוב נוצר: {name}", + "deleted": "השילוב נמחק: {name}", + "noCombos": "לא הוגדרו שילובים.", + "confirmDelete": "למחוק את השילוב {name}?", + "suggest": { + "description": "הצעת השילוב הטוב ביותר למשימה באמצעות דירוג AI", + "task": "תיאור המשימה", + "maxCost": "עלות מרבית לבקשה ב-USD", + "maxLatencyMs": "זמן השהיה מרבי באלפיות השנייה", + "weights": "משקלי דירוג ב-JSON, למשל {\"latency\":0.7,\"cost\":0.3}", + "top": "מספר המועמדים המובילים להצגה (ברירת מחדל: 5)", + "explain": "הדפסת הנימוקים אל stderr", + "switch": "הפעלת השילוב המדורג במקום הראשון" + } + }, + "oneproxy": { + "description": "ניהול מאגר שרתי המקור של OneProxy", + "stats": { + "provider": "סינון לפי ספק", + "period": "תקופת זמן (ברירת מחדל: 24h)" + }, + "fetch": { + "description": "משיכת שרתי Proxy מהמאגר", + "count": "מספר שרתי ה-Proxy למשיכה (ברירת מחדל: 1)", + "type": "סוג Proxy: http|socks5 (ברירת מחדל: http)" + }, + "rotate": { + "description": "אילוץ החלפת Proxy", + "provider": "הספק שעבורו תתבצע ההחלפה", + "connectionId": "מזהה חיבור ספציפי להחלפה" + }, + "config": { + "description": "הצגה או עדכון של תצורת OneProxy", + "enabled": "הפעלת מאגר Proxy‏ (true|false)", + "poolSize": "גודל המאגר", + "providerSource": "כתובת URL של ספק ה-Proxy", + "rotationPolicy": "מדיניות החלפה: sticky|per-request|periodic" + }, + "pool": { + "description": "הצגת מאגר ה-Proxy הנוכחי עם מדדים" + } + }, + "open": { + "description": "פתיחת דף ספציפי בלוח הבקרה של OmniRoute בדפדפן", + "url": "הדפסת כתובת URL בלבד, ללא פתיחת הדפדפן" + }, + "telemetry": { + "description": "גישה לנתוני טלמטריה מצטברים", + "summary": { + "description": "הצגת סיכום טלמטריה מצטבר", + "period": "תקופת זמן: 24h|7d|30d (ברירת מחדל: 24h)", + "compareTo": "השוואה לתקופה הקודמת" + }, + "export": { + "description": "ייצוא אירועי טלמטריה אל JSONL", + "out": "נתיב קובץ הפלט (ברירת מחדל: telemetry.jsonl)", + "period": "תקופת זמן לייצוא (ברירת מחדל: 7d)" + } + }, + "sync": { + "description": "סנכרון התצורה בין מופעי OmniRoute", + "push": { + "description": "דחיפת התצורה לענן או למופע מרוחק", + "target": "יעד (cloud או context:name)", + "bundle": "חלקי חבילה לסנכרון", + "dryRun": "תצוגה מקדימה ללא החלה" + }, + "pull": { + "description": "משיכת תצורה מהענן או ממקור מרוחק", + "source": "מקור (ענן או context:name)", + "merge": "מיזוג עם התצורה הקיימת", + "replace": "החלפת התצורה הקיימת", + "dryRun": "תצוגה מקדימה ללא החלה" + }, + "diff": { + "source": "הקשר מקור", + "target": "הקשר יעד" + }, + "bundle": { + "description": "ייצוא התצורה כקובץ חבילה", + "include": "חלקים להכללה (מופרדים בפסיקים)" + }, + "import": { + "description": "ייבוא קובץ חבילה", + "dryRun": "אימות ללא החלה" + }, + "initialize": { + "fromCloud": "אתחול מגיבוי בענן" + }, + "tokens": { + "description": "ניהול אסימוני סנכרון", + "create": { + "name": "שם האסימון", + "scope": "היקף האסימון", + "ttl": "משך חיי האסימון (למשל 30d)" + }, + "revoke": { + "yes": "דילוג על אישור" + } + }, + "resolve": { + "description": "פתרון התנגשויות סנכרון באופן אינטראקטיבי" + } + }, + "config": { + "contexts": { + "description": "ניהול הקשרים/פרופילים של שרת (הוספה, שימוש, הצגת רשימה, הצגת פרטים, הסרה, שינוי שם, ייצוא, ייבוא)" + }, + "lang": { + "description": "ניהול שפת התצוגה של ממשק שורת הפקודה", + "getDescription": "הצגת קוד השפה הפעילה כעת", + "setDescription": "הגדרת שפת התצוגה ושמירתה בתצורה", + "listDescription": "הצגת כל השפות הזמינות", + "listTitle": "שפות זמינות", + "current": "שפה: {code} ({name})", + "saved": "השפה הוגדרה ל-{code} ({name}).", + "noCode": "נדרש קוד שפה. יש להריץ 'omniroute config lang list' כדי לראות את הקודים הזמינים.", + "unknown": "קוד שפה לא מוכר: {code}. יש להריץ 'omniroute config lang list' כדי לראות את הקודים הזמינים.", + "alreadySet": "השפה כבר מוגדרת ל-{code}.", + "envHint": "טיפ: ניתן גם להגדיר OMNIROUTE_LANG={code} בסביבה שלך." + } + }, + "completion": { + "description": "יצירה או התקנה של סקריפטים להשלמה במעטפת", + "zsh": "הדפסת סקריפט השלמה עבור zsh", + "bash": "הדפסת סקריפט השלמה עבור bash", + "fish": "הדפסת סקריפט השלמה עבור fish", + "install": "התקנה גלובלית של סקריפט ההשלמה עבור המעטפת שזוהתה", + "refresh": "רענון המטמון של שילובים/ספקים/מודלים" + }, + "logs": { + "description": "הזרמה או ייצוא של יומני בקשות", + "follow": "הזרמת יומנים בזמן אמת", + "filter": "סינון לפי רמה (error,warn,info) — מופרד בפסיקים", + "lines": "מספר השורות לאחזור", + "timeout": "זמן קצוב לחיבור באלפיות השנייה", + "baseUrl": "כתובת ה-URL הבסיסית של OmniRoute API", + "requestId": "סינון לפי מזהה בקשה", + "apiKey": "סינון לפי מפתח API", + "combo": "סינון לפי שם קומבו", + "status": "סינון לפי קוד מצב HTTP", + "durationMin": "משך בקשה מינימלי באלפיות השנייה", + "durationMax": "משך בקשה מרבי באלפיות השנייה", + "export": "שמירת יומנים לקובץ (json/jsonl/csv)", + "exported": "היומנים נשמרו ב-{path}", + "stopped": "הזרמת היומנים הופסקה.", + "streamError": "שגיאה בהזרמת היומנים: {message}" + }, + "tray": { + "description": "שליטה בסמל מגש המערכת", + "show": "הצגת סמל מגש המערכת (אם השרת פועל עם --tray)", + "hide": "הסתרת סמל מגש המערכת", + "quit": "יציאה מ-OmniRoute דרך מגש המערכת" + }, + "autostart": { + "description": "ניהול ההפעלה האוטומטית של OmniRoute בעת האתחול (Linux: שירות משתמש של systemd)", + "enable": "הפעלת הפעלה אוטומטית בעת האתחול", + "disable": "השבתת הפעלה אוטומטית בעת האתחול", + "toggle": "החלפת מצב ההפעלה האוטומטית בעת האתחול", + "status": "הצגת מצב ההפעלה האוטומטית" + }, + "runtime": { + "description": "ניהול תלויות זמן ריצה מקוריות", + "check": "בדיקת מצב התלויות המקוריות בספריית זמן הריצה", + "repair": "התקנה מחדש של התלויות המקוריות בספריית זמן הריצה", + "repair_force": "אילוץ התקנה מחדש גם אם הן תקינות", + "clean": "הסרת ספריית זמן הריצה (מפנה שטח בדיסק)", + "clean_yes": "דילוג על האישור" + }, + "repl": { + "description": "REPL אינטראקטיבי רב-שלבי עם LLM", + "model": "המודל לשימוש (ברירת מחדל: auto)", + "combo": "שם הקומבו לשימוש", + "system": "הנחיית מערכת", + "resume": "חידוש הפעלה שמורה לפי שם" + }, + "plugin": { + "description": "ניהול תוספי CLI‏ (omniroute-cmd-*)", + "list": "הצגת התוספים המותקנים", + "install": "התקנת תוסף מ-npm או מנתיב מקומי", + "remove": "הסרת תוסף מותקן", + "info": "הצגת פרטים על תוסף מותקן", + "search": "חיפוש תוספים זמינים במאגר npm", + "update": "עדכון תוספים מותקנים", + "scaffold": "יצירת שלד בסיסי לתוסף חדש" + }, + "launch": { + "description": "הפעלת Claude Code כשהוא מופנה אל OmniRoute (מקומי או מרוחק, עם --profile)", + "token": "האסימון שעל לקוח Claude לשלוח (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute אינו נגיש ביציאה {port}. הפעילו אותו באמצעות 'omniroute serve'.", + "notFound": "כלי שורת הפקודה 'claude' לא נמצא ב-PATH." + }, + "run": { + "description": "הפעלת יעד CLI נתמך דרך OmniRoute" + }, + "setupClaude": { + "description": "יצירת פרופילי Claude Code תחת ~/.claude/profiles מקטלוג המודלים של OmniRoute" + }, + "connect": { + "description": "התחברות לשרת OmniRoute מרוחק ומעבר למצב מרוחק" + }, + "tokens": { + "description": "ניהול אסימוני גישה מוגדרי-היקף ל-CLI (מצב מרוחק)" + }, + "configure": { + "description": "בחירת ספק ומודל מהשרת הפעיל והגדרת CLI מקומי נתמך" + }, + "launchCodex": { + "description": "הפעלת Codex CLI כשהוא מופנה אל OmniRoute (מקומי או VPS מרוחק)" + }, + "setupCodex": { + "description": "יצירת קובצי פרופיל תחת ~/.codex מקטלוג המודלים הפעיל של OmniRoute" + }, + "packs": { + "description": "ניהול חבילות זמן ריצה אופציונליות (ML / אוטומציית דפדפן)", + "listDescription": "הצגת החבילות האופציונליות ומצב ההתקנה שלהן", + "installDescription": "התקנת חבילה אופציונלית בתוך DATA_DIR", + "verifyDescription": "אימות החבילות המותקנות מול אינדקס סיכומי הביקורת המצורף", + "removeDescription": "הסרת חבילה אופציונלית מותקנת", + "sourceOpt": "התיקייה המכילה את מטעני החבילות ואת אינדקס החבילות", + "warnNoIndex": "optional-packs.index.json לא נמצא — התקנה ואימות אינם זמינים בעותק זה (חבילות שולחן העבודה כוללות אותו)", + "errUnknown": "חבילה לא מוכרת: {name}", + "errNoIndex": "אינדקס החבילות לא נמצא; העבירו --source שמכיל את מטען החבילה (חבילות שולחן העבודה כוללות אותו לצד היישום)", + "installed": "החבילה \"{name}\" הותקנה ואומתה ב-{dir}", + "restartHint": "הפעילו מחדש את שרת OmniRoute (או את יישום שולחן העבודה) כדי שסביבת זמן הריצה תטען את החבילה", + "removed": "החבילה \"{name}\" הוסרה", + "notInstalled": "החבילה \"{name}\" לא הייתה מותקנת", + "verifyOk": "כל החבילות המותקנות אומתו", + "verifyFailed": "האימות נכשל עבור {count} חבילות", + "noneInstalled": "לא מותקנות חבילות אופציונליות" } } diff --git a/bin/cli/locales/hi.json b/bin/cli/locales/hi.json index 18feedcee8..0ed2a30f7c 100644 --- a/bin/cli/locales/hi.json +++ b/bin/cli/locales/hi.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON के रूप में आउटपुट", "yesOpt": "पुष्टि छोड़ें" }, + "setup": { + "title": "OmniRoute सेटअप", + "passwordPrompt": "एडमिन पासवर्ड", + "providerPrompt": "डिफ़ॉल्ट प्रदाता (छोड़ने के लिए खाली रखें)", + "done": "सेटअप पूरा हुआ", + "passwordSet": "एडमिन पासवर्ड कॉन्फ़िगर किया गया", + "providerSet": "प्रदाता कॉन्फ़िगर किया गया: {name}", + "testingProvider": "प्रदाता कनेक्शन का परीक्षण किया जा रहा है: {name}", + "testPassed": "प्रदाता परीक्षण सफल रहा", + "testFailed": "प्रदाता परीक्षण विफल रहा: {error}", + "loginEnabled": "लॉगिन: सक्षम (पासवर्ड अपडेट किया गया)", + "loginDisabled": "लॉगिन: अक्षम", + "providerInfo": "प्रदाता: {info}", + "opencode": "OpenCode के लिए बंडल किए गए @omniroute/opencode-plugin को इंस्टॉल और कॉन्फ़िगर करें" + }, + "doctor": { + "title": "OmniRoute डॉक्टर", + "dbOk": "डेटाबेस: ठीक है ({path})", + "dbMissing": "डेटाबेस: आरंभ नहीं किया गया — `omniroute setup` चलाएँ", + "portOk": "पोर्ट {port}: उपलब्ध", + "portConflict": "पोर्ट {port}: किसी अन्य प्रोसेस द्वारा उपयोग में है", + "encryptionOk": "एन्क्रिप्शन कुंजी: कॉन्फ़िगर की गई", + "encryptionMissing": "एन्क्रिप्शन कुंजी मौजूद नहीं है — `omniroute setup` चलाएँ", + "allGood": "सभी जाँच सफल रहीं।", + "warnings": "{count} चेतावनी — ऊपर देखें।" + }, + "providers": { + "title": "प्रदाता", + "noProviders": "कोई प्रदाता कॉन्फ़िगर नहीं किया गया। चलाएँ: omniroute setup", + "testing": "{name} का परीक्षण किया जा रहा है...", + "available": "{count} प्रदाता उपलब्ध", + "connected": "कनेक्टेड", + "disconnected": "डिस्कनेक्टेड", + "validationFailed": "सत्यापन विफल रहा: {error}", + "metrics": { + "description": "प्रदाता के प्रदर्शन मेट्रिक्स (विलंबता, सफलता दर, लागत) दिखाएँ", + "provider": "प्रदाता ID के अनुसार फ़िल्टर करें", + "connection_id": "कनेक्शन ID के अनुसार फ़िल्टर करें", + "period": "समयावधि: 1h|6h|24h|7d|30d (डिफ़ॉल्ट: 24h)", + "metric": "किसी विशिष्ट मेट्रिक फ़ील्ड पर फ़ोकस करें", + "sort": "फ़ील्ड के अनुसार क्रमबद्ध करें (अवरोही)", + "limit": "अधिकतम पंक्तियाँ (डिफ़ॉल्ट: 50)", + "watch": "हर 5s में रीफ़्रेश करें (लाइव मोड)", + "compare": "साथ-साथ तुलना करने के लिए कॉमा से अलग की गई प्रदाता ID" + }, + "metric_single": { + "description": "किसी विशिष्ट कनेक्शन के लिए एकल मेट्रिक मान प्राप्त करें" + }, + "rotate": { + "description": "किसी प्रदाता कनेक्शन के लिए अपस्ट्रीम API कुंजी बदलें", + "newKeyOpt": "नया API कुंजी मान (इससे बचें: --from-env को प्राथमिकता दें)", + "fromEnvOpt": "परिवेश चर VAR से नई कुंजी पढ़ें", + "oauthOpt": "इसके बजाय OAuth पुनः-प्रमाणीकरण प्रवाह शुरू करें", + "skipTestOpt": "रोटेशन के बाद कनेक्टिविटी परीक्षण छोड़ें", + "dryRunOpt": "बिना लिखे दिखाएँ कि क्या बदलेगा", + "confirmPrompt": "कनेक्शन \"{name}\" ({id}) की API कुंजी बदलें? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) की कुंजी रोटेट की जाती। कोई बदलाव नहीं किया गया।", + "oauthHint": "OAuth कनेक्शन — चलाएँ: omniroute oauth {provider}", + "envVarEmpty": "परिवेश चर {var} सेट नहीं है या खाली है।", + "success": "\"{name}\" की कुंजी रोटेट कर दी गई। सत्यापित करने के लिए `providers test {id}` चलाएँ।", + "testPassed": "रोटेशन के बाद का परीक्षण सफल रहा।", + "testFailed": "रोटेशन के बाद का परीक्षण विफल रहा: {error}" + }, + "status": { + "description": "सभी प्रदाता कनेक्शनों की कुंजी स्थिति दिखाएँ (आयु, समाप्ति, कूलडाउन)", + "providerOpt": "प्रदाता नाम के अनुसार फ़िल्टर करें", + "header": "ID प्रदाता नाम समाप्ति स्थिति परीक्षण स्थिति कूलडाउन समाप्ति", + "noData": "प्रदाता कनेक्शन का कोई डेटा उपलब्ध नहीं है।", + "requiresServer": "providers status के लिए OmniRoute सर्वर का चालू होना आवश्यक है।" + } + }, + "keys": { + "title": "API कुंजियाँ", + "addDescription": "किसी प्रदाता के लिए API कुंजी जोड़ें या अपडेट करें", + "listDescription": "सभी कॉन्फ़िगर की गई API कुंजियाँ सूचीबद्ध करें", + "removeDescription": "किसी प्रदाता की API कुंजी हटाएँ", + "regenerateDescription": "OmniRoute API कुंजी पुनः जनरेट करें", + "revokeDescription": "OmniRoute API कुंजी रद्द करें", + "revealDescription": "बिना छिपाया गया API कुंजी मान दिखाएँ", + "usageDescription": "किसी API कुंजी का हालिया उपयोग दिखाएँ", + "usageLimitOpt": "हालिया अनुरोधों की संख्या", + "rotateDescription": "नई कुंजी जनरेट करें और पुरानी कुंजी अमान्य करें", + "graceOpt": "पुरानी कुंजी अमान्य होने से पहले की अनुग्रह अवधि (ms)", + "stdinOpt": "आर्ग्युमेंट के बजाय stdin से API कुंजी पढ़ें", + "added": "{provider} के लिए कुंजी जोड़ दी गई।", + "removed": "कुंजी हटा दी गई।", + "listed": "{count} कुंजी।", + "noKeys": "कोई कुंजी कॉन्फ़िगर नहीं की गई है।", + "noUsage": "कोई उपयोग डेटा नहीं मिला।", + "confirmRemove": "कुंजी {id} हटाएँ?", + "confirmRegenerate": "कुंजी {id} पुनः जनरेट करें?", + "confirmRevoke": "कुंजी {id} रद्द करें?", + "confirmRotate": "कुंजी {id} रोटेट करें? (अनुग्रह अवधि के बाद पुरानी कुंजी अमान्य कर दी जाएगी)", + "regenerated": "पुनः जनरेट किया गया। नई कुंजी: {key}", + "revoked": "कुंजी {id} रद्द कर दी गई।", + "rotated": "कुंजी {id} रोटेट की गई। नई कुंजी ID: {newId}", + "revealWarning": "⚠ इससे पूरी अनमास्क की गई कुंजी दिखाई देगी। सुनिश्चित करें कि आपकी स्क्रीन निजी है।", + "providerRequired": "प्रोवाइडर आवश्यक है।", + "keyRequired": "API कुंजी आवश्यक है।", + "stdinEmpty": "stdin के माध्यम से कोई API कुंजी प्रदान नहीं की गई।", + "unknownProvider": "अज्ञात प्रोवाइडर: {provider}", + "policy": { + "title": "कुंजी नीति", + "showDescription": "किसी कुंजी के लिए दर/लागत नीति दिखाएँ", + "setDescription": "किसी कुंजी के लिए दर/लागत नीति सेट करें", + "rateLimitOpt": "प्रति मिनट अधिकतम अनुरोध", + "maxCostOpt": "प्रति दिन अधिकतम लागत (USD)", + "allowedModelsOpt": "अनुमत मॉडल की कॉमा से अलग की गई सूची", + "nothingToSet": "कोई नीति फ़ील्ड प्रदान नहीं की गई। --rate-limit, --max-cost, या --allowed-models का उपयोग करें।", + "updated": "नीति अपडेट की गई।" + }, + "expiration": { + "title": "कुंजी की समाप्ति", + "listDescription": "जल्द समाप्त होने वाली कुंजियाँ सूचीबद्ध करें", + "daysOpt": "अगले N दिनों के भीतर समाप्त होने वाली कुंजियाँ दिखाएँ", + "none": "अगले {days} दिनों के भीतर कोई कुंजी समाप्त नहीं हो रही है।", + "listTitle": "अगले {days} दिनों के भीतर समाप्त होने वाली कुंजियाँ:" + } + }, + "authExport": { + "description": "डिक्रिप्ट किए गए प्रोवाइडर क्रेडेंशियल निर्यात करें (केवल स्थानीय, प्लेनटेक्स्ट आउटपुट)", + "idOpt": "केवल इस id/name/provider से मेल खाने वाला कनेक्शन निर्यात करें", + "formatOpt": "आउटपुट फ़ॉर्मैट: json या env", + "outOpt": "stdout के बजाय आउटपुट को किसी फ़ाइल में लिखें (0600 अनुमतियों के साथ लिखा जाएगा)", + "forceOpt": "पुष्टि करें कि आप समझते हैं कि इससे प्लेनटेक्स्ट सीक्रेट प्रिंट/लिखे जाते हैं", + "warning": "⚠ इससे डिक्रिप्ट की गई प्लेनटेक्स्ट API कुंजियाँ और OAuth टोकन प्रिंट/लिखे जाते हैं। सुनिश्चित करें कि आपकी स्क्रीन, शेल हिस्ट्री और कोई भी आउटपुट फ़ाइल निजी रहे।", + "confirmHeading": "⚠ चेतावनी: यह डिक्रिप्ट किए गए प्रोवाइडर क्रेडेंशियल को प्लेनटेक्स्ट में निर्यात करता है", + "confirmBody": "यह कमांड चयनित कनेक्शन के लिए apiKey, accessToken, refreshToken, और\nidToken को डिक्रिप्ट करके प्रिंट/लिखता है। आउटपुट को सीक्रेट मानें।", + "confirmFooter": "पुष्टि करने के लिए, चलाएँ:\n omniroute auth export --force", + "missingKey": "क्रेडेंशियल निर्यात करने के लिए STORAGE_ENCRYPTION_KEY आवश्यक है।", + "notFound": "कनेक्शन नहीं मिला: {id}", + "invalidFormat": "अमान्य फ़ॉर्मैट: {format}। json या env का उपयोग करें।" + }, + "stream": { + "description": "SSE निरीक्षण मोड के साथ चैट प्रतिक्रिया स्ट्रीम करें", + "file": "फ़ाइल से प्रॉम्प्ट पढ़ें", + "stdin": "stdin से प्रॉम्प्ट पढ़ें", + "model": "मॉडल ID (डिफ़ॉल्ट: auto)", + "system": "सिस्टम प्रॉम्प्ट", + "combo": "नाम द्वारा किसी विशिष्ट कॉम्बो का उपयोग बाध्य करें", + "max_tokens": "प्रतिक्रिया में अधिकतम टोकन", + "responses_api": "/v1/chat/completions के बजाय /v1/responses का उपयोग करें", + "raw": "प्राप्त हुई कच्ची SSE पंक्तियाँ प्रिंट करें", + "debug": "प्रत्येक चंक की टाइमिंग जानकारी stderr पर प्रिंट करें", + "save": "सभी SSE इवेंट्स को .jsonl फ़ाइल में सेव करें", + "error": { + "empty_prompt": "त्रुटि: प्रॉम्प्ट आवश्यक है (पोज़िशनल आर्ग्युमेंट, --file, या --stdin)" + } + }, + "usage": { + "description": "उपयोग एनालिटिक्स, बजट, कोटा और लॉग", + "analytics": { + "description": "समेकित उपयोग एनालिटिक्स दिखाएँ", + "period": "समय सीमा: 1d|7d|30d|90d|ytd|all (डिफ़ॉल्ट: 30d)", + "provider": "प्रोवाइडर ID के अनुसार फ़िल्टर करें" + }, + "budget": { + "description": "लागत बजट प्रबंधित करें", + "set": { + "scope": "बजट का दायरा (डिफ़ॉल्ट: global)", + "period": "बजट अवधि: daily|weekly|monthly (डिफ़ॉल्ट: monthly)" + } + }, + "quota": { + "description": "प्रोवाइडर कोटा उपयोग दिखाएँ", + "provider": "प्रोवाइडर ID के अनुसार फ़िल्टर करें", + "check": "दिखाएँ कि नए अनुरोध के लिए कोटा उपलब्ध है या नहीं" + }, + "logs": { + "description": "अनुरोध कॉल लॉग दिखाएँ", + "limit": "लौटाई जाने वाली लॉग प्रविष्टियों की संख्या (डिफ़ॉल्ट: 100)", + "search": "लॉग फ़िल्टर करने के लिए सर्च क्वेरी", + "since": "इस टाइमस्टैम्प के बाद के लॉग लौटाएँ", + "follow": "नई लॉग प्रविष्टियों को लगातार टेल करें", + "api_key": "API कुंजी के अनुसार लॉग फ़िल्टर करें" + }, + "utilization": { + "description": "API कुंजी उपयोग मेट्रिक्स दिखाएँ", + "api_key": "API कुंजी के अनुसार फ़िल्टर करें" + }, + "history": { + "description": "अनुरोध इतिहास दिखाएँ", + "limit": "इतिहास प्रविष्टियों की संख्या (डिफ़ॉल्ट: 100)" + }, + "proxy_logs": { + "description": "प्रॉक्सी-स्तरीय अनुरोध लॉग दिखाएँ", + "limit": "प्रॉक्सी लॉग प्रविष्टियों की संख्या (डिफ़ॉल्ट: 100)" + } + }, + "cost": { + "description": "प्रोवाइडर, मॉडल, कॉम्बो या API कुंजी के अनुसार विस्तृत लागत रिपोर्ट दिखाएँ", + "period": "समय सीमा: 1d|7d|30d|90d|ytd|all (डिफ़ॉल्ट: 30d)", + "since": "आरंभ तिथि (ISO प्रारूप, जैसे 2026-01-01) — --period को ओवरराइड करती है", + "until": "समाप्ति तिथि (ISO प्रारूप)", + "group_by": "परिणामों को इनके अनुसार समूहित करें: provider|model|api-key|combo|day (डिफ़ॉल्ट: provider)", + "api_key_filter": "किसी विशिष्ट API कुंजी के अनुसार फ़िल्टर करें", + "limit": "दिखाई जाने वाली पंक्तियों की अधिकतम संख्या (डिफ़ॉल्ट: 100)" + }, + "simulate": { + "description": "ड्राई-रन रूटिंग सिमुलेशन — अपस्ट्रीम को कॉल किए बिना दिखाएँ कि कौन-से प्रोवाइडर चुने जाएँगे", + "file": "JSON फ़ाइल से पूरा अनुरोध बॉडी लोड करें", + "model": "मॉडल ID (डिफ़ॉल्ट: auto)", + "combo": "नाम द्वारा किसी विशिष्ट कॉम्बो को बाध्य करें", + "reasoning": "रीज़निंग प्रयास स्तर (low|medium|high)", + "thinking": "विस्तारित थिंकिंग टोकन बजट", + "explain": "फ़ॉलबैक ट्री और लागत सीमा को stderr पर प्रिंट करें", + "noCombo": "कोई मेल खाता कॉम्बो नहीं मिला। इससे एक कॉन्फ़िगर करें: omniroute combo create" + }, + "chat": { + "description": "OmniRoute को एक बार का चैट प्रॉम्प्ट भेजें", + "file": "फ़ाइल से प्रॉम्प्ट पढ़ें", + "stdin": "stdin से प्रॉम्प्ट पढ़ें", + "system": "सिस्टम प्रॉम्प्ट", + "model": "मॉडल ID (डिफ़ॉल्ट: auto)", + "max_tokens": "प्रतिक्रिया में अधिकतम टोकन", + "temperature": "सैंपलिंग तापमान (0–2)", + "top_p": "Top-p न्यूक्लियस सैंपलिंग", + "reasoning_effort": "रीज़निंग प्रयास स्तर (low|medium|high)", + "thinking_budget": "विस्तारित चिंतन टोकन बजट", + "combo": "नाम से किसी विशिष्ट कॉम्बो का उपयोग अनिवार्य करें", + "responses_api": "/v1/chat/completions के बजाय /v1/responses का उपयोग करें", + "stream": "प्रतिक्रिया को क्रमिक रूप से स्ट्रीम करें", + "no_history": "~/.omniroute/cli-history.jsonl में सेव न करें", + "error": { + "empty_prompt": "त्रुटि: प्रॉम्प्ट आवश्यक है (पोज़िशनल आर्ग्युमेंट, --file, या --stdin)" + } + }, + "serve": { + "description": "OmniRoute सर्वर शुरू करें (डिफ़ॉल्ट क्रिया)", + "starting": "पोर्ट {port} पर OmniRoute सर्वर शुरू हो रहा है...", + "ready": "http://localhost:{port} पर तैयार है", + "stopping": "सर्वर (PID {pid}) रोका जा रहा है...", + "stopped": "सर्वर रोक दिया गया।", + "notRunning": "सर्वर चालू नहीं है।", + "port": "सुनने के लिए पोर्ट (डिफ़ॉल्ट: 20128)", + "no_open": "ब्राउज़र अपने-आप न खोलें", + "daemon": "सर्वर को बैकग्राउंड डेमन के रूप में चलाएँ", + "log": "सर्वर लॉग इनलाइन दिखाएँ", + "no_recovery": "क्रैश होने पर अपने-आप पुनः आरंभ करना अक्षम करें (डीबगिंग मोड)", + "max_restarts": "हार मानने से पहले 30 सेकंड के भीतर क्रैश के बाद पुनः आरंभ करने की अधिकतम संख्या (डिफ़ॉल्ट: 2)", + "tray": "सिस्टम ट्रे में शुरू करें (केवल डेस्कटॉप, ऑप्ट-इन)", + "no_tray": "सिस्टम ट्रे आइकन अक्षम करें", + "ready_timeout": "ms में रेडीनेस प्रोब टाइमआउट (OMNIROUTE_READY_TIMEOUT_MS भी, डिफ़ॉल्ट 60000)", + "tls_cert": "HTTPS सेवा देने के लिए TLS प्रमाणपत्र (PEM) का पथ (OMNIROUTE_TLS_CERT भी)", + "tls_key": "HTTPS सेवा देने के लिए TLS निजी कुंजी (PEM) का पथ (OMNIROUTE_TLS_KEY भी)" + }, + "backup": { + "title": "बैकअप", + "description": "OmniRoute डेटा का बैकअप बनाएँ", + "creating": "बैकअप बनाया जा रहा है...", + "done": "बैकअप {path} में सेव किया गया", + "noFiles": "बैकअप लेने के लिए कोई फ़ाइल नहीं है (डेटाबेस इनिशियलाइज़ नहीं हुआ है)", + "failed": "बैकअप विफल: {error}", + "restoring": "{path} से पुनर्स्थापित किया जा रहा है...", + "restored": "पुनर्स्थापना पूर्ण हुई।", + "restoreDescription": "बैकअप से पुनर्स्थापित करें", + "listTitle": "उपलब्ध बैकअप", + "noBackups": "कोई बैकअप नहीं मिला।", + "notFound": "बैकअप नहीं मिला: {name}", + "confirmRestore": "क्या {ts} के बैकअप से मौजूदा डेटा को ओवरराइट करना है?", + "createDescription": "OmniRoute डेटा का बैकअप बनाएँ", + "nameOpt": "कस्टम बैकअप नाम", + "cloudOpt": "बैकअप को क्लाउड स्टोरेज पर अपलोड करें", + "encryptOpt": "बैकअप को AES-256-GCM से एन्क्रिप्ट करें", + "keyFileOpt": "एन्क्रिप्शन पासफ़्रेज़ वाली फ़ाइल का पथ", + "excludeOpt": "पैटर्न से मेल खाने वाली फ़ाइल को बाहर रखें (दोहराया जा सकता है)", + "retentionOpt": "केवल अंतिम N बैकअप रखें", + "passphrasePrompt": "एन्क्रिप्शन पासफ़्रेज़:", + "noPassphrase": "एन्क्रिप्टेड बैकअप के लिए पासफ़्रेज़ आवश्यक है।", + "cloudFailed": "चेतावनी: क्लाउड अपलोड विफल रहा। स्थानीय बैकअप सहेज लिया गया।", + "cloudUploaded": "क्लाउड बैकअप अपलोड किया गया: {url}", + "auto": { + "title": "बैकअप शेड्यूल", + "enableDescription": "शेड्यूल किए गए स्वचालित बैकअप सक्षम करें", + "disableDescription": "शेड्यूल किए गए स्वचालित बैकअप अक्षम करें", + "statusDescription": "वर्तमान बैकअप शेड्यूल की स्थिति दिखाएँ", + "cronOpt": "शेड्यूल के लिए Cron एक्सप्रेशन (डिफ़ॉल्ट: प्रतिदिन सुबह 3 बजे)", + "enabled": "स्वचालित बैकअप सक्षम है (cron: {cron})।", + "hint": "स्टार्टअप पर omniroute serve द्वारा शेड्यूल पढ़ा जाता है।", + "disabled": "स्वचालित बैकअप अक्षम है।", + "notConfigured": "कोई बैकअप शेड्यूल कॉन्फ़िगर नहीं किया गया है।" + } + }, + "health": { + "description": "सर्वर की कार्यशीलता और कॉम्पोनेंट की स्थिति जाँचें", + "noServer": "सर्वर नहीं चल रहा है। इससे शुरू करें: omniroute serve", + "title": "कार्यशीलता", + "status": "स्थिति: {status}", + "uptime": "अपटाइम: {uptime}", + "requests": "अनुरोध (24 घंटे): {count}", + "cost": "लागत (24 घंटे): ${cost}" + }, + "quota": { + "description": "प्रोवाइडर कोटा उपयोग दिखाएँ", + "noServer": "सर्वर नहीं चल रहा है। इससे शुरू करें: omniroute serve", + "noData": "कोटा संबंधी कोई जानकारी उपलब्ध नहीं है।" + }, + "cache": { + "description": "रिस्पॉन्स कैश प्रबंधित करें", + "noServer": "सर्वर नहीं चल रहा है। इससे शुरू करें: omniroute serve", + "cleared": "कैश साफ़ कर दिया गया।", + "clearFailed": "कैश साफ़ करने में विफल।" + }, + "redis": { + "description": "OmniRoute कैशिंग और कोटा ट्रैकिंग के लिए एक क्लिक में स्थानीय Redis कंटेनर (Podman या Docker) लॉन्च करें" + }, + "test": { + "description": "प्रोवाइडर कनेक्शन का परीक्षण करें", + "noServer": "सर्वर नहीं चल रहा है। इसे शुरू करें: omniroute serve", + "testing": "{provider} / {model} का परीक्षण किया जा रहा है...", + "passed": "कनेक्शन सफल रहा!", + "failed": "कनेक्शन विफल हुआ: {error}", + "allProvidersOpt": "कॉन्फ़िगर किए गए सभी प्रदाताओं का परीक्षण करें", + "latencyOpt": "विलंबता माप दिखाएँ (औसत/न्यूनतम/अधिकतम ms)", + "repeatOpt": "परीक्षण को N बार दोहराएँ और परिणाम एकत्रित करें", + "compareOpt": "तुलना के लिए कॉमा से अलग किए गए मॉडल (उदा. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "परिणामों को JSON फ़ाइल में सहेजें", + "saved": "परिणाम {path} में सहेजे गए", + "compareTitle": "मॉडल तुलना", + "compareMinTwo": "--compare के लिए कम से कम दो मॉडल आवश्यक हैं (कॉमा से अलग किए गए)", + "noProviders": "कोई प्रदाता कॉन्फ़िगर नहीं किया गया है। इसे जोड़ें: omniroute keys add" + }, + "update": { + "checking": "अपडेट की जाँच की जा रही है...", + "upToDate": "पहले से नवीनतम संस्करण ({version}) पर है।", + "available": "अपडेट उपलब्ध है: {current} → {latest}", + "installing": "{latest} इंस्टॉल किया जा रहा है...", + "done": "{latest} पर अपडेट किया गया। लागू करने के लिए सर्वर को पुनः आरंभ करें।" + }, + "mcp": { + "title": "MCP सर्वर", + "running": "MCP सर्वर चल रहा है ({transport})", + "stopped": "MCP सर्वर रोक दिया गया।", + "restarted": "MCP सर्वर पुनः आरंभ किया गया।", + "stoppedHint": "इसे चालू करने के लिए `omniroute mcp enable` चलाएँ।", + "enabled": "MCP सर्वर सक्षम किया गया।", + "disabled": "MCP सर्वर अक्षम किया गया।", + "enable": { + "description": "MCP सर्वर सक्षम करें", + "transport": "उपयोग किया जाने वाला ट्रांसपोर्ट: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP सर्वर अक्षम करें" + }, + "call": { + "description": "किसी MCP टूल को सीधे इनवोक करें", + "args": "JSON आर्ग्युमेंट्स ऑब्जेक्ट (इनलाइन)", + "args_file": "JSON आर्ग्युमेंट्स फ़ाइल का पथ", + "stream": "स्ट्रीमिंग एंडपॉइंट (/api/mcp/stream) का उपयोग करें", + "scope": "आवश्यक स्कोप (दोहराने योग्य, उदा. read:health)" + }, + "scopes": { + "description": "उपलब्ध MCP स्कोप सूचीबद्ध करें", + "tool": "किसी विशिष्ट टूल के लिए आवश्यक स्कोप दिखाएँ" + }, + "tools": { + "description": "MCP टूल का निरीक्षण करें", + "list": { + "description": "सभी MCP टूल सूचीबद्ध करें", + "scope": "स्कोप के अनुसार फ़िल्टर करें" + }, + "info": { + "description": "किसी MCP टूल का मेटाडेटा दिखाएँ" + }, + "schema": { + "description": "किसी MCP टूल के लिए इनपुट/आउटपुट JSON स्कीमा दिखाएँ", + "io": "स्कीमा प्रकार: input|output (डिफ़ॉल्ट: input)" + } + }, + "audit": { + "description": "MCP ऑडिट लॉग (audit --source mcp का उपनाम)" + } + }, + "a2a": { + "skills": { + "description": "एजेंट कार्ड से उपलब्ध A2A कौशलों की सूची दिखाएँ" + }, + "invoke": { + "description": "A2A कौशल को लागू करें और टास्क ID लौटाएँ", + "input": "JSON इनपुट ऑब्जेक्ट", + "input_file": "JSON इनपुट फ़ाइल का पथ", + "wait": "लौटने से पहले टास्क पूरा होने की प्रतीक्षा करें", + "timeout": "पूरा होने की प्रतीक्षा की समय-सीमा ms में (डिफ़ॉल्ट: 60000)" + }, + "tasks": { + "description": "A2A टास्क प्रबंधित करें", + "list": { + "status": "स्थिति के अनुसार फ़िल्टर करें", + "skill": "कौशल ID के अनुसार फ़िल्टर करें" + }, + "watch": { + "description": "पूरा होने तक टास्क की स्थिति पोल करें" + }, + "stream": { + "description": "SSE के माध्यम से टास्क निष्पादन इवेंट स्ट्रीम करें" + }, + "logs": { + "description": "टास्क संदेश और आर्टिफ़ैक्ट दिखाएँ" + } + } + }, + "policy": { + "description": "OmniRoute प्राधिकरण नीतियाँ प्रबंधित करें", + "list": { + "description": "नीतियों की सूची दिखाएँ", + "kind": "प्रकार के अनुसार फ़िल्टर करें (allow|deny|rate-limit|cost-cap)", + "scope": "दायरे के अनुसार फ़िल्टर करें (global|api-key|provider)" + }, + "get": { + "description": "ID द्वारा नीति का विवरण प्राप्त करें" + }, + "create": { + "description": "JSON फ़ाइल से नीति बनाएँ", + "file": "नीति JSON फ़ाइल का पथ" + }, + "update": { + "description": "JSON फ़ाइल से नीति अपडेट करें", + "file": "नीति JSON फ़ाइल का पथ" + }, + "delete": { + "description": "ID द्वारा नीति हटाएँ", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "evaluate": { + "description": "ड्राई-रन नीति मूल्यांकन (exit 0=अनुमत, 4=अस्वीकृत)", + "api_key": "मूल्यांकन के लिए API कुंजी", + "action": "जाँचने के लिए कार्रवाई (जैसे chat, embed, admin)", + "resource": "संसाधन पथ या पहचानकर्ता", + "context": "JSON ऑब्जेक्ट के रूप में अतिरिक्त संदर्भ" + }, + "export": { + "description": "सभी नीतियाँ एक JSON फ़ाइल में निर्यात करें" + }, + "import": { + "description": "JSON फ़ाइल से नीतियाँ आयात करें", + "overwrite": "समान ID वाली मौजूदा नीतियों को अधिलेखित करें" + } + }, + "compression": { + "description": "OmniRoute कम्प्रेशन पाइपलाइन को कॉन्फ़िगर करें और उसका निरीक्षण करें", + "status": { + "description": "वर्तमान कम्प्रेशन स्थिति और सेटिंग्स दिखाएँ" + }, + "configure": { + "description": "कम्प्रेशन सेटिंग्स कॉन्फ़िगर करें", + "engine": "कम्प्रेशन इंजन (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman आक्रामकता 0.0–1.0", + "rtk_budget": "RTK टोकन बजट", + "language_pack": "सक्रिय करने के लिए भाषा पैक" + }, + "engine": { + "description": "सक्रिय कम्प्रेशन इंजन प्राप्त करें या सेट करें" + }, + "combos": { + "description": "कम्प्रेशन कॉम्बो के आँकड़े प्रबंधित करें" + }, + "rules": { + "description": "कम्प्रेशन नियम प्रबंधित करें", + "add": { + "pattern": "मिलान करने के लिए पैटर्न (regex या field:pattern)", + "action": "क्रिया: drop|shrink|replace" + } + }, + "language_packs": { + "description": "उपलब्ध कम्प्रेशन भाषा पैक सूचीबद्ध करें" + }, + "preview": { + "description": "किसी अनुरोध पर कम्प्रेशन के प्रभाव का पूर्वावलोकन करें", + "file": "अनुरोध की JSON फ़ाइल का पथ" + } + }, + "tunnel": { + "title": "टनल", + "listDescription": "सक्रिय टनल सूचीबद्ध करें", + "createDescription": "एक टनल बनाएँ", + "created": "टनल बनाई गई: {url}", + "stopped": "टनल रोक दी गई।", + "confirmStop": "टनल {id} रोकें?", + "stopDescription": "एक टनल रोकें", + "statusDescription": "किसी टनल की विस्तृत स्थिति दिखाएँ", + "logsDescription": "किसी टनल के लॉग दिखाएँ", + "infoDescription": "किसी टनल का कॉन्फ़िगरेशन विवरण दिखाएँ", + "rotateDescription": "एक नया टनल URL जनरेट करें", + "tailOpt": "दिखाई जाने वाली लॉग पंक्तियों की संख्या", + "typeRequired": "टनल का प्रकार आवश्यक है।", + "noLogs": "कोई लॉग उपलब्ध नहीं है।", + "notAvailable": "टनल की जानकारी उपलब्ध नहीं है।", + "noTunnels": "कोई सक्रिय टनल नहीं है।", + "infoTitle": "टनल की जानकारी: {type}", + "rotated": "टनल URL बदल दिया गया: {url}", + "confirmRotate": "टनल {type} का URL बदलें? (एक नया URL जनरेट किया जाएगा)" + }, + "stop": { + "description": "OmniRoute सर्वर रोकें", + "stopping": "सर्वर रोका जा रहा है (PID {pid})...", + "stopped": "सर्वर रोक दिया गया।", + "notRunning": "कोई सर्वर नहीं चल रहा है।", + "portFallback": "कोई PID फ़ाइल नहीं मिली, पोर्ट-आधारित तरीके से रोकने का प्रयास किया जा रहा है..." + }, + "restart": { + "description": "OmniRoute सर्वर पुनः आरंभ करें", + "restarting": "OmniRoute सर्वर पुनः आरंभ किया जा रहा है..." + }, + "dashboard": { + "description": "OmniRoute डैशबोर्ड को ब्राउज़र में खोलें", + "opening": "डैशबोर्ड {url} पर खोला जा रहा है", + "urlOnly": "ब्राउज़र खोले बिना डैशबोर्ड URL प्रिंट करें", + "tui": "इंटरैक्टिव TUI डैशबोर्ड खोलें (टर्मिनल UI, 7 टैब)" + }, + "models": { + "description": "उपलब्ध मॉडल सूचीबद्ध करें (सर्वर आवश्यक है)", + "search": "मॉडल को id, नाम, provider या विवरण के अनुसार फ़िल्टर करें", + "noServer": "सर्वर नहीं चल रहा है। इसके साथ शुरू करें: omniroute serve", + "noModels": "कोई मॉडल नहीं मिला।" + }, + "audit": { + "description": "अनुपालन और MCP ऑडिट लॉग एक्सेस करें", + "source": "लॉग स्रोत: all|compliance|mcp (डिफ़ॉल्ट: all)", + "since": "इस टाइमस्टैम्प के बाद की प्रविष्टियाँ लौटाएँ (ISO 8601)", + "until": "इस टाइमस्टैम्प तक की प्रविष्टियाँ लौटाएँ (ISO 8601)", + "tail": { + "description": "हाल की ऑडिट लॉग प्रविष्टियाँ दिखाएँ", + "follow": "नई प्रविष्टियाँ लगातार दिखाते रहें (2s पोल)", + "limit": "दिखाने के लिए अधिकतम प्रविष्टियाँ (डिफ़ॉल्ट: 100)" + }, + "search": { + "description": "कीवर्ड द्वारा ऑडिट लॉग प्रविष्टियाँ खोजें", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 200)", + "actor": "एक्टर ID के अनुसार फ़िल्टर करें", + "action": "कार्रवाई के नाम के अनुसार फ़िल्टर करें" + }, + "export": { + "description": "ऑडिट लॉग को फ़ाइल में एक्सपोर्ट करें", + "format": "आउटपुट फ़ॉर्मेट: jsonl|csv (डिफ़ॉल्ट: jsonl)" + }, + "stats": { + "description": "ऑडिट लॉग के आँकड़े दिखाएँ", + "period": "समयावधि: 1d|7d|30d (डिफ़ॉल्ट: 7d)" + }, + "get": { + "description": "ID द्वारा एकल ऑडिट लॉग प्रविष्टि प्राप्त करें" + } + }, + "skills": { + "description": "OmniRoute स्किल प्रबंधित करें (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "इंस्टॉल की गई स्किल की सूची दिखाएँ", + "type": "प्रकार के अनुसार फ़िल्टर करें (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "केवल सक्षम स्किल दिखाएँ", + "disabled": "केवल अक्षम स्किल दिखाएँ", + "api_key": "API कुंजी के अनुसार फ़िल्टर करें" + }, + "get": { + "description": "ID द्वारा किसी स्किल का विवरण प्राप्त करें" + }, + "install": { + "description": "फ़ाइल या URL से स्किल इंस्टॉल करें", + "from_file": "स्किल की JSON परिभाषा फ़ाइल का पथ", + "from_url": "रिमोट स्किल परिभाषा का URL", + "type": "स्किल का प्रकार (sandbox|custom|hybrid)", + "enable": "इंस्टॉल करने के बाद स्किल सक्षम करें" + }, + "enable": { + "description": "ID द्वारा किसी स्किल को सक्षम करें" + }, + "disable": { + "description": "ID द्वारा किसी स्किल को अक्षम करें", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "delete": { + "description": "ID द्वारा किसी स्किल को हटाएँ", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "execute": { + "description": "ID द्वारा किसी स्किल को निष्पादित करें", + "input": "JSON इनपुट ऑब्जेक्ट", + "input_file": "JSON इनपुट फ़ाइल का पथ", + "timeout": "निष्पादन टाइमआउट मिलीसेकंड में (डिफ़ॉल्ट: 30000)" + }, + "executions": { + "description": "स्किल निष्पादन इतिहास की सूची दिखाएँ", + "skill": "स्किल ID के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 50)", + "status": "स्थिति के अनुसार फ़िल्टर करें (running|completed|failed)" + }, + "skillssh": { + "description": "SSH के माध्यम से इंस्टॉल किए गए स्किल प्रबंधित करें" + }, + "marketplace": { + "description": "मार्केटप्लेस से स्किल ब्राउज़ और इंस्टॉल करें" + }, + "mp": { + "search": { + "description": "मार्केटप्लेस पैकेज खोजें", + "category": "श्रेणी के अनुसार फ़िल्टर करें", + "tag": "टैग के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 30)", + "sort": "इसके अनुसार क्रमबद्ध करें: downloads|rating|recent" + }, + "info": { + "description": "पैकेज का विवरण और readme दिखाएँ" + }, + "install": { + "description": "मार्केटप्लेस पैकेज इंस्टॉल करें", + "version": "पैकेज संस्करण (डिफ़ॉल्ट: latest)", + "enable": "इंस्टॉल करने के बाद सक्षम करें", + "yes": "पुष्टिकरण प्रॉम्प्ट छोड़ें" + }, + "categories": { + "description": "मार्केटप्लेस श्रेणियों की सूची दिखाएँ" + }, + "featured": { + "description": "विशेष रुप से प्रदर्शित मार्केटप्लेस पैकेज दिखाएँ" + } + } + }, + "memory": { + "description": "OmniRoute की संवादात्मक मेमोरी (FTS5 + vector) प्रबंधित करें", + "search": { + "description": "सिमेंटिक क्वेरी द्वारा मेमोरी प्रविष्टियाँ खोजें", + "type": "मेमोरी प्रकार के अनुसार फ़िल्टर करें (user|feedback|project|reference)", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 20)", + "api_key": "API कुंजी के अनुसार फ़िल्टर करें", + "token_budget": "परिणामों में कुल टोकन सीमित करें" + }, + "add": { + "description": "नई मेमोरी प्रविष्टि जोड़ें", + "content": "मेमोरी की टेक्स्ट सामग्री", + "file": "फ़ाइल से सामग्री पढ़ें", + "type": "मेमोरी प्रकार (डिफ़ॉल्ट: user)", + "metadata": "JSON मेटाडेटा ऑब्जेक्ट", + "api_key": "API कुंजी से संबद्ध करें" + }, + "clear": { + "description": "फ़िल्टर से मेल खाने वाली मेमोरी प्रविष्टियाँ हटाएँ", + "type": "प्रकार के अनुसार फ़िल्टर करें", + "older": "निर्धारित अवधि से पुरानी प्रविष्टियाँ हटाएँ (30d, 6m, 1y)", + "api_key": "API कुंजी के अनुसार फ़िल्टर करें", + "yes": "पुष्टिकरण प्रॉम्प्ट छोड़ें" + }, + "list": { + "description": "खोज रैंकिंग के बिना मेमोरी प्रविष्टियों की सूची दिखाएँ", + "type": "प्रकार के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 100)", + "api_key": "API कुंजी के अनुसार फ़िल्टर करें" + }, + "get": { + "description": "ID द्वारा एकल मेमोरी प्रविष्टि प्राप्त करें" + }, + "delete": { + "description": "ID द्वारा मेमोरी प्रविष्टि हटाएँ", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "health": { + "description": "मेमोरी सबसिस्टम का स्वास्थ्य दिखाएँ (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth प्रोवाइडर कनेक्शन प्रबंधित करें", + "providers": { + "description": "OAuth-सक्षम प्रोवाइडर और उनके फ़्लो प्रकार सूचीबद्ध करें" + }, + "start": { + "description": "किसी प्रोवाइडर के लिए OAuth प्राधिकरण फ़्लो शुरू करें", + "provider": "प्रोवाइडर ID (gemini, copilot, cursor, …)", + "no_browser": "केवल URL प्रिंट करें — ब्राउज़र न खोलें", + "import_system": "स्थानीय सिस्टम कॉन्फ़िगरेशन से क्रेडेंशियल अपने-आप इंपोर्ट करें", + "social": "सोशल लॉगिन प्रोवाइडर (google|github) — kiro के लिए आवश्यक", + "timeout": "प्राधिकरण की प्रतीक्षा की समय-सीमा ms में (डिफ़ॉल्ट: 300000)" + }, + "status": { + "description": "सक्रिय OAuth कनेक्शन सूचीबद्ध करें", + "provider": "प्रोवाइडर ID के अनुसार फ़िल्टर करें" + }, + "revoke": { + "description": "OAuth कनेक्शन निरस्त करें", + "provider": "निरस्त करने के लिए प्रोवाइडर ID", + "connection_id": "ID के अनुसार किसी विशिष्ट कनेक्शन को निरस्त करें", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + } + }, + "cloud": { + "description": "क्लाउड AI एजेंट टास्क प्रबंधित करें (codex, devin, jules)", + "agents": { + "description": "उपलब्ध क्लाउड एजेंट सूचीबद्ध करें" + }, + "agent": { + "description": "{agent} क्लाउड एजेंट टास्क प्रबंधित करें", + "auth": { + "description": "OAuth के ज़रिए {agent} को प्राधिकृत करें" + } + }, + "task": { + "description": "क्लाउड एजेंट टास्क प्रबंधित करें", + "create": { + "description": "नया एजेंट टास्क बनाएँ", + "title": "टास्क का शीर्षक (डिफ़ॉल्ट रूप से प्रॉम्प्ट के पहले 80 अक्षर)", + "prompt": "टास्क प्रॉम्प्ट टेक्स्ट", + "prompt_file": "फ़ाइल से प्रॉम्प्ट पढ़ें", + "repo": "टास्क के लिए क्लोन की जाने वाली रिपॉज़िटरी का URL", + "branch": "उपयोग की जाने वाली ब्रांच का नाम", + "metadata": "JSON मेटाडेटा ऑब्जेक्ट" + }, + "list": { + "description": "एजेंट टास्क सूचीबद्ध करें", + "status": "स्थिति के अनुसार फ़िल्टर करें (running|completed|failed|cancelled)", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 50)" + }, + "get": { + "description": "ID के अनुसार टास्क का विवरण प्राप्त करें" + }, + "status": { + "description": "टास्क की स्थिति प्रिंट करें (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "चल रहा टास्क रद्द करें", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "approve": { + "description": "निष्पादन शुरू करने के लिए एजेंट योजना को स्वीकृत करें" + }, + "message": { + "description": "चल रहे टास्क को संदेश भेजें" + } + }, + "sources": { + "description": "किसी टास्क द्वारा बनाई गई स्रोत फ़ाइलें सूचीबद्ध करें" + } + }, + "eval": { + "description": "इवैल सुइट और रन प्रबंधित करें", + "suites": { + "description": "इवैल सुइट प्रबंधित करें", + "list": { + "description": "मूल्यांकन सुइट सूचीबद्ध करें" + }, + "get": { + "description": "ID के अनुसार मूल्यांकन सुइट का विवरण प्राप्त करें" + }, + "create": { + "description": "JSON फ़ाइल से मूल्यांकन सुइट बनाएँ", + "file": "सुइट परिभाषा वाली JSON फ़ाइल का पथ" + } + }, + "run": { + "description": "किसी सुइट के लिए मूल्यांकन रन शुरू करें", + "model": "मूल्यांकन हेतु मॉडल ID (डिफ़ॉल्ट: auto)", + "combo": "नाम के अनुसार किसी विशिष्ट कॉम्बो को बाध्य करें", + "concurrency": "समवर्ती सैंपल की संख्या (डिफ़ॉल्ट: 4)", + "tag": "बाद में फ़िल्टर करने के लिए इस रन को टैग करें", + "watch": "पूरा होने तक रन की प्रगति पर नज़र रखें" + }, + "list": { + "description": "मूल्यांकन रन सूचीबद्ध करें", + "suite": "सुइट ID के अनुसार फ़िल्टर करें", + "status": "स्थिति के अनुसार फ़िल्टर करें", + "since": "इस टाइमस्टैम्प के बाद के रन लौटाएँ", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 50)" + }, + "get": { + "description": "ID के अनुसार मूल्यांकन रन का विवरण प्राप्त करें" + }, + "results": { + "description": "किसी मूल्यांकन रन के सैंपल परिणाम दिखाएँ", + "failed": "केवल विफल सैंपल दिखाएँ" + }, + "cancel": { + "description": "चल रहा मूल्यांकन रद्द करें", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "scorecard": { + "description": "पूरे हो चुके मूल्यांकन रन का स्कोरकार्ड दिखाएँ" + } + }, + "webhooks": { + "description": "OmniRoute वेबहुक प्रबंधित करें", + "events": { + "description": "सभी उपलब्ध वेबहुक इवेंट प्रकार सूचीबद्ध करें" + }, + "list": { + "description": "कॉन्फ़िगर किए गए वेबहुक सूचीबद्ध करें" + }, + "get": { + "description": "ID के अनुसार वेबहुक का विवरण प्राप्त करें" + }, + "add": { + "description": "नया वेबहुक पंजीकृत करें", + "url": "गंतव्य URL", + "events": "कॉमा से अलग किए गए इवेंट प्रकारों की सूची", + "secret": "HMAC हस्ताक्षर सीक्रेट", + "header": "key=value प्रारूप में अतिरिक्त हेडर (दोहराने योग्य)", + "no_enabled": "वेबहुक को अक्षम स्थिति में बनाएँ" + }, + "update": { + "description": "मौजूदा वेबहुक अपडेट करें", + "enabled": "सक्षम स्थिति सेट करें (true|false)" + }, + "remove": { + "description": "वेबहुक हटाएँ", + "yes": "पुष्टि प्रॉम्प्ट छोड़ें" + }, + "test": { + "description": "वेबहुक पर परीक्षण इवेंट भेजें", + "event": "सिम्युलेट किया जाने वाला इवेंट प्रकार (डिफ़ॉल्ट: request.completed)" + } + }, "program": { "description": "OmniRoute — ऑटो फॉलबैक के साथ स्मार्ट AI राउटर", "version": "संस्करण प्रिंट करें और बाहर निकलें", @@ -26,7 +832,509 @@ "context": "इस कमांड के लिए सर्वर संदर्भ/प्रोफ़ाइल", "lang": "CLI प्रदर्शन भाषा सेट करें (OMNIROUTE_LANG को ओवरराइड करता है)" }, - "redis": { - "description": "OmniRoute कैशिंग और कोटा ट्रैकिंग के लिए एक क्लिक में स्थानीय Redis कंटेनर (Podman या Docker) लॉन्च करें" + "files": { + "description": "फ़ाइलें प्रबंधित करें (अपलोड, सूचीबद्ध करना, प्राप्त करना, डाउनलोड करना, हटाना)", + "list": { + "purpose": "उद्देश्य के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम" + }, + "get": { + "description": "फ़ाइल मेटाडेटा प्राप्त करें" + }, + "upload": { + "description": "फ़ाइल अपलोड करें", + "purpose": "फ़ाइल का उद्देश्य (batch, assistants, fine-tune)" + }, + "content": { + "description": "फ़ाइल की सामग्री डाउनलोड करें", + "out": "पाथ में सहेजें (डिफ़ॉल्ट: stdout)" + }, + "delete": { + "yes": "पुष्टि छोड़ें" + } + }, + "batches": { + "description": "OpenAI-संगत बैच जॉब प्रबंधित करें", + "list": { + "status": "स्थिति के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम" + }, + "create": { + "description": "बैच जॉब बनाएँ", + "inputFile": "इनपुट फ़ाइल ID", + "endpoint": "लक्षित एंडपॉइंट", + "window": "पूर्णता अवधि", + "metadata": "मेटाडेटा key=value जोड़ें" + }, + "submit": { + "description": "JSONL फ़ाइल अपलोड करें और बैच बनाएँ", + "jsonl": "JSONL फ़ाइल का पाथ", + "endpoint": "लक्षित एंडपॉइंट", + "wait": "पूर्ण होने तक प्रतीक्षा करें" + }, + "cancel": { + "yes": "पुष्टि छोड़ें" + }, + "wait": { + "timeout": "टाइमआउट, ms में" + }, + "output": { + "out": "आउटपुट को पाथ में सहेजें" + }, + "errors": { + "out": "त्रुटियों को पाथ में सहेजें" + } + }, + "translator": { + "description": "LLM प्रारूपों के बीच अनुरोध बॉडी का अनुवाद करें", + "detect": { + "description": "बॉडी प्रारूप पहचानें" + }, + "translate": { + "description": "बॉडी को एक प्रारूप से दूसरे में बदलें" + }, + "send": { + "description": "अनुवाद करके अपस्ट्रीम पर भेजें" + }, + "stream": { + "description": "अनुरोध बॉडी का स्ट्रीम-अनुवाद करें" + }, + "from": "स्रोत प्रारूप (openai|anthropic|gemini|cohere)", + "to": "लक्षित प्रारूप (openai|anthropic|gemini|cohere)", + "file": "अनुरोध बॉडी की JSON फ़ाइल का पाथ", + "out": "आउटपुट को फ़ाइल में सहेजें", + "model": "मॉडल ओवरराइड करें", + "history": { + "limit": "अधिकतम परिणाम" + } + }, + "pricing": { + "description": "मॉडल के लिए मूल्य-निर्धारण डेटा प्रबंधित करें", + "sync": { + "description": "अपस्ट्रीम स्रोतों से कीमतें सिंक करें", + "provider": "प्रदाता के अनुसार फ़िल्टर करें", + "force": "बलपूर्वक पुनः सिंक करें" + }, + "list": { + "provider": "प्रदाता के अनुसार फ़िल्टर करें", + "model": "मॉडल के अनुसार फ़िल्टर करें", + "limit": "अधिकतम परिणाम" + }, + "defaults": { + "description": "डिफ़ॉल्ट मूल्य निर्धारण प्रबंधित करें", + "input": "प्रति 1M टोकन इनपुट लागत (USD)", + "output": "प्रति 1M टोकन आउटपुट लागत (USD)", + "cacheRead": "प्रति 1M टोकन कैश पढ़ने की लागत (USD)", + "cacheWrite": "प्रति 1M टोकन कैश लिखने की लागत (USD)" + }, + "diff": { + "description": "अपस्ट्रीम मूल्यों से अंतर दिखाएँ", + "model": "मॉडल के अनुसार फ़िल्टर करें" + } + }, + "radar": { + "description": "स्थानीय Radar कैटलॉग फ़ीड का निरीक्षण और सिंक्रनाइज़ेशन करें", + "status": "स्थानीय Radar सेटिंग्स और फ़ीड कैश की स्थिति दिखाएँ", + "sync": "स्थानीय सर्वर के माध्यम से कैटलॉग, रेफ़रल, ऑफ़र और Intel को सिंक्रनाइज़ करें" + }, + "resilience": { + "description": "रेज़िलिएंस तंत्रों का निरीक्षण और प्रबंधन करें", + "status": { + "provider": "प्रोवाइडर के अनुसार फ़िल्टर करें" + }, + "breakers": { + "provider": "प्रोवाइडर के अनुसार फ़िल्टर करें" + }, + "cooldowns": { + "provider": "प्रोवाइडर के अनुसार फ़िल्टर करें", + "connectionId": "कनेक्शन ID के अनुसार फ़िल्टर करें" + }, + "lockouts": { + "provider": "प्रोवाइडर के अनुसार फ़िल्टर करें", + "model": "मॉडल के अनुसार फ़िल्टर करें" + }, + "reset": { + "description": "ब्रेकर/कूलडाउन स्थिति रीसेट करें", + "provider": "रीसेट करने के लिए प्रोवाइडर", + "connectionId": "रीसेट करने के लिए कनेक्शन ID", + "model": "लॉकआउट रीसेट करने के लिए मॉडल", + "allCooldowns": "प्रोवाइडर के सभी कूलडाउन रीसेट करें", + "yes": "पुष्टि छोड़ें" + }, + "profile": { + "description": "रेज़िलिएंस प्रोफ़ाइल प्रबंधित करें", + "name": "प्रोफ़ाइल का नाम" + }, + "config": { + "description": "रेज़िलिएंस कॉन्फ़िगरेशन प्रबंधित करें", + "threshold": "विफलता सीमा", + "resetTimeout": "रीसेट टाइमआउट (ms में)", + "baseCooldown": "बेस कूलडाउन (ms में)" + } + }, + "nodes": { + "description": "प्रोवाइडर नोड्स (एंडपॉइंट्स) प्रबंधित करें", + "list": { + "provider": "प्रोवाइडर के अनुसार फ़िल्टर करें", + "enabled": "केवल सक्षम नोड्स दिखाएँ" + }, + "add": { + "provider": "प्रोवाइडर का नाम", + "baseUrl": "नोड का बेस URL", + "name": "नोड का नाम", + "weight": "लोड बैलेंसिंग वेट", + "region": "रीजन टैग", + "authHeader": "कस्टम ऑथ हेडर (key=value)" + }, + "update": { + "baseUrl": "नया बेस URL", + "name": "नया नाम", + "weight": "नया भार", + "region": "नया क्षेत्र", + "enabled": "सक्षम या अक्षम करें (true|false)" + }, + "remove": { + "yes": "पुष्टि छोड़ें" + }, + "validate": { + "baseUrl": "सत्यापित करने हेतु URL", + "provider": "जिस प्रदाता के विरुद्ध सत्यापन करना है" + }, + "test": { + "description": "नोड को परीक्षण अनुरोध भेजें" + }, + "metrics": { + "description": "नोड मेट्रिक्स दिखाएँ", + "period": "समयावधि (जैसे 24h, 7d)" + } + }, + "context": { + "description": "कॉन्टेक्स्ट इंजीनियरिंग पाइपलाइन कॉन्फ़िगर करें (Caveman, RTK)", + "analytics": { + "period": "समयावधि (जैसे 7d, 30d)" + }, + "caveman": { + "description": "Caveman कॉन्टेक्स्ट कंप्रेसर प्रबंधित करें", + "config": { + "description": "Caveman कॉन्फ़िगरेशन दिखाएँ या अपडेट करें", + "aggressiveness": "आक्रामकता 0.0–1.0", + "maxShrinkPct": "अधिकतम संकुचन प्रतिशत", + "preserveTags": "सुरक्षित रखने के लिए कॉमा से अलग किए गए टैग" + } + }, + "rtk": { + "description": "RTK कॉन्टेक्स्ट ऑप्टिमाइज़र प्रबंधित करें", + "config": { + "description": "RTK कॉन्फ़िगरेशन दिखाएँ या अपडेट करें", + "tokenBudget": "RTK के लिए टोकन बजट", + "reservePct": "आरक्षित प्रतिशत" + }, + "filters": { + "description": "RTK फ़िल्टर प्रबंधित करें", + "pattern": "फ़िल्टर पैटर्न (regex)", + "priority": "फ़िल्टर प्राथमिकता (डिफ़ॉल्ट: 100)", + "action": "फ़िल्टर कार्रवाई: drop|shrink|replace", + "yes": "पुष्टि छोड़ें" + }, + "test": { + "file": "अनुरोध की JSON फ़ाइल का पथ" + } + }, + "combos": { + "description": "कॉन्टेक्स्ट-जागरूक कॉम्बो प्रबंधन" + } + }, + "sessions": { + "description": "सक्रिय सत्रों का निरीक्षण और प्रबंधन करें", + "list": { + "user": "उपयोगकर्ता के अनुसार फ़िल्टर करें", + "kind": "प्रकार के अनुसार फ़िल्टर करें (dashboard|api-key|mcp|a2a)", + "active": "केवल सक्रिय सत्र दिखाएँ", + "limit": "अधिकतम परिणाम (डिफ़ॉल्ट: 100)" + }, + "expire": { + "yes": "पुष्टि छोड़ें" + }, + "expireAll": { + "user": "वह उपयोगकर्ता जिसके सत्र समाप्त करने हैं", + "yes": "पुष्टि छोड़ें" + } + }, + "tags": { + "description": "संसाधन टैग प्रबंधित करें", + "add": { + "color": "टैग का रंग (hex या नाम)", + "description": "टैग का विवरण" + }, + "remove": { + "yes": "पुष्टि छोड़ें" + }, + "assign": { + "tag": "टैग का नाम", + "to": "लक्ष्य संसाधन type:id के रूप में (उदा. provider:openai)" + }, + "unassign": { + "tag": "टैग का नाम", + "from": "स्रोत संसाधन type:id के रूप में" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI स्पेक तक पहुँचें और उसका परीक्षण करें", + "dump": { + "description": "OpenAPI स्पेक को stdout या फ़ाइल में डंप करें", + "format": "आउटपुट प्रारूप: yaml|json (डिफ़ॉल्ट: yaml)", + "out": "फ़ाइल पथ पर सहेजें" + }, + "validate": { + "description": "OpenAPI स्पेक को सत्यापित करें" + }, + "try": { + "description": "स्पेक के माध्यम से API एंडपॉइंट का परीक्षण करें", + "method": "HTTP विधि (डिफ़ॉल्ट: GET)", + "body": "अनुरोध बॉडी की JSON फ़ाइल का पथ", + "query": "क्वेरी पैरामीटर key=value के रूप में (दोहराया जा सकता है)", + "header": "हेडर key=value के रूप में (दोहराया जा सकता है)" + }, + "endpoints": { + "description": "सभी API एंडपॉइंट सूचीबद्ध करें", + "search": "पथ या सारांश के अनुसार फ़िल्टर करें" + }, + "paths": { + "description": "सभी API पथ सूचीबद्ध करें" + } + }, + "combo": { + "title": "कॉम्बो", + "switched": "सक्रिय कॉम्बो: {name}", + "created": "कॉम्बो बनाया गया: {name}", + "deleted": "कॉम्बो हटाया गया: {name}", + "noCombos": "कोई कॉम्बो कॉन्फ़िगर नहीं किया गया है।", + "confirmDelete": "कॉम्बो {name} हटाएँ?", + "suggest": { + "description": "AI स्कोरिंग का उपयोग करके किसी कार्य के लिए सर्वोत्तम कॉम्बो सुझाएँ", + "task": "कार्य का विवरण", + "maxCost": "प्रति अनुरोध अधिकतम लागत, USD में", + "maxLatencyMs": "अधिकतम विलंबता, मिलीसेकंड में", + "weights": "JSON स्कोरिंग भार, उदा. {\"latency\":0.7,\"cost\":0.3}", + "top": "दिखाए जाने वाले शीर्ष उम्मीदवारों की संख्या (डिफ़ॉल्ट: 5)", + "explain": "तर्क को stderr पर प्रिंट करें", + "switch": "सर्वोच्च रैंक वाले कॉम्बो को सक्रिय करें" + } + }, + "oneproxy": { + "description": "OneProxy अपस्ट्रीम पूल प्रबंधित करें", + "stats": { + "provider": "प्रदाता के अनुसार फ़िल्टर करें", + "period": "समयावधि (डिफ़ॉल्ट: 24h)" + }, + "fetch": { + "description": "पूल से प्रॉक्सी प्राप्त करें", + "count": "प्राप्त किए जाने वाले प्रॉक्सी की संख्या (डिफ़ॉल्ट: 1)", + "type": "प्रॉक्सी प्रकार: http|socks5 (डिफ़ॉल्ट: http)" + }, + "rotate": { + "description": "प्रॉक्सी रोटेशन को बाध्य करें", + "provider": "वह प्रदाता जिसके लिए रोटेट करना है", + "connectionId": "रोटेट करने के लिए विशिष्ट कनेक्शन ID" + }, + "config": { + "description": "OneProxy कॉन्फ़िगरेशन दिखाएँ या अपडेट करें", + "enabled": "प्रॉक्सी पूल सक्षम करें (true|false)", + "poolSize": "पूल का आकार", + "providerSource": "प्रॉक्सी प्रदाता का URL", + "rotationPolicy": "रोटेशन नीति: sticky|per-request|periodic" + }, + "pool": { + "description": "मेट्रिक्स सहित वर्तमान प्रॉक्सी पूल सूचीबद्ध करें" + } + }, + "open": { + "description": "ब्राउज़र में कोई विशिष्ट OmniRoute डैशबोर्ड पृष्ठ खोलें", + "url": "केवल URL प्रिंट करें, ब्राउज़र न खोलें" + }, + "telemetry": { + "description": "एकत्रित टेलीमेट्री डेटा एक्सेस करें", + "summary": { + "description": "एकत्रित टेलीमेट्री सारांश दिखाएँ", + "period": "समयावधि: 24h|7d|30d (डिफ़ॉल्ट: 24h)", + "compareTo": "पिछली अवधि से तुलना करें" + }, + "export": { + "description": "टेलीमेट्री इवेंट को JSONL में एक्सपोर्ट करें", + "out": "आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: telemetry.jsonl)", + "period": "एक्सपोर्ट की समयावधि (डिफ़ॉल्ट: 7d)" + } + }, + "sync": { + "description": "OmniRoute इंस्टेंस के बीच कॉन्फ़िगरेशन सिंक करें", + "push": { + "description": "कॉन्फ़िगरेशन को क्लाउड या रिमोट इंस्टेंस पर पुश करें", + "target": "लक्ष्य (cloud या context:name)", + "bundle": "सिंक किए जाने वाले बंडल के भाग", + "dryRun": "लागू किए बिना पूर्वावलोकन करें" + }, + "pull": { + "description": "क्लाउड या रिमोट से कॉन्फ़िगरेशन पुल करें", + "source": "स्रोत (cloud या context:name)", + "merge": "मौजूदा कॉन्फ़िगरेशन के साथ मर्ज करें", + "replace": "मौजूदा कॉन्फ़िगरेशन बदलें", + "dryRun": "लागू किए बिना पूर्वावलोकन करें" + }, + "diff": { + "source": "स्रोत कॉन्टेक्स्ट", + "target": "लक्ष्य कॉन्टेक्स्ट" + }, + "bundle": { + "description": "कॉन्फ़िगरेशन को बंडल फ़ाइल के रूप में एक्सपोर्ट करें", + "include": "शामिल किए जाने वाले भाग (कॉमा से अलग किए गए)" + }, + "import": { + "description": "बंडल फ़ाइल इंपोर्ट करें", + "dryRun": "लागू किए बिना सत्यापित करें" + }, + "initialize": { + "fromCloud": "क्लाउड बैकअप से प्रारंभ करें" + }, + "tokens": { + "description": "सिंक टोकन प्रबंधित करें", + "create": { + "name": "टोकन का नाम", + "scope": "टोकन का स्कोप", + "ttl": "टोकन TTL (जैसे 30d)" + }, + "revoke": { + "yes": "पुष्टि छोड़ें" + } + }, + "resolve": { + "description": "सिंक टकरावों को इंटरैक्टिव रूप से हल करें" + } + }, + "config": { + "contexts": { + "description": "सर्वर कॉन्टेक्स्ट/प्रोफ़ाइल प्रबंधित करें (जोड़ें, उपयोग करें, सूचीबद्ध करें, दिखाएँ, हटाएँ, नाम बदलें, एक्सपोर्ट करें, इंपोर्ट करें)" + }, + "lang": { + "description": "CLI प्रदर्शन भाषा प्रबंधित करें", + "getDescription": "वर्तमान में सक्रिय भाषा कोड दिखाएँ", + "setDescription": "प्रदर्शन भाषा सेट करें और उसे कॉन्फ़िग में सहेजें", + "listDescription": "सभी उपलब्ध भाषाएँ सूचीबद्ध करें", + "listTitle": "उपलब्ध भाषाएँ", + "current": "भाषा: {code} ({name})", + "saved": "भाषा {code} ({name}) पर सेट कर दी गई है।", + "noCode": "भाषा कोड आवश्यक है। उपलब्ध कोड देखने के लिए 'omniroute config lang list' चलाएँ।", + "unknown": "अज्ञात भाषा कोड: {code}। उपलब्ध कोड देखने के लिए 'omniroute config lang list' चलाएँ।", + "alreadySet": "भाषा पहले से ही {code} पर सेट है।", + "envHint": "सुझाव: आप अपने परिवेश में OMNIROUTE_LANG={code} भी सेट कर सकते हैं।" + } + }, + "completion": { + "description": "शेल पूर्णता स्क्रिप्ट जनरेट या इंस्टॉल करें", + "zsh": "zsh पूर्णता स्क्रिप्ट प्रिंट करें", + "bash": "bash पूर्णता स्क्रिप्ट प्रिंट करें", + "fish": "fish पूर्णता स्क्रिप्ट प्रिंट करें", + "install": "पहचाने गए शेल के लिए पूर्णता स्क्रिप्ट को वैश्विक रूप से इंस्टॉल करें", + "refresh": "कॉम्बो/प्रदाता/मॉडल का कैश रीफ़्रेश करें" + }, + "logs": { + "description": "अनुरोध लॉग स्ट्रीम या एक्सपोर्ट करें", + "follow": "लॉग को रीयल-टाइम में स्ट्रीम करें", + "filter": "स्तर के अनुसार फ़िल्टर करें (error,warn,info) — अल्पविराम से अलग किए हुए", + "lines": "प्राप्त की जाने वाली पंक्तियों की संख्या", + "timeout": "कनेक्शन टाइमआउट मिलीसेकंड में", + "baseUrl": "OmniRoute API का आधार URL", + "requestId": "अनुरोध ID के अनुसार फ़िल्टर करें", + "apiKey": "API कुंजी के अनुसार फ़िल्टर करें", + "combo": "कॉम्बो नाम के अनुसार फ़िल्टर करें", + "status": "HTTP स्थिति कोड के अनुसार फ़िल्टर करें", + "durationMin": "अनुरोध की न्यूनतम अवधि मिलीसेकंड में", + "durationMax": "अनुरोध की अधिकतम अवधि मिलीसेकंड में", + "export": "लॉग को फ़ाइल में सहेजें (json/jsonl/csv)", + "exported": "लॉग {path} में सहेजे गए", + "stopped": "लॉग स्ट्रीम रोक दी गई।", + "streamError": "लॉग स्ट्रीम त्रुटि: {message}" + }, + "tray": { + "description": "सिस्टम ट्रे आइकन नियंत्रित करें", + "show": "ट्रे आइकन दिखाएँ (यदि सर्वर --tray के साथ चल रहा है)", + "hide": "ट्रे आइकन छिपाएँ", + "quit": "ट्रे के माध्यम से OmniRoute बंद करें" + }, + "autostart": { + "description": "बूट पर OmniRoute का ऑटोस्टार्ट प्रबंधित करें (Linux: systemd उपयोगकर्ता सेवा)", + "enable": "बूट पर ऑटोस्टार्ट सक्षम करें", + "disable": "बूट पर ऑटोस्टार्ट अक्षम करें", + "toggle": "बूट पर ऑटोस्टार्ट टॉगल करें", + "status": "ऑटोस्टार्ट की स्थिति दिखाएँ" + }, + "runtime": { + "description": "नेटिव रनटाइम डिपेंडेंसीज़ प्रबंधित करें", + "check": "रनटाइम डायरेक्टरी में नेटिव डिपेंडेंसीज़ की स्थिति जाँचें", + "repair": "रनटाइम डायरेक्टरी में नेटिव डिपेंडेंसीज़ पुनः इंस्टॉल करें", + "repair_force": "मान्य होने पर भी बलपूर्वक पुनः इंस्टॉल करें", + "clean": "रनटाइम डायरेक्टरी हटाएँ (डिस्क स्थान खाली करता है)", + "clean_yes": "पुष्टि छोड़ें" + }, + "repl": { + "description": "LLM के साथ इंटरैक्टिव मल्टी-टर्न REPL", + "model": "उपयोग किया जाने वाला मॉडल (डिफ़ॉल्ट: auto)", + "combo": "उपयोग किया जाने वाला कॉम्बो नाम", + "system": "सिस्टम प्रॉम्प्ट", + "resume": "नाम द्वारा सहेजा गया सत्र फिर से शुरू करें" + }, + "plugin": { + "description": "CLI प्लगइन (omniroute-cmd-*) प्रबंधित करें", + "list": "इंस्टॉल किए गए प्लगइन सूचीबद्ध करें", + "install": "npm या लोकल पाथ से प्लगइन इंस्टॉल करें", + "remove": "इंस्टॉल किया गया प्लगइन हटाएँ", + "info": "इंस्टॉल किए गए प्लगइन का विवरण दिखाएँ", + "search": "उपलब्ध प्लगइन के लिए npm रजिस्ट्री खोजें", + "update": "इंस्टॉल किए गए प्लगइन अपडेट करें", + "scaffold": "नए प्लगइन का बॉयलरप्लेट तैयार करें" + }, + "launch": { + "description": "OmniRoute की ओर इंगित करते हुए Claude Code लॉन्च करें (लोकल या रिमोट, --profile के साथ)", + "token": "Claude क्लाइंट द्वारा भेजा जाने वाला टोकन (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute से {port} पर संपर्क नहीं हो पा रहा है। इसे 'omniroute serve' से शुरू करें।", + "notFound": "'claude' CLI PATH में नहीं मिला।" + }, + "run": { + "description": "OmniRoute के माध्यम से समर्थित CLI लक्ष्य लॉन्च करें" + }, + "setupClaude": { + "description": "OmniRoute मॉडल कैटलॉग से ~/.claude/profiles Claude Code प्रोफ़ाइल जनरेट करें" + }, + "connect": { + "description": "रिमोट OmniRoute सर्वर से कनेक्ट करें और रिमोट मोड में प्रवेश करें" + }, + "tokens": { + "description": "स्कोप किए गए CLI एक्सेस टोकन प्रबंधित करें (रिमोट मोड)" + }, + "configure": { + "description": "सक्रिय सर्वर से प्रदाता+मॉडल चुनें और समर्थित लोकल CLI कॉन्फ़िगर करें" + }, + "launchCodex": { + "description": "OmniRoute की ओर इंगित करते हुए Codex CLI लॉन्च करें (लोकल या रिमोट VPS)" + }, + "setupCodex": { + "description": "OmniRoute लाइव मॉडल कैटलॉग से ~/.codex प्रोफ़ाइल फ़ाइलें जनरेट करें" + }, + "packs": { + "description": "वैकल्पिक रनटाइम पैक प्रबंधित करें (ML / ब्राउज़र ऑटोमेशन)", + "listDescription": "वैकल्पिक पैक और उनकी इंस्टॉलेशन स्थिति सूचीबद्ध करें", + "installDescription": "DATA_DIR में वैकल्पिक पैक इंस्टॉल करें", + "verifyDescription": "भेजे गए चेकसम इंडेक्स के विरुद्ध इंस्टॉल किए गए पैक सत्यापित करें", + "removeDescription": "इंस्टॉल किया गया वैकल्पिक पैक हटाएँ", + "sourceOpt": "पैक पेलोड और पैक इंडेक्स रखने वाली डायरेक्टरी", + "warnNoIndex": "optional-packs.index.json नहीं मिला — इस चेकआउट में इंस्टॉल/सत्यापन उपलब्ध नहीं हैं (डेस्कटॉप बंडल में यह शामिल होता है)", + "errUnknown": "अज्ञात पैक: {name}", + "errNoIndex": "पैक इंडेक्स नहीं मिला; पैक पेलोड रखने वाली डायरेक्टरी के लिए --source दें (डेस्कटॉप बंडल में यह ऐप के पास होता है)", + "installed": "पैक \"{name}\" इंस्टॉल किया गया और {dir} पर सत्यापित किया गया", + "restartHint": "OmniRoute सर्वर (या डेस्कटॉप ऐप) को पुनः आरंभ करें ताकि रनटाइम पैक को पहचान सके", + "removed": "पैक \"{name}\" हटा दिया गया", + "notInstalled": "पैक \"{name}\" इंस्टॉल नहीं था", + "verifyOk": "इंस्टॉल किए गए सभी पैक सत्यापित हो गए", + "verifyFailed": "{count} पैक सत्यापन में विफल रहे", + "noneInstalled": "कोई वैकल्पिक पैक इंस्टॉल नहीं है" } } diff --git a/bin/cli/locales/hr.json b/bin/cli/locales/hr.json index c3aacadd16..af5a176b55 100644 --- a/bin/cli/locales/hr.json +++ b/bin/cli/locales/hr.json @@ -256,6 +256,7 @@ "max_restarts": "Maksimalni broj ponovnih pokretanja nakon pada unutar 30 s prije odustajanja (zadano: 2)", "tray": "Pokretanje u programskoj traci (samo za stolna računala, po izboru)", "no_tray": "Onemogući ikonu programske trake", + "ready_timeout": "Vremensko ograničenje provjere spremnosti u ms (također OMNIROUTE_READY_TIMEOUT_MS, zadano 60000)", "tls_cert": "Putanja do TLS certifikata (PEM) za posluživanje HTTPS-a (također OMNIROUTE_TLS_CERT)", "tls_key": "Putanja do TLS privatnog ključa (PEM) za posluživanje HTTPS-a (također OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP poslužitelj je pokrenut ({transport})", "stopped": "MCP poslužitelj je zaustavljen.", "restarted": "MCP poslužitelj je ponovo pokrenut.", + "stoppedHint": "Pokrenite `omniroute mcp enable` da biste ga uključili.", + "enabled": "MCP poslužitelj omogućen.", + "disabled": "MCP poslužitelj onemogućen.", + "enable": { + "description": "Omogući MCP poslužitelj", + "transport": "Prijenos koji će se koristiti: stdio|sse|streamable-http" + }, + "disable": { + "description": "Onemogući MCP poslužitelj" + }, "call": { "description": "Izravno pozovi MCP alat", "args": "JSON objekt argumenata (unutarnji)", diff --git a/bin/cli/locales/hu.json b/bin/cli/locales/hu.json index b46b316432..d2079a3e54 100644 --- a/bin/cli/locales/hu.json +++ b/bin/cli/locales/hu.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON formátumú kimenet", "yesOpt": "Megerősítés kihagyása" }, + "setup": { + "title": "OmniRoute beállítása", + "passwordPrompt": "Rendszergazdai jelszó", + "providerPrompt": "Alapértelmezett szolgáltató (a kihagyáshoz hagyja üresen)", + "done": "A beállítás befejeződött", + "passwordSet": "A rendszergazdai jelszó beállítva", + "providerSet": "Beállított szolgáltató: {name}", + "testingProvider": "A szolgáltatói kapcsolat tesztelése: {name}", + "testPassed": "A szolgáltató tesztje sikeres", + "testFailed": "A szolgáltató tesztje sikertelen: {error}", + "loginEnabled": "Bejelentkezés: engedélyezve (a jelszó frissítve)", + "loginDisabled": "Bejelentkezés: letiltva", + "providerInfo": "Szolgáltató: {info}", + "opencode": "Az OpenCode csomagban található @omniroute/opencode-plugin telepítése és konfigurálása" + }, + "doctor": { + "title": "OmniRoute diagnosztika", + "dbOk": "Adatbázis: rendben ({path})", + "dbMissing": "Adatbázis: nincs inicializálva — futtassa az `omniroute setup` parancsot", + "portOk": "{port} port: elérhető", + "portConflict": "{port} port: egy másik folyamat használja", + "encryptionOk": "Titkosítási kulcs: beállítva", + "encryptionMissing": "Hiányzik a titkosítási kulcs — futtassa az `omniroute setup` parancsot", + "allGood": "Minden ellenőrzés sikeres.", + "warnings": "{count} figyelmeztetés — lásd fent." + }, + "providers": { + "title": "Szolgáltatók", + "noProviders": "Nincsenek beállított szolgáltatók. Futtassa: omniroute setup", + "testing": "{name} tesztelése...", + "available": "{count} szolgáltató érhető el", + "connected": "Csatlakoztatva", + "disconnected": "Nincs csatlakoztatva", + "validationFailed": "Az ellenőrzés sikertelen: {error}", + "metrics": { + "description": "A szolgáltató teljesítménymutatóinak megjelenítése (késleltetés, sikerességi arány, költség)", + "provider": "Szűrés szolgáltatóazonosító alapján", + "connection_id": "Szűrés kapcsolatazonosító alapján", + "period": "Időszak: 1h|6h|24h|7d|30d (alapértelmezett: 24h)", + "metric": "Fókuszálás egy adott metrikamezőre", + "sort": "Rendezés mező szerint (csökkenő sorrendben)", + "limit": "Sorok maximális száma (alapértelmezett: 50)", + "watch": "Frissítés 5 másodpercenként (élő mód)", + "compare": "Vesszővel elválasztott szolgáltatóazonosítók egymás melletti összehasonlításhoz" + }, + "metric_single": { + "description": "Egy adott kapcsolat egyetlen metrikaértékének lekérése" + }, + "rotate": { + "description": "A szolgáltatói kapcsolat upstream API-kulcsának cseréje", + "newKeyOpt": "Új API-kulcs értéke (kerülendő: inkább a --from-env használata javasolt)", + "fromEnvOpt": "Az új kulcs beolvasása a VAR környezeti változóból", + "oauthOpt": "Helyette az OAuth-újrahitelesítési folyamat elindítása", + "skipTestOpt": "A rotáció utáni kapcsolódási teszt kihagyása", + "dryRunOpt": "A módosítások megjelenítése mentés nélkül", + "confirmPrompt": "Lecseréli a(z) „{name}” ({id}) kapcsolat API-kulcsát? [y/N]", + "dryRunResult": "[dry-run] A(z) „{name}” ({id}) kulcsa rotálásra kerülne. Nem történt módosítás.", + "oauthHint": "OAuth-kapcsolat — futtassa: omniroute oauth {provider}", + "envVarEmpty": "A(z) {var} környezeti változó nincs beállítva vagy üres.", + "success": "A(z) „{name}” kulcsa rotálva. Az ellenőrzéshez futtassa: `providers test {id}`.", + "testPassed": "A rotáció utáni teszt sikeres.", + "testFailed": "A rotáció utáni teszt sikertelen: {error}" + }, + "status": { + "description": "Az összes szolgáltatói kapcsolat kulcsállapotának megjelenítése (kor, lejárat, várakozási idő)", + "providerOpt": "Szűrés szolgáltatónév szerint", + "header": "Azonosító Szolgáltató Név Lejárati állapot Tesztállapot Várakozás vége", + "noData": "Nem érhetők el szolgáltatói kapcsolati adatok.", + "requiresServer": "A providers status parancshoz futnia kell az OmniRoute szervernek." + } + }, + "keys": { + "title": "API-kulcsok", + "addDescription": "API-kulcs hozzáadása vagy frissítése egy szolgáltatóhoz", + "listDescription": "Az összes konfigurált API-kulcs listázása", + "removeDescription": "Egy szolgáltató API-kulcsának eltávolítása", + "regenerateDescription": "OmniRoute API-kulcs újragenerálása", + "revokeDescription": "OmniRoute API-kulcs visszavonása", + "revealDescription": "A nem maszkolt API-kulcsérték megjelenítése", + "usageDescription": "Egy API-kulcs legutóbbi használatának megjelenítése", + "usageLimitOpt": "Legutóbbi kérések száma", + "rotateDescription": "Új kulcs létrehozása és a régi érvénytelenítése", + "graceOpt": "Türelmi idő (ms) a régi kulcs érvénytelenítéséig", + "stdinOpt": "Az API-kulcs beolvasása a szabványos bemenetről argumentum helyett", + "added": "Kulcs hozzáadva ehhez: {provider}.", + "removed": "Kulcs eltávolítva.", + "listed": "{count} kulcs.", + "noKeys": "Nincsenek konfigurált kulcsok.", + "noUsage": "Nem találhatók használati adatok.", + "confirmRemove": "Eltávolítja a(z) {id} kulcsot?", + "confirmRegenerate": "Újragenerálja a(z) {id} kulcsot?", + "confirmRevoke": "Visszavonja a(z) {id} kulcsot?", + "confirmRotate": "Rotálja a(z) {id} kulcsot? (a régi kulcs a türelmi idő után érvénytelenné válik)", + "regenerated": "Újragenerálva. Új kulcs: {key}", + "revoked": "A(z) {id} kulcs visszavonva.", + "rotated": "A(z) {id} kulcs rotálva. Az új kulcsazonosító: {newId}", + "revealWarning": "⚠ Ez megjeleníti a teljes, maszkolatlan kulcsot. Győződjön meg arról, hogy a képernyője nem látható mások számára.", + "providerRequired": "A szolgáltató megadása kötelező.", + "keyRequired": "Az API-kulcs megadása kötelező.", + "stdinEmpty": "Nem érkezett API-kulcs az stdin bemeneten keresztül.", + "unknownProvider": "Ismeretlen szolgáltató: {provider}", + "policy": { + "title": "Kulcsházirend", + "showDescription": "Kulcs sebesség-/költségházirendjének megjelenítése", + "setDescription": "Kulcs sebesség-/költségházirendjének beállítása", + "rateLimitOpt": "Percenkénti kérelmek maximális száma", + "maxCostOpt": "Napi maximális költség (USD)", + "allowedModelsOpt": "Engedélyezett modellek vesszővel elválasztott listája", + "nothingToSet": "Nincsenek megadva házirendmezők. Használja a --rate-limit, --max-cost vagy --allowed-models kapcsolót.", + "updated": "A házirend frissítve." + }, + "expiration": { + "title": "Kulcs lejárata", + "listDescription": "Hamarosan lejáró kulcsok listázása", + "daysOpt": "N napon belül lejáró kulcsok megjelenítése", + "none": "Nincs {days} napon belül lejáró kulcs.", + "listTitle": "{days} napon belül lejáró kulcsok:" + } + }, + "authExport": { + "description": "VISSZAFEJTETT szolgáltatói hitelesítő adatok exportálása (csak helyileg, egyszerű szöveges kimenet)", + "idOpt": "Csak az ennek az azonosítónak/névnek/szolgáltatónak megfelelő kapcsolat exportálása", + "formatOpt": "Kimeneti formátum: json vagy env", + "outOpt": "A kimenet stdout helyett fájlba írása (0600 jogosultságokkal)", + "forceOpt": "Erősítse meg, hogy tisztában van azzal, hogy ez egyszerű szöveges titkokat jelenít meg/ír ki", + "warning": "⚠ Ez VISSZAFEJTETT, egyszerű szöveges API-kulcsokat és OAuth-tokeneket jelenít meg/ír ki. Gondoskodjon arról, hogy a képernyője, a parancsértelmező előzményei és minden kimeneti fájl privát maradjon.", + "confirmHeading": "⚠ FIGYELMEZTETÉS: ez VISSZAFEJTETT szolgáltatói hitelesítő adatokat exportál egyszerű szövegként", + "confirmBody": "Ez a parancs visszafejti és megjeleníti/kiírja a kiválasztott kapcsolat(ok) apiKey, accessToken, refreshToken és\nidToken értékét. A kimenetet bizalmas adatként kezelje.", + "confirmFooter": "A megerősítéshez futtassa:\n omniroute auth export --force", + "missingKey": "A hitelesítő adatok exportálásához szükséges a STORAGE_ENCRYPTION_KEY.", + "notFound": "A kapcsolat nem található: {id}", + "invalidFormat": "Érvénytelen formátum: {format}. Használja a json vagy env formátumot." + }, + "stream": { + "description": "Csevegési válasz streamelése SSE-ellenőrzési módokkal", + "file": "Prompt beolvasása fájlból", + "stdin": "Prompt beolvasása az stdin bemenetről", + "model": "Modellazonosító (alapértelmezett: auto)", + "system": "Rendszerprompt", + "combo": "Adott kombináció kényszerítése név alapján", + "max_tokens": "A válaszban szereplő tokenek maximális száma", + "responses_api": "A /v1/responses használata a /v1/chat/completions helyett", + "raw": "A nyers SSE-sorok kiírása a beérkezésük szerint", + "debug": "Darabonkénti időzítési információk kiírása az stderr-re", + "save": "Az összes SSE-esemény mentése .jsonl fájlba", + "error": { + "empty_prompt": "Hiba: a prompt megadása kötelező (pozicionális argumentum, --file vagy --stdin)" + } + }, + "usage": { + "description": "Használati elemzések, költségkeretek, kvóták és naplók", + "analytics": { + "description": "Összesített használati elemzések megjelenítése", + "period": "Időtartomány: 1d|7d|30d|90d|ytd|all (alapértelmezett: 30d)", + "provider": "Szűrés szolgáltatóazonosító alapján" + }, + "budget": { + "description": "Költségkeretek kezelése", + "set": { + "scope": "Költségkeret hatóköre (alapértelmezett: global)", + "period": "Költségkeret időszaka: daily|weekly|monthly (alapértelmezett: monthly)" + } + }, + "quota": { + "description": "Szolgáltatói kvótahasználat megjelenítése", + "provider": "Szűrés szolgáltatóazonosító alapján", + "check": "Annak megjelenítése, hogy rendelkezésre áll-e kvóta egy új kéréshez" + }, + "logs": { + "description": "Kéréshívási naplók megjelenítése", + "limit": "Visszaadandó naplóbejegyzések száma (alapértelmezett: 100)", + "search": "Keresési lekérdezés a naplók szűréséhez", + "since": "Naplók visszaadása ettől az időbélyegtől kezdve", + "follow": "Új naplóbejegyzések folyamatos követése", + "api_key": "Naplók szűrése API-kulcs alapján" + }, + "utilization": { + "description": "API-kulcs-kihasználtsági mérőszámok megjelenítése", + "api_key": "Szűrés API-kulcs alapján" + }, + "history": { + "description": "Kéréselőzmények megjelenítése", + "limit": "Előzménybejegyzések száma (alapértelmezett: 100)" + }, + "proxy_logs": { + "description": "Proxyszintű kérésnaplók megjelenítése", + "limit": "Proxy-naplóbejegyzések száma (alapértelmezett: 100)" + } + }, + "cost": { + "description": "Költségjelentés megjelenítése szolgáltató, modell, kombináció vagy API-kulcs szerinti bontásban", + "period": "Időtartomány: 1d|7d|30d|90d|ytd|all (alapértelmezett: 30d)", + "since": "Kezdő dátum (ISO-formátum, pl. 2026-01-01) — felülírja a --period beállítást", + "until": "Záró dátum (ISO-formátum)", + "group_by": "Eredmények csoportosítása a következő szerint: provider|model|api-key|combo|day (alapértelmezett: provider)", + "api_key_filter": "Szűrés egy adott API-kulcs alapján", + "limit": "Megjelenítendő sorok maximális száma (alapértelmezett: 100)" + }, + "simulate": { + "description": "Próbaüzemű útválasztási szimuláció — megmutatja, mely szolgáltatók lennének kiválasztva a felsőbb szintű szolgáltatás meghívása nélkül", + "file": "A teljes kéréstörzs betöltése JSON-fájlból", + "model": "Modellazonosító (alapértelmezett: auto)", + "combo": "Egy adott kombináció kényszerítése név alapján", + "reasoning": "Következtetési erőfeszítés szintje (low|medium|high)", + "thinking": "Kibővített gondolkodás tokenkerete", + "explain": "A tartalékútvonal-fastruktúra és a költségtartomány kiírása az stderr-re", + "noCombo": "Nem található megfelelő kombináció. Hozzon létre egyet ezzel: omniroute combo create" + }, + "chat": { + "description": "Egyszeri csevegési prompt küldése az OmniRoute-nak", + "file": "Prompt beolvasása fájlból", + "stdin": "Prompt beolvasása a szabványos bemenetről", + "system": "Rendszerprompt", + "model": "Modellazonosító (alapértelmezett: auto)", + "max_tokens": "A válaszban szereplő tokenek maximális száma", + "temperature": "Mintavételezési hőmérséklet (0–2)", + "top_p": "Top-p magmintavételezés", + "reasoning_effort": "Következtetési ráfordítás szintje (low|medium|high)", + "thinking_budget": "A kibővített gondolkodás tokenkerete", + "combo": "Adott nevű kombináció kényszerített használata", + "responses_api": "A /v1/responses használata a /v1/chat/completions helyett", + "stream": "A válasz fokozatos streamelése", + "no_history": "Ne mentse a ~/.omniroute/cli-history.jsonl fájlba", + "error": { + "empty_prompt": "Hiba: prompt megadása kötelező (pozicionális argumentum, --file vagy --stdin)" + } + }, + "serve": { + "description": "Az OmniRoute szerver elindítása (alapértelmezett művelet)", + "starting": "Az OmniRoute szerver indítása a(z) {port} porton...", + "ready": "Elérhető itt: http://localhost:{port}", + "stopping": "Szerver leállítása (PID: {pid})...", + "stopped": "A szerver leállt.", + "notRunning": "A szerver nem fut.", + "port": "Figyelési port (alapértelmezett: 20128)", + "no_open": "Ne nyissa meg automatikusan a böngészőt", + "daemon": "A szerver futtatása háttérdémonként", + "log": "A szervernaplók megjelenítése helyben", + "no_recovery": "Az összeomlás utáni automatikus újraindítás letiltása (hibakeresési mód)", + "max_restarts": "Összeomlás utáni újraindítások maximális száma 30 másodpercen belül a feladás előtt (alapértelmezett: 2)", + "tray": "Indítás a rendszertálcán (csak asztali környezetben, külön engedélyezendő)", + "no_tray": "A rendszertálcaikon letiltása", + "ready_timeout": "Az üzemkészségi ellenőrzés időkorlátja ezredmásodpercben (az OMNIROUTE_READY_TIMEOUT_MS változóval is megadható, alapértelmezett: 60000)", + "tls_cert": "A HTTPS-kiszolgáláshoz használandó TLS-tanúsítvány (PEM) elérési útja (az OMNIROUTE_TLS_CERT változóval is megadható)", + "tls_key": "A HTTPS-kiszolgáláshoz használandó privát TLS-kulcs (PEM) elérési útja (az OMNIROUTE_TLS_KEY változóval is megadható)" + }, + "backup": { + "title": "Biztonsági mentés", + "description": "Biztonsági mentés készítése az OmniRoute adatairól", + "creating": "Biztonsági mentés készítése...", + "done": "A biztonsági mentés ide lett mentve: {path}", + "noFiles": "Nincsenek mentendő fájlok (az adatbázis nincs inicializálva)", + "failed": "A biztonsági mentés sikertelen: {error}", + "restoring": "Visszaállítás innen: {path}...", + "restored": "A visszaállítás befejeződött.", + "restoreDescription": "Visszaállítás biztonsági mentésből", + "listTitle": "Elérhető biztonsági mentések", + "noBackups": "Nem találhatók biztonsági mentések.", + "notFound": "A biztonsági mentés nem található: {name}", + "confirmRestore": "Felülírja a jelenlegi adatokat a(z) {ts} időpontból származó biztonsági mentéssel?", + "createDescription": "Biztonsági mentés készítése az OmniRoute adatairól", + "nameOpt": "Egyéni név a biztonsági mentéshez", + "cloudOpt": "Biztonsági mentés feltöltése felhőtárhelyre", + "encryptOpt": "Biztonsági mentés titkosítása AES-256-GCM használatával", + "keyFileOpt": "A titkosítási jelmondatot tartalmazó fájl elérési útja", + "excludeOpt": "A mintának megfelelő fájlok kizárása (többször megadható)", + "retentionOpt": "Csak az utolsó N biztonsági mentés megőrzése", + "passphrasePrompt": "Titkosítási jelmondat:", + "noPassphrase": "Titkosított biztonsági mentéshez jelmondat szükséges.", + "cloudFailed": "Figyelmeztetés: a felhőbe való feltöltés sikertelen. A helyi biztonsági mentés mentve lett.", + "cloudUploaded": "A felhőalapú biztonsági mentés feltöltve: {url}", + "auto": { + "title": "Biztonsági mentések ütemezése", + "enableDescription": "Ütemezett automatikus biztonsági mentések engedélyezése", + "disableDescription": "Ütemezett automatikus biztonsági mentések letiltása", + "statusDescription": "A biztonsági mentések aktuális ütemezési állapotának megjelenítése", + "cronOpt": "Cron-kifejezés az ütemezéshez (alapértelmezés: naponta hajnali 3-kor)", + "enabled": "Az automatikus biztonsági mentés engedélyezve (cron: {cron}).", + "hint": "Az ütemezést az omniroute serve olvassa be indításkor.", + "disabled": "Az automatikus biztonsági mentés letiltva.", + "notConfigured": "Nincs beállítva biztonsági mentési ütemezés." + } + }, + "health": { + "description": "A kiszolgáló állapotának és az összetevők státuszának ellenőrzése", + "noServer": "A kiszolgáló nem fut. Indítás: omniroute serve", + "title": "Állapot", + "status": "Állapot: {status}", + "uptime": "Üzemidő: {uptime}", + "requests": "Kérések (24 óra): {count}", + "cost": "Költség (24 óra): ${cost}" + }, + "quota": { + "description": "A szolgáltatói kvótahasználat megjelenítése", + "noServer": "A kiszolgáló nem fut. Indítás: omniroute serve", + "noData": "Nem áll rendelkezésre kvótainformáció." + }, + "cache": { + "description": "Válaszgyorsítótár kezelése", + "noServer": "A kiszolgáló nem fut. Indítás: omniroute serve", + "cleared": "A gyorsítótár törölve.", + "clearFailed": "A gyorsítótár törlése sikertelen." + }, + "redis": { + "description": "Helyi Redis-tároló indítása egyetlen kattintással (Podman vagy Docker) az OmniRoute gyorsítótárazáshoz és kvótafigyeléshez" + }, + "test": { + "description": "Szolgáltatói kapcsolat tesztelése", + "noServer": "A szerver nem fut. Indítsa el ezzel: omniroute serve", + "testing": "{provider} / {model} tesztelése...", + "passed": "Sikeres csatlakozás!", + "failed": "A csatlakozás sikertelen: {error}", + "allProvidersOpt": "Az összes konfigurált szolgáltató tesztelése", + "latencyOpt": "Késleltetési mérések megjelenítése (átlag/min./max. ms)", + "repeatOpt": "A teszt N alkalommal történő megismétlése és az eredmények összesítése", + "compareOpt": "Összehasonlítandó modellek vesszővel elválasztva (pl. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Eredmények mentése JSON-fájlba", + "saved": "Az eredmények mentve ide: {path}", + "compareTitle": "Modellek összehasonlítása", + "compareMinTwo": "A --compare használatához legalább két modell szükséges (vesszővel elválasztva)", + "noProviders": "Nincsenek konfigurált szolgáltatók. Adjon hozzá egyet ezzel: omniroute keys add" + }, + "update": { + "checking": "Frissítések keresése...", + "upToDate": "Már naprakész ({version}).", + "available": "Frissítés érhető el: {current} → {latest}", + "installing": "A(z) {latest} telepítése...", + "done": "Frissítve erre: {latest}. Az alkalmazáshoz indítsa újra a szervert." + }, + "mcp": { + "title": "MCP-szerver", + "running": "Az MCP-szerver fut ({transport})", + "stopped": "Az MCP-szerver leállt.", + "restarted": "Az MCP-szerver újraindult.", + "stoppedHint": "A bekapcsoláshoz futtassa az `omniroute mcp enable` parancsot.", + "enabled": "Az MCP-szerver engedélyezve.", + "disabled": "Az MCP-szerver letiltva.", + "enable": { + "description": "Az MCP-szerver engedélyezése", + "transport": "Használandó átviteli mód: stdio|sse|streamable-http" + }, + "disable": { + "description": "Az MCP-szerver letiltása" + }, + "call": { + "description": "MCP-eszköz közvetlen meghívása", + "args": "JSON-argumentumobjektum (beágyazva)", + "args_file": "A JSON-argumentumfájl elérési útja", + "stream": "Streamelési végpont használata (/api/mcp/stream)", + "scope": "Szükséges hatókör (ismételhető, pl. read:health)" + }, + "scopes": { + "description": "Elérhető MCP-hatókörök listázása", + "tool": "Egy adott eszköz által igényelt hatókörök megjelenítése" + }, + "tools": { + "description": "MCP-eszközök vizsgálata", + "list": { + "description": "Az összes MCP-eszköz listázása", + "scope": "Szűrés hatókör szerint" + }, + "info": { + "description": "Egy MCP-eszköz metaadatainak megjelenítése" + }, + "schema": { + "description": "Egy MCP-eszköz bemeneti/kimeneti JSON-sémájának megjelenítése", + "io": "Séma típusa: input|output (alapértelmezett: input)" + } + }, + "audit": { + "description": "MCP auditnapló (az audit --source mcp aliasa)" + } + }, + "a2a": { + "skills": { + "description": "Az elérhető A2A-képességek listázása az ügynökkártyáról" + }, + "invoke": { + "description": "Egy A2A-képesség meghívása és a feladatazonosító visszaadása", + "input": "JSON bemeneti objektum", + "input_file": "A JSON bemeneti fájl elérési útja", + "wait": "Várakozás a feladat befejezésére a visszatérés előtt", + "timeout": "A befejezésre való várakozás időkorlátja ms-ban (alapértelmezett: 60000)" + }, + "tasks": { + "description": "A2A-feladatok kezelése", + "list": { + "status": "Szűrés állapot szerint", + "skill": "Szűrés képességazonosító szerint" + }, + "watch": { + "description": "A feladat állapotának lekérdezése a befejezésig" + }, + "stream": { + "description": "A feladat-végrehajtási események streamelése SSE-n keresztül" + }, + "logs": { + "description": "Feladatüzenetek és műtermékek megjelenítése" + } + } + }, + "policy": { + "description": "Az OmniRoute engedélyezési szabályzatainak kezelése", + "list": { + "description": "Szabályzatok listázása", + "kind": "Szűrés típus szerint (allow|deny|rate-limit|cost-cap)", + "scope": "Szűrés hatókör szerint (global|api-key|provider)" + }, + "get": { + "description": "Szabályzat részleteinek lekérése azonosító alapján" + }, + "create": { + "description": "Szabályzat létrehozása JSON-fájlból", + "file": "A szabályzat JSON-fájljának elérési útja" + }, + "update": { + "description": "Szabályzat frissítése JSON-fájlból", + "file": "A szabályzat JSON-fájljának elérési útja" + }, + "delete": { + "description": "Szabályzat törlése azonosító alapján", + "yes": "Megerősítési kérdés kihagyása" + }, + "evaluate": { + "description": "Szabályzatértékelés próbafuttatása (kilépési kód: 0=engedélyezve, 4=megtagadva)", + "api_key": "Az értékelendő API-kulcs", + "action": "Ellenőrizendő művelet (pl. chat, embed, admin)", + "resource": "Erőforrás elérési útja vagy azonosítója", + "context": "További kontextus JSON-objektumként" + }, + "export": { + "description": "Az összes szabályzat exportálása JSON-fájlba" + }, + "import": { + "description": "Szabályzatok importálása JSON-fájlból", + "overwrite": "Az azonos azonosítójú meglévő szabályzatok felülírása" + } + }, + "compression": { + "description": "Az OmniRoute tömörítési folyamatának konfigurálása és vizsgálata", + "status": { + "description": "A tömörítés aktuális állapotának és beállításainak megjelenítése" + }, + "configure": { + "description": "Tömörítési beállítások konfigurálása", + "engine": "Tömörítési motor (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman agresszivitása 0.0–1.0", + "rtk_budget": "RTK tokenkerete", + "language_pack": "Aktiválandó nyelvi csomag" + }, + "engine": { + "description": "Az aktív tömörítési motor lekérése vagy beállítása" + }, + "combos": { + "description": "A tömörítésikombináció-statisztikák kezelése" + }, + "rules": { + "description": "A tömörítési szabályok kezelése", + "add": { + "pattern": "Illesztendő minta (reguláris kifejezés vagy mező:minta)", + "action": "Művelet: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Az elérhető tömörítési nyelvi csomagok listázása" + }, + "preview": { + "description": "A tömörítés kérésre gyakorolt hatásának előnézete", + "file": "A kérés JSON-fájljának elérési útja" + } + }, + "tunnel": { + "title": "Alagutak", + "listDescription": "Az aktív alagutak listázása", + "createDescription": "Alagút létrehozása", + "created": "Alagút létrehozva: {url}", + "stopped": "Az alagút leállítva.", + "confirmStop": "Leállítja a(z) {id} alagutat?", + "stopDescription": "Alagút leállítása", + "statusDescription": "Alagút részletes állapotának megjelenítése", + "logsDescription": "Alagút naplóinak megjelenítése", + "infoDescription": "Alagút konfigurációs részleteinek megjelenítése", + "rotateDescription": "Új alagút-URL létrehozása", + "tailOpt": "Megjelenítendő naplósorok száma", + "typeRequired": "Az alagút típusa kötelező.", + "noLogs": "Nem érhetők el naplók.", + "notAvailable": "Az alagút információi nem érhetők el.", + "noTunnels": "Nincsenek aktív alagutak.", + "infoTitle": "Alagút-információk: {type}", + "rotated": "Az alagút URL-je lecserélve: {url}", + "confirmRotate": "Lecseréli a(z) {type} alagút URL-jét? (Új URL jön létre.)" + }, + "stop": { + "description": "Az OmniRoute szerver leállítása", + "stopping": "A szerver leállítása (PID: {pid})...", + "stopped": "A szerver leállítva.", + "notRunning": "Nem fut szerver.", + "portFallback": "Nem található PID-fájl, kísérlet port alapú leállításra..." + }, + "restart": { + "description": "Az OmniRoute szerver újraindítása", + "restarting": "Az OmniRoute szerver újraindítása..." + }, + "dashboard": { + "description": "Az OmniRoute irányítópult megnyitása böngészőben", + "opening": "Az irányítópult megnyitása itt: {url}", + "urlOnly": "Az irányítópult URL-jének kiírása a böngésző megnyitása nélkül", + "tui": "Interaktív TUI irányítópult megnyitása (terminálos felhasználói felület, 7 lap)" + }, + "models": { + "description": "Az elérhető modellek listázása (szerver szükséges)", + "search": "Modellek szűrése azonosító, név, szolgáltató vagy leírás alapján", + "noServer": "A szerver nem fut. Indítsa el ezzel: omniroute serve", + "noModels": "Nem találhatók modellek." + }, + "audit": { + "description": "Hozzáférés a megfelelőségi és MCP-naplókhoz", + "source": "Naplóforrás: all|compliance|mcp (alapértelmezett: all)", + "since": "Bejegyzések visszaadása ettől az időbélyegtől (ISO 8601)", + "until": "Bejegyzések visszaadása eddig az időbélyegig (ISO 8601)", + "tail": { + "description": "Legutóbbi naplóbejegyzések megjelenítése", + "follow": "Új bejegyzések folyamatos követése (lekérdezés 2 másodpercenként)", + "limit": "Megjelenítendő bejegyzések maximális száma (alapértelmezett: 100)" + }, + "search": { + "description": "Keresés kulcsszó alapján a naplóbejegyzésekben", + "limit": "Találatok maximális száma (alapértelmezett: 200)", + "actor": "Szűrés szereplőazonosító alapján", + "action": "Szűrés műveletnév alapján" + }, + "export": { + "description": "Napló exportálása fájlba", + "format": "Kimeneti formátum: jsonl|csv (alapértelmezett: jsonl)" + }, + "stats": { + "description": "Naplóstatisztikák megjelenítése", + "period": "Időszak: 1d|7d|30d (alapértelmezett: 7d)" + }, + "get": { + "description": "Egyetlen naplóbejegyzés lekérése azonosító alapján" + } + }, + "skills": { + "description": "OmniRoute-készségek kezelése (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Telepített készségek listázása", + "type": "Szűrés típus szerint (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Csak az engedélyezett készségek megjelenítése", + "disabled": "Csak a letiltott készségek megjelenítése", + "api_key": "Szűrés API-kulcs alapján" + }, + "get": { + "description": "Készség részleteinek lekérése azonosító alapján" + }, + "install": { + "description": "Készség telepítése fájlból vagy URL-ről", + "from_file": "A készség JSON-definíciós fájljának elérési útja", + "from_url": "Távoli készségdefiníció URL-je", + "type": "Készségtípus (sandbox|custom|hybrid)", + "enable": "Készség engedélyezése telepítés után" + }, + "enable": { + "description": "Készség engedélyezése azonosító alapján" + }, + "disable": { + "description": "Készség letiltása azonosító alapján", + "yes": "Megerősítési kérdés kihagyása" + }, + "delete": { + "description": "Készség törlése azonosító alapján", + "yes": "Megerősítési kérdés kihagyása" + }, + "execute": { + "description": "Készség végrehajtása azonosító alapján", + "input": "JSON bemeneti objektum", + "input_file": "A JSON bemeneti fájl elérési útja", + "timeout": "Végrehajtási időkorlát ezredmásodpercben (alapértelmezett: 30000)" + }, + "executions": { + "description": "Készség-végrehajtási előzmények listázása", + "skill": "Szűrés képességazonosító alapján", + "limit": "Találatok maximális száma (alapértelmezett: 50)", + "status": "Szűrés állapot szerint (running|completed|failed)" + }, + "skillssh": { + "description": "SSH-n keresztül telepített képességek kezelése" + }, + "marketplace": { + "description": "Képességek böngészése és telepítése a piactérről" + }, + "mp": { + "search": { + "description": "Csomagok keresése a piactéren", + "category": "Szűrés kategória szerint", + "tag": "Szűrés címke szerint", + "limit": "Találatok maximális száma (alapértelmezett: 30)", + "sort": "Rendezés: downloads|rating|recent" + }, + "info": { + "description": "Csomag részleteinek és readme fájljának megjelenítése" + }, + "install": { + "description": "Piactéri csomag telepítése", + "version": "Csomagverzió (alapértelmezett: latest)", + "enable": "Engedélyezés telepítés után", + "yes": "Megerősítő kérdés kihagyása" + }, + "categories": { + "description": "Piactéri kategóriák listázása" + }, + "featured": { + "description": "Kiemelt piactéri csomagok megjelenítése" + } + } + }, + "memory": { + "description": "Az OmniRoute társalgási memóriájának kezelése (FTS5 + vector)", + "search": { + "description": "Memóriabejegyzések keresése szemantikai lekérdezéssel", + "type": "Szűrés memóriatípus szerint (user|feedback|project|reference)", + "limit": "Találatok maximális száma (alapértelmezett: 20)", + "api_key": "Szűrés API-kulcs alapján", + "token_budget": "A találatokban szereplő tokenek teljes számának korlátozása" + }, + "add": { + "description": "Új memóriabejegyzés hozzáadása", + "content": "A memória szöveges tartalma", + "file": "Tartalom beolvasása fájlból", + "type": "Memóriatípus (alapértelmezett: user)", + "metadata": "JSON-metaadatobjektum", + "api_key": "Társítás API-kulccsal" + }, + "clear": { + "description": "A szűrőknek megfelelő memóriabejegyzések törlése", + "type": "Szűrés típus szerint", + "older": "A megadott időtartamnál régebbi bejegyzések törlése (30d, 6m, 1y)", + "api_key": "Szűrés API-kulcs alapján", + "yes": "Megerősítő kérdés kihagyása" + }, + "list": { + "description": "Memóriabejegyzések listázása keresési rangsorolás nélkül", + "type": "Szűrés típus szerint", + "limit": "Találatok maximális száma (alapértelmezett: 100)", + "api_key": "Szűrés API-kulcs alapján" + }, + "get": { + "description": "Egyetlen memóriabejegyzés lekérése azonosító alapján" + }, + "delete": { + "description": "Memóriabejegyzés törlése azonosító alapján", + "yes": "Megerősítési kérdés kihagyása" + }, + "health": { + "description": "A memória-alrendszer állapotának megjelenítése (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth-szolgáltatói kapcsolatok kezelése", + "providers": { + "description": "Az OAuth-képes szolgáltatók és folyamattípusaik listázása" + }, + "start": { + "description": "OAuth-engedélyezési folyamat indítása egy szolgáltatóhoz", + "provider": "Szolgáltatóazonosító (gemini, copilot, cursor, …)", + "no_browser": "Csak az URL kiírása — a böngésző megnyitása nélkül", + "import_system": "Hitelesítő adatok automatikus importálása a helyi rendszerkonfigurációból", + "social": "Közösségi bejelentkezési szolgáltató (google|github) — a kiro használatához kötelező", + "timeout": "Az engedélyezésre való várakozás időkorlátja ezredmásodpercben (alapértelmezett: 300000)" + }, + "status": { + "description": "Aktív OAuth-kapcsolatok listázása", + "provider": "Szűrés szolgáltatóazonosító alapján" + }, + "revoke": { + "description": "OAuth-kapcsolat visszavonása", + "provider": "A visszavonandó szolgáltató azonosítója", + "connection_id": "Adott kapcsolat visszavonása azonosító alapján", + "yes": "Megerősítési kérdés kihagyása" + } + }, + "cloud": { + "description": "Felhőalapú AI-ügynökfeladatok kezelése (codex, devin, jules)", + "agents": { + "description": "Elérhető felhőalapú ügynökök listázása" + }, + "agent": { + "description": "A(z) {agent} felhőalapú ügynök feladatainak kezelése", + "auth": { + "description": "A(z) {agent} engedélyezése OAuth használatával" + } + }, + "task": { + "description": "Felhőalapú ügynökfeladatok kezelése", + "create": { + "description": "Új ügynökfeladat létrehozása", + "title": "Feladat címe (alapértelmezés szerint a prompt első 80 karaktere)", + "prompt": "A feladat promptjának szövege", + "prompt_file": "Prompt beolvasása fájlból", + "repo": "A feladathoz klónozandó adattár URL-je", + "branch": "Használandó ág neve", + "metadata": "JSON-metaadatobjektum" + }, + "list": { + "description": "Ügynökfeladatok listázása", + "status": "Szűrés állapot szerint (running|completed|failed|cancelled)", + "limit": "Találatok maximális száma (alapértelmezett: 50)" + }, + "get": { + "description": "Feladat részleteinek lekérése azonosító alapján" + }, + "status": { + "description": "Feladat állapotának kiírása (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Futó feladat megszakítása", + "yes": "Megerősítési kérdés kihagyása" + }, + "approve": { + "description": "Az ügynök tervének jóváhagyása a végrehajtás elindításához" + }, + "message": { + "description": "Üzenet küldése egy futó feladatnak" + } + }, + "sources": { + "description": "Egy feladat által létrehozott forrásfájlok listázása" + } + }, + "eval": { + "description": "Kiértékelési csomagok és futtatások kezelése", + "suites": { + "description": "Kiértékelési csomagok kezelése", + "list": { + "description": "Kiértékelési csomagok listázása" + }, + "get": { + "description": "Kiértékelési csomag részleteinek lekérése azonosító alapján" + }, + "create": { + "description": "Kiértékelési csomag létrehozása JSON-fájlból", + "file": "A csomag definícióját tartalmazó JSON-fájl elérési útja" + } + }, + "run": { + "description": "Kiértékelési futtatás indítása egy csomaghoz", + "model": "A kiértékelendő modell azonosítója (alapértelmezett: auto)", + "combo": "Adott kombináció kényszerítése név alapján", + "concurrency": "Egyidejű minták száma (alapértelmezett: 4)", + "tag": "A futtatás megcímkézése későbbi szűréshez", + "watch": "A futtatás előrehaladásának követése a befejezésig" + }, + "list": { + "description": "Kiértékelési futtatások listázása", + "suite": "Szűrés csomagazonosító alapján", + "status": "Szűrés állapot alapján", + "since": "Az ezen időbélyeg óta indított futtatások visszaadása", + "limit": "Találatok maximális száma (alapértelmezett: 50)" + }, + "get": { + "description": "Kiértékelési futtatás részleteinek lekérése azonosító alapján" + }, + "results": { + "description": "Kiértékelési futtatás mintaeredményeinek megjelenítése", + "failed": "Csak a sikertelen minták megjelenítése" + }, + "cancel": { + "description": "Folyamatban lévő kiértékelés megszakítása", + "yes": "Megerősítési kérdés kihagyása" + }, + "scorecard": { + "description": "Befejezett kiértékelési futtatás eredménykártyájának megjelenítése" + } + }, + "webhooks": { + "description": "OmniRoute-webhookok kezelése", + "events": { + "description": "Az összes elérhető webhook-eseménytípus listázása" + }, + "list": { + "description": "Beállított webhookok listázása" + }, + "get": { + "description": "Webhook részleteinek lekérése azonosító alapján" + }, + "add": { + "description": "Új webhook regisztrálása", + "url": "Cél-URL", + "events": "Eseménytípusok vesszővel elválasztott listája", + "secret": "HMAC-aláírási titok", + "header": "További fejléc key=value formátumban (ismételhető)", + "no_enabled": "Webhook létrehozása letiltott állapotban" + }, + "update": { + "description": "Meglévő webhook frissítése", + "enabled": "Engedélyezett állapot beállítása (true|false)" + }, + "remove": { + "description": "Webhook törlése", + "yes": "Megerősítési kérdés kihagyása" + }, + "test": { + "description": "Tesztesemény küldése egy webhooknak", + "event": "Szimulálandó eseménytípus (alapértelmezett: request.completed)" + } + }, "program": { "description": "OmniRoute — Intelligens AI útválasztó automatikus fallbackkel", "version": "Verzió kiírása és kilépés", @@ -26,7 +832,509 @@ "context": "Szerverkontextus/profil ehhez a parancshoz", "lang": "CLI megjelenítési nyelv beállítása (felülírja az OMNIROUTE_LANG-ot)" }, - "redis": { - "description": "Helyi Redis-tároló indítása egyetlen kattintással (Podman vagy Docker) az OmniRoute gyorsítótárazáshoz és kvótafigyeléshez" + "files": { + "description": "Fájlok kezelése (feltöltés, listázás, lekérés, letöltés, törlés)", + "list": { + "purpose": "Szűrés rendeltetés alapján", + "limit": "Találatok maximális száma" + }, + "get": { + "description": "Fájl metaadatainak lekérése" + }, + "upload": { + "description": "Fájl feltöltése", + "purpose": "Fájl célja (batch, assistants, fine-tune)" + }, + "content": { + "description": "Fájltartalom letöltése", + "out": "Mentés elérési útra (alapértelmezett: stdout)" + }, + "delete": { + "yes": "Megerősítés kihagyása" + } + }, + "batches": { + "description": "OpenAI-kompatibilis kötegelt feladatok kezelése", + "list": { + "status": "Szűrés állapot szerint", + "limit": "Találatok maximális száma" + }, + "create": { + "description": "Kötegelt feladat létrehozása", + "inputFile": "Bemeneti fájl azonosítója", + "endpoint": "Célvégpont", + "window": "Befejezési időablak", + "metadata": "Metaadat hozzáadása kulcs=érték formátumban" + }, + "submit": { + "description": "JSONL-fájl feltöltése és köteg létrehozása", + "jsonl": "A JSONL-fájl elérési útja", + "endpoint": "Célvégpont", + "wait": "Várakozás a befejezésre" + }, + "cancel": { + "yes": "Megerősítés kihagyása" + }, + "wait": { + "timeout": "Időtúllépés ezredmásodpercben" + }, + "output": { + "out": "Kimenet mentése elérési útra" + }, + "errors": { + "out": "Hibák mentése elérési útra" + } + }, + "translator": { + "description": "Kérés törzsének átalakítása LLM-formátumok között", + "detect": { + "description": "Törzsformátum felismerése" + }, + "translate": { + "description": "Törzs átalakítása egyik formátumból egy másikba" + }, + "send": { + "description": "Átalakítás és továbbítás a felsőbb szintű szolgáltatásnak" + }, + "stream": { + "description": "Kérés törzsének streamelt átalakítása" + }, + "from": "Forrásformátum (openai|anthropic|gemini|cohere)", + "to": "Célformátum (openai|anthropic|gemini|cohere)", + "file": "A kérés törzsét tartalmazó JSON-fájl elérési útja", + "out": "Kimenet mentése fájlba", + "model": "Modell felülbírálása", + "history": { + "limit": "Találatok maximális száma" + } + }, + "pricing": { + "description": "Modellek árképzési adatainak kezelése", + "sync": { + "description": "Árak szinkronizálása felsőbb szintű forrásokból", + "provider": "Szűrés szolgáltató szerint", + "force": "Újraszinkronizálás kényszerítése" + }, + "list": { + "provider": "Szűrés szolgáltató szerint", + "model": "Szűrés modell szerint", + "limit": "Találatok maximális száma" + }, + "defaults": { + "description": "Alapértelmezett díjszabás kezelése", + "input": "Bemeneti költség 1 millió tokenenként (USD)", + "output": "Kimeneti költség 1 millió tokenenként (USD)", + "cacheRead": "Gyorsítótár-olvasási költség 1 millió tokenenként (USD)", + "cacheWrite": "Gyorsítótár-írási költség 1 millió tokenenként (USD)" + }, + "diff": { + "description": "Eltérés megjelenítése a forrásoldali áraktól", + "model": "Szűrés modell szerint" + } + }, + "radar": { + "description": "A helyi Radar-katalógusforrások vizsgálata és szinkronizálása", + "status": "A helyi Radar-beállítások és a forrásgyorsítótár állapotának megjelenítése", + "sync": "A katalógus, az ajánlások, az ajánlatok és az Intel szinkronizálása a helyi szerveren keresztül" + }, + "resilience": { + "description": "Ellenálló képességi mechanizmusok vizsgálata és kezelése", + "status": { + "provider": "Szűrés szolgáltató szerint" + }, + "breakers": { + "provider": "Szűrés szolgáltató szerint" + }, + "cooldowns": { + "provider": "Szűrés szolgáltató szerint", + "connectionId": "Szűrés kapcsolatazonosító szerint" + }, + "lockouts": { + "provider": "Szűrés szolgáltató szerint", + "model": "Szűrés modell szerint" + }, + "reset": { + "description": "A megszakító/várakozási állapot visszaállítása", + "provider": "Visszaállítandó szolgáltató", + "connectionId": "Visszaállítandó kapcsolatazonosító", + "model": "Modell kizárásának visszaállítása", + "allCooldowns": "A szolgáltató összes várakozási idejének visszaállítása", + "yes": "Megerősítés kihagyása" + }, + "profile": { + "description": "Ellenálló képességi profil kezelése", + "name": "Profil neve" + }, + "config": { + "description": "Ellenálló képességi konfiguráció kezelése", + "threshold": "Hibaküszöb", + "resetTimeout": "Visszaállítási időtúllépés ezredmásodpercben", + "baseCooldown": "Alap várakozási idő ezredmásodpercben" + } + }, + "nodes": { + "description": "Szolgáltatói csomópontok (végpontok) kezelése", + "list": { + "provider": "Szűrés szolgáltató szerint", + "enabled": "Csak az engedélyezett csomópontok megjelenítése" + }, + "add": { + "provider": "Szolgáltató neve", + "baseUrl": "A csomópont alap-URL-je", + "name": "Csomópont neve", + "weight": "Terheléselosztási súly", + "region": "Régiócímke", + "authHeader": "Egyéni hitelesítési fejléc (key=value)" + }, + "update": { + "baseUrl": "Új alap-URL", + "name": "Új név", + "weight": "Új súly", + "region": "Új régió", + "enabled": "Engedélyezés vagy letiltás (true|false)" + }, + "remove": { + "yes": "Megerősítés kihagyása" + }, + "validate": { + "baseUrl": "Ellenőrizendő URL", + "provider": "Az ellenőrzéshez használandó szolgáltató" + }, + "test": { + "description": "Tesztkérés küldése a csomópontnak" + }, + "metrics": { + "description": "Csomópont-metrikák megjelenítése", + "period": "Időszak (pl. 24h, 7d)" + } + }, + "context": { + "description": "A kontextusfeldolgozási folyamat konfigurálása (Caveman, RTK)", + "analytics": { + "period": "Időszak (pl. 7d, 30d)" + }, + "caveman": { + "description": "A Caveman kontextustömörítő kezelése", + "config": { + "description": "A Caveman konfigurációjának megjelenítése vagy frissítése", + "aggressiveness": "Agresszivitás 0.0–1.0", + "maxShrinkPct": "Maximális zsugorítási százalék", + "preserveTags": "Megőrzendő, vesszővel elválasztott címkék" + } + }, + "rtk": { + "description": "Az RTK kontextusoptimalizáló kezelése", + "config": { + "description": "Az RTK konfigurációjának megjelenítése vagy frissítése", + "tokenBudget": "Tokenkeret az RTK számára", + "reservePct": "Tartalék százalékos aránya" + }, + "filters": { + "description": "Az RTK-szűrők kezelése", + "pattern": "Szűrőminta (reguláris kifejezés)", + "priority": "Szűrő prioritása (alapértelmezett: 100)", + "action": "Szűrőművelet: drop|shrink|replace", + "yes": "Megerősítés kihagyása" + }, + "test": { + "file": "A kérés JSON-fájljának elérési útja" + } + }, + "combos": { + "description": "Kontextusérzékeny kombinációk kezelése" + } + }, + "sessions": { + "description": "Aktív munkamenetek vizsgálata és kezelése", + "list": { + "user": "Szűrés felhasználó szerint", + "kind": "Szűrés típus szerint (dashboard|api-key|mcp|a2a)", + "active": "Csak az aktív munkamenetek megjelenítése", + "limit": "Találatok maximális száma (alapértelmezett: 100)" + }, + "expire": { + "yes": "Megerősítés kihagyása" + }, + "expireAll": { + "user": "A felhasználó, akinek a munkameneteit le kell járatni", + "yes": "Megerősítés kihagyása" + } + }, + "tags": { + "description": "Erőforráscímkék kezelése", + "add": { + "color": "Címke színe (hexadecimális kód vagy név)", + "description": "Címke leírása" + }, + "remove": { + "yes": "Megerősítés kihagyása" + }, + "assign": { + "tag": "Címke neve", + "to": "Célerőforrás type:id formátumban (pl. provider:openai)" + }, + "unassign": { + "tag": "Címke neve", + "from": "Forráserőforrás type:id formátumban" + } + }, + "openapi": { + "description": "Az OmniRoute OpenAPI-specifikáció elérése és tesztelése", + "dump": { + "description": "Az OpenAPI-specifikáció kiírása stdout-ra vagy fájlba", + "format": "Kimeneti formátum: yaml|json (alapértelmezett: yaml)", + "out": "Mentés fájlútvonalra" + }, + "validate": { + "description": "Az OpenAPI-specifikáció ellenőrzése" + }, + "try": { + "description": "API-végpont tesztelése a specifikáción keresztül", + "method": "HTTP-metódus (alapértelmezett: GET)", + "body": "A kérés törzsét tartalmazó JSON-fájl elérési útja", + "query": "Lekérdezési paraméter key=value formátumban (ismételhető)", + "header": "Fejléc key=value formátumban (ismételhető)" + }, + "endpoints": { + "description": "Az összes API-végpont listázása", + "search": "Szűrés elérési út vagy összefoglaló alapján" + }, + "paths": { + "description": "Az összes API-útvonal listázása" + } + }, + "combo": { + "title": "Kombinációk", + "switched": "Aktív kombináció: {name}", + "created": "Kombináció létrehozva: {name}", + "deleted": "Kombináció törölve: {name}", + "noCombos": "Nincsenek beállított kombinációk.", + "confirmDelete": "Törli ezt a kombinációt: {name}?", + "suggest": { + "description": "A legjobb kombináció javaslata egy feladathoz MI-alapú pontozással", + "task": "Feladat leírása", + "maxCost": "Kérésenkénti maximális költség USD-ben", + "maxLatencyMs": "Maximális késleltetés ezredmásodpercben", + "weights": "JSON-formátumú pontozási súlyok, pl. {\"latency\":0.7,\"cost\":0.3}", + "top": "A megjelenítendő legjobb jelöltek száma (alapértelmezett: 5)", + "explain": "Indoklás kiírása stderr-re", + "switch": "A legmagasabbra rangsorolt kombináció aktiválása" + } + }, + "oneproxy": { + "description": "A OneProxy upstream-készlet kezelése", + "stats": { + "provider": "Szűrés szolgáltató alapján", + "period": "Időszak (alapértelmezett: 24h)" + }, + "fetch": { + "description": "Proxyk lekérése a készletből", + "count": "A lekérendő proxyk száma (alapértelmezett: 1)", + "type": "Proxy típusa: http|socks5 (alapértelmezett: http)" + }, + "rotate": { + "description": "Proxyrotáció kényszerítése", + "provider": "Szolgáltató, amelynél a rotáció végrehajtandó", + "connectionId": "A rotálandó konkrét kapcsolat azonosítója" + }, + "config": { + "description": "A OneProxy konfigurációjának megjelenítése vagy frissítése", + "enabled": "Proxytár engedélyezése (true|false)", + "poolSize": "Tár mérete", + "providerSource": "A proxyszolgáltató URL-je", + "rotationPolicy": "Rotációs szabályzat: sticky|per-request|periodic" + }, + "pool": { + "description": "Az aktuális proxytár listázása mérőszámokkal" + } + }, + "open": { + "description": "Egy adott OmniRoute-irányítópultoldal megnyitása a böngészőben", + "url": "Csak az URL kiírása, a böngésző megnyitása nélkül" + }, + "telemetry": { + "description": "Hozzáférés az összesített telemetriai adatokhoz", + "summary": { + "description": "Összesített telemetriai összefoglaló megjelenítése", + "period": "Időszak: 24h|7d|30d (alapértelmezett: 24h)", + "compareTo": "Összehasonlítás az előző időszakkal" + }, + "export": { + "description": "Telemetriai események exportálása JSONL formátumba", + "out": "Kimeneti fájl elérési útja (alapértelmezett: telemetry.jsonl)", + "period": "Exportálási időszak (alapértelmezett: 7d)" + } + }, + "sync": { + "description": "Konfiguráció szinkronizálása OmniRoute-példányok között", + "push": { + "description": "Konfiguráció küldése a felhőbe vagy egy távoli példányra", + "target": "Cél (cloud vagy context:name)", + "bundle": "Szinkronizálandó csomagrészek", + "dryRun": "Előnézet alkalmazás nélkül" + }, + "pull": { + "description": "Konfiguráció lekérése a felhőből vagy egy távoli példányról", + "source": "Forrás (cloud vagy context:name)", + "merge": "Egyesítés a meglévő konfigurációval", + "replace": "Meglévő konfiguráció lecserélése", + "dryRun": "Előnézet alkalmazás nélkül" + }, + "diff": { + "source": "Forráskörnyezet", + "target": "Célkörnyezet" + }, + "bundle": { + "description": "Konfiguráció exportálása csomagfájlként", + "include": "Belefoglalandó részek (vesszővel elválasztva)" + }, + "import": { + "description": "Csomagfájl importálása", + "dryRun": "Ellenőrzés alkalmazás nélkül" + }, + "initialize": { + "fromCloud": "Inicializálás felhőalapú biztonsági mentésből" + }, + "tokens": { + "description": "Szinkronizálási tokenek kezelése", + "create": { + "name": "Token neve", + "scope": "Token hatóköre", + "ttl": "Token élettartama (pl. 30d)" + }, + "revoke": { + "yes": "Megerősítés kihagyása" + } + }, + "resolve": { + "description": "Szinkronizálási ütközések interaktív feloldása" + } + }, + "config": { + "contexts": { + "description": "Szerverkörnyezetek/-profilok kezelése (hozzáadás, használat, listázás, megjelenítés, eltávolítás, átnevezés, exportálás, importálás)" + }, + "lang": { + "description": "A CLI megjelenítési nyelvének kezelése", + "getDescription": "Az aktuálisan aktív nyelvi kód megjelenítése", + "setDescription": "A megjelenítési nyelv beállítása és mentése a konfigurációba", + "listDescription": "Az összes elérhető nyelv listázása", + "listTitle": "Elérhető nyelvek", + "current": "Nyelv: {code} ({name})", + "saved": "A nyelv beállítva: {code} ({name}).", + "noCode": "Meg kell adni a nyelvi kódot. Az elérhető kódok megtekintéséhez futtasd az „omniroute config lang list” parancsot.", + "unknown": "Ismeretlen nyelvi kód: {code}. Az elérhető kódok megtekintéséhez futtasd az „omniroute config lang list” parancsot.", + "alreadySet": "A nyelv már erre van beállítva: {code}.", + "envHint": "Tipp: az OMNIROUTE_LANG={code} környezeti változót is beállíthatod." + } + }, + "completion": { + "description": "Parancsértelmező-kiegészítési szkriptek létrehozása vagy telepítése", + "zsh": "A zsh kiegészítési szkript kiírása", + "bash": "A bash kiegészítési szkript kiírása", + "fish": "A fish kiegészítési szkript kiírása", + "install": "A kiegészítési szkript globális telepítése az észlelt parancsértelmezőhöz", + "refresh": "A kombinációk/szolgáltatók/modellek gyorsítótárának frissítése" + }, + "logs": { + "description": "Kérésnaplók valós idejű megjelenítése vagy exportálása", + "follow": "Naplók valós idejű megjelenítése", + "filter": "Szűrés szint szerint (error,warn,info) — vesszővel elválasztva", + "lines": "Lekérendő sorok száma", + "timeout": "Kapcsolati időtúllépés ezredmásodpercben", + "baseUrl": "Az OmniRoute API alap-URL-je", + "requestId": "Szűrés kérésazonosító szerint", + "apiKey": "Szűrés API-kulcs szerint", + "combo": "Szűrés kombinációnév szerint", + "status": "Szűrés HTTP-állapotkód szerint", + "durationMin": "Kérés minimális időtartama ezredmásodpercben", + "durationMax": "Kérés maximális időtartama ezredmásodpercben", + "export": "Naplók mentése fájlba (json/jsonl/csv)", + "exported": "A naplók mentve ide: {path}", + "stopped": "A naplófolyam leállt.", + "streamError": "Naplófolyam-hiba: {message}" + }, + "tray": { + "description": "A rendszertálcaikon vezérlése", + "show": "A tálcaikon megjelenítése (ha a kiszolgáló a --tray kapcsolóval fut)", + "hide": "A tálcaikon elrejtése", + "quit": "Kilépés az OmniRoute-ból a tálcaikonon keresztül" + }, + "autostart": { + "description": "Az OmniRoute rendszerindításkori automatikus indításának kezelése (Linux: systemd felhasználói szolgáltatás)", + "enable": "Automatikus indítás engedélyezése rendszerindításkor", + "disable": "Automatikus indítás letiltása rendszerindításkor", + "toggle": "Automatikus indítás be- vagy kikapcsolása rendszerindításkor", + "status": "Az automatikus indítás állapotának megjelenítése" + }, + "runtime": { + "description": "Natív futtatókörnyezeti függőségek kezelése", + "check": "A natív függőségek állapotának ellenőrzése a futtatókörnyezet könyvtárában", + "repair": "A natív függőségek újratelepítése a futtatókörnyezet könyvtárában", + "repair_force": "Kényszerített újratelepítés akkor is, ha érvényesek", + "clean": "A futtatókörnyezet könyvtárának eltávolítása (lemezterületet szabadít fel)", + "clean_yes": "Megerősítés kihagyása" + }, + "repl": { + "description": "Interaktív, többfordulós REPL LLM-mel", + "model": "Használandó modell (alapértelmezett: automatikus)", + "combo": "Használandó kombináció neve", + "system": "Rendszerüzenet", + "resume": "Mentett munkamenet folytatása név alapján" + }, + "plugin": { + "description": "CLI-bővítmények kezelése (omniroute-cmd-*)", + "list": "Telepített bővítmények listázása", + "install": "Bővítmény telepítése npm-csomagból vagy helyi elérési útról", + "remove": "Telepített bővítmény eltávolítása", + "info": "Telepített bővítmény részleteinek megjelenítése", + "search": "Elérhető bővítmények keresése az npm-jegyzékben", + "update": "Telepített bővítmény(ek) frissítése", + "scaffold": "Új bővítmény sablonjának létrehozása" + }, + "launch": { + "description": "A Claude Code indítása az OmniRoute használatával (helyileg vagy távolról, --profile kapcsolóval)", + "token": "A Claude kliens által küldendő token (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "Az OmniRoute nem érhető el ezen a porton: {port}. Indítsa el az 'omniroute serve' paranccsal.", + "notFound": "A 'claude' CLI nem található a PATH-ban." + }, + "run": { + "description": "Támogatott CLI-cél indítása az OmniRoute-on keresztül" + }, + "setupClaude": { + "description": "Claude Code-profilok létrehozása a ~/.claude/profiles könyvtárban az OmniRoute modellkatalógusából" + }, + "connect": { + "description": "Kapcsolódás távoli OmniRoute-kiszolgálóhoz és belépés távoli módba" + }, + "tokens": { + "description": "Hatókörrel rendelkező CLI-hozzáférési tokenek kezelése (távoli mód)" + }, + "configure": { + "description": "Szolgáltató és modell kiválasztása az aktív kiszolgálóról, valamint egy támogatott helyi CLI konfigurálása" + }, + "launchCodex": { + "description": "A Codex CLI indítása az OmniRoute használatával (helyi vagy távoli VPS)" + }, + "setupCodex": { + "description": "~/.codex-profilfájlok létrehozása az OmniRoute élő modellkatalógusából" + }, + "packs": { + "description": "Opcionális futtatókörnyezeti csomagok kezelése (ML / böngészőautomatizálás)", + "listDescription": "Opcionális csomagok és telepítési állapotuk listázása", + "installDescription": "Opcionális csomag telepítése a DATA_DIR könyvtárba", + "verifyDescription": "Telepített csomagok ellenőrzése a mellékelt ellenőrzőösszeg-index alapján", + "removeDescription": "Telepített opcionális csomag eltávolítása", + "sourceOpt": "A csomagok tartalmát és a csomagindexet tartalmazó könyvtár", + "warnNoIndex": "Az optional-packs.index.json nem található — a telepítés és az ellenőrzés nem érhető el ebben a forrásfában (az asztali alkalmazáscsomagok tartalmazzák)", + "errUnknown": "ismeretlen csomag: {name}", + "errNoIndex": "a csomagindex nem található; adja meg a csomag tartalmát tároló könyvtárat a --source kapcsolóval (az asztali alkalmazáscsomagok az alkalmazás mellett tartalmazzák)", + "installed": "a(z) \"{name}\" csomag telepítve és ellenőrizve itt: {dir}", + "restartHint": "indítsa újra az OmniRoute szervert (vagy asztali alkalmazást), hogy a futtatókörnyezet betöltse a csomagot", + "removed": "a(z) „{name}” csomag eltávolítva", + "notInstalled": "a(z) „{name}” csomag nem volt telepítve", + "verifyOk": "az összes telepített csomag ellenőrzése sikeres", + "verifyFailed": "{count} csomag ellenőrzése sikertelen", + "noneInstalled": "nincsenek opcionális csomagok telepítve" } } diff --git a/bin/cli/locales/hy.json b/bin/cli/locales/hy.json index be323c8188..ce8eb39326 100644 --- a/bin/cli/locales/hy.json +++ b/bin/cli/locales/hy.json @@ -256,6 +256,7 @@ "max_restarts": "Վթարից հետո վերագործարկումների առավելագույն քանակը 30 վրկ-ի ընթացքում՝ մինչև փորձերը դադարեցնելը (լռելյայն՝ 2)", "tray": "Գործարկել համակարգային սկուտեղում (միայն աշխատասեղանի տարբերակում, ըստ ցանկության)", "no_tray": "Անջատել համակարգային սկուտեղի պատկերակը", + "ready_timeout": "Պատրաստության ստուգման սպասաժամը՝ մվ-ով (նաև OMNIROUTE_READY_TIMEOUT_MS, լռելյայն՝ 60000)", "tls_cert": "HTTPS սպասարկելու համար TLS վկայագրի (PEM) ուղին (նաև՝ OMNIROUTE_TLS_CERT)", "tls_key": "HTTPS սպասարկելու համար TLS գաղտնի բանալու (PEM) ուղին (նաև՝ OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP սերվերը գործարկված է ({transport})", "stopped": "MCP սերվերը կանգնեցվել է։", "restarted": "MCP սերվերը վերագործարկվել է։", + "stoppedHint": "Այն միացնելու համար գործարկեք `omniroute mcp enable` հրամանը։", + "enabled": "MCP սերվերը միացված է։", + "disabled": "MCP սերվերն անջատված է։", + "enable": { + "description": "Միացնել MCP սերվերը", + "transport": "Օգտագործվող փոխադրման եղանակը՝ stdio|sse|streamable-http" + }, + "disable": { + "description": "Անջատել MCP սերվերը" + }, "call": { "description": "Անմիջապես կանչել MCP գործիք", "args": "JSON արգումենտների օբյեկտ (ներտողային)", diff --git a/bin/cli/locales/id.json b/bin/cli/locales/id.json index 3454806c5a..e7a8eb570c 100644 --- a/bin/cli/locales/id.json +++ b/bin/cli/locales/id.json @@ -14,6 +14,812 @@ "jsonOpt": "Keluaran sebagai JSON", "yesOpt": "Lewati konfirmasi" }, + "setup": { + "title": "Penyiapan OmniRoute", + "passwordPrompt": "Kata sandi admin", + "providerPrompt": "Penyedia default (biarkan kosong untuk melewati)", + "done": "Penyiapan selesai", + "passwordSet": "Kata sandi admin telah dikonfigurasi", + "providerSet": "Penyedia dikonfigurasi: {name}", + "testingProvider": "Menguji koneksi penyedia: {name}", + "testPassed": "Pengujian penyedia berhasil", + "testFailed": "Pengujian penyedia gagal: {error}", + "loginEnabled": "Login: diaktifkan (kata sandi diperbarui)", + "loginDisabled": "Login: dinonaktifkan", + "providerInfo": "Penyedia: {info}", + "opencode": "Instal dan konfigurasikan @omniroute/opencode-plugin bawaan untuk OpenCode" + }, + "doctor": { + "title": "Diagnostik OmniRoute", + "dbOk": "Basis data: OK ({path})", + "dbMissing": "Basis data: belum diinisialisasi — jalankan `omniroute setup`", + "portOk": "Port {port}: tersedia", + "portConflict": "Port {port}: sedang digunakan oleh proses lain", + "encryptionOk": "Kunci enkripsi: dikonfigurasi", + "encryptionMissing": "Kunci enkripsi tidak ditemukan — jalankan `omniroute setup`", + "allGood": "Semua pemeriksaan berhasil.", + "warnings": "{count} peringatan — lihat di atas." + }, + "providers": { + "title": "Penyedia", + "noProviders": "Belum ada penyedia yang dikonfigurasi. Jalankan: omniroute setup", + "testing": "Menguji {name}...", + "available": "{count} penyedia tersedia", + "connected": "Terhubung", + "disconnected": "Terputus", + "validationFailed": "Validasi gagal: {error}", + "metrics": { + "description": "Tampilkan metrik performa penyedia (latensi, tingkat keberhasilan, biaya)", + "provider": "Filter berdasarkan ID penyedia", + "connection_id": "Filter berdasarkan ID koneksi", + "period": "Periode waktu: 1h|6h|24h|7d|30d (default: 24h)", + "metric": "Fokus pada kolom metrik tertentu", + "sort": "Urutkan berdasarkan kolom (menurun)", + "limit": "Jumlah baris maksimum (default: 50)", + "watch": "Segarkan setiap 5 detik (mode langsung)", + "compare": "ID penyedia yang dipisahkan koma untuk dibandingkan secara berdampingan" + }, + "metric_single": { + "description": "Dapatkan satu nilai metrik untuk koneksi tertentu" + }, + "rotate": { + "description": "Rotasi kunci API upstream untuk koneksi penyedia", + "newKeyOpt": "Nilai kunci API baru (hindari: sebaiknya gunakan --from-env)", + "fromEnvOpt": "Baca kunci baru dari variabel lingkungan VAR", + "oauthOpt": "Picu alur autentikasi ulang OAuth sebagai gantinya", + "skipTestOpt": "Lewati pengujian konektivitas setelah rotasi", + "dryRunOpt": "Tampilkan perubahan yang akan dilakukan tanpa menyimpannya", + "confirmPrompt": "Ganti kunci API untuk koneksi \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Akan merotasi kunci untuk \"{name}\" ({id}). Tidak ada perubahan yang dilakukan.", + "oauthHint": "Koneksi OAuth — jalankan: omniroute oauth {provider}", + "envVarEmpty": "Variabel lingkungan {var} tidak ditetapkan atau kosong.", + "success": "Kunci untuk \"{name}\" telah dirotasi. Jalankan `providers test {id}` untuk memverifikasi.", + "testPassed": "Pengujian setelah rotasi berhasil.", + "testFailed": "Pengujian setelah rotasi gagal: {error}" + }, + "status": { + "description": "Tampilkan status kesehatan kunci untuk semua koneksi penyedia (usia, kedaluwarsa, masa tunggu)", + "providerOpt": "Filter berdasarkan nama penyedia", + "header": "ID Penyedia Nama Status Kedaluwarsa Status Pengujian Masa Tunggu Hingga", + "noData": "Tidak ada data koneksi penyedia yang tersedia.", + "requiresServer": "providers status mengharuskan server OmniRoute berjalan." + } + }, + "keys": { + "title": "Kunci API", + "addDescription": "Tambahkan atau perbarui kunci API untuk penyedia", + "listDescription": "Cantumkan semua kunci API yang dikonfigurasi", + "removeDescription": "Hapus kunci API untuk penyedia", + "regenerateDescription": "Buat ulang kunci API OmniRoute", + "revokeDescription": "Cabut kunci API OmniRoute", + "revealDescription": "Tampilkan nilai kunci API tanpa penyamaran", + "usageDescription": "Tampilkan penggunaan terbaru untuk kunci API", + "usageLimitOpt": "Jumlah permintaan terbaru", + "rotateDescription": "Buat kunci baru dan batalkan kunci lama", + "graceOpt": "Masa tenggang (ms) sebelum kunci lama dibatalkan", + "stdinOpt": "Baca kunci API dari stdin, bukan dari argumen", + "added": "Kunci ditambahkan untuk {provider}.", + "removed": "Kunci dihapus.", + "listed": "{count} kunci.", + "noKeys": "Tidak ada kunci yang dikonfigurasi.", + "noUsage": "Tidak ditemukan data penggunaan.", + "confirmRemove": "Hapus kunci {id}?", + "confirmRegenerate": "Buat ulang kunci {id}?", + "confirmRevoke": "Cabut kunci {id}?", + "confirmRotate": "Rotasi kunci {id}? (kunci lama akan dibatalkan setelah masa tenggang)", + "regenerated": "Berhasil dibuat ulang. Kunci baru: {key}", + "revoked": "Kunci {id} telah dicabut.", + "rotated": "Kunci {id} telah dirotasi. ID kunci baru: {newId}", + "revealWarning": "⚠ Ini akan menampilkan kunci lengkap tanpa penyamaran. Pastikan layar Anda tidak terlihat oleh orang lain.", + "providerRequired": "Penyedia wajib diisi.", + "keyRequired": "Kunci API wajib diisi.", + "stdinEmpty": "Tidak ada kunci API yang diberikan melalui stdin.", + "unknownProvider": "Penyedia tidak dikenal: {provider}", + "policy": { + "title": "Kebijakan Kunci", + "showDescription": "Tampilkan kebijakan batas permintaan/biaya untuk suatu kunci", + "setDescription": "Tetapkan kebijakan batas permintaan/biaya untuk suatu kunci", + "rateLimitOpt": "Jumlah maksimum permintaan per menit", + "maxCostOpt": "Biaya maksimum per hari (USD)", + "allowedModelsOpt": "Daftar model yang diizinkan, dipisahkan dengan koma", + "nothingToSet": "Tidak ada kolom kebijakan yang diberikan. Gunakan --rate-limit, --max-cost, atau --allowed-models.", + "updated": "Kebijakan telah diperbarui." + }, + "expiration": { + "title": "Kedaluwarsa Kunci", + "listDescription": "Cantumkan kunci yang akan segera kedaluwarsa", + "daysOpt": "Tampilkan kunci yang akan kedaluwarsa dalam N hari", + "none": "Tidak ada kunci yang akan kedaluwarsa dalam {days} hari.", + "listTitle": "Kunci yang akan kedaluwarsa dalam {days} hari:" + } + }, + "authExport": { + "description": "Ekspor kredensial penyedia yang TELAH DIDEKRIPSI (khusus lokal, keluaran teks biasa)", + "idOpt": "Ekspor hanya koneksi yang cocok dengan id/nama/penyedia ini", + "formatOpt": "Format keluaran: json atau env", + "outOpt": "Tulis keluaran ke file, bukan stdout (ditulis dengan izin 0600)", + "forceOpt": "Konfirmasikan bahwa Anda memahami tindakan ini akan mencetak/menulis rahasia dalam teks biasa", + "warning": "⚠ Tindakan ini mencetak/menulis kunci API dan token OAuth yang TELAH DIDEKRIPSI dalam teks biasa. Pastikan layar, riwayat shell, dan file keluaran Anda tetap bersifat privat.", + "confirmHeading": "⚠ PERINGATAN: tindakan ini mengekspor kredensial penyedia yang TELAH DIDEKRIPSI dalam teks biasa", + "confirmBody": "Perintah ini mendekripsi dan mencetak/menulis apiKey, accessToken, refreshToken, dan\nidToken untuk koneksi yang dipilih. Perlakukan keluarannya sebagai rahasia.", + "confirmFooter": "Untuk mengonfirmasi, jalankan:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY diperlukan untuk mengekspor kredensial.", + "notFound": "Koneksi tidak ditemukan: {id}", + "invalidFormat": "Format tidak valid: {format}. Gunakan json atau env." + }, + "stream": { + "description": "Streaming respons obrolan dengan mode inspeksi SSE", + "file": "Baca prompt dari file", + "stdin": "Baca prompt dari stdin", + "model": "ID model (default: auto)", + "system": "Prompt sistem", + "combo": "Paksa penggunaan kombinasi tertentu berdasarkan nama", + "max_tokens": "Jumlah maksimum token dalam respons", + "responses_api": "Gunakan /v1/responses alih-alih /v1/chat/completions", + "raw": "Cetak baris SSE mentah sebagaimana diterima", + "debug": "Cetak info waktu per chunk ke stderr", + "save": "Simpan semua event SSE ke file .jsonl", + "error": { + "empty_prompt": "Kesalahan: prompt wajib diisi (argumen posisi, --file, atau --stdin)" + } + }, + "usage": { + "description": "Analitik penggunaan, anggaran, kuota, dan log", + "analytics": { + "description": "Tampilkan analitik penggunaan teragregasi", + "period": "Rentang waktu: 1d|7d|30d|90d|ytd|all (default: 30d)", + "provider": "Filter berdasarkan ID provider" + }, + "budget": { + "description": "Kelola anggaran biaya", + "set": { + "scope": "Cakupan anggaran (default: global)", + "period": "Periode anggaran: daily|weekly|monthly (default: monthly)" + } + }, + "quota": { + "description": "Tampilkan penggunaan kuota provider", + "provider": "Filter berdasarkan ID provider", + "check": "Tampilkan apakah kuota tersedia untuk permintaan baru" + }, + "logs": { + "description": "Tampilkan log panggilan permintaan", + "limit": "Jumlah entri log yang akan dikembalikan (default: 100)", + "search": "Kueri pencarian untuk memfilter log", + "since": "Kembalikan log sejak stempel waktu ini", + "follow": "Pantau entri log baru secara terus-menerus", + "api_key": "Filter log berdasarkan kunci API" + }, + "utilization": { + "description": "Tampilkan metrik penggunaan kunci API", + "api_key": "Filter berdasarkan kunci API" + }, + "history": { + "description": "Tampilkan riwayat permintaan", + "limit": "Jumlah entri riwayat (default: 100)" + }, + "proxy_logs": { + "description": "Tampilkan log permintaan tingkat proxy", + "limit": "Jumlah entri log proxy (default: 100)" + } + }, + "cost": { + "description": "Tampilkan laporan biaya dengan perincian berdasarkan provider, model, combo, atau kunci API", + "period": "Rentang waktu: 1d|7d|30d|90d|ytd|all (default: 30d)", + "since": "Tanggal mulai (format ISO, mis. 2026-01-01) — menggantikan --period", + "until": "Tanggal akhir (format ISO)", + "group_by": "Kelompokkan hasil berdasarkan: provider|model|api-key|combo|day (default: provider)", + "api_key_filter": "Filter berdasarkan kunci API tertentu", + "limit": "Jumlah maksimum baris yang akan ditampilkan (default: 100)" + }, + "simulate": { + "description": "Simulasi perutean dry-run — tampilkan provider yang akan dipilih tanpa memanggil upstream", + "file": "Muat isi lengkap permintaan dari file JSON", + "model": "ID model (default: auto)", + "combo": "Paksa combo tertentu berdasarkan nama", + "reasoning": "Tingkat upaya penalaran (low|medium|high)", + "thinking": "Anggaran token untuk extended thinking", + "explain": "Cetak pohon fallback dan rentang biaya ke stderr", + "noCombo": "Tidak ditemukan combo yang cocok. Konfigurasikan dengan: omniroute combo create" + }, + "chat": { + "description": "Kirim prompt chat sekali jalan ke OmniRoute", + "file": "Baca prompt dari file", + "stdin": "Baca prompt dari stdin", + "system": "Prompt sistem", + "model": "ID model (default: auto)", + "max_tokens": "Token maksimum dalam respons", + "temperature": "Suhu sampling (0–2)", + "top_p": "Sampling nukleus top-p", + "reasoning_effort": "Tingkat upaya penalaran (low|medium|high)", + "thinking_budget": "Anggaran token untuk pemikiran lanjutan", + "combo": "Paksa kombo tertentu berdasarkan nama", + "responses_api": "Gunakan /v1/responses alih-alih /v1/chat/completions", + "stream": "Alirkan respons secara bertahap", + "no_history": "Jangan simpan ke ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Kesalahan: prompt wajib diisi (argumen posisi, --file, atau --stdin)" + } + }, + "serve": { + "description": "Mulai server OmniRoute (tindakan default)", + "starting": "Memulai server OmniRoute pada port {port}...", + "ready": "Siap di http://localhost:{port}", + "stopping": "Menghentikan server (PID {pid})...", + "stopped": "Server dihentikan.", + "notRunning": "Server tidak berjalan.", + "port": "Port yang digunakan untuk mendengarkan (default: 20128)", + "no_open": "Jangan buka browser secara otomatis", + "daemon": "Jalankan server sebagai daemon latar belakang", + "log": "Tampilkan log server secara langsung", + "no_recovery": "Nonaktifkan mulai ulang otomatis saat crash (mode debugging)", + "max_restarts": "Jumlah maksimum mulai ulang akibat crash dalam 30 detik sebelum menyerah (default: 2)", + "tray": "Mulai di baki sistem (khusus desktop, harus diaktifkan)", + "no_tray": "Nonaktifkan ikon baki sistem", + "ready_timeout": "Batas waktu probe kesiapan dalam ms (juga OMNIROUTE_READY_TIMEOUT_MS, default 60000)", + "tls_cert": "Path ke sertifikat TLS (PEM) untuk menyajikan HTTPS (juga OMNIROUTE_TLS_CERT)", + "tls_key": "Path ke kunci privat TLS (PEM) untuk menyajikan HTTPS (juga OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Cadangan", + "description": "Buat cadangan data OmniRoute", + "creating": "Membuat cadangan...", + "done": "Cadangan disimpan ke {path}", + "noFiles": "Tidak ada file untuk dicadangkan (basis data belum diinisialisasi)", + "failed": "Pencadangan gagal: {error}", + "restoring": "Memulihkan dari {path}...", + "restored": "Pemulihan selesai.", + "restoreDescription": "Pulihkan dari cadangan", + "listTitle": "Cadangan yang Tersedia", + "noBackups": "Tidak ditemukan cadangan.", + "notFound": "Cadangan tidak ditemukan: {name}", + "confirmRestore": "Timpa data saat ini dengan cadangan dari {ts}?", + "createDescription": "Buat cadangan data OmniRoute", + "nameOpt": "Nama cadangan khusus", + "cloudOpt": "Unggah cadangan ke penyimpanan cloud", + "encryptOpt": "Enkripsi cadangan dengan AES-256-GCM", + "keyFileOpt": "Jalur ke file yang berisi frasa sandi enkripsi", + "excludeOpt": "Kecualikan file yang cocok dengan pola (dapat diulangi)", + "retentionOpt": "Simpan hanya N cadangan terakhir", + "passphrasePrompt": "Frasa sandi enkripsi:", + "noPassphrase": "Frasa sandi diperlukan untuk cadangan terenkripsi.", + "cloudFailed": "Peringatan: pengunggahan ke cloud gagal. Cadangan lokal telah disimpan.", + "cloudUploaded": "Cadangan cloud telah diunggah: {url}", + "auto": { + "title": "Jadwal Pencadangan", + "enableDescription": "Aktifkan pencadangan otomatis terjadwal", + "disableDescription": "Nonaktifkan pencadangan otomatis terjadwal", + "statusDescription": "Tampilkan status jadwal pencadangan saat ini", + "cronOpt": "Ekspresi cron untuk jadwal (default: setiap hari pukul 03.00)", + "enabled": "Pencadangan otomatis diaktifkan (cron: {cron}).", + "hint": "Jadwal dibaca oleh omniroute serve saat dimulai.", + "disabled": "Pencadangan otomatis dinonaktifkan.", + "notConfigured": "Tidak ada jadwal pencadangan yang dikonfigurasi." + } + }, + "health": { + "description": "Periksa kesehatan server dan status komponen", + "noServer": "Server tidak berjalan. Mulai dengan: omniroute serve", + "title": "Kesehatan", + "status": "Status: {status}", + "uptime": "Waktu aktif: {uptime}", + "requests": "Permintaan (24 jam): {count}", + "cost": "Biaya (24 jam): ${cost}" + }, + "quota": { + "description": "Tampilkan penggunaan kuota penyedia", + "noServer": "Server tidak berjalan. Mulai dengan: omniroute serve", + "noData": "Tidak ada informasi kuota yang tersedia." + }, + "cache": { + "description": "Kelola cache respons", + "noServer": "Server tidak berjalan. Mulai dengan: omniroute serve", + "cleared": "Cache telah dibersihkan.", + "clearFailed": "Gagal membersihkan cache." + }, + "redis": { + "description": "Luncurkan kontainer Redis lokal dengan satu klik (Podman atau Docker) untuk caching dan pelacakan kuota OmniRoute" + }, + "test": { + "description": "Uji koneksi penyedia", + "noServer": "Server tidak berjalan. Mulai dengan: omniroute serve", + "testing": "Menguji {provider} / {model}...", + "passed": "Koneksi berhasil!", + "failed": "Koneksi gagal: {error}", + "allProvidersOpt": "Uji semua penyedia yang telah dikonfigurasi", + "latencyOpt": "Tampilkan pengukuran latensi (rata-rata/min/maks ms)", + "repeatOpt": "Ulangi pengujian sebanyak N kali dan gabungkan hasilnya", + "compareOpt": "Model yang dipisahkan koma untuk dibandingkan (mis. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Simpan hasil ke file JSON", + "saved": "Hasil disimpan ke {path}", + "compareTitle": "Perbandingan Model", + "compareMinTwo": "Setidaknya dua model diperlukan untuk --compare (dipisahkan koma)", + "noProviders": "Tidak ada penyedia yang dikonfigurasi. Tambahkan dengan: omniroute keys add" + }, + "update": { + "checking": "Memeriksa pembaruan...", + "upToDate": "Sudah menggunakan versi terbaru ({version}).", + "available": "Pembaruan tersedia: {current} → {latest}", + "installing": "Menginstal {latest}...", + "done": "Telah diperbarui ke {latest}. Mulai ulang server untuk menerapkannya." + }, + "mcp": { + "title": "Server MCP", + "running": "Server MCP berjalan ({transport})", + "stopped": "Server MCP dihentikan.", + "restarted": "Server MCP dimulai ulang.", + "stoppedHint": "Jalankan `omniroute mcp enable` untuk mengaktifkannya.", + "enabled": "Server MCP diaktifkan.", + "disabled": "Server MCP dinonaktifkan.", + "enable": { + "description": "Aktifkan server MCP", + "transport": "Transportasi yang digunakan: stdio|sse|streamable-http" + }, + "disable": { + "description": "Nonaktifkan server MCP" + }, + "call": { + "description": "Panggil alat MCP secara langsung", + "args": "Objek argumen JSON (sebaris)", + "args_file": "Jalur ke file argumen JSON", + "stream": "Gunakan endpoint streaming (/api/mcp/stream)", + "scope": "Cakupan yang diperlukan (dapat diulang, mis. read:health)" + }, + "scopes": { + "description": "Cantumkan cakupan MCP yang tersedia", + "tool": "Tampilkan cakupan yang diperlukan oleh alat tertentu" + }, + "tools": { + "description": "Periksa alat MCP", + "list": { + "description": "Cantumkan semua alat MCP", + "scope": "Filter berdasarkan cakupan" + }, + "info": { + "description": "Tampilkan metadata untuk alat MCP" + }, + "schema": { + "description": "Tampilkan skema JSON input/output untuk alat MCP", + "io": "Jenis skema: input|output (default: input)" + } + }, + "audit": { + "description": "Log audit MCP (alias untuk audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Cantumkan skill A2A yang tersedia dari kartu agen" + }, + "invoke": { + "description": "Jalankan skill A2A dan kembalikan ID tugas", + "input": "Objek input JSON", + "input_file": "Jalur ke file input JSON", + "wait": "Tunggu hingga tugas selesai sebelum mengembalikan hasil", + "timeout": "Batas waktu menunggu penyelesaian dalam ms (default: 60000)" + }, + "tasks": { + "description": "Kelola tugas A2A", + "list": { + "status": "Filter berdasarkan status", + "skill": "Filter berdasarkan ID skill" + }, + "watch": { + "description": "Periksa status tugas secara berkala hingga selesai" + }, + "stream": { + "description": "Streaming peristiwa eksekusi tugas melalui SSE" + }, + "logs": { + "description": "Tampilkan pesan dan artefak tugas" + } + } + }, + "policy": { + "description": "Kelola kebijakan otorisasi OmniRoute", + "list": { + "description": "Cantumkan kebijakan", + "kind": "Filter berdasarkan jenis (allow|deny|rate-limit|cost-cap)", + "scope": "Filter berdasarkan cakupan (global|api-key|provider)" + }, + "get": { + "description": "Dapatkan detail kebijakan berdasarkan ID" + }, + "create": { + "description": "Buat kebijakan dari file JSON", + "file": "Jalur ke file JSON kebijakan" + }, + "update": { + "description": "Perbarui kebijakan dari file JSON", + "file": "Jalur ke file JSON kebijakan" + }, + "delete": { + "description": "Hapus kebijakan berdasarkan ID", + "yes": "Lewati permintaan konfirmasi" + }, + "evaluate": { + "description": "Evaluasi kebijakan uji coba (exit 0=diizinkan, 4=ditolak)", + "api_key": "Kunci API yang akan dievaluasi", + "action": "Tindakan yang akan diperiksa (misalnya chat, embed, admin)", + "resource": "Jalur atau pengenal sumber daya", + "context": "Konteks tambahan sebagai objek JSON" + }, + "export": { + "description": "Ekspor semua kebijakan ke file JSON" + }, + "import": { + "description": "Impor kebijakan dari file JSON", + "overwrite": "Timpa kebijakan yang ada dengan ID yang sama" + } + }, + "compression": { + "description": "Konfigurasikan dan periksa pipeline kompresi OmniRoute", + "status": { + "description": "Tampilkan status dan pengaturan kompresi saat ini" + }, + "configure": { + "description": "Konfigurasikan pengaturan kompresi", + "engine": "Mesin kompresi (caveman|rtk|hybrid|none)", + "caveman_agg": "Agresivitas Caveman 0.0–1.0", + "rtk_budget": "Anggaran token RTK", + "language_pack": "Paket bahasa yang akan diaktifkan" + }, + "engine": { + "description": "Dapatkan atau atur mesin kompresi aktif" + }, + "combos": { + "description": "Kelola statistik kombinasi kompresi" + }, + "rules": { + "description": "Kelola aturan kompresi", + "add": { + "pattern": "Pola yang akan dicocokkan (regex atau field:pattern)", + "action": "Tindakan: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Cantumkan paket bahasa kompresi yang tersedia" + }, + "preview": { + "description": "Pratinjau efek kompresi pada permintaan", + "file": "Path ke file JSON permintaan" + } + }, + "tunnel": { + "title": "Terowongan", + "listDescription": "Cantumkan terowongan aktif", + "createDescription": "Buat terowongan", + "created": "Terowongan dibuat: {url}", + "stopped": "Terowongan dihentikan.", + "confirmStop": "Hentikan terowongan {id}?", + "stopDescription": "Hentikan terowongan", + "statusDescription": "Tampilkan status terperinci terowongan", + "logsDescription": "Tampilkan log terowongan", + "infoDescription": "Tampilkan detail konfigurasi terowongan", + "rotateDescription": "Buat URL terowongan baru", + "tailOpt": "Jumlah baris log yang akan ditampilkan", + "typeRequired": "Jenis terowongan wajib diisi.", + "noLogs": "Tidak ada log yang tersedia.", + "notAvailable": "Informasi terowongan tidak tersedia.", + "noTunnels": "Tidak ada terowongan aktif.", + "infoTitle": "Informasi terowongan: {type}", + "rotated": "URL terowongan dirotasi: {url}", + "confirmRotate": "Rotasi terowongan {type}? (URL baru akan dibuat)" + }, + "stop": { + "description": "Hentikan server OmniRoute", + "stopping": "Menghentikan server (PID {pid})...", + "stopped": "Server dihentikan.", + "notRunning": "Tidak ada server yang berjalan.", + "portFallback": "File PID tidak ditemukan, mencoba penghentian berbasis port..." + }, + "restart": { + "description": "Mulai ulang server OmniRoute", + "restarting": "Memulai ulang server OmniRoute..." + }, + "dashboard": { + "description": "Buka dasbor OmniRoute di browser", + "opening": "Membuka dasbor di {url}", + "urlOnly": "Cetak URL dasbor tanpa membuka browser", + "tui": "Buka dasbor TUI interaktif (UI terminal, 7 tab)" + }, + "models": { + "description": "Cantumkan model yang tersedia (memerlukan server)", + "search": "Filter model berdasarkan id, nama, penyedia, atau deskripsi", + "noServer": "Server tidak berjalan. Mulai dengan: omniroute serve", + "noModels": "Tidak ada model yang ditemukan." + }, + "audit": { + "description": "Akses log audit kepatuhan dan MCP", + "source": "Sumber log: all|compliance|mcp (default: all)", + "since": "Tampilkan entri sejak stempel waktu ini (ISO 8601)", + "until": "Tampilkan entri hingga stempel waktu ini (ISO 8601)", + "tail": { + "description": "Tampilkan entri log audit terbaru", + "follow": "Pantau entri baru secara terus-menerus (polling 2 detik)", + "limit": "Jumlah maksimum entri yang ditampilkan (default: 100)" + }, + "search": { + "description": "Cari entri log audit berdasarkan kata kunci", + "limit": "Jumlah maksimum hasil (default: 200)", + "actor": "Filter berdasarkan ID pelaku", + "action": "Filter berdasarkan nama tindakan" + }, + "export": { + "description": "Ekspor log audit ke file", + "format": "Format output: jsonl|csv (default: jsonl)" + }, + "stats": { + "description": "Tampilkan statistik log audit", + "period": "Periode waktu: 1d|7d|30d (default: 7d)" + }, + "get": { + "description": "Dapatkan satu entri log audit berdasarkan ID" + } + }, + "skills": { + "description": "Kelola skill OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Cantumkan skill yang terinstal", + "type": "Filter berdasarkan jenis (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Tampilkan hanya skill yang diaktifkan", + "disabled": "Tampilkan hanya skill yang dinonaktifkan", + "api_key": "Filter berdasarkan kunci API" + }, + "get": { + "description": "Dapatkan detail skill berdasarkan ID" + }, + "install": { + "description": "Instal skill dari file atau URL", + "from_file": "Jalur ke file definisi JSON skill", + "from_url": "URL definisi skill jarak jauh", + "type": "Jenis skill (sandbox|custom|hybrid)", + "enable": "Aktifkan skill setelah instalasi" + }, + "enable": { + "description": "Aktifkan skill berdasarkan ID" + }, + "disable": { + "description": "Nonaktifkan skill berdasarkan ID", + "yes": "Lewati prompt konfirmasi" + }, + "delete": { + "description": "Hapus skill berdasarkan ID", + "yes": "Lewati prompt konfirmasi" + }, + "execute": { + "description": "Jalankan skill berdasarkan ID", + "input": "Objek input JSON", + "input_file": "Jalur ke file input JSON", + "timeout": "Batas waktu eksekusi dalam milidetik (default: 30000)" + }, + "executions": { + "description": "Cantumkan riwayat eksekusi skill", + "skill": "Filter berdasarkan ID keterampilan", + "limit": "Jumlah hasil maksimum (default: 50)", + "status": "Filter berdasarkan status (running|completed|failed)" + }, + "skillssh": { + "description": "Kelola keterampilan yang diinstal melalui SSH" + }, + "marketplace": { + "description": "Telusuri dan instal keterampilan dari marketplace" + }, + "mp": { + "search": { + "description": "Cari paket marketplace", + "category": "Filter berdasarkan kategori", + "tag": "Filter berdasarkan tag", + "limit": "Jumlah hasil maksimum (default: 30)", + "sort": "Urutkan berdasarkan: downloads|rating|recent" + }, + "info": { + "description": "Tampilkan detail paket dan readme" + }, + "install": { + "description": "Instal paket marketplace", + "version": "Versi paket (default: latest)", + "enable": "Aktifkan setelah instalasi", + "yes": "Lewati permintaan konfirmasi" + }, + "categories": { + "description": "Cantumkan kategori marketplace" + }, + "featured": { + "description": "Tampilkan paket marketplace unggulan" + } + } + }, + "memory": { + "description": "Kelola memori percakapan OmniRoute (FTS5 + vector)", + "search": { + "description": "Cari entri memori berdasarkan kueri semantik", + "type": "Filter berdasarkan jenis memori (user|feedback|project|reference)", + "limit": "Jumlah hasil maksimum (default: 20)", + "api_key": "Filter berdasarkan kunci API", + "token_budget": "Batasi jumlah total token dalam hasil" + }, + "add": { + "description": "Tambahkan entri memori baru", + "content": "Konten teks memori", + "file": "Baca konten dari file", + "type": "Jenis memori (default: user)", + "metadata": "Objek metadata JSON", + "api_key": "Kaitkan dengan kunci API" + }, + "clear": { + "description": "Hapus entri memori yang cocok dengan filter", + "type": "Filter berdasarkan jenis", + "older": "Hapus entri yang lebih lama dari durasi (30d, 6m, 1y)", + "api_key": "Filter berdasarkan kunci API", + "yes": "Lewati permintaan konfirmasi" + }, + "list": { + "description": "Cantumkan entri memori tanpa pemeringkatan pencarian", + "type": "Filter berdasarkan jenis", + "limit": "Jumlah hasil maksimum (default: 100)", + "api_key": "Filter berdasarkan kunci API" + }, + "get": { + "description": "Dapatkan satu entri memori berdasarkan ID" + }, + "delete": { + "description": "Hapus entri memori berdasarkan ID", + "yes": "Lewati permintaan konfirmasi" + }, + "health": { + "description": "Tampilkan kesehatan subsistem memori (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Kelola koneksi penyedia OAuth", + "providers": { + "description": "Cantumkan penyedia yang mendukung OAuth beserta jenis alurnya" + }, + "start": { + "description": "Mulai alur otorisasi OAuth untuk penyedia", + "provider": "ID penyedia (gemini, copilot, cursor, …)", + "no_browser": "Cetak URL saja — jangan buka browser", + "import_system": "Impor kredensial secara otomatis dari konfigurasi sistem lokal", + "social": "Penyedia login sosial (google|github) — wajib untuk kiro", + "timeout": "Batas waktu menunggu otorisasi dalam milidetik (default: 300000)" + }, + "status": { + "description": "Cantumkan koneksi OAuth aktif", + "provider": "Filter berdasarkan ID penyedia" + }, + "revoke": { + "description": "Cabut koneksi OAuth", + "provider": "ID penyedia yang akan dicabut", + "connection_id": "Cabut koneksi tertentu berdasarkan ID", + "yes": "Lewati permintaan konfirmasi" + } + }, + "cloud": { + "description": "Kelola tugas agen AI cloud (codex, devin, jules)", + "agents": { + "description": "Cantumkan agen cloud yang tersedia" + }, + "agent": { + "description": "Kelola tugas agen cloud {agent}", + "auth": { + "description": "Otorisasi {agent} melalui OAuth" + } + }, + "task": { + "description": "Kelola tugas agen cloud", + "create": { + "description": "Buat tugas agen baru", + "title": "Judul tugas (default ke 80 karakter pertama dari prompt)", + "prompt": "Teks prompt tugas", + "prompt_file": "Baca prompt dari file", + "repo": "URL repositori yang akan dikloning untuk tugas", + "branch": "Nama branch yang akan digunakan", + "metadata": "Objek metadata JSON" + }, + "list": { + "description": "Cantumkan tugas agen", + "status": "Filter berdasarkan status (running|completed|failed|cancelled)", + "limit": "Hasil maksimum (default: 50)" + }, + "get": { + "description": "Dapatkan detail tugas berdasarkan ID" + }, + "status": { + "description": "Cetak status tugas (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Batalkan tugas yang sedang berjalan", + "yes": "Lewati permintaan konfirmasi" + }, + "approve": { + "description": "Setujui rencana agen untuk memulai eksekusi" + }, + "message": { + "description": "Kirim pesan ke tugas yang sedang berjalan" + } + }, + "sources": { + "description": "Cantumkan file sumber yang dihasilkan oleh tugas" + } + }, + "eval": { + "description": "Kelola rangkaian evaluasi dan prosesnya", + "suites": { + "description": "Kelola rangkaian evaluasi", + "list": { + "description": "Cantumkan suite evaluasi" + }, + "get": { + "description": "Dapatkan detail suite evaluasi berdasarkan ID" + }, + "create": { + "description": "Buat suite evaluasi dari file JSON", + "file": "Jalur ke file JSON definisi suite" + } + }, + "run": { + "description": "Mulai proses evaluasi untuk sebuah suite", + "model": "ID model yang akan dievaluasi (default: auto)", + "combo": "Paksa kombinasi tertentu berdasarkan nama", + "concurrency": "Jumlah sampel serentak (default: 4)", + "tag": "Beri tag pada proses ini untuk pemfilteran nanti", + "watch": "Pantau progres proses hingga selesai" + }, + "list": { + "description": "Cantumkan proses evaluasi", + "suite": "Filter berdasarkan ID suite", + "status": "Filter berdasarkan status", + "since": "Tampilkan proses sejak stempel waktu ini", + "limit": "Jumlah hasil maksimum (default: 50)" + }, + "get": { + "description": "Dapatkan detail proses evaluasi berdasarkan ID" + }, + "results": { + "description": "Tampilkan hasil sampel untuk proses evaluasi", + "failed": "Tampilkan hanya sampel yang gagal" + }, + "cancel": { + "description": "Batalkan proses evaluasi yang sedang berjalan", + "yes": "Lewati permintaan konfirmasi" + }, + "scorecard": { + "description": "Tampilkan kartu skor untuk proses evaluasi yang telah selesai" + } + }, + "webhooks": { + "description": "Kelola webhook OmniRoute", + "events": { + "description": "Cantumkan semua jenis peristiwa webhook yang tersedia" + }, + "list": { + "description": "Cantumkan webhook yang dikonfigurasi" + }, + "get": { + "description": "Dapatkan detail webhook berdasarkan ID" + }, + "add": { + "description": "Daftarkan webhook baru", + "url": "URL tujuan", + "events": "Daftar jenis peristiwa yang dipisahkan koma", + "secret": "Rahasia penandatanganan HMAC", + "header": "Header tambahan dalam format key=value (dapat diulang)", + "no_enabled": "Buat webhook dalam keadaan dinonaktifkan" + }, + "update": { + "description": "Perbarui webhook yang ada", + "enabled": "Atur status aktif (true|false)" + }, + "remove": { + "description": "Hapus webhook", + "yes": "Lewati permintaan konfirmasi" + }, + "test": { + "description": "Kirim peristiwa pengujian ke webhook", + "event": "Jenis peristiwa yang akan disimulasikan (default: request.completed)" + } + }, "program": { "description": "OmniRoute — Router AI Cerdas dengan Fallback Otomatis", "version": "Cetak versi dan keluar", @@ -26,7 +832,509 @@ "context": "Konteks/profil server untuk perintah ini", "lang": "Atur bahasa tampilan CLI (menggantikan OMNIROUTE_LANG)" }, - "redis": { - "description": "Luncurkan kontainer Redis lokal dengan satu klik (Podman atau Docker) untuk caching dan pelacakan kuota OmniRoute" + "files": { + "description": "Kelola file (unggah, cantumkan, dapatkan, unduh, hapus)", + "list": { + "purpose": "Filter berdasarkan tujuan", + "limit": "Hasil maksimum" + }, + "get": { + "description": "Dapatkan metadata file" + }, + "upload": { + "description": "Unggah file", + "purpose": "Tujuan file (batch, assistants, fine-tune)" + }, + "content": { + "description": "Unduh konten file", + "out": "Simpan ke path (default: stdout)" + }, + "delete": { + "yes": "Lewati konfirmasi" + } + }, + "batches": { + "description": "Kelola tugas batch yang kompatibel dengan OpenAI", + "list": { + "status": "Filter berdasarkan status", + "limit": "Hasil maksimum" + }, + "create": { + "description": "Buat tugas batch", + "inputFile": "ID file input", + "endpoint": "Endpoint target", + "window": "Jangka waktu penyelesaian", + "metadata": "Tambahkan metadata key=value" + }, + "submit": { + "description": "Unggah file JSONL dan buat batch", + "jsonl": "Path ke file JSONL", + "endpoint": "Endpoint target", + "wait": "Tunggu hingga selesai" + }, + "cancel": { + "yes": "Lewati konfirmasi" + }, + "wait": { + "timeout": "Batas waktu dalam ms" + }, + "output": { + "out": "Simpan output ke path" + }, + "errors": { + "out": "Simpan kesalahan ke path" + } + }, + "translator": { + "description": "Terjemahkan body permintaan antarformat LLM", + "detect": { + "description": "Deteksi format body" + }, + "translate": { + "description": "Konversi body dari satu format ke format lainnya" + }, + "send": { + "description": "Terjemahkan dan teruskan ke upstream" + }, + "stream": { + "description": "Terjemahkan body permintaan secara streaming" + }, + "from": "Format sumber (openai|anthropic|gemini|cohere)", + "to": "Format target (openai|anthropic|gemini|cohere)", + "file": "Path ke file JSON body permintaan", + "out": "Simpan output ke file", + "model": "Ganti model", + "history": { + "limit": "Hasil maksimum" + } + }, + "pricing": { + "description": "Kelola data harga untuk model", + "sync": { + "description": "Sinkronkan harga dari sumber upstream", + "provider": "Filter berdasarkan provider", + "force": "Paksa sinkronisasi ulang" + }, + "list": { + "provider": "Filter berdasarkan provider", + "model": "Filter berdasarkan model", + "limit": "Hasil maksimum" + }, + "defaults": { + "description": "Kelola harga default", + "input": "Biaya input per 1 juta token (USD)", + "output": "Biaya output per 1 juta token (USD)", + "cacheRead": "Biaya baca cache per 1 juta token (USD)", + "cacheWrite": "Biaya tulis cache per 1 juta token (USD)" + }, + "diff": { + "description": "Tampilkan perbedaan dari harga upstream", + "model": "Filter berdasarkan model" + } + }, + "radar": { + "description": "Periksa dan sinkronkan feed katalog Radar lokal", + "status": "Tampilkan pengaturan Radar lokal dan status cache feed", + "sync": "Sinkronkan katalog, rujukan, penawaran, dan Intel melalui server lokal" + }, + "resilience": { + "description": "Periksa dan kelola mekanisme ketahanan", + "status": { + "provider": "Filter berdasarkan penyedia" + }, + "breakers": { + "provider": "Filter berdasarkan penyedia" + }, + "cooldowns": { + "provider": "Filter berdasarkan penyedia", + "connectionId": "Filter berdasarkan ID koneksi" + }, + "lockouts": { + "provider": "Filter berdasarkan penyedia", + "model": "Filter berdasarkan model" + }, + "reset": { + "description": "Atur ulang status pemutus/cooldown", + "provider": "Penyedia yang akan diatur ulang", + "connectionId": "ID koneksi yang akan diatur ulang", + "model": "Model yang pengunciannya akan diatur ulang", + "allCooldowns": "Atur ulang semua cooldown untuk penyedia", + "yes": "Lewati konfirmasi" + }, + "profile": { + "description": "Kelola profil ketahanan", + "name": "Nama profil" + }, + "config": { + "description": "Kelola konfigurasi ketahanan", + "threshold": "Ambang batas kegagalan", + "resetTimeout": "Batas waktu pengaturan ulang dalam ms", + "baseCooldown": "Cooldown dasar dalam ms" + } + }, + "nodes": { + "description": "Kelola node penyedia (endpoint)", + "list": { + "provider": "Filter berdasarkan penyedia", + "enabled": "Hanya tampilkan node yang diaktifkan" + }, + "add": { + "provider": "Nama penyedia", + "baseUrl": "URL dasar untuk node", + "name": "Nama node", + "weight": "Bobot penyeimbangan beban", + "region": "Tag wilayah", + "authHeader": "Header autentikasi khusus (key=value)" + }, + "update": { + "baseUrl": "URL dasar baru", + "name": "Nama baru", + "weight": "Bobot baru", + "region": "Wilayah baru", + "enabled": "Aktifkan atau nonaktifkan (true|false)" + }, + "remove": { + "yes": "Lewati konfirmasi" + }, + "validate": { + "baseUrl": "URL yang akan divalidasi", + "provider": "Provider yang digunakan untuk validasi" + }, + "test": { + "description": "Kirim permintaan pengujian ke node" + }, + "metrics": { + "description": "Tampilkan metrik node", + "period": "Periode waktu (misalnya 24h, 7d)" + } + }, + "context": { + "description": "Konfigurasikan pipeline rekayasa konteks (Caveman, RTK)", + "analytics": { + "period": "Periode waktu (misalnya 7d, 30d)" + }, + "caveman": { + "description": "Kelola kompresor konteks Caveman", + "config": { + "description": "Tampilkan atau perbarui konfigurasi Caveman", + "aggressiveness": "Agresivitas 0.0–1.0", + "maxShrinkPct": "Persentase penyusutan maksimum", + "preserveTags": "Tag yang dipisahkan koma untuk dipertahankan" + } + }, + "rtk": { + "description": "Kelola pengoptimal konteks RTK", + "config": { + "description": "Tampilkan atau perbarui konfigurasi RTK", + "tokenBudget": "Anggaran token untuk RTK", + "reservePct": "Persentase cadangan" + }, + "filters": { + "description": "Kelola filter RTK", + "pattern": "Pola filter (regex)", + "priority": "Prioritas filter (default: 100)", + "action": "Tindakan filter: drop|shrink|replace", + "yes": "Lewati konfirmasi" + }, + "test": { + "file": "Jalur ke file JSON permintaan" + } + }, + "combos": { + "description": "Pengelolaan kombo berbasis konteks" + } + }, + "sessions": { + "description": "Periksa dan kelola sesi aktif", + "list": { + "user": "Filter berdasarkan pengguna", + "kind": "Filter berdasarkan jenis (dashboard|api-key|mcp|a2a)", + "active": "Tampilkan hanya sesi aktif", + "limit": "Jumlah hasil maksimum (default: 100)" + }, + "expire": { + "yes": "Lewati konfirmasi" + }, + "expireAll": { + "user": "Pengguna yang sesinya akan diakhiri", + "yes": "Lewati konfirmasi" + } + }, + "tags": { + "description": "Kelola tag sumber daya", + "add": { + "color": "Warna tag (hex atau nama)", + "description": "Deskripsi tag" + }, + "remove": { + "yes": "Lewati konfirmasi" + }, + "assign": { + "tag": "Nama tag", + "to": "Sumber daya target sebagai type:id (mis. provider:openai)" + }, + "unassign": { + "tag": "Nama tag", + "from": "Sumber daya asal sebagai type:id" + } + }, + "openapi": { + "description": "Akses dan uji spesifikasi OpenAPI OmniRoute", + "dump": { + "description": "Ekspor spesifikasi OpenAPI ke stdout atau file", + "format": "Format keluaran: yaml|json (default: yaml)", + "out": "Simpan ke jalur file" + }, + "validate": { + "description": "Validasi spesifikasi OpenAPI" + }, + "try": { + "description": "Uji endpoint API melalui spesifikasi", + "method": "Metode HTTP (default: GET)", + "body": "Jalur ke file JSON isi permintaan", + "query": "Parameter kueri sebagai key=value (dapat diulang)", + "header": "Header sebagai key=value (dapat diulang)" + }, + "endpoints": { + "description": "Cantumkan semua endpoint API", + "search": "Filter berdasarkan jalur atau ringkasan" + }, + "paths": { + "description": "Cantumkan semua jalur API" + } + }, + "combo": { + "title": "Kombinasi", + "switched": "Kombinasi aktif: {name}", + "created": "Kombinasi dibuat: {name}", + "deleted": "Kombinasi dihapus: {name}", + "noCombos": "Tidak ada kombinasi yang dikonfigurasi.", + "confirmDelete": "Hapus kombinasi {name}?", + "suggest": { + "description": "Sarankan kombinasi terbaik untuk suatu tugas menggunakan penilaian AI", + "task": "Deskripsi tugas", + "maxCost": "Biaya maksimum per permintaan dalam USD", + "maxLatencyMs": "Latensi maksimum dalam milidetik", + "weights": "Bobot penilaian JSON, mis. {\"latency\":0.7,\"cost\":0.3}", + "top": "Jumlah kandidat teratas yang ditampilkan (default: 5)", + "explain": "Cetak alasan ke stderr", + "switch": "Aktifkan kombinasi berperingkat teratas" + } + }, + "oneproxy": { + "description": "Kelola kumpulan upstream OneProxy", + "stats": { + "provider": "Filter berdasarkan penyedia", + "period": "Periode waktu (default: 24h)" + }, + "fetch": { + "description": "Ambil proxy dari kumpulan", + "count": "Jumlah proxy yang akan diambil (default: 1)", + "type": "Jenis proxy: http|socks5 (default: http)" + }, + "rotate": { + "description": "Paksa rotasi proxy", + "provider": "Penyedia yang akan dirotasi", + "connectionId": "ID koneksi tertentu yang akan dirotasi" + }, + "config": { + "description": "Tampilkan atau perbarui konfigurasi OneProxy", + "enabled": "Aktifkan kumpulan proksi (true|false)", + "poolSize": "Ukuran kumpulan", + "providerSource": "URL untuk penyedia proksi", + "rotationPolicy": "Kebijakan rotasi: sticky|per-request|periodic" + }, + "pool": { + "description": "Tampilkan kumpulan proksi saat ini beserta metrik" + } + }, + "open": { + "description": "Buka halaman dasbor OmniRoute tertentu di browser", + "url": "Hanya cetak URL, jangan buka browser" + }, + "telemetry": { + "description": "Akses data telemetri agregat", + "summary": { + "description": "Tampilkan ringkasan telemetri agregat", + "period": "Periode waktu: 24h|7d|30d (default: 24h)", + "compareTo": "Bandingkan dengan periode sebelumnya" + }, + "export": { + "description": "Ekspor peristiwa telemetri ke JSONL", + "out": "Jalur file keluaran (default: telemetry.jsonl)", + "period": "Periode waktu untuk ekspor (default: 7d)" + } + }, + "sync": { + "description": "Sinkronkan konfigurasi antarinstans OmniRoute", + "push": { + "description": "Kirim konfigurasi ke cloud atau instans jarak jauh", + "target": "Target (cloud atau context:name)", + "bundle": "Bagian bundel yang akan disinkronkan", + "dryRun": "Pratinjau tanpa menerapkan" + }, + "pull": { + "description": "Ambil konfigurasi dari cloud atau instans jarak jauh", + "source": "Sumber (cloud atau context:name)", + "merge": "Gabungkan dengan konfigurasi yang ada", + "replace": "Ganti konfigurasi yang ada", + "dryRun": "Pratinjau tanpa menerapkan" + }, + "diff": { + "source": "Konteks sumber", + "target": "Konteks target" + }, + "bundle": { + "description": "Ekspor konfigurasi sebagai file bundel", + "include": "Bagian yang akan disertakan (dipisahkan koma)" + }, + "import": { + "description": "Impor file bundel", + "dryRun": "Validasi tanpa menerapkan" + }, + "initialize": { + "fromCloud": "Inisialisasi dari cadangan cloud" + }, + "tokens": { + "description": "Kelola token sinkronisasi", + "create": { + "name": "Nama token", + "scope": "Cakupan token", + "ttl": "TTL token (misalnya 30d)" + }, + "revoke": { + "yes": "Lewati konfirmasi" + } + }, + "resolve": { + "description": "Selesaikan konflik sinkronisasi secara interaktif" + } + }, + "config": { + "contexts": { + "description": "Kelola konteks/profil server (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Kelola bahasa tampilan CLI", + "getDescription": "Tampilkan kode bahasa yang sedang aktif", + "setDescription": "Atur bahasa tampilan dan simpan ke konfigurasi", + "listDescription": "Tampilkan semua bahasa yang tersedia", + "listTitle": "Bahasa yang Tersedia", + "current": "Bahasa: {code} ({name})", + "saved": "Bahasa diatur ke {code} ({name}).", + "noCode": "Kode bahasa diperlukan. Jalankan 'omniroute config lang list' untuk melihat kode yang tersedia.", + "unknown": "Kode bahasa tidak dikenal: {code}. Jalankan 'omniroute config lang list' untuk melihat kode yang tersedia.", + "alreadySet": "Bahasa sudah diatur ke {code}.", + "envHint": "Kiat: Anda juga dapat mengatur OMNIROUTE_LANG={code} di lingkungan Anda." + } + }, + "completion": { + "description": "Buat atau instal skrip pelengkapan shell", + "zsh": "Cetak skrip pelengkapan zsh", + "bash": "Cetak skrip pelengkapan bash", + "fish": "Cetak skrip pelengkapan fish", + "install": "Instal skrip pelengkapan secara global untuk shell yang terdeteksi", + "refresh": "Perbarui cache kombinasi/penyedia/model" + }, + "logs": { + "description": "Streaming atau ekspor log permintaan", + "follow": "Streaming log secara real-time", + "filter": "Filter berdasarkan level (error,warn,info) — dipisahkan koma", + "lines": "Jumlah baris yang akan diambil", + "timeout": "Batas waktu koneksi dalam milidetik", + "baseUrl": "URL dasar API OmniRoute", + "requestId": "Filter berdasarkan ID permintaan", + "apiKey": "Filter berdasarkan kunci API", + "combo": "Filter berdasarkan nama kombinasi", + "status": "Filter berdasarkan kode status HTTP", + "durationMin": "Durasi minimum permintaan dalam milidetik", + "durationMax": "Durasi maksimum permintaan dalam milidetik", + "export": "Simpan log ke file (json/jsonl/csv)", + "exported": "Log disimpan ke {path}", + "stopped": "Streaming log dihentikan.", + "streamError": "Kesalahan streaming log: {message}" + }, + "tray": { + "description": "Kontrol ikon baki sistem", + "show": "Tampilkan ikon baki (jika server berjalan dengan --tray)", + "hide": "Sembunyikan ikon baki", + "quit": "Keluar dari OmniRoute melalui baki" + }, + "autostart": { + "description": "Kelola mulai otomatis OmniRoute saat boot (Linux: layanan pengguna systemd)", + "enable": "Aktifkan mulai otomatis saat boot", + "disable": "Nonaktifkan mulai otomatis saat boot", + "toggle": "Alihkan mulai otomatis saat boot", + "status": "Tampilkan status mulai otomatis" + }, + "runtime": { + "description": "Kelola dependensi runtime native", + "check": "Periksa status dependensi native di direktori runtime", + "repair": "Instal ulang dependensi native di direktori runtime", + "repair_force": "Paksa instal ulang meskipun valid", + "clean": "Hapus direktori runtime (mengosongkan ruang disk)", + "clean_yes": "Lewati konfirmasi" + }, + "repl": { + "description": "REPL multi-giliran interaktif dengan LLM", + "model": "Model yang akan digunakan (default: otomatis)", + "combo": "Nama kombinasi yang akan digunakan", + "system": "Prompt sistem", + "resume": "Lanjutkan sesi tersimpan berdasarkan nama" + }, + "plugin": { + "description": "Kelola plugin CLI (omniroute-cmd-*)", + "list": "Cantumkan plugin yang terinstal", + "install": "Instal plugin dari npm atau jalur lokal", + "remove": "Hapus plugin yang terinstal", + "info": "Tampilkan detail plugin yang terinstal", + "search": "Cari plugin yang tersedia di registri npm", + "update": "Perbarui plugin yang terinstal", + "scaffold": "Buat kerangka boilerplate plugin baru" + }, + "launch": { + "description": "Luncurkan Claude Code yang diarahkan ke OmniRoute (lokal atau jarak jauh, dengan --profile)", + "token": "Token yang harus dikirim oleh klien Claude (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute tidak dapat dijangkau di {port}. Jalankan dengan 'omniroute serve'.", + "notFound": "CLI 'claude' tidak ditemukan di PATH." + }, + "run": { + "description": "Luncurkan target CLI yang didukung melalui OmniRoute" + }, + "setupClaude": { + "description": "Buat profil Claude Code di ~/.claude/profiles dari katalog model OmniRoute" + }, + "connect": { + "description": "Hubungkan ke server OmniRoute jarak jauh dan masuk ke mode jarak jauh" + }, + "tokens": { + "description": "Kelola token akses CLI tercakup (mode jarak jauh)" + }, + "configure": { + "description": "Pilih penyedia+model dari server aktif dan konfigurasikan CLI lokal yang didukung" + }, + "launchCodex": { + "description": "Luncurkan Codex CLI yang diarahkan ke OmniRoute (VPS lokal atau jarak jauh)" + }, + "setupCodex": { + "description": "Buat file profil ~/.codex dari katalog model langsung OmniRoute" + }, + "packs": { + "description": "Kelola paket runtime opsional (ML / otomatisasi browser)", + "listDescription": "Cantumkan paket opsional dan status instalasinya", + "installDescription": "Instal paket opsional ke DATA_DIR", + "verifyDescription": "Verifikasi paket yang terinstal berdasarkan indeks checksum bawaan", + "removeDescription": "Hapus paket opsional yang terinstal", + "sourceOpt": "Direktori yang berisi payload paket dan indeks paket", + "warnNoIndex": "optional-packs.index.json tidak ditemukan — instalasi/verifikasi tidak tersedia dalam checkout ini (bundel desktop menyertakannya)", + "errUnknown": "paket tidak dikenal: {name}", + "errNoIndex": "indeks paket tidak ditemukan; berikan --source yang berisi payload paket (bundel desktop menyertakannya di samping aplikasi)", + "installed": "paket \"{name}\" telah diinstal dan diverifikasi di {dir}", + "restartHint": "mulai ulang server OmniRoute (atau aplikasi desktop) agar runtime memuat paket tersebut", + "removed": "paket \"{name}\" dihapus", + "notInstalled": "paket \"{name}\" belum diinstal", + "verifyOk": "semua paket yang diinstal telah diverifikasi", + "verifyFailed": "{count} paket gagal diverifikasi", + "noneInstalled": "tidak ada paket opsional yang diinstal" } } diff --git a/bin/cli/locales/ig.json b/bin/cli/locales/ig.json index 17294a8be6..446035aa27 100644 --- a/bin/cli/locales/ig.json +++ b/bin/cli/locales/ig.json @@ -256,6 +256,7 @@ "max_restarts": "Ọnụọgụ mmalitegharị kachasị elu mgbe ọ dara n'ime 30s tupu ịkwụsị mbọ (ndabara: 2)", "tray": "Malite na tray sistemụ (naanị na desktọpụ, ma ọ bụrụ na ahọrọ ya)", "no_tray": "Gbanyụọ akara ngosi tray sistemụ", + "ready_timeout": "Oge njedebe nyocha ịdị njikere na ms (yana OMNIROUTE_READY_TIMEOUT_MS, ndabara bụ 60000)", "tls_cert": "Ụzọ gaa na asambodo TLS (PEM) iji nye HTTPS (nakwa OMNIROUTE_TLS_CERT)", "tls_key": "Ụzọ gaa na igodo nzuzo TLS (PEM) iji nye HTTPS (nakwa OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Sava MCP na-arụ ọrụ ({transport})", "stopped": "Sava MCP akwụsịla.", "restarted": "Amalitegharịrị sava MCP.", + "stoppedHint": "Gbaa `omniroute mcp enable` iji gbanye ya.", + "enabled": "Agbanyela sava MCP.", + "disabled": "Agbanyụọla sava MCP.", + "enable": { + "description": "Gbanye sava MCP", + "transport": "Usoro mbufe a ga-eji: stdio|sse|streamable-http" + }, + "disable": { + "description": "Gbanyụọ sava MCP" + }, "call": { "description": "Kpọọ ngwa MCP ozugbo", "args": "Ihe arụmụka JSON (n'ime ahịrị)", diff --git a/bin/cli/locales/it.json b/bin/cli/locales/it.json index 5dbb164aaf..deb8825ab8 100644 --- a/bin/cli/locales/it.json +++ b/bin/cli/locales/it.json @@ -14,6 +14,812 @@ "jsonOpt": "Output come JSON", "yesOpt": "Salta la conferma" }, + "setup": { + "title": "Configurazione di OmniRoute", + "passwordPrompt": "Password amministratore", + "providerPrompt": "Provider predefinito (lascia vuoto per ignorare)", + "done": "Configurazione completata", + "passwordSet": "Password amministratore configurata", + "providerSet": "Provider configurato: {name}", + "testingProvider": "Test della connessione al provider: {name}", + "testPassed": "Test del provider superato", + "testFailed": "Test del provider non riuscito: {error}", + "loginEnabled": "Accesso: abilitato (password aggiornata)", + "loginDisabled": "Accesso: disabilitato", + "providerInfo": "Provider: {info}", + "opencode": "Installa e configura il pacchetto @omniroute/opencode-plugin incluso per OpenCode" + }, + "doctor": { + "title": "Diagnostica di OmniRoute", + "dbOk": "Database: OK ({path})", + "dbMissing": "Database: non inizializzato — esegui `omniroute setup`", + "portOk": "Porta {port}: disponibile", + "portConflict": "Porta {port}: utilizzata da un altro processo", + "encryptionOk": "Chiave di crittografia: configurata", + "encryptionMissing": "Chiave di crittografia mancante — esegui `omniroute setup`", + "allGood": "Tutti i controlli sono stati superati.", + "warnings": "{count} avviso/i — vedi sopra." + }, + "providers": { + "title": "Provider", + "noProviders": "Nessun provider configurato. Esegui: omniroute setup", + "testing": "Test di {name}...", + "available": "{count} provider disponibili", + "connected": "Connesso", + "disconnected": "Disconnesso", + "validationFailed": "Convalida non riuscita: {error}", + "metrics": { + "description": "Mostra le metriche delle prestazioni del provider (latenza, percentuale di successo, costo)", + "provider": "Filtra per ID provider", + "connection_id": "Filtra per ID connessione", + "period": "Periodo di tempo: 1h|6h|24h|7d|30d (predefinito: 24h)", + "metric": "Concentrati su un campo di metrica specifico", + "sort": "Ordina per campo (decrescente)", + "limit": "Numero massimo di righe (predefinito: 50)", + "watch": "Aggiorna ogni 5s (modalità live)", + "compare": "ID provider separati da virgole da confrontare affiancati" + }, + "metric_single": { + "description": "Ottieni un singolo valore di metrica per una connessione specifica" + }, + "rotate": { + "description": "Ruota la chiave API upstream per una connessione a un provider", + "newKeyOpt": "Nuovo valore della chiave API (da evitare: preferisci --from-env)", + "fromEnvOpt": "Leggi la nuova chiave dalla variabile d'ambiente VAR", + "oauthOpt": "Avvia invece il flusso di riautenticazione OAuth", + "skipTestOpt": "Salta il test di connettività successivo alla rotazione", + "dryRunOpt": "Mostra cosa cambierebbe senza apportare modifiche", + "confirmPrompt": "Sostituire la chiave API per la connessione \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] La chiave per \"{name}\" ({id}) verrebbe ruotata. Nessuna modifica apportata.", + "oauthHint": "Connessione OAuth — esegui: omniroute oauth {provider}", + "envVarEmpty": "La variabile d'ambiente {var} non è impostata o è vuota.", + "success": "Chiave ruotata per \"{name}\". Esegui `providers test {id}` per verificarla.", + "testPassed": "Test successivo alla rotazione superato.", + "testFailed": "Test successivo alla rotazione non riuscito: {error}" + }, + "status": { + "description": "Mostra lo stato delle chiavi per tutte le connessioni ai provider (età, scadenza, cooldown)", + "providerOpt": "Filtra per nome del provider", + "header": "ID Provider Nome Stato scadenza Stato test Cooldown fino a", + "noData": "Nessun dato disponibile sulle connessioni ai provider.", + "requiresServer": "providers status richiede che il server OmniRoute sia in esecuzione." + } + }, + "keys": { + "title": "Chiavi API", + "addDescription": "Aggiungi o aggiorna una chiave API per un provider", + "listDescription": "Elenca tutte le chiavi API configurate", + "removeDescription": "Rimuovi una chiave API per un provider", + "regenerateDescription": "Rigenera una chiave API OmniRoute", + "revokeDescription": "Revoca una chiave API OmniRoute", + "revealDescription": "Mostra il valore non mascherato della chiave API", + "usageDescription": "Mostra l'utilizzo recente di una chiave API", + "usageLimitOpt": "Numero di richieste recenti", + "rotateDescription": "Genera una nuova chiave e invalida quella precedente", + "graceOpt": "Periodo di tolleranza (ms) prima che la vecchia chiave venga invalidata", + "stdinOpt": "Leggi la chiave API da stdin invece che dall'argomento", + "added": "Chiave aggiunta per {provider}.", + "removed": "Chiave rimossa.", + "listed": "{count} chiave/i.", + "noKeys": "Nessuna chiave configurata.", + "noUsage": "Nessun dato di utilizzo trovato.", + "confirmRemove": "Rimuovere la chiave {id}?", + "confirmRegenerate": "Rigenerare la chiave {id}?", + "confirmRevoke": "Revocare la chiave {id}?", + "confirmRotate": "Ruotare la chiave {id}? (la vecchia chiave verrà invalidata dopo il periodo di tolleranza)", + "regenerated": "Rigenerata. Nuova chiave: {key}", + "revoked": "Chiave {id} revocata.", + "rotated": "Chiave {id} ruotata. ID della nuova chiave: {newId}", + "revealWarning": "⚠ Verrà visualizzata la chiave completa senza mascheramento. Assicurati che lo schermo sia al riparo da sguardi indiscreti.", + "providerRequired": "Il provider è obbligatorio.", + "keyRequired": "La chiave API è obbligatoria.", + "stdinEmpty": "Nessuna chiave API fornita tramite stdin.", + "unknownProvider": "Provider sconosciuto: {provider}", + "policy": { + "title": "Criteri della chiave", + "showDescription": "Mostra i criteri relativi a limiti di richieste e costi per una chiave", + "setDescription": "Imposta i criteri relativi a limiti di richieste e costi per una chiave", + "rateLimitOpt": "Numero massimo di richieste al minuto", + "maxCostOpt": "Costo massimo giornaliero (USD)", + "allowedModelsOpt": "Elenco separato da virgole dei modelli consentiti", + "nothingToSet": "Nessun campo dei criteri specificato. Usa --rate-limit, --max-cost o --allowed-models.", + "updated": "Criteri aggiornati." + }, + "expiration": { + "title": "Scadenza della chiave", + "listDescription": "Elenca le chiavi in scadenza a breve", + "daysOpt": "Mostra le chiavi in scadenza entro N giorni", + "none": "Nessuna chiave in scadenza entro {days} giorni.", + "listTitle": "Chiavi in scadenza entro {days} giorni:" + } + }, + "authExport": { + "description": "Esporta le credenziali DECRITTOGRAFATE del provider (solo in locale, output in testo non crittografato)", + "idOpt": "Esporta solo la connessione corrispondente a questo ID/nome/provider", + "formatOpt": "Formato di output: json o env", + "outOpt": "Scrivi l'output in un file anziché su stdout (con autorizzazioni 0600)", + "forceOpt": "Conferma di essere consapevole che questa operazione mostra/scrive segreti in testo non crittografato", + "warning": "⚠ Questa operazione mostra/scrive chiavi API e token OAuth DECRITTOGRAFATI in testo non crittografato. Assicurati che lo schermo, la cronologia della shell e qualsiasi file di output rimangano privati.", + "confirmHeading": "⚠ AVVISO: questa operazione esporta le credenziali DECRITTOGRAFATE del provider in testo non crittografato", + "confirmBody": "Questo comando decrittografa e mostra/scrive apiKey, accessToken, refreshToken e\nidToken per le connessioni selezionate. Tratta l'output come un segreto.", + "confirmFooter": "Per confermare, esegui:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY è obbligatoria per esportare le credenziali.", + "notFound": "Connessione non trovata: {id}", + "invalidFormat": "Formato non valido: {format}. Usa json o env." + }, + "stream": { + "description": "Trasmetti in streaming una risposta di chat con modalità di ispezione SSE", + "file": "Leggi il prompt da un file", + "stdin": "Leggi il prompt da stdin", + "model": "ID del modello (predefinito: auto)", + "system": "Prompt di sistema", + "combo": "Forza una combinazione specifica in base al nome", + "max_tokens": "Numero massimo di token nella risposta", + "responses_api": "Usa /v1/responses anziché /v1/chat/completions", + "raw": "Stampa le righe SSE grezze così come vengono ricevute", + "debug": "Stampa le informazioni sui tempi di ciascun blocco su stderr", + "save": "Salva tutti gli eventi SSE in un file .jsonl", + "error": { + "empty_prompt": "Errore: il prompt è obbligatorio (argomento posizionale, --file o --stdin)" + } + }, + "usage": { + "description": "Analisi dell'utilizzo, budget, quote e log", + "analytics": { + "description": "Mostra le analisi aggregate sull'utilizzo", + "period": "Intervallo di tempo: 1d|7d|30d|90d|ytd|all (predefinito: 30d)", + "provider": "Filtra per ID provider" + }, + "budget": { + "description": "Gestisci i budget di spesa", + "set": { + "scope": "Ambito del budget (predefinito: globale)", + "period": "Periodo del budget: daily|weekly|monthly (predefinito: monthly)" + } + }, + "quota": { + "description": "Mostra l'utilizzo della quota del provider", + "provider": "Filtra per ID provider", + "check": "Mostra se la quota è disponibile per una nuova richiesta" + }, + "logs": { + "description": "Mostra i log delle chiamate delle richieste", + "limit": "Numero di voci di log da restituire (predefinito: 100)", + "search": "Query di ricerca per filtrare i log", + "since": "Restituisci i log a partire da questo timestamp", + "follow": "Monitora continuamente le nuove voci di log", + "api_key": "Filtra i log per chiave API" + }, + "utilization": { + "description": "Mostra le metriche di utilizzo delle chiavi API", + "api_key": "Filtra per chiave API" + }, + "history": { + "description": "Mostra la cronologia delle richieste", + "limit": "Numero di voci della cronologia (predefinito: 100)" + }, + "proxy_logs": { + "description": "Mostra i log delle richieste a livello di proxy", + "limit": "Numero di voci del log del proxy (predefinito: 100)" + } + }, + "cost": { + "description": "Mostra il report dei costi con ripartizione per provider, modello, combinazione o chiave API", + "period": "Intervallo di tempo: 1d|7d|30d|90d|ytd|all (predefinito: 30d)", + "since": "Data di inizio (formato ISO, ad es. 2026-01-01) — sostituisce --period", + "until": "Data di fine (formato ISO)", + "group_by": "Raggruppa i risultati per: provider|model|api-key|combo|day (predefinito: provider)", + "api_key_filter": "Filtra per una chiave API specifica", + "limit": "Numero massimo di righe da mostrare (predefinito: 100)" + }, + "simulate": { + "description": "Simulazione del routing senza esecuzione — mostra quali provider verrebbero selezionati senza effettuare chiamate upstream", + "file": "Carica il corpo completo della richiesta da un file JSON", + "model": "ID del modello (predefinito: auto)", + "combo": "Forza una combinazione specifica per nome", + "reasoning": "Livello di impegno del ragionamento (low|medium|high)", + "thinking": "Budget di token per il ragionamento esteso", + "explain": "Stampa l'albero di fallback e l'intervallo dei costi su stderr", + "noCombo": "Nessuna combinazione corrispondente trovata. Configurane una con: omniroute combo create" + }, + "chat": { + "description": "Invia un prompt di chat singolo a OmniRoute", + "file": "Leggi il prompt da un file", + "stdin": "Leggi il prompt da stdin", + "system": "Prompt di sistema", + "model": "ID modello (predefinito: auto)", + "max_tokens": "Numero massimo di token nella risposta", + "temperature": "Temperatura di campionamento (0–2)", + "top_p": "Campionamento top-p nucleus", + "reasoning_effort": "Livello di intensità del ragionamento (low|medium|high)", + "thinking_budget": "Budget di token per il ragionamento esteso", + "combo": "Forza una combinazione specifica per nome", + "responses_api": "Usa /v1/responses anziché /v1/chat/completions", + "stream": "Trasmetti la risposta in modo incrementale", + "no_history": "Non salvare in ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Errore: il prompt è obbligatorio (argomento posizionale, --file o --stdin)" + } + }, + "serve": { + "description": "Avvia il server OmniRoute (azione predefinita)", + "starting": "Avvio del server OmniRoute sulla porta {port}...", + "ready": "Disponibile all'indirizzo http://localhost:{port}", + "stopping": "Arresto del server (PID {pid})...", + "stopped": "Server arrestato.", + "notRunning": "Il server non è in esecuzione.", + "port": "Porta su cui restare in ascolto (predefinita: 20128)", + "no_open": "Non aprire automaticamente il browser", + "daemon": "Esegui il server come demone in background", + "log": "Mostra i log del server in linea", + "no_recovery": "Disabilita il riavvio automatico in caso di arresto anomalo (modalità di debug)", + "max_restarts": "Numero massimo di riavvii in seguito ad arresti anomali entro 30 s prima di rinunciare (predefinito: 2)", + "tray": "Avvia nell'area di notifica di sistema (solo desktop, attivazione facoltativa)", + "no_tray": "Disabilita l'icona nell'area di notifica di sistema", + "ready_timeout": "Timeout della verifica di disponibilità in ms (anche OMNIROUTE_READY_TIMEOUT_MS, valore predefinito 60000)", + "tls_cert": "Percorso di un certificato TLS (PEM) per fornire HTTPS (anche OMNIROUTE_TLS_CERT)", + "tls_key": "Percorso della chiave privata TLS (PEM) per fornire HTTPS (anche OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Backup", + "description": "Crea un backup dei dati di OmniRoute", + "creating": "Creazione del backup...", + "done": "Backup salvato in {path}", + "noFiles": "Nessun file di cui eseguire il backup (database non inizializzato)", + "failed": "Backup non riuscito: {error}", + "restoring": "Ripristino da {path}...", + "restored": "Ripristino completato.", + "restoreDescription": "Ripristina da un backup", + "listTitle": "Backup disponibili", + "noBackups": "Nessun backup trovato.", + "notFound": "Backup non trovato: {name}", + "confirmRestore": "Sovrascrivere i dati correnti con il backup del {ts}?", + "createDescription": "Crea un backup dei dati di OmniRoute", + "nameOpt": "Nome personalizzato del backup", + "cloudOpt": "Carica il backup nell'archiviazione cloud", + "encryptOpt": "Crittografa il backup con AES-256-GCM", + "keyFileOpt": "Percorso del file contenente la passphrase di crittografia", + "excludeOpt": "Escludi i file corrispondenti al pattern (opzione ripetibile)", + "retentionOpt": "Conserva solo gli ultimi N backup", + "passphrasePrompt": "Passphrase di crittografia:", + "noPassphrase": "La passphrase è obbligatoria per un backup crittografato.", + "cloudFailed": "Avviso: caricamento nel cloud non riuscito. Il backup locale è stato salvato.", + "cloudUploaded": "Backup caricato nel cloud: {url}", + "auto": { + "title": "Pianificazione dei backup", + "enableDescription": "Abilita i backup automatici pianificati", + "disableDescription": "Disabilita i backup automatici pianificati", + "statusDescription": "Mostra lo stato attuale della pianificazione dei backup", + "cronOpt": "Espressione cron per la pianificazione (impostazione predefinita: ogni giorno alle 3:00)", + "enabled": "Backup automatico abilitato (cron: {cron}).", + "hint": "La pianificazione viene letta da omniroute serve all'avvio.", + "disabled": "Backup automatico disabilitato.", + "notConfigured": "Nessuna pianificazione dei backup configurata." + } + }, + "health": { + "description": "Controlla l'integrità del server e lo stato dei componenti", + "noServer": "Il server non è in esecuzione. Avvialo con: omniroute serve", + "title": "Integrità", + "status": "Stato: {status}", + "uptime": "Tempo di attività: {uptime}", + "requests": "Richieste (24 h): {count}", + "cost": "Costo (24 h): ${cost}" + }, + "quota": { + "description": "Mostra l'utilizzo delle quote dei provider", + "noServer": "Il server non è in esecuzione. Avvialo con: omniroute serve", + "noData": "Nessuna informazione disponibile sulle quote." + }, + "cache": { + "description": "Gestisci la cache delle risposte", + "noServer": "Il server non è in esecuzione. Avvialo con: omniroute serve", + "cleared": "Cache svuotata.", + "clearFailed": "Impossibile svuotare la cache." + }, + "redis": { + "description": "Avvia un contenitore Redis locale con un clic (Podman o Docker) per la cache e il tracciamento delle quote di OmniRoute" + }, + "test": { + "description": "Testa la connessione a un provider", + "noServer": "Il server non è in esecuzione. Avvialo con: omniroute serve", + "testing": "Test di {provider} / {model}...", + "passed": "Connessione riuscita!", + "failed": "Connessione non riuscita: {error}", + "allProvidersOpt": "Testa tutti i provider configurati", + "latencyOpt": "Mostra le misurazioni della latenza (media/min/max ms)", + "repeatOpt": "Ripeti il test N volte e aggrega i risultati", + "compareOpt": "Modelli separati da virgole da confrontare (ad es. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Salva i risultati in un file JSON", + "saved": "Risultati salvati in {path}", + "compareTitle": "Confronto tra modelli", + "compareMinTwo": "Per --compare sono necessari almeno due modelli (separati da virgole)", + "noProviders": "Nessun provider configurato. Aggiungine uno con: omniroute keys add" + }, + "update": { + "checking": "Verifica della disponibilità di aggiornamenti...", + "upToDate": "La versione è già aggiornata ({version}).", + "available": "Aggiornamento disponibile: {current} → {latest}", + "installing": "Installazione di {latest}...", + "done": "Aggiornamento a {latest} completato. Riavvia il server per applicarlo." + }, + "mcp": { + "title": "Server MCP", + "running": "Server MCP in esecuzione ({transport})", + "stopped": "Server MCP arrestato.", + "restarted": "Server MCP riavviato.", + "stoppedHint": "Esegui `omniroute mcp enable` per attivarlo.", + "enabled": "Server MCP abilitato.", + "disabled": "Server MCP disabilitato.", + "enable": { + "description": "Abilita il server MCP", + "transport": "Trasporto da utilizzare: stdio|sse|streamable-http" + }, + "disable": { + "description": "Disabilita il server MCP" + }, + "call": { + "description": "Richiama direttamente uno strumento MCP", + "args": "Oggetto degli argomenti JSON (inline)", + "args_file": "Percorso del file degli argomenti JSON", + "stream": "Usa l'endpoint di streaming (/api/mcp/stream)", + "scope": "Ambito richiesto (ripetibile, ad es. read:health)" + }, + "scopes": { + "description": "Elenca gli ambiti MCP disponibili", + "tool": "Mostra gli ambiti richiesti da uno strumento specifico" + }, + "tools": { + "description": "Esamina gli strumenti MCP", + "list": { + "description": "Elenca tutti gli strumenti MCP", + "scope": "Filtra per ambito" + }, + "info": { + "description": "Mostra i metadati di uno strumento MCP" + }, + "schema": { + "description": "Mostra lo schema JSON di input/output per uno strumento MCP", + "io": "Tipo di schema: input|output (predefinito: input)" + } + }, + "audit": { + "description": "Registro di audit MCP (alias di audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Elenca le competenze A2A disponibili dalla scheda dell'agente" + }, + "invoke": { + "description": "Invoca una competenza A2A e restituisce l'ID dell'attività", + "input": "Oggetto JSON di input", + "input_file": "Percorso del file JSON di input", + "wait": "Attendi il completamento dell'attività prima di restituire il risultato", + "timeout": "Timeout di attesa per il completamento in ms (predefinito: 60000)" + }, + "tasks": { + "description": "Gestisci le attività A2A", + "list": { + "status": "Filtra per stato", + "skill": "Filtra per ID della competenza" + }, + "watch": { + "description": "Verifica periodicamente lo stato dell'attività fino al completamento" + }, + "stream": { + "description": "Trasmetti gli eventi di esecuzione dell'attività tramite SSE" + }, + "logs": { + "description": "Mostra i messaggi e gli artefatti dell'attività" + } + } + }, + "policy": { + "description": "Gestisci le policy di autorizzazione di OmniRoute", + "list": { + "description": "Elenca le policy", + "kind": "Filtra per tipo (allow|deny|rate-limit|cost-cap)", + "scope": "Filtra per ambito (global|api-key|provider)" + }, + "get": { + "description": "Ottieni i dettagli della policy tramite ID" + }, + "create": { + "description": "Crea una policy da un file JSON", + "file": "Percorso del file JSON della policy" + }, + "update": { + "description": "Aggiorna una policy da un file JSON", + "file": "Percorso del file JSON della policy" + }, + "delete": { + "description": "Elimina una policy tramite ID", + "yes": "Salta la richiesta di conferma" + }, + "evaluate": { + "description": "Valutazione di prova della policy (codice di uscita 0=consentito, 4=negato)", + "api_key": "Chiave API da valutare", + "action": "Azione da verificare (ad es. chat, embed, admin)", + "resource": "Percorso o identificatore della risorsa", + "context": "Contesto aggiuntivo come oggetto JSON" + }, + "export": { + "description": "Esporta tutte le policy in un file JSON" + }, + "import": { + "description": "Importa le policy da un file JSON", + "overwrite": "Sovrascrivi le policy esistenti con lo stesso ID" + } + }, + "compression": { + "description": "Configura e ispeziona la pipeline di compressione di OmniRoute", + "status": { + "description": "Mostra lo stato e le impostazioni correnti della compressione" + }, + "configure": { + "description": "Configura le impostazioni di compressione", + "engine": "Motore di compressione (caveman|rtk|hybrid|none)", + "caveman_agg": "Aggressività di Caveman 0.0–1.0", + "rtk_budget": "Budget di token RTK", + "language_pack": "Pacchetto linguistico da attivare" + }, + "engine": { + "description": "Ottieni o imposta il motore di compressione attivo" + }, + "combos": { + "description": "Gestisci le statistiche delle combinazioni di compressione" + }, + "rules": { + "description": "Gestisci le regole di compressione", + "add": { + "pattern": "Pattern da trovare (regex o campo:pattern)", + "action": "Azione: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Elenca i pacchetti linguistici di compressione disponibili" + }, + "preview": { + "description": "Visualizza in anteprima l'effetto della compressione su una richiesta", + "file": "Percorso del file JSON della richiesta" + } + }, + "tunnel": { + "title": "Tunnel", + "listDescription": "Elenca i tunnel attivi", + "createDescription": "Crea un tunnel", + "created": "Tunnel creato: {url}", + "stopped": "Tunnel arrestato.", + "confirmStop": "Arrestare il tunnel {id}?", + "stopDescription": "Arresta un tunnel", + "statusDescription": "Mostra lo stato dettagliato di un tunnel", + "logsDescription": "Mostra i log di un tunnel", + "infoDescription": "Mostra i dettagli di configurazione di un tunnel", + "rotateDescription": "Genera un nuovo URL del tunnel", + "tailOpt": "Numero di righe di log da mostrare", + "typeRequired": "Il tipo di tunnel è obbligatorio.", + "noLogs": "Nessun log disponibile.", + "notAvailable": "Informazioni sul tunnel non disponibili.", + "noTunnels": "Nessun tunnel attivo.", + "infoTitle": "Informazioni sul tunnel: {type}", + "rotated": "URL del tunnel rigenerato: {url}", + "confirmRotate": "Rigenerare l'URL del tunnel {type}? (verrà generato un nuovo URL)" + }, + "stop": { + "description": "Arresta il server OmniRoute", + "stopping": "Arresto del server (PID {pid})...", + "stopped": "Server arrestato.", + "notRunning": "Nessun server in esecuzione.", + "portFallback": "Nessun file PID trovato, tentativo di arresto basato sulla porta..." + }, + "restart": { + "description": "Riavvia il server OmniRoute", + "restarting": "Riavvio del server OmniRoute..." + }, + "dashboard": { + "description": "Apri la dashboard di OmniRoute in un browser", + "opening": "Apertura della dashboard all'indirizzo {url}", + "urlOnly": "Stampa l'URL della dashboard senza aprire il browser", + "tui": "Apri la dashboard TUI interattiva (interfaccia utente per terminale, 7 schede)" + }, + "models": { + "description": "Elenca i modelli disponibili (richiede il server)", + "search": "Filtra i modelli per ID, nome, provider o descrizione", + "noServer": "Il server non è in esecuzione. Avvialo con: omniroute serve", + "noModels": "Nessun modello trovato." + }, + "audit": { + "description": "Accedi ai log di audit di conformità e MCP", + "source": "Origine dei log: all|compliance|mcp (predefinita: all)", + "since": "Restituisci le voci a partire da questo timestamp (ISO 8601)", + "until": "Restituisci le voci fino a questo timestamp (ISO 8601)", + "tail": { + "description": "Mostra le voci recenti del log di audit", + "follow": "Monitora continuamente le nuove voci (polling ogni 2 s)", + "limit": "Numero massimo di voci da mostrare (predefinito: 100)" + }, + "search": { + "description": "Cerca le voci del log di audit per parola chiave", + "limit": "Numero massimo di risultati (predefinito: 200)", + "actor": "Filtra per ID dell'attore", + "action": "Filtra per nome dell'azione" + }, + "export": { + "description": "Esporta il log di audit in un file", + "format": "Formato di output: jsonl|csv (predefinito: jsonl)" + }, + "stats": { + "description": "Mostra le statistiche del log di audit", + "period": "Periodo di tempo: 1d|7d|30d (predefinito: 7d)" + }, + "get": { + "description": "Ottieni una singola voce del log di audit tramite ID" + } + }, + "skills": { + "description": "Gestisci le skill di OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Elenca le skill installate", + "type": "Filtra per tipo (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Mostra solo le skill abilitate", + "disabled": "Mostra solo le skill disabilitate", + "api_key": "Filtra per chiave API" + }, + "get": { + "description": "Ottieni i dettagli di una skill tramite ID" + }, + "install": { + "description": "Installa una skill da un file o un URL", + "from_file": "Percorso del file di definizione JSON della skill", + "from_url": "URL della definizione remota della skill", + "type": "Tipo di skill (sandbox|custom|hybrid)", + "enable": "Abilita la skill dopo l'installazione" + }, + "enable": { + "description": "Abilita una skill tramite ID" + }, + "disable": { + "description": "Disabilita una skill tramite ID", + "yes": "Salta la richiesta di conferma" + }, + "delete": { + "description": "Elimina una skill tramite ID", + "yes": "Salta la richiesta di conferma" + }, + "execute": { + "description": "Esegui una skill tramite ID", + "input": "Oggetto di input JSON", + "input_file": "Percorso del file di input JSON", + "timeout": "Timeout di esecuzione in ms (predefinito: 30000)" + }, + "executions": { + "description": "Elenca la cronologia di esecuzione delle skill", + "skill": "Filtra per ID skill", + "limit": "Numero massimo di risultati (predefinito: 50)", + "status": "Filtra per stato (running|completed|failed)" + }, + "skillssh": { + "description": "Gestisci le skill installate tramite SSH" + }, + "marketplace": { + "description": "Sfoglia e installa le skill dal marketplace" + }, + "mp": { + "search": { + "description": "Cerca pacchetti nel marketplace", + "category": "Filtra per categoria", + "tag": "Filtra per tag", + "limit": "Numero massimo di risultati (predefinito: 30)", + "sort": "Ordina per: downloads|rating|recent" + }, + "info": { + "description": "Mostra i dettagli e il file readme del pacchetto" + }, + "install": { + "description": "Installa un pacchetto dal marketplace", + "version": "Versione del pacchetto (predefinita: latest)", + "enable": "Abilita dopo l'installazione", + "yes": "Ignora la richiesta di conferma" + }, + "categories": { + "description": "Elenca le categorie del marketplace" + }, + "featured": { + "description": "Mostra i pacchetti in evidenza del marketplace" + } + } + }, + "memory": { + "description": "Gestisci la memoria conversazionale di OmniRoute (FTS5 + vettoriale)", + "search": { + "description": "Cerca le voci di memoria tramite query semantica", + "type": "Filtra per tipo di memoria (user|feedback|project|reference)", + "limit": "Numero massimo di risultati (predefinito: 20)", + "api_key": "Filtra per chiave API", + "token_budget": "Limita il numero totale di token nei risultati" + }, + "add": { + "description": "Aggiungi una nuova voce di memoria", + "content": "Contenuto testuale della memoria", + "file": "Leggi il contenuto da un file", + "type": "Tipo di memoria (predefinito: user)", + "metadata": "Oggetto di metadati JSON", + "api_key": "Associa a una chiave API" + }, + "clear": { + "description": "Elimina le voci di memoria corrispondenti ai filtri", + "type": "Filtra per tipo", + "older": "Elimina le voci più vecchie della durata specificata (30d, 6m, 1y)", + "api_key": "Filtra per chiave API", + "yes": "Ignora la richiesta di conferma" + }, + "list": { + "description": "Elenca le voci di memoria senza ordinamento per pertinenza della ricerca", + "type": "Filtra per tipo", + "limit": "Numero massimo di risultati (predefinito: 100)", + "api_key": "Filtra per chiave API" + }, + "get": { + "description": "Ottieni una singola voce di memoria tramite ID" + }, + "delete": { + "description": "Elimina una voce di memoria tramite ID", + "yes": "Salta la richiesta di conferma" + }, + "health": { + "description": "Mostra lo stato del sottosistema di memoria (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Gestisci le connessioni ai provider OAuth", + "providers": { + "description": "Elenca i provider che supportano OAuth e i relativi tipi di flusso" + }, + "start": { + "description": "Avvia il flusso di autorizzazione OAuth per un provider", + "provider": "ID del provider (gemini, copilot, cursor, …)", + "no_browser": "Stampa solo l'URL — non aprire il browser", + "import_system": "Importa automaticamente le credenziali dalla configurazione del sistema locale", + "social": "Provider di accesso social (google|github) — obbligatorio per kiro", + "timeout": "Timeout di attesa dell'autorizzazione in ms (valore predefinito: 300000)" + }, + "status": { + "description": "Elenca le connessioni OAuth attive", + "provider": "Filtra per ID del provider" + }, + "revoke": { + "description": "Revoca una connessione OAuth", + "provider": "ID del provider da revocare", + "connection_id": "Revoca una connessione specifica tramite ID", + "yes": "Salta la richiesta di conferma" + } + }, + "cloud": { + "description": "Gestisci le attività degli agenti AI nel cloud (codex, devin, jules)", + "agents": { + "description": "Elenca gli agenti cloud disponibili" + }, + "agent": { + "description": "Gestisci le attività dell'agente cloud {agent}", + "auth": { + "description": "Autorizza {agent} tramite OAuth" + } + }, + "task": { + "description": "Gestisci le attività degli agenti cloud", + "create": { + "description": "Crea una nuova attività dell'agente", + "title": "Titolo dell'attività (per impostazione predefinita, i primi 80 caratteri del prompt)", + "prompt": "Testo del prompt dell'attività", + "prompt_file": "Leggi il prompt da un file", + "repo": "URL del repository da clonare per l'attività", + "branch": "Nome del branch da utilizzare", + "metadata": "Oggetto JSON con i metadati" + }, + "list": { + "description": "Elenca le attività dell'agente", + "status": "Filtra per stato (running|completed|failed|cancelled)", + "limit": "Numero massimo di risultati (valore predefinito: 50)" + }, + "get": { + "description": "Ottieni i dettagli dell'attività tramite ID" + }, + "status": { + "description": "Stampa lo stato dell'attività (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Annulla un'attività in esecuzione", + "yes": "Salta la richiesta di conferma" + }, + "approve": { + "description": "Approva il piano dell'agente per avviare l'esecuzione" + }, + "message": { + "description": "Invia un messaggio a un'attività in esecuzione" + } + }, + "sources": { + "description": "Elenca i file sorgente prodotti da un'attività" + } + }, + "eval": { + "description": "Gestisci le suite di valutazione e le esecuzioni", + "suites": { + "description": "Gestisci le suite di valutazione", + "list": { + "description": "Elenca le suite di valutazione" + }, + "get": { + "description": "Ottieni i dettagli della suite di valutazione in base all'ID" + }, + "create": { + "description": "Crea una suite di valutazione da un file JSON", + "file": "Percorso del file JSON di definizione della suite" + } + }, + "run": { + "description": "Avvia un'esecuzione di valutazione per una suite", + "model": "ID del modello da valutare (predefinito: auto)", + "combo": "Forza una combinazione specifica in base al nome", + "concurrency": "Numero di campioni simultanei (predefinito: 4)", + "tag": "Assegna un tag a questa esecuzione per filtrarla in seguito", + "watch": "Monitora l'avanzamento dell'esecuzione fino al completamento" + }, + "list": { + "description": "Elenca le esecuzioni di valutazione", + "suite": "Filtra per ID della suite", + "status": "Filtra per stato", + "since": "Restituisci le esecuzioni successive a questo timestamp", + "limit": "Numero massimo di risultati (predefinito: 50)" + }, + "get": { + "description": "Ottieni i dettagli dell'esecuzione di valutazione in base all'ID" + }, + "results": { + "description": "Mostra i risultati dei campioni per un'esecuzione di valutazione", + "failed": "Mostra solo i campioni non riusciti" + }, + "cancel": { + "description": "Annulla un'esecuzione di valutazione in corso", + "yes": "Salta la richiesta di conferma" + }, + "scorecard": { + "description": "Mostra la scheda dei punteggi per un'esecuzione di valutazione completata" + } + }, + "webhooks": { + "description": "Gestisci i webhook di OmniRoute", + "events": { + "description": "Elenca tutti i tipi di evento webhook disponibili" + }, + "list": { + "description": "Elenca i webhook configurati" + }, + "get": { + "description": "Ottieni i dettagli del webhook in base all'ID" + }, + "add": { + "description": "Registra un nuovo webhook", + "url": "URL di destinazione", + "events": "Elenco di tipi di evento separati da virgole", + "secret": "Segreto di firma HMAC", + "header": "Intestazione aggiuntiva nel formato key=value (ripetibile)", + "no_enabled": "Crea il webhook in stato disabilitato" + }, + "update": { + "description": "Aggiorna un webhook esistente", + "enabled": "Imposta lo stato di abilitazione (true|false)" + }, + "remove": { + "description": "Elimina un webhook", + "yes": "Salta la richiesta di conferma" + }, + "test": { + "description": "Invia un evento di test a un webhook", + "event": "Tipo di evento da simulare (predefinito: request.completed)" + } + }, "program": { "description": "OmniRoute — Router AI intelligente con fallback automatico", "version": "Stampa la versione ed esci", @@ -26,7 +832,509 @@ "context": "Contesto/profilo del server per questo comando", "lang": "Imposta la lingua di visualizzazione della CLI (sovrascrive OMNIROUTE_LANG)" }, - "redis": { - "description": "Avvia un contenitore Redis locale con un clic (Podman o Docker) per la cache e il tracciamento delle quote di OmniRoute" + "files": { + "description": "Gestisci i file (carica, elenca, recupera, scarica, elimina)", + "list": { + "purpose": "Filtra per scopo", + "limit": "Numero massimo di risultati" + }, + "get": { + "description": "Ottieni i metadati del file" + }, + "upload": { + "description": "Carica un file", + "purpose": "Scopo del file (batch, assistants, fine-tune)" + }, + "content": { + "description": "Scarica il contenuto del file", + "out": "Salva nel percorso (predefinito: stdout)" + }, + "delete": { + "yes": "Salta la conferma" + } + }, + "batches": { + "description": "Gestisci i processi batch compatibili con OpenAI", + "list": { + "status": "Filtra per stato", + "limit": "Numero massimo di risultati" + }, + "create": { + "description": "Crea un processo batch", + "inputFile": "ID del file di input", + "endpoint": "Endpoint di destinazione", + "window": "Finestra di completamento", + "metadata": "Aggiungi metadati chiave=valore" + }, + "submit": { + "description": "Carica un file JSONL e crea un processo batch", + "jsonl": "Percorso del file JSONL", + "endpoint": "Endpoint di destinazione", + "wait": "Attendi il completamento" + }, + "cancel": { + "yes": "Salta la conferma" + }, + "wait": { + "timeout": "Timeout in ms" + }, + "output": { + "out": "Salva l'output nel percorso" + }, + "errors": { + "out": "Salva gli errori nel percorso" + } + }, + "translator": { + "description": "Traduci i corpi delle richieste tra formati LLM", + "detect": { + "description": "Rileva il formato del corpo" + }, + "translate": { + "description": "Converti il corpo da un formato a un altro" + }, + "send": { + "description": "Traduci e inoltra all'upstream" + }, + "stream": { + "description": "Traduci in streaming il corpo di una richiesta" + }, + "from": "Formato di origine (openai|anthropic|gemini|cohere)", + "to": "Formato di destinazione (openai|anthropic|gemini|cohere)", + "file": "Percorso del file JSON del corpo della richiesta", + "out": "Salva l'output in un file", + "model": "Sovrascrivi il modello", + "history": { + "limit": "Numero massimo di risultati" + } + }, + "pricing": { + "description": "Gestisci i dati sui prezzi dei modelli", + "sync": { + "description": "Sincronizza i prezzi dalle fonti upstream", + "provider": "Filtra per provider", + "force": "Forza la risincronizzazione" + }, + "list": { + "provider": "Filtra per provider", + "model": "Filtra per modello", + "limit": "Risultati massimi" + }, + "defaults": { + "description": "Gestisci i prezzi predefiniti", + "input": "Costo di input per 1 milione di token (USD)", + "output": "Costo di output per 1 milione di token (USD)", + "cacheRead": "Costo di lettura della cache per 1 milione di token (USD)", + "cacheWrite": "Costo di scrittura nella cache per 1 milione di token (USD)" + }, + "diff": { + "description": "Mostra le differenze rispetto ai prezzi upstream", + "model": "Filtra per modello" + } + }, + "radar": { + "description": "Esamina e sincronizza i feed del catalogo Radar locale", + "status": "Mostra le impostazioni di Radar locale e lo stato della cache dei feed", + "sync": "Sincronizza catalogo, referral, offerte e Intel tramite il server locale" + }, + "resilience": { + "description": "Esamina e gestisci i meccanismi di resilienza", + "status": { + "provider": "Filtra per provider" + }, + "breakers": { + "provider": "Filtra per provider" + }, + "cooldowns": { + "provider": "Filtra per provider", + "connectionId": "Filtra per ID connessione" + }, + "lockouts": { + "provider": "Filtra per provider", + "model": "Filtra per modello" + }, + "reset": { + "description": "Reimposta lo stato dell'interruttore/cooldown", + "provider": "Provider da reimpostare", + "connectionId": "ID connessione da reimpostare", + "model": "Modello per cui reimpostare il blocco", + "allCooldowns": "Reimposta tutti i cooldown per il provider", + "yes": "Ignora la conferma" + }, + "profile": { + "description": "Gestisci il profilo di resilienza", + "name": "Nome del profilo" + }, + "config": { + "description": "Gestisci la configurazione di resilienza", + "threshold": "Soglia di errore", + "resetTimeout": "Timeout di reimpostazione in ms", + "baseCooldown": "Cooldown di base in ms" + } + }, + "nodes": { + "description": "Gestisci i nodi (endpoint) del provider", + "list": { + "provider": "Filtra per provider", + "enabled": "Mostra solo i nodi abilitati" + }, + "add": { + "provider": "Nome del provider", + "baseUrl": "URL di base del nodo", + "name": "Nome del nodo", + "weight": "Peso di bilanciamento del carico", + "region": "Tag della regione", + "authHeader": "Header di autenticazione personalizzato (key=value)" + }, + "update": { + "baseUrl": "Nuovo URL di base", + "name": "Nuovo nome", + "weight": "Nuovo peso", + "region": "Nuova regione", + "enabled": "Abilita o disabilita (true|false)" + }, + "remove": { + "yes": "Salta la conferma" + }, + "validate": { + "baseUrl": "URL da convalidare", + "provider": "Provider rispetto al quale eseguire la convalida" + }, + "test": { + "description": "Invia una richiesta di test al nodo" + }, + "metrics": { + "description": "Mostra le metriche del nodo", + "period": "Periodo di tempo (ad es. 24h, 7d)" + } + }, + "context": { + "description": "Configura la pipeline di ingegnerizzazione del contesto (Caveman, RTK)", + "analytics": { + "period": "Periodo di tempo (ad es. 7d, 30d)" + }, + "caveman": { + "description": "Gestisci il compressore di contesto Caveman", + "config": { + "description": "Mostra o aggiorna la configurazione di Caveman", + "aggressiveness": "Aggressività 0.0–1.0", + "maxShrinkPct": "Percentuale massima di riduzione", + "preserveTags": "Tag separati da virgole da preservare" + } + }, + "rtk": { + "description": "Gestisci l'ottimizzatore di contesto RTK", + "config": { + "description": "Mostra o aggiorna la configurazione di RTK", + "tokenBudget": "Budget di token per RTK", + "reservePct": "Percentuale di riserva" + }, + "filters": { + "description": "Gestisci i filtri RTK", + "pattern": "Pattern del filtro (regex)", + "priority": "Priorità del filtro (valore predefinito: 100)", + "action": "Azione del filtro: drop|shrink|replace", + "yes": "Salta la conferma" + }, + "test": { + "file": "Percorso del file JSON della richiesta" + } + }, + "combos": { + "description": "Gestione delle combinazioni sensibili al contesto" + } + }, + "sessions": { + "description": "Ispeziona e gestisci le sessioni attive", + "list": { + "user": "Filtra per utente", + "kind": "Filtra per tipo (dashboard|api-key|mcp|a2a)", + "active": "Mostra solo le sessioni attive", + "limit": "Numero massimo di risultati (valore predefinito: 100)" + }, + "expire": { + "yes": "Salta la conferma" + }, + "expireAll": { + "user": "Utente le cui sessioni devono scadere", + "yes": "Salta la conferma" + } + }, + "tags": { + "description": "Gestisci i tag delle risorse", + "add": { + "color": "Colore del tag (esadecimale o nome)", + "description": "Descrizione del tag" + }, + "remove": { + "yes": "Salta la conferma" + }, + "assign": { + "tag": "Nome del tag", + "to": "Risorsa di destinazione nel formato type:id (es. provider:openai)" + }, + "unassign": { + "tag": "Nome del tag", + "from": "Risorsa di origine nel formato type:id" + } + }, + "openapi": { + "description": "Accedi alla specifica OpenAPI di OmniRoute ed esegui test", + "dump": { + "description": "Esporta la specifica OpenAPI su stdout o in un file", + "format": "Formato di output: yaml|json (predefinito: yaml)", + "out": "Salva nel percorso del file" + }, + "validate": { + "description": "Convalida la specifica OpenAPI" + }, + "try": { + "description": "Testa un endpoint API tramite la specifica", + "method": "Metodo HTTP (predefinito: GET)", + "body": "Percorso del file JSON contenente il corpo della richiesta", + "query": "Parametro di query nel formato key=value (ripetibile)", + "header": "Intestazione nel formato key=value (ripetibile)" + }, + "endpoints": { + "description": "Elenca tutti gli endpoint API", + "search": "Filtra per percorso o riepilogo" + }, + "paths": { + "description": "Elenca tutti i percorsi API" + } + }, + "combo": { + "title": "Combinazioni", + "switched": "Combinazione attiva: {name}", + "created": "Combinazione creata: {name}", + "deleted": "Combinazione eliminata: {name}", + "noCombos": "Nessuna combinazione configurata.", + "confirmDelete": "Eliminare la combinazione {name}?", + "suggest": { + "description": "Suggerisci la combinazione migliore per un'attività utilizzando la valutazione IA", + "task": "Descrizione dell'attività", + "maxCost": "Costo massimo per richiesta in USD", + "maxLatencyMs": "Latenza massima in millisecondi", + "weights": "Pesi di valutazione JSON, ad es. {\"latency\":0.7,\"cost\":0.3}", + "top": "Numero di candidati migliori da mostrare (predefinito: 5)", + "explain": "Stampa la motivazione su stderr", + "switch": "Attiva la combinazione con il punteggio più alto" + } + }, + "oneproxy": { + "description": "Gestisci il pool upstream di OneProxy", + "stats": { + "provider": "Filtra per provider", + "period": "Periodo di tempo (predefinito: 24h)" + }, + "fetch": { + "description": "Recupera proxy dal pool", + "count": "Numero di proxy da recuperare (predefinito: 1)", + "type": "Tipo di proxy: http|socks5 (predefinito: http)" + }, + "rotate": { + "description": "Forza la rotazione del proxy", + "provider": "Provider per cui eseguire la rotazione", + "connectionId": "ID specifico della connessione da ruotare" + }, + "config": { + "description": "Mostra o aggiorna la configurazione di OneProxy", + "enabled": "Abilita il pool di proxy (true|false)", + "poolSize": "Dimensione del pool", + "providerSource": "URL del provider di proxy", + "rotationPolicy": "Criterio di rotazione: sticky|per-request|periodic" + }, + "pool": { + "description": "Elenca il pool di proxy corrente con le metriche" + } + }, + "open": { + "description": "Apri una pagina specifica della dashboard di OmniRoute nel browser", + "url": "Stampa solo l'URL, senza aprire il browser" + }, + "telemetry": { + "description": "Accedi ai dati di telemetria aggregati", + "summary": { + "description": "Mostra il riepilogo della telemetria aggregata", + "period": "Periodo di tempo: 24h|7d|30d (predefinito: 24h)", + "compareTo": "Confronta con il periodo precedente" + }, + "export": { + "description": "Esporta gli eventi di telemetria in JSONL", + "out": "Percorso del file di output (predefinito: telemetry.jsonl)", + "period": "Periodo di tempo per l'esportazione (predefinito: 7d)" + } + }, + "sync": { + "description": "Sincronizza la configurazione tra le istanze di OmniRoute", + "push": { + "description": "Invia la configurazione al cloud o a un'istanza remota", + "target": "Destinazione (cloud o context:name)", + "bundle": "Parti del bundle da sincronizzare", + "dryRun": "Visualizza l'anteprima senza applicare" + }, + "pull": { + "description": "Recupera la configurazione dal cloud o da un'istanza remota", + "source": "Origine (cloud o context:name)", + "merge": "Unisci alla configurazione esistente", + "replace": "Sostituisci la configurazione esistente", + "dryRun": "Visualizza l'anteprima senza applicare" + }, + "diff": { + "source": "Contesto di origine", + "target": "Contesto di destinazione" + }, + "bundle": { + "description": "Esporta la configurazione come file bundle", + "include": "Parti da includere (separate da virgole)" + }, + "import": { + "description": "Importa un file bundle", + "dryRun": "Convalida senza applicare" + }, + "initialize": { + "fromCloud": "Inizializza da un backup cloud" + }, + "tokens": { + "description": "Gestisci i token di sincronizzazione", + "create": { + "name": "Nome del token", + "scope": "Ambito del token", + "ttl": "TTL del token (ad es. 30d)" + }, + "revoke": { + "yes": "Salta la conferma" + } + }, + "resolve": { + "description": "Risolvi i conflitti di sincronizzazione in modo interattivo" + } + }, + "config": { + "contexts": { + "description": "Gestisci i contesti/profili del server (aggiungi, usa, elenca, mostra, rimuovi, rinomina, esporta, importa)" + }, + "lang": { + "description": "Gestisci la lingua di visualizzazione della CLI", + "getDescription": "Mostra il codice della lingua attualmente attiva", + "setDescription": "Imposta la lingua di visualizzazione e salvala nella configurazione", + "listDescription": "Elenca tutte le lingue disponibili", + "listTitle": "Lingue disponibili", + "current": "Lingua: {code} ({name})", + "saved": "Lingua impostata su {code} ({name}).", + "noCode": "È richiesto il codice della lingua. Esegui 'omniroute config lang list' per visualizzare i codici disponibili.", + "unknown": "Codice lingua sconosciuto: {code}. Esegui 'omniroute config lang list' per visualizzare i codici disponibili.", + "alreadySet": "La lingua è già impostata su {code}.", + "envHint": "Suggerimento: puoi anche impostare OMNIROUTE_LANG={code} nel tuo ambiente." + } + }, + "completion": { + "description": "Genera o installa gli script di completamento della shell", + "zsh": "Stampa lo script di completamento per zsh", + "bash": "Stampa lo script di completamento per bash", + "fish": "Stampa lo script di completamento per fish", + "install": "Installa globalmente lo script di completamento per la shell rilevata", + "refresh": "Aggiorna la cache di combinazioni/provider/modelli" + }, + "logs": { + "description": "Trasmetti in streaming o esporta i log delle richieste", + "follow": "Trasmetti i log in tempo reale", + "filter": "Filtra per livello (error,warn,info) — separati da virgole", + "lines": "Numero di righe da recuperare", + "timeout": "Timeout di connessione in ms", + "baseUrl": "URL di base dell'API OmniRoute", + "requestId": "Filtra per ID richiesta", + "apiKey": "Filtra per chiave API", + "combo": "Filtra per nome della combinazione", + "status": "Filtra per codice di stato HTTP", + "durationMin": "Durata minima della richiesta in ms", + "durationMax": "Durata massima della richiesta in ms", + "export": "Salva i log in un file (json/jsonl/csv)", + "exported": "Log salvati in {path}", + "stopped": "Streaming dei log interrotto.", + "streamError": "Errore nello streaming dei log: {message}" + }, + "tray": { + "description": "Controlla l'icona nell'area di notifica", + "show": "Mostra l'icona nell'area di notifica (se il server è in esecuzione con --tray)", + "hide": "Nascondi l'icona nell'area di notifica", + "quit": "Chiudi OmniRoute tramite l'area di notifica" + }, + "autostart": { + "description": "Gestisci l'avvio automatico di OmniRoute all'avvio del sistema (Linux: servizio utente systemd)", + "enable": "Abilita l'avvio automatico all'avvio del sistema", + "disable": "Disabilita l'avvio automatico all'avvio del sistema", + "toggle": "Attiva o disattiva l'avvio automatico all'avvio del sistema", + "status": "Mostra lo stato dell'avvio automatico" + }, + "runtime": { + "description": "Gestisci le dipendenze native del runtime", + "check": "Controlla lo stato delle dipendenze native nella directory del runtime", + "repair": "Reinstalla le dipendenze native nella directory del runtime", + "repair_force": "Forza la reinstallazione anche se valide", + "clean": "Rimuovi la directory del runtime (libera spazio su disco)", + "clean_yes": "Salta la conferma" + }, + "repl": { + "description": "REPL interattivo multi-turn con LLM", + "model": "Modello da utilizzare (predefinito: auto)", + "combo": "Nome della combinazione da utilizzare", + "system": "Prompt di sistema", + "resume": "Riprendi una sessione salvata specificandone il nome" + }, + "plugin": { + "description": "Gestisci i plugin della CLI (omniroute-cmd-*)", + "list": "Elenca i plugin installati", + "install": "Installa un plugin da npm o da un percorso locale", + "remove": "Rimuovi un plugin installato", + "info": "Mostra i dettagli di un plugin installato", + "search": "Cerca nel registro npm i plugin disponibili", + "update": "Aggiorna i plugin installati", + "scaffold": "Genera la struttura di base di un nuovo plugin" + }, + "launch": { + "description": "Avvia Claude Code configurato per OmniRoute (locale o remoto, con --profile)", + "token": "Token che il client Claude deve inviare (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute non è raggiungibile sulla porta {port}. Avvialo con 'omniroute serve'.", + "notFound": "La CLI 'claude' non è stata trovata nel PATH." + }, + "run": { + "description": "Avvia una destinazione CLI supportata tramite OmniRoute" + }, + "setupClaude": { + "description": "Genera i profili Claude Code in ~/.claude/profiles dal catalogo dei modelli di OmniRoute" + }, + "connect": { + "description": "Connettiti a un server OmniRoute remoto e accedi alla modalità remota" + }, + "tokens": { + "description": "Gestisci i token di accesso con ambito per la CLI (modalità remota)" + }, + "configure": { + "description": "Seleziona un provider e un modello dal server attivo e configura una CLI locale supportata" + }, + "launchCodex": { + "description": "Avvia Codex CLI configurato per OmniRoute (locale o su VPS remoto)" + }, + "setupCodex": { + "description": "Genera i file dei profili in ~/.codex dal catalogo dei modelli live di OmniRoute" + }, + "packs": { + "description": "Gestisci i pacchetti runtime opzionali (ML / automazione del browser)", + "listDescription": "Elenca i pacchetti opzionali e il relativo stato di installazione", + "installDescription": "Installa un pacchetto opzionale in DATA_DIR", + "verifyDescription": "Verifica i pacchetti installati rispetto all'indice dei checksum fornito", + "removeDescription": "Rimuovi un pacchetto opzionale installato", + "sourceOpt": "Directory contenente i payload dei pacchetti e il relativo indice", + "warnNoIndex": "optional-packs.index.json non trovato — installazione e verifica non sono disponibili in questo checkout (è incluso nei bundle desktop)", + "errUnknown": "pacchetto sconosciuto: {name}", + "errNoIndex": "indice dei pacchetti non trovato; specifica --source contenente il payload del pacchetto (è incluso nei bundle desktop accanto all'app)", + "installed": "pacchetto \"{name}\" installato e verificato in {dir}", + "restartHint": "riavvia il server OmniRoute (o l'app desktop) affinché il runtime rilevi il pacchetto", + "removed": "pacchetto \"{name}\" rimosso", + "notInstalled": "il pacchetto \"{name}\" non era installato", + "verifyOk": "tutti i pacchetti installati sono stati verificati", + "verifyFailed": "verifica non riuscita per {count} pacchetto/i", + "noneInstalled": "nessun pacchetto opzionale installato" } } diff --git a/bin/cli/locales/ja.json b/bin/cli/locales/ja.json index b5b7131d2f..f6b9cd0377 100644 --- a/bin/cli/locales/ja.json +++ b/bin/cli/locales/ja.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON形式で出力", "yesOpt": "確認をスキップ" }, + "setup": { + "title": "OmniRoute セットアップ", + "passwordPrompt": "管理者パスワード", + "providerPrompt": "デフォルトプロバイダー(スキップする場合は空欄)", + "done": "セットアップが完了しました", + "passwordSet": "管理者パスワードを設定しました", + "providerSet": "設定済みプロバイダー: {name}", + "testingProvider": "プロバイダー接続をテスト中: {name}", + "testPassed": "プロバイダーテストに合格しました", + "testFailed": "プロバイダーテストに失敗しました: {error}", + "loginEnabled": "ログイン: 有効(パスワード更新済み)", + "loginDisabled": "ログイン: 無効", + "providerInfo": "プロバイダー: {info}", + "opencode": "OpenCode 用の同梱 @omniroute/opencode-plugin をインストールして設定" + }, + "doctor": { + "title": "OmniRoute 診断", + "dbOk": "データベース: 正常({path})", + "dbMissing": "データベース: 初期化されていません — `omniroute setup` を実行してください", + "portOk": "ポート {port}: 使用可能", + "portConflict": "ポート {port}: 別のプロセスが使用中", + "encryptionOk": "暗号化キー: 設定済み", + "encryptionMissing": "暗号化キーがありません — `omniroute setup` を実行してください", + "allGood": "すべてのチェックに合格しました。", + "warnings": "警告が {count} 件あります — 上記を確認してください。" + }, + "providers": { + "title": "プロバイダー", + "noProviders": "プロバイダーが設定されていません。次を実行してください: omniroute setup", + "testing": "{name} をテスト中...", + "available": "利用可能なプロバイダー: {count} 件", + "connected": "接続済み", + "disconnected": "未接続", + "validationFailed": "検証に失敗しました: {error}", + "metrics": { + "description": "プロバイダーのパフォーマンス指標(レイテンシー、成功率、コスト)を表示", + "provider": "プロバイダー ID で絞り込む", + "connection_id": "接続 ID で絞り込む", + "period": "期間: 1h|6h|24h|7d|30d(デフォルト: 24h)", + "metric": "特定の指標フィールドに絞り込む", + "sort": "フィールドで並べ替え(降順)", + "limit": "最大行数(デフォルト: 50)", + "watch": "5秒ごとに更新(ライブモード)", + "compare": "並べて比較するプロバイダー ID(カンマ区切り)" + }, + "metric_single": { + "description": "特定の接続に関する単一の指標値を取得" + }, + "rotate": { + "description": "プロバイダー接続のアップストリーム API キーをローテーション", + "newKeyOpt": "新しい API キーの値(非推奨: --from-env の使用を推奨)", + "fromEnvOpt": "環境変数 VAR から新しいキーを読み取る", + "oauthOpt": "代わりに OAuth 再認証フローを開始する", + "skipTestOpt": "ローテーション後の接続テストをスキップする", + "dryRunOpt": "書き込まずに変更内容を表示する", + "confirmPrompt": "接続「{name}」({id})の API キーを置き換えますか? [y/N]", + "dryRunResult": "[dry-run] 「{name}」({id})のキーをローテーションします。変更は行われていません。", + "oauthHint": "OAuth 接続 — 実行: omniroute oauth {provider}", + "envVarEmpty": "環境変数 {var} が設定されていないか、空です。", + "success": "「{name}」のキーをローテーションしました。確認するには `providers test {id}` を実行してください。", + "testPassed": "ローテーション後のテストに合格しました。", + "testFailed": "ローテーション後のテストに失敗しました: {error}" + }, + "status": { + "description": "すべてのプロバイダー接続のキー状態(経過期間、有効期限、クールダウン)を表示する", + "providerOpt": "プロバイダー名で絞り込む", + "header": "ID プロバイダー 名前 有効期限の状態 テスト状態 クールダウン期限", + "noData": "利用可能なプロバイダー接続データがありません。", + "requiresServer": "providers status を実行するには、OmniRoute サーバーが稼働している必要があります。" + } + }, + "keys": { + "title": "API キー", + "addDescription": "プロバイダーの API キーを追加または更新する", + "listDescription": "設定済みのすべての API キーを一覧表示する", + "removeDescription": "プロバイダーの API キーを削除する", + "regenerateDescription": "OmniRoute API キーを再生成する", + "revokeDescription": "OmniRoute API キーを失効させる", + "revealDescription": "マスクされていない API キーの値を表示する", + "usageDescription": "API キーの最近の使用状況を表示する", + "usageLimitOpt": "最近のリクエスト数", + "rotateDescription": "新しいキーを生成し、古いキーを無効化する", + "graceOpt": "古いキーが無効化されるまでの猶予期間(ms)", + "stdinOpt": "引数の代わりに stdin から API キーを読み取る", + "added": "{provider} のキーを追加しました。", + "removed": "キーを削除しました。", + "listed": "{count} 個のキー。", + "noKeys": "設定済みのキーはありません。", + "noUsage": "使用状況データが見つかりません。", + "confirmRemove": "キー {id} を削除しますか?", + "confirmRegenerate": "キー {id} を再生成しますか?", + "confirmRevoke": "キー {id} を失効させますか?", + "confirmRotate": "キー {id} をローテーションしますか?(猶予期間後に古いキーは無効化されます)", + "regenerated": "再生成しました。新しいキー: {key}", + "revoked": "キー {id} を失効させました。", + "rotated": "キー {id} をローテーションしました。新しいキー ID: {newId}", + "revealWarning": "⚠ マスクされていない完全なキーが表示されます。画面が他人に見られないことを確認してください。", + "providerRequired": "プロバイダーは必須です。", + "keyRequired": "API キーは必須です。", + "stdinEmpty": "stdin 経由で API キーが指定されていません。", + "unknownProvider": "不明なプロバイダー: {provider}", + "policy": { + "title": "キーポリシー", + "showDescription": "キーのレート/コストポリシーを表示", + "setDescription": "キーのレート/コストポリシーを設定", + "rateLimitOpt": "1 分あたりの最大リクエスト数", + "maxCostOpt": "1 日あたりの最大コスト(USD)", + "allowedModelsOpt": "許可するモデルのカンマ区切りリスト", + "nothingToSet": "ポリシーフィールドが指定されていません。--rate-limit、--max-cost、または --allowed-models を使用してください。", + "updated": "ポリシーを更新しました。" + }, + "expiration": { + "title": "キーの有効期限", + "listDescription": "まもなく期限切れになるキーを一覧表示", + "daysOpt": "N 日以内に期限切れになるキーを表示", + "none": "{days} 日以内に期限切れになるキーはありません。", + "listTitle": "{days} 日以内に期限切れになるキー:" + } + }, + "authExport": { + "description": "復号されたプロバイダー認証情報をエクスポート(ローカル専用、平文出力)", + "idOpt": "この ID/名前/プロバイダーに一致する接続のみをエクスポート", + "formatOpt": "出力形式: json または env", + "outOpt": "stdout ではなくファイルに出力(0600 権限で書き込み)", + "forceOpt": "平文のシークレットが表示/書き込みされることを理解した上で確認", + "warning": "⚠ 復号された平文の API キーと OAuth トークンが表示/書き込みされます。画面、シェル履歴、および出力ファイルが他人に見られないようにしてください。", + "confirmHeading": "⚠ 警告: 復号されたプロバイダー認証情報が平文でエクスポートされます", + "confirmBody": "このコマンドは、選択した接続の apiKey、accessToken、refreshToken、および\nidToken を復号して表示/書き込みします。出力はシークレットとして扱ってください。", + "confirmFooter": "確認するには、次を実行してください:\n omniroute auth export --force", + "missingKey": "認証情報をエクスポートするには STORAGE_ENCRYPTION_KEY が必要です。", + "notFound": "接続が見つかりません: {id}", + "invalidFormat": "無効な形式: {format}。json または env を使用してください。" + }, + "stream": { + "description": "SSE 検査モードでチャット応答をストリーミング", + "file": "ファイルからプロンプトを読み込む", + "stdin": "stdin からプロンプトを読み込む", + "model": "モデル ID(デフォルト: auto)", + "system": "システムプロンプト", + "combo": "名前を指定して特定のコンボを強制使用", + "max_tokens": "応答の最大トークン数", + "responses_api": "/v1/chat/completions の代わりに /v1/responses を使用", + "raw": "受信した未加工の SSE 行を表示", + "debug": "チャンクごとのタイミング情報をstderrに出力", + "save": "すべてのSSEイベントを.jsonlファイルに保存", + "error": { + "empty_prompt": "エラー: プロンプトが必要です(位置引数、--file、または--stdin)" + } + }, + "usage": { + "description": "使用状況分析、予算、クォータ、ログ", + "analytics": { + "description": "集計された使用状況分析を表示", + "period": "期間: 1d|7d|30d|90d|ytd|all(デフォルト: 30d)", + "provider": "プロバイダーIDで絞り込み" + }, + "budget": { + "description": "コスト予算を管理", + "set": { + "scope": "予算の適用範囲(デフォルト: global)", + "period": "予算期間: daily|weekly|monthly(デフォルト: monthly)" + } + }, + "quota": { + "description": "プロバイダーのクォータ使用状況を表示", + "provider": "プロバイダーIDで絞り込み", + "check": "新しいリクエストに対してクォータが利用可能かどうかを表示" + }, + "logs": { + "description": "リクエスト呼び出しログを表示", + "limit": "返すログエントリ数(デフォルト: 100)", + "search": "ログを絞り込む検索クエリ", + "since": "このタイムスタンプ以降のログを返す", + "follow": "新しいログエントリを継続的に追跡", + "api_key": "APIキーでログを絞り込み" + }, + "utilization": { + "description": "APIキーの使用率メトリクスを表示", + "api_key": "APIキーで絞り込み" + }, + "history": { + "description": "リクエスト履歴を表示", + "limit": "履歴エントリ数(デフォルト: 100)" + }, + "proxy_logs": { + "description": "プロキシレベルのリクエストログを表示", + "limit": "プロキシログのエントリ数(デフォルト: 100)" + } + }, + "cost": { + "description": "プロバイダー、モデル、コンボ、またはAPIキー別の内訳を含むコストレポートを表示", + "period": "期間: 1d|7d|30d|90d|ytd|all(デフォルト: 30d)", + "since": "開始日(ISO形式、例: 2026-01-01)— --periodより優先", + "until": "終了日(ISO形式)", + "group_by": "結果のグループ化基準: provider|model|api-key|combo|day(デフォルト: provider)", + "api_key_filter": "特定のAPIキーで絞り込み", + "limit": "表示する最大行数(デフォルト: 100)" + }, + "simulate": { + "description": "ドライランによるルーティングシミュレーション — アップストリームを呼び出さずに、選択されるプロバイダーを表示", + "file": "JSONファイルからリクエスト本文全体を読み込む", + "model": "モデルID(デフォルト: auto)", + "combo": "名前を指定して特定のコンボを強制的に使用", + "reasoning": "推論エフォートレベル(low|medium|high)", + "thinking": "拡張思考のトークン予算", + "explain": "フォールバックツリーとコスト範囲をstderrに出力", + "noCombo": "一致するコンボが見つかりません。次のコマンドで設定してください: omniroute combo create" + }, + "chat": { + "description": "OmniRoute に単発のチャットプロンプトを送信", + "file": "ファイルからプロンプトを読み込む", + "stdin": "標準入力からプロンプトを読み込む", + "system": "システムプロンプト", + "model": "モデル ID(デフォルト: auto)", + "max_tokens": "応答の最大トークン数", + "temperature": "サンプリング温度(0~2)", + "top_p": "Top-p 核サンプリング", + "reasoning_effort": "推論の労力レベル(low|medium|high)", + "thinking_budget": "拡張思考のトークン予算", + "combo": "名前を指定して特定のコンボを強制使用", + "responses_api": "/v1/chat/completions の代わりに /v1/responses を使用", + "stream": "応答を逐次ストリーミング", + "no_history": "~/.omniroute/cli-history.jsonl に保存しない", + "error": { + "empty_prompt": "エラー: プロンプトが必要です(位置引数、--file、または --stdin)" + } + }, + "serve": { + "description": "OmniRoute サーバーを起動(デフォルトのアクション)", + "starting": "ポート {port} で OmniRoute サーバーを起動しています...", + "ready": "http://localhost:{port} で準備完了", + "stopping": "サーバーを停止しています(PID {pid})...", + "stopped": "サーバーを停止しました。", + "notRunning": "サーバーは実行されていません。", + "port": "待ち受けポート(デフォルト: 20128)", + "no_open": "ブラウザを自動的に開かない", + "daemon": "サーバーをバックグラウンドデーモンとして実行", + "log": "サーバーログをインラインで表示", + "no_recovery": "クラッシュ時の自動再起動を無効化(デバッグモード)", + "max_restarts": "断念するまでの30秒以内のクラッシュ再起動上限回数(デフォルト: 2)", + "tray": "システムトレイで起動(デスクトップ版のみ、オプトイン)", + "no_tray": "システムトレイアイコンを無効化", + "ready_timeout": "準備状況プローブのタイムアウト(ミリ秒、OMNIROUTE_READY_TIMEOUT_MS でも設定可能、デフォルト: 60000)", + "tls_cert": "HTTPS の提供に使用する TLS 証明書(PEM)へのパス(OMNIROUTE_TLS_CERT でも設定可能)", + "tls_key": "HTTPS の提供に使用する TLS 秘密鍵(PEM)へのパス(OMNIROUTE_TLS_KEY でも設定可能)" + }, + "backup": { + "title": "バックアップ", + "description": "OmniRoute データのバックアップを作成", + "creating": "バックアップを作成しています...", + "done": "バックアップを {path} に保存しました", + "noFiles": "バックアップするファイルがありません(データベースが初期化されていません)", + "failed": "バックアップに失敗しました: {error}", + "restoring": "{path} から復元しています...", + "restored": "復元が完了しました。", + "restoreDescription": "バックアップから復元", + "listTitle": "利用可能なバックアップ", + "noBackups": "バックアップが見つかりません。", + "notFound": "バックアップが見つかりません: {name}", + "confirmRestore": "現在のデータを {ts} のバックアップで上書きしますか?", + "createDescription": "OmniRoute データのバックアップを作成", + "nameOpt": "カスタムバックアップ名", + "cloudOpt": "バックアップをクラウドストレージにアップロード", + "encryptOpt": "AES-256-GCM でバックアップを暗号化", + "keyFileOpt": "暗号化パスフレーズを含むファイルへのパス", + "excludeOpt": "パターンに一致するファイルを除外(複数回指定可)", + "retentionOpt": "最新の N 件のバックアップのみを保持", + "passphrasePrompt": "暗号化パスフレーズ:", + "noPassphrase": "暗号化されたバックアップにはパスフレーズが必要です。", + "cloudFailed": "警告: クラウドへのアップロードに失敗しました。ローカルバックアップは保存されました。", + "cloudUploaded": "クラウドバックアップをアップロードしました: {url}", + "auto": { + "title": "バックアップスケジュール", + "enableDescription": "スケジュールされた自動バックアップを有効化", + "disableDescription": "スケジュールされた自動バックアップを無効化", + "statusDescription": "現在のバックアップスケジュールの状態を表示", + "cronOpt": "スケジュールの Cron 式(デフォルト: 毎日午前3時)", + "enabled": "自動バックアップが有効です(Cron: {cron})。", + "hint": "このスケジュールは omniroute serve の起動時に読み込まれます。", + "disabled": "自動バックアップが無効です。", + "notConfigured": "バックアップスケジュールが設定されていません。" + } + }, + "health": { + "description": "サーバーの稼働状態とコンポーネントの状態を確認", + "noServer": "サーバーが実行されていません。次のコマンドで起動してください: omniroute serve", + "title": "稼働状態", + "status": "ステータス: {status}", + "uptime": "稼働時間: {uptime}", + "requests": "リクエスト数(24時間): {count}", + "cost": "コスト(24時間): ${cost}" + }, + "quota": { + "description": "プロバイダーのクォータ使用量を表示", + "noServer": "サーバーが実行されていません。次のコマンドで起動してください: omniroute serve", + "noData": "利用可能なクォータ情報がありません。" + }, + "cache": { + "description": "レスポンスキャッシュを管理", + "noServer": "サーバーが実行されていません。次のコマンドで起動してください: omniroute serve", + "cleared": "キャッシュをクリアしました。", + "clearFailed": "キャッシュのクリアに失敗しました。" + }, + "redis": { + "description": "OmniRouteのキャッシュとクォータ追跡用に、ローカルRedisコンテナー(PodmanまたはDocker)をワンクリックで起動" + }, + "test": { + "description": "プロバイダー接続をテスト", + "noServer": "サーバーが実行されていません。次のコマンドで起動してください: omniroute serve", + "testing": "{provider} / {model} をテストしています...", + "passed": "接続に成功しました!", + "failed": "接続に失敗しました: {error}", + "allProvidersOpt": "設定済みのすべてのプロバイダーをテスト", + "latencyOpt": "レイテンシー測定値(平均/最小/最大 ms)を表示", + "repeatOpt": "テストを N 回繰り返し、結果を集計", + "compareOpt": "比較するモデルをカンマ区切りで指定(例: gpt-4o,claude-3-5-sonnet)", + "saveOpt": "結果を JSON ファイルに保存", + "saved": "結果を {path} に保存しました", + "compareTitle": "モデル比較", + "compareMinTwo": "--compare には少なくとも2つのモデルをカンマ区切りで指定する必要があります", + "noProviders": "プロバイダーが設定されていません。次のコマンドで追加してください: omniroute keys add" + }, + "update": { + "checking": "アップデートを確認しています...", + "upToDate": "すでに最新です({version})。", + "available": "アップデートが利用可能です: {current} → {latest}", + "installing": "{latest} をインストールしています...", + "done": "{latest} にアップデートしました。適用するにはサーバーを再起動してください。" + }, + "mcp": { + "title": "MCP サーバー", + "running": "MCP サーバーは実行中です({transport})", + "stopped": "MCP サーバーを停止しました。", + "restarted": "MCP サーバーを再起動しました。", + "stoppedHint": "有効にするには `omniroute mcp enable` を実行してください。", + "enabled": "MCP サーバーを有効にしました。", + "disabled": "MCP サーバーを無効にしました。", + "enable": { + "description": "MCP サーバーを有効にする", + "transport": "使用するトランスポート: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP サーバーを無効にする" + }, + "call": { + "description": "MCP ツールを直接呼び出す", + "args": "JSON 引数オブジェクト(インライン)", + "args_file": "JSON 引数ファイルへのパス", + "stream": "ストリーミングエンドポイント(/api/mcp/stream)を使用", + "scope": "必要なスコープ(繰り返し指定可能、例: read:health)" + }, + "scopes": { + "description": "利用可能な MCP スコープを一覧表示", + "tool": "特定のツールに必要なスコープを表示" + }, + "tools": { + "description": "MCP ツールを調査", + "list": { + "description": "すべての MCP ツールを一覧表示", + "scope": "スコープで絞り込む" + }, + "info": { + "description": "MCP ツールのメタデータを表示" + }, + "schema": { + "description": "MCP ツールの入出力 JSON スキーマを表示", + "io": "スキーマ種別: input|output(デフォルト: input)" + } + }, + "audit": { + "description": "MCP監査ログ(audit --source mcpのエイリアス)" + } + }, + "a2a": { + "skills": { + "description": "エージェントカードから利用可能なA2Aスキルを一覧表示" + }, + "invoke": { + "description": "A2Aスキルを呼び出し、タスクIDを返す", + "input": "JSON入力オブジェクト", + "input_file": "JSON入力ファイルへのパス", + "wait": "タスクが完了するまで待機してから返す", + "timeout": "完了待機のタイムアウト(ミリ秒、デフォルト: 60000)" + }, + "tasks": { + "description": "A2Aタスクを管理", + "list": { + "status": "ステータスでフィルタリング", + "skill": "スキルIDでフィルタリング" + }, + "watch": { + "description": "完了するまでタスクのステータスをポーリング" + }, + "stream": { + "description": "SSE経由でタスク実行イベントをストリーミング" + }, + "logs": { + "description": "タスクのメッセージと成果物を表示" + } + } + }, + "policy": { + "description": "OmniRouteの認可ポリシーを管理", + "list": { + "description": "ポリシーを一覧表示", + "kind": "種別(allow|deny|rate-limit|cost-cap)でフィルタリング", + "scope": "スコープ(global|api-key|provider)でフィルタリング" + }, + "get": { + "description": "IDを指定してポリシーの詳細を取得" + }, + "create": { + "description": "JSONファイルからポリシーを作成", + "file": "ポリシーJSONファイルへのパス" + }, + "update": { + "description": "JSONファイルからポリシーを更新", + "file": "ポリシーJSONファイルへのパス" + }, + "delete": { + "description": "IDを指定してポリシーを削除", + "yes": "確認プロンプトをスキップ" + }, + "evaluate": { + "description": "ポリシー評価をドライラン(終了コード0=許可、4=拒否)", + "api_key": "評価するAPIキー", + "action": "確認するアクション(例: chat、embed、admin)", + "resource": "リソースのパスまたは識別子", + "context": "JSONオブジェクト形式の追加コンテキスト" + }, + "export": { + "description": "すべてのポリシーをJSONファイルにエクスポート" + }, + "import": { + "description": "JSONファイルからポリシーをインポート", + "overwrite": "同じIDの既存ポリシーを上書き" + } + }, + "compression": { + "description": "OmniRouteの圧縮パイプラインを設定および確認", + "status": { + "description": "現在の圧縮ステータスと設定を表示" + }, + "configure": { + "description": "圧縮設定を構成", + "engine": "圧縮エンジン(caveman|rtk|hybrid|none)", + "caveman_agg": "Cavemanの強度 0.0~1.0", + "rtk_budget": "RTKトークン予算", + "language_pack": "有効化する言語パック" + }, + "engine": { + "description": "アクティブな圧縮エンジンを取得または設定" + }, + "combos": { + "description": "圧縮コンボの統計を管理" + }, + "rules": { + "description": "圧縮ルールを管理", + "add": { + "pattern": "照合するパターン(正規表現または field:pattern)", + "action": "アクション:drop|shrink|replace" + } + }, + "language_packs": { + "description": "利用可能な圧縮言語パックを一覧表示" + }, + "preview": { + "description": "リクエストに対する圧縮効果をプレビュー", + "file": "リクエストJSONファイルへのパス" + } + }, + "tunnel": { + "title": "トンネル", + "listDescription": "アクティブなトンネルを一覧表示", + "createDescription": "トンネルを作成", + "created": "トンネルを作成しました:{url}", + "stopped": "トンネルを停止しました。", + "confirmStop": "トンネル {id} を停止しますか?", + "stopDescription": "トンネルを停止", + "statusDescription": "トンネルの詳細なステータスを表示", + "logsDescription": "トンネルのログを表示", + "infoDescription": "トンネルの設定詳細を表示", + "rotateDescription": "新しいトンネルURLを生成", + "tailOpt": "表示するログ行数", + "typeRequired": "トンネルタイプは必須です。", + "noLogs": "利用可能なログはありません。", + "notAvailable": "トンネル情報を取得できません。", + "noTunnels": "アクティブなトンネルはありません。", + "infoTitle": "トンネル情報:{type}", + "rotated": "トンネルURLを更新しました:{url}", + "confirmRotate": "トンネル {type} のURLを更新しますか?(新しいURLが生成されます)" + }, + "stop": { + "description": "OmniRouteサーバーを停止", + "stopping": "サーバーを停止しています(PID {pid})...", + "stopped": "サーバーを停止しました。", + "notRunning": "実行中のサーバーはありません。", + "portFallback": "PIDファイルが見つからないため、ポートベースでの停止を試行しています..." + }, + "restart": { + "description": "OmniRouteサーバーを再起動", + "restarting": "OmniRouteサーバーを再起動しています..." + }, + "dashboard": { + "description": "ブラウザーでOmniRouteダッシュボードを開く", + "opening": "{url} でダッシュボードを開いています", + "urlOnly": "ブラウザーを開かずにダッシュボードURLを出力", + "tui": "対話型TUIダッシュボードを開く(ターミナルUI、7タブ)" + }, + "models": { + "description": "利用可能なモデルを一覧表示(サーバーが必要)", + "search": "ID、名前、プロバイダー、または説明でモデルを絞り込む", + "noServer": "サーバーが実行されていません。次のコマンドで起動してください: omniroute serve", + "noModels": "モデルが見つかりません。" + }, + "audit": { + "description": "コンプライアンスおよびMCPの監査ログにアクセス", + "source": "ログソース: all|compliance|mcp(デフォルト: all)", + "since": "このタイムスタンプ以降のエントリを返す(ISO 8601)", + "until": "このタイムスタンプ以前のエントリを返す(ISO 8601)", + "tail": { + "description": "最近の監査ログエントリを表示", + "follow": "新しいエントリを継続的に追跡(2秒間隔でポーリング)", + "limit": "表示するエントリの最大数(デフォルト: 100)" + }, + "search": { + "description": "キーワードで監査ログエントリを検索", + "limit": "結果の最大数(デフォルト: 200)", + "actor": "アクターIDで絞り込む", + "action": "アクション名で絞り込む" + }, + "export": { + "description": "監査ログをファイルにエクスポート", + "format": "出力形式: jsonl|csv(デフォルト: jsonl)" + }, + "stats": { + "description": "監査ログの統計情報を表示", + "period": "期間: 1d|7d|30d(デフォルト: 7d)" + }, + "get": { + "description": "IDを指定して単一の監査ログエントリを取得" + } + }, + "skills": { + "description": "OmniRouteスキルを管理(sandbox、builtin、custom、hybrid、skillssh)", + "list": { + "description": "インストール済みのスキルを一覧表示", + "type": "タイプで絞り込む(sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "有効なスキルのみ表示", + "disabled": "無効なスキルのみ表示", + "api_key": "APIキーで絞り込む" + }, + "get": { + "description": "IDを指定してスキルの詳細を取得" + }, + "install": { + "description": "ファイルまたはURLからスキルをインストール", + "from_file": "スキルのJSON定義ファイルへのパス", + "from_url": "リモートのスキル定義のURL", + "type": "スキルタイプ(sandbox|custom|hybrid)", + "enable": "インストール後にスキルを有効化" + }, + "enable": { + "description": "IDを指定してスキルを有効化" + }, + "disable": { + "description": "IDを指定してスキルを無効化", + "yes": "確認プロンプトをスキップ" + }, + "delete": { + "description": "IDを指定してスキルを削除", + "yes": "確認プロンプトをスキップ" + }, + "execute": { + "description": "IDを指定してスキルを実行", + "input": "JSON入力オブジェクト", + "input_file": "JSON入力ファイルへのパス", + "timeout": "実行タイムアウト(ミリ秒、デフォルト: 30000)" + }, + "executions": { + "description": "スキルの実行履歴を一覧表示", + "skill": "スキルIDでフィルタリング", + "limit": "最大結果数(デフォルト: 50)", + "status": "ステータスでフィルタリング(running|completed|failed)" + }, + "skillssh": { + "description": "SSH経由でインストールされたスキルを管理" + }, + "marketplace": { + "description": "マーケットプレイスからスキルを参照してインストール" + }, + "mp": { + "search": { + "description": "マーケットプレイスのパッケージを検索", + "category": "カテゴリーでフィルタリング", + "tag": "タグでフィルタリング", + "limit": "最大結果数(デフォルト: 30)", + "sort": "並べ替え: downloads|rating|recent" + }, + "info": { + "description": "パッケージの詳細とREADMEを表示" + }, + "install": { + "description": "マーケットプレイスのパッケージをインストール", + "version": "パッケージのバージョン(デフォルト: latest)", + "enable": "インストール後に有効化", + "yes": "確認プロンプトをスキップ" + }, + "categories": { + "description": "マーケットプレイスのカテゴリー一覧を表示" + }, + "featured": { + "description": "マーケットプレイスの注目パッケージを表示" + } + } + }, + "memory": { + "description": "OmniRouteの会話メモリ(FTS5 + vector)を管理", + "search": { + "description": "セマンティッククエリでメモリエントリを検索", + "type": "メモリタイプでフィルタリング(user|feedback|project|reference)", + "limit": "最大結果数(デフォルト: 20)", + "api_key": "APIキーでフィルタリング", + "token_budget": "結果内の合計トークン数を制限" + }, + "add": { + "description": "新しいメモリエントリを追加", + "content": "メモリのテキストコンテンツ", + "file": "ファイルからコンテンツを読み込む", + "type": "メモリタイプ(デフォルト: user)", + "metadata": "JSONメタデータオブジェクト", + "api_key": "APIキーに関連付ける" + }, + "clear": { + "description": "フィルターに一致するメモリエントリを削除", + "type": "タイプでフィルタリング", + "older": "指定期間(30d, 6m, 1y)より古いエントリを削除", + "api_key": "APIキーでフィルタリング", + "yes": "確認プロンプトをスキップ" + }, + "list": { + "description": "検索ランキングなしでメモリエントリの一覧を表示", + "type": "タイプでフィルタリング", + "limit": "最大結果数(デフォルト: 100)", + "api_key": "APIキーでフィルタリング" + }, + "get": { + "description": "IDを指定して単一のメモリエントリを取得" + }, + "delete": { + "description": "IDを指定してメモリエントリを削除", + "yes": "確認プロンプトをスキップ" + }, + "health": { + "description": "メモリサブシステムの稼働状態を表示(FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuthプロバイダー接続を管理", + "providers": { + "description": "OAuth対応プロバイダーとそのフロータイプを一覧表示" + }, + "start": { + "description": "プロバイダーのOAuth認可フローを開始", + "provider": "プロバイダーID(gemini、copilot、cursor、…)", + "no_browser": "URLのみを出力 — ブラウザーを開かない", + "import_system": "ローカルシステム設定から認証情報を自動インポート", + "social": "ソーシャルログインプロバイダー(google|github)— kiroでは必須", + "timeout": "認可を待機するタイムアウト(ミリ秒、デフォルト:300000)" + }, + "status": { + "description": "有効なOAuth接続を一覧表示", + "provider": "プロバイダーIDで絞り込み" + }, + "revoke": { + "description": "OAuth接続を取り消す", + "provider": "取り消すプロバイダーID", + "connection_id": "IDを指定して接続を取り消す", + "yes": "確認プロンプトをスキップ" + } + }, + "cloud": { + "description": "クラウドAIエージェントのタスクを管理(codex、devin、jules)", + "agents": { + "description": "利用可能なクラウドエージェントを一覧表示" + }, + "agent": { + "description": "{agent}クラウドエージェントのタスクを管理", + "auth": { + "description": "OAuth経由で{agent}を認可" + } + }, + "task": { + "description": "クラウドエージェントのタスクを管理", + "create": { + "description": "新しいエージェントタスクを作成", + "title": "タスクのタイトル(デフォルトはプロンプトの先頭80文字)", + "prompt": "タスクのプロンプトテキスト", + "prompt_file": "ファイルからプロンプトを読み込む", + "repo": "タスク用にクローンするリポジトリURL", + "branch": "使用するブランチ名", + "metadata": "JSONメタデータオブジェクト" + }, + "list": { + "description": "エージェントタスクを一覧表示", + "status": "ステータスで絞り込み(running|completed|failed|cancelled)", + "limit": "最大結果数(デフォルト:50)" + }, + "get": { + "description": "IDを指定してタスクの詳細を取得" + }, + "status": { + "description": "タスクのステータスを出力(running|completed|failed|cancelled)" + }, + "cancel": { + "description": "実行中のタスクをキャンセル", + "yes": "確認プロンプトをスキップ" + }, + "approve": { + "description": "エージェントのプランを承認して実行を開始" + }, + "message": { + "description": "実行中のタスクにメッセージを送信" + } + }, + "sources": { + "description": "タスクによって生成されたソースファイルを一覧表示" + } + }, + "eval": { + "description": "評価スイートと実行を管理", + "suites": { + "description": "評価スイートを管理", + "list": { + "description": "評価スイートを一覧表示" + }, + "get": { + "description": "IDで評価スイートの詳細を取得" + }, + "create": { + "description": "JSONファイルから評価スイートを作成", + "file": "スイート定義JSONファイルのパス" + } + }, + "run": { + "description": "スイートの評価実行を開始", + "model": "評価するモデルID(デフォルト: auto)", + "combo": "名前で特定のコンボを強制指定", + "concurrency": "同時実行サンプル数(デフォルト: 4)", + "tag": "後でフィルタリングできるようにこの実行にタグを付ける", + "watch": "完了するまで実行の進捗を監視" + }, + "list": { + "description": "評価実行を一覧表示", + "suite": "スイートIDでフィルタリング", + "status": "ステータスでフィルタリング", + "since": "このタイムスタンプ以降の実行を返す", + "limit": "最大結果数(デフォルト: 50)" + }, + "get": { + "description": "IDで評価実行の詳細を取得" + }, + "results": { + "description": "評価実行のサンプル結果を表示", + "failed": "失敗したサンプルのみ表示" + }, + "cancel": { + "description": "実行中の評価をキャンセル", + "yes": "確認プロンプトをスキップ" + }, + "scorecard": { + "description": "完了した評価実行のスコアカードを表示" + } + }, + "webhooks": { + "description": "OmniRouteのWebhookを管理", + "events": { + "description": "利用可能なすべてのWebhookイベントタイプを一覧表示" + }, + "list": { + "description": "設定済みのWebhookを一覧表示" + }, + "get": { + "description": "IDでWebhookの詳細を取得" + }, + "add": { + "description": "新しいWebhookを登録", + "url": "送信先URL", + "events": "イベントタイプのカンマ区切りリスト", + "secret": "HMAC署名シークレット", + "header": "key=value形式の追加ヘッダー(複数指定可)", + "no_enabled": "無効状態でWebhookを作成" + }, + "update": { + "description": "既存のWebhookを更新", + "enabled": "有効状態を設定(true|false)" + }, + "remove": { + "description": "Webhookを削除", + "yes": "確認プロンプトをスキップ" + }, + "test": { + "description": "Webhookにテストイベントを送信", + "event": "シミュレートするイベントタイプ(デフォルト: request.completed)" + } + }, "program": { "description": "OmniRoute — 自動フォールバック付きスマートAIルーター", "version": "バージョンを表示して終了", @@ -26,7 +832,509 @@ "context": "このコマンドで使用するサーバーコンテキスト/プロファイル", "lang": "CLI表示言語を設定(OMNIROUTE_LANGを上書き)" }, - "redis": { - "description": "OmniRouteのキャッシュとクォータ追跡用に、ローカルRedisコンテナー(PodmanまたはDocker)をワンクリックで起動" + "files": { + "description": "ファイルを管理(アップロード、一覧表示、取得、ダウンロード、削除)", + "list": { + "purpose": "用途でフィルタリング", + "limit": "最大結果数" + }, + "get": { + "description": "ファイルのメタデータを取得" + }, + "upload": { + "description": "ファイルをアップロード", + "purpose": "ファイルの用途(batch、assistants、fine-tune)" + }, + "content": { + "description": "ファイルの内容をダウンロード", + "out": "保存先のパス(デフォルト: stdout)" + }, + "delete": { + "yes": "確認をスキップ" + } + }, + "batches": { + "description": "OpenAI互換のバッチジョブを管理", + "list": { + "status": "ステータスで絞り込む", + "limit": "最大結果数" + }, + "create": { + "description": "バッチジョブを作成", + "inputFile": "入力ファイルID", + "endpoint": "ターゲットエンドポイント", + "window": "完了までの時間枠", + "metadata": "メタデータをkey=value形式で追加" + }, + "submit": { + "description": "JSONLファイルをアップロードしてバッチを作成", + "jsonl": "JSONLファイルへのパス", + "endpoint": "ターゲットエンドポイント", + "wait": "完了まで待機" + }, + "cancel": { + "yes": "確認をスキップ" + }, + "wait": { + "timeout": "タイムアウト(ミリ秒)" + }, + "output": { + "out": "出力の保存先パス" + }, + "errors": { + "out": "エラーの保存先パス" + } + }, + "translator": { + "description": "LLM形式間でリクエストボディを変換", + "detect": { + "description": "ボディ形式を検出" + }, + "translate": { + "description": "ボディを別の形式に変換" + }, + "send": { + "description": "変換してアップストリームに送信" + }, + "stream": { + "description": "リクエストボディをストリーム変換" + }, + "from": "変換元の形式(openai|anthropic|gemini|cohere)", + "to": "変換先の形式(openai|anthropic|gemini|cohere)", + "file": "リクエストボディのJSONファイルへのパス", + "out": "出力をファイルに保存", + "model": "モデルを上書き", + "history": { + "limit": "最大結果数" + } + }, + "pricing": { + "description": "モデルの料金データを管理", + "sync": { + "description": "アップストリームソースから料金を同期", + "provider": "プロバイダーで絞り込む", + "force": "強制的に再同期" + }, + "list": { + "provider": "プロバイダーで絞り込む", + "model": "モデルで絞り込む", + "limit": "最大結果数" + }, + "defaults": { + "description": "デフォルト料金を管理", + "input": "100万トークンあたりの入力コスト(USD)", + "output": "100万トークンあたりの出力コスト(USD)", + "cacheRead": "100万トークンあたりのキャッシュ読み取りコスト(USD)", + "cacheWrite": "100万トークンあたりのキャッシュ書き込みコスト(USD)" + }, + "diff": { + "description": "上流価格との差異を表示", + "model": "モデルで絞り込む" + } + }, + "radar": { + "description": "ローカルのRadarカタログフィードを確認して同期", + "status": "ローカルのRadar設定とフィードキャッシュの状態を表示", + "sync": "ローカルサーバー経由でカタログ、紹介、オファー、Intelを同期" + }, + "resilience": { + "description": "レジリエンス機構を確認・管理", + "status": { + "provider": "プロバイダーで絞り込む" + }, + "breakers": { + "provider": "プロバイダーで絞り込む" + }, + "cooldowns": { + "provider": "プロバイダーで絞り込む", + "connectionId": "接続IDで絞り込む" + }, + "lockouts": { + "provider": "プロバイダーで絞り込む", + "model": "モデルで絞り込む" + }, + "reset": { + "description": "ブレーカー/クールダウン状態をリセット", + "provider": "リセットするプロバイダー", + "connectionId": "リセットする接続ID", + "model": "ロックアウトをリセットするモデル", + "allCooldowns": "プロバイダーのすべてのクールダウンをリセット", + "yes": "確認をスキップ" + }, + "profile": { + "description": "レジリエンスプロファイルを管理", + "name": "プロファイル名" + }, + "config": { + "description": "レジリエンス設定を管理", + "threshold": "失敗しきい値", + "resetTimeout": "リセットタイムアウト(ms)", + "baseCooldown": "基本クールダウン時間(ms)" + } + }, + "nodes": { + "description": "プロバイダーノード(エンドポイント)を管理", + "list": { + "provider": "プロバイダーで絞り込む", + "enabled": "有効なノードのみ表示" + }, + "add": { + "provider": "プロバイダー名", + "baseUrl": "ノードのベースURL", + "name": "ノード名", + "weight": "負荷分散の重み", + "region": "リージョンタグ", + "authHeader": "カスタム認証ヘッダー(key=value)" + }, + "update": { + "baseUrl": "新しいベースURL", + "name": "新しい名前", + "weight": "新しい重み", + "region": "新しいリージョン", + "enabled": "有効化または無効化(true|false)" + }, + "remove": { + "yes": "確認をスキップ" + }, + "validate": { + "baseUrl": "検証するURL", + "provider": "検証対象のプロバイダー" + }, + "test": { + "description": "ノードにテストリクエストを送信" + }, + "metrics": { + "description": "ノードのメトリクスを表示", + "period": "期間(例:24h、7d)" + } + }, + "context": { + "description": "コンテキストエンジニアリングパイプライン(Caveman、RTK)を設定", + "analytics": { + "period": "期間(例:7d、30d)" + }, + "caveman": { + "description": "Cavemanコンテキスト圧縮機能を管理", + "config": { + "description": "Cavemanの設定を表示または更新", + "aggressiveness": "積極度 0.0~1.0", + "maxShrinkPct": "最大縮小率", + "preserveTags": "保持するタグ(カンマ区切り)" + } + }, + "rtk": { + "description": "RTKコンテキスト最適化機能を管理", + "config": { + "description": "RTKの設定を表示または更新", + "tokenBudget": "RTKのトークン予算", + "reservePct": "予約率" + }, + "filters": { + "description": "RTKフィルターを管理", + "pattern": "フィルターパターン(正規表現)", + "priority": "フィルターの優先度(デフォルト:100)", + "action": "フィルターのアクション:drop|shrink|replace", + "yes": "確認をスキップ" + }, + "test": { + "file": "リクエストJSONファイルへのパス" + } + }, + "combos": { + "description": "コンテキスト対応のコンボ管理" + } + }, + "sessions": { + "description": "アクティブなセッションを確認・管理", + "list": { + "user": "ユーザーで絞り込み", + "kind": "種類で絞り込み(dashboard|api-key|mcp|a2a)", + "active": "アクティブなセッションのみ表示", + "limit": "最大結果数(デフォルト:100)" + }, + "expire": { + "yes": "確認をスキップ" + }, + "expireAll": { + "user": "セッションを期限切れにする対象ユーザー", + "yes": "確認をスキップ" + } + }, + "tags": { + "description": "リソースタグを管理", + "add": { + "color": "タグの色(16進数または色名)", + "description": "タグの説明" + }, + "remove": { + "yes": "確認をスキップ" + }, + "assign": { + "tag": "タグ名", + "to": "対象リソース(type:id 形式、例: provider:openai)" + }, + "unassign": { + "tag": "タグ名", + "from": "ソースリソース(type:id 形式)" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI 仕様にアクセスしてテスト", + "dump": { + "description": "OpenAPI 仕様を stdout またはファイルに出力", + "format": "出力形式: yaml|json(デフォルト: yaml)", + "out": "保存先のファイルパス" + }, + "validate": { + "description": "OpenAPI 仕様を検証" + }, + "try": { + "description": "仕様を使用して API エンドポイントをテスト", + "method": "HTTP メソッド(デフォルト: GET)", + "body": "リクエストボディの JSON ファイルへのパス", + "query": "key=value 形式のクエリパラメータ(複数指定可)", + "header": "key=value 形式のヘッダー(複数指定可)" + }, + "endpoints": { + "description": "すべての API エンドポイントを一覧表示", + "search": "パスまたは概要で絞り込み" + }, + "paths": { + "description": "すべての API パスを一覧表示" + } + }, + "combo": { + "title": "コンボ", + "switched": "アクティブなコンボ: {name}", + "created": "コンボを作成しました: {name}", + "deleted": "コンボを削除しました: {name}", + "noCombos": "コンボが設定されていません。", + "confirmDelete": "コンボ {name} を削除しますか?", + "suggest": { + "description": "AI スコアリングを使用してタスクに最適なコンボを提案", + "task": "タスクの説明", + "maxCost": "リクエストあたりの最大コスト(USD)", + "maxLatencyMs": "最大レイテンシー(ミリ秒)", + "weights": "JSON 形式のスコアリング重み(例: {\"latency\":0.7,\"cost\":0.3})", + "top": "表示する上位候補数(デフォルト: 5)", + "explain": "根拠を stderr に出力", + "switch": "最上位のコンボを有効化" + } + }, + "oneproxy": { + "description": "OneProxy アップストリームプールを管理", + "stats": { + "provider": "プロバイダーで絞り込み", + "period": "期間(デフォルト: 24h)" + }, + "fetch": { + "description": "プールからプロキシを取得", + "count": "取得するプロキシ数(デフォルト: 1)", + "type": "プロキシタイプ: http|socks5(デフォルト: http)" + }, + "rotate": { + "description": "プロキシを強制的にローテーション", + "provider": "ローテーション対象のプロバイダー", + "connectionId": "ローテーション対象の特定の接続 ID" + }, + "config": { + "description": "OneProxy の設定を表示または更新", + "enabled": "プロキシプールを有効化 (true|false)", + "poolSize": "プールサイズ", + "providerSource": "プロキシプロバイダーのURL", + "rotationPolicy": "ローテーションポリシー: sticky|per-request|periodic" + }, + "pool": { + "description": "現在のプロキシプールをメトリクス付きで一覧表示" + } + }, + "open": { + "description": "特定のOmniRouteダッシュボードページをブラウザーで開く", + "url": "URLのみを表示し、ブラウザーは開かない" + }, + "telemetry": { + "description": "集約されたテレメトリデータにアクセス", + "summary": { + "description": "集約されたテレメトリの概要を表示", + "period": "期間: 24h|7d|30d(デフォルト: 24h)", + "compareTo": "前期間と比較" + }, + "export": { + "description": "テレメトリイベントをJSONLにエクスポート", + "out": "出力ファイルパス(デフォルト: telemetry.jsonl)", + "period": "エクスポート対象期間(デフォルト: 7d)" + } + }, + "sync": { + "description": "OmniRouteインスタンス間で設定を同期", + "push": { + "description": "設定をクラウドまたはリモートインスタンスにプッシュ", + "target": "ターゲット(cloudまたはcontext:name)", + "bundle": "同期するバンドルの構成要素", + "dryRun": "適用せずにプレビュー" + }, + "pull": { + "description": "クラウドまたはリモートから設定をプル", + "source": "ソース(cloudまたはcontext:name)", + "merge": "既存の設定とマージ", + "replace": "既存の設定を置換", + "dryRun": "適用せずにプレビュー" + }, + "diff": { + "source": "ソースコンテキスト", + "target": "ターゲットコンテキスト" + }, + "bundle": { + "description": "設定をバンドルファイルとしてエクスポート", + "include": "含める構成要素(カンマ区切り)" + }, + "import": { + "description": "バンドルファイルをインポート", + "dryRun": "適用せずに検証" + }, + "initialize": { + "fromCloud": "クラウドバックアップから初期化" + }, + "tokens": { + "description": "同期トークンを管理", + "create": { + "name": "トークン名", + "scope": "トークンのスコープ", + "ttl": "トークンのTTL(例: 30d)" + }, + "revoke": { + "yes": "確認をスキップ" + } + }, + "resolve": { + "description": "同期の競合を対話形式で解決" + } + }, + "config": { + "contexts": { + "description": "サーバーのコンテキスト/プロファイルを管理(add、use、list、show、remove、rename、export、import)" + }, + "lang": { + "description": "CLIの表示言語を管理", + "getDescription": "現在有効な言語コードを表示", + "setDescription": "表示言語を設定し、config に保存します", + "listDescription": "利用可能なすべての言語を一覧表示します", + "listTitle": "利用可能な言語", + "current": "言語: {code}({name})", + "saved": "言語を {code}({name})に設定しました。", + "noCode": "言語コードが必要です。利用可能なコードを確認するには 'omniroute config lang list' を実行してください。", + "unknown": "不明な言語コード: {code}。利用可能なコードを確認するには 'omniroute config lang list' を実行してください。", + "alreadySet": "言語はすでに {code} に設定されています。", + "envHint": "ヒント: 環境変数に OMNIROUTE_LANG={code} を設定することもできます。" + } + }, + "completion": { + "description": "シェル補完スクリプトを生成またはインストールします", + "zsh": "zsh 補完スクリプトを出力します", + "bash": "bash 補完スクリプトを出力します", + "fish": "fish 補完スクリプトを出力します", + "install": "検出されたシェル用の補完スクリプトをシステム全体にインストールします", + "refresh": "コンボ/プロバイダー/モデルのキャッシュを更新します" + }, + "logs": { + "description": "リクエストログをストリーミングまたはエクスポートします", + "follow": "ログをリアルタイムでストリーミングします", + "filter": "レベル(error,warn,info)でフィルタリング — カンマ区切り", + "lines": "取得する行数", + "timeout": "接続タイムアウト(ミリ秒)", + "baseUrl": "OmniRoute API のベース URL", + "requestId": "リクエスト ID でフィルタリング", + "apiKey": "API キーでフィルタリング", + "combo": "コンボ名でフィルタリング", + "status": "HTTP ステータスコードでフィルタリング", + "durationMin": "リクエストの最短所要時間(ミリ秒)", + "durationMax": "リクエストの最長所要時間(ミリ秒)", + "export": "ログをファイルに保存(json/jsonl/csv)", + "exported": "ログを {path} に保存しました", + "stopped": "ログストリームを停止しました。", + "streamError": "ログストリームエラー: {message}" + }, + "tray": { + "description": "システムトレイアイコンを制御します", + "show": "トレイアイコンを表示します(サーバーが --tray オプション付きで実行されている場合)", + "hide": "トレイアイコンを非表示にします", + "quit": "トレイから OmniRoute を終了します" + }, + "autostart": { + "description": "起動時の OmniRoute の自動起動を管理します(Linux: systemd ユーザーサービス)", + "enable": "起動時の自動起動を有効にします", + "disable": "起動時の自動起動を無効にします", + "toggle": "起動時の自動起動を切り替えます", + "status": "自動起動の状態を表示します" + }, + "runtime": { + "description": "ネイティブランタイム依存関係を管理", + "check": "ランタイムディレクトリ内のネイティブ依存関係の状態を確認", + "repair": "ランタイムディレクトリ内のネイティブ依存関係を再インストール", + "repair_force": "有効な場合でも強制的に再インストール", + "clean": "ランタイムディレクトリを削除(ディスク容量を解放)", + "clean_yes": "確認をスキップ" + }, + "repl": { + "description": "LLMとの対話型マルチターンREPL", + "model": "使用するモデル(デフォルト:auto)", + "combo": "使用するコンボ名", + "system": "システムプロンプト", + "resume": "名前を指定して保存済みセッションを再開" + }, + "plugin": { + "description": "CLIプラグイン(omniroute-cmd-*)を管理", + "list": "インストール済みプラグインを一覧表示", + "install": "npmまたはローカルパスからプラグインをインストール", + "remove": "インストール済みプラグインを削除", + "info": "インストール済みプラグインの詳細を表示", + "search": "利用可能なプラグインをnpmレジストリで検索", + "update": "インストール済みプラグインを更新", + "scaffold": "新しいプラグインのボイラープレートを生成" + }, + "launch": { + "description": "OmniRouteを参照するClaude Codeを起動(ローカルまたはリモート、--profile対応)", + "token": "Claudeクライアントが送信するトークン(ANTHROPIC_AUTH_TOKEN)", + "notRunning": "ポート{port}でOmniRouteに接続できません。'omniroute serve'で起動してください。", + "notFound": "'claude' CLIがPATHに見つかりません。" + }, + "run": { + "description": "OmniRoute経由でサポート対象のCLIを起動" + }, + "setupClaude": { + "description": "OmniRouteモデルカタログから~/.claude/profiles用のClaude Codeプロファイルを生成" + }, + "connect": { + "description": "リモートOmniRouteサーバーに接続してリモートモードに移行" + }, + "tokens": { + "description": "スコープ付きCLIアクセストークンを管理(リモートモード)" + }, + "configure": { + "description": "アクティブなサーバーからプロバイダーとモデルを選択し、サポート対象のローカルCLIを設定" + }, + "launchCodex": { + "description": "OmniRouteを参照するCodex CLIを起動(ローカルまたはリモートVPS)" + }, + "setupCodex": { + "description": "OmniRouteのライブモデルカタログから~/.codexプロファイルファイルを生成" + }, + "packs": { + "description": "オプションのランタイムパック(ML/ブラウザー自動化)を管理", + "listDescription": "オプションパックとそのインストール状態を一覧表示", + "installDescription": "オプションパックをDATA_DIRにインストール", + "verifyDescription": "同梱のチェックサムインデックスを使用してインストール済みパックを検証", + "removeDescription": "インストール済みのオプションパックを削除", + "sourceOpt": "パックのペイロードとパックインデックスを格納するディレクトリ", + "warnNoIndex": "optional-packs.index.jsonが見つかりません。このチェックアウトではインストール/検証を利用できません(デスクトップバンドルには同梱されています)", + "errUnknown": "不明なパック:{name}", + "errNoIndex": "パックインデックスが見つかりません。パックのペイロードを格納したディレクトリを--source で指定してください(デスクトップバンドルではアプリの隣に同梱されています)", + "installed": "パック「{name}」を{dir}にインストールし、検証しました", + "restartHint": "ランタイムがパックを認識するように、OmniRouteサーバー(またはデスクトップアプリ)を再起動してください", + "removed": "パック「{name}」を削除しました", + "notInstalled": "パック「{name}」はインストールされていません", + "verifyOk": "インストール済みのすべてのパックを検証しました", + "verifyFailed": "{count}個のパックの検証に失敗しました", + "noneInstalled": "オプションパックはインストールされていません" } } diff --git a/bin/cli/locales/ka.json b/bin/cli/locales/ka.json index da0f494822..1c7948c7a5 100644 --- a/bin/cli/locales/ka.json +++ b/bin/cli/locales/ka.json @@ -256,6 +256,7 @@ "max_restarts": "30 წამში ავარიული გათიშვის შემდეგ ხელახალი გაშვებების მაქსიმალური რაოდენობა დანებებამდე (ნაგულისხმევი: 2)", "tray": "სისტემურ უჯრაში გაშვება (მხოლოდ დესკტოპისთვის, სურვილისამებრ)", "no_tray": "სისტემური უჯრის ხატულის გამორთვა", + "ready_timeout": "მზადყოფნის შემოწმების მოლოდინის დრო მილიწამებში (ასევე OMNIROUTE_READY_TIMEOUT_MS, ნაგულისხმევად 60000)", "tls_cert": "HTTPS-ისთვის TLS სერტიფიკატის (PEM) გზა (ასევე OMNIROUTE_TLS_CERT)", "tls_key": "HTTPS-ისთვის TLS პირადი გასაღების (PEM) გზა (ასევე OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP სერვერი მუშაობს ({transport})", "stopped": "MCP სერვერი გაჩერდა.", "restarted": "MCP სერვერი გადაიტვირთა.", + "stoppedHint": "მის ჩასართავად გაუშვით `omniroute mcp enable`.", + "enabled": "MCP სერვერი ჩართულია.", + "disabled": "MCP სერვერი გამორთულია.", + "enable": { + "description": "MCP სერვერის ჩართვა", + "transport": "გამოსაყენებელი ტრანსპორტი: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP სერვერის გამორთვა" + }, "call": { "description": "MCP ხელსაწყოს პირდაპირ გამოძახება", "args": "JSON არგუმენტების ობიექტი (ჩაშენებული)", diff --git a/bin/cli/locales/km.json b/bin/cli/locales/km.json index de21b4cc9f..cb820b87df 100644 --- a/bin/cli/locales/km.json +++ b/bin/cli/locales/km.json @@ -86,7 +86,7 @@ } }, "keys": { - "title": "API Keys", + "title": "សោ API", "addDescription": "បន្ថែម ឬធ្វើបច្ចុប្បន្នភាព API key សម្រាប់អ្នកផ្តល់សេវា", "listDescription": "រាយ API keys ដែលបានកំណត់រចនាសម្ព័ន្ធទាំងអស់", "removeDescription": "លុប API key សម្រាប់អ្នកផ្តល់សេវា", @@ -226,7 +226,7 @@ "description": "ផ្ញើ chat prompt មួយលើកទៅ OmniRoute", "file": "អាន prompt ពីឯកសារ", "stdin": "អាន prompt ពី stdin", - "system": "System prompt", + "system": "ប្រូមប្រព័ន្ធ", "model": "Model ID (លំនាំដើម៖ auto)", "max_tokens": "ចំនួន token អតិបរមាក្នុងការឆ្លើយតប", "temperature": "សីតុណ្ហភាព sampling (0–2)", @@ -256,6 +256,7 @@ "max_restarts": "ចំនួនអតិបរមានៃការចាប់ផ្តើមឡើងវិញបន្ទាប់ពីគាំងក្នុងរយៈពេល 30s មុនពេលបោះបង់ (លំនាំដើម៖ 2)", "tray": "ចាប់ផ្ដើមក្នុងថាសប្រព័ន្ធ (សម្រាប់កុំព្យូទ័រលើតុប៉ុណ្ណោះ និងត្រូវជ្រើសរើសបើក)", "no_tray": "បិទរូបតំណាងថាសប្រព័ន្ធ", + "ready_timeout": "រយៈពេលអស់ពេលនៃការត្រួតពិនិត្យភាពរួចរាល់ គិតជាមិល្លីវិនាទី (ក៏អាចប្រើ OMNIROUTE_READY_TIMEOUT_MS ផងដែរ, លំនាំដើម 60000)", "tls_cert": "ផ្លូវទៅកាន់វិញ្ញាបនបត្រ TLS (PEM) សម្រាប់បម្រើ HTTPS (ក៏ជា OMNIROUTE_TLS_CERT ផងដែរ)", "tls_key": "ផ្លូវទៅកាន់សោឯកជន TLS (PEM) សម្រាប់បម្រើ HTTPS (ក៏ជា OMNIROUTE_TLS_KEY ផងដែរ)" }, @@ -347,6 +348,16 @@ "running": "ម៉ាស៊ីនមេ MCP កំពុងដំណើរការ ({transport})", "stopped": "ម៉ាស៊ីនមេ MCP បានឈប់ដំណើរការ។", "restarted": "ម៉ាស៊ីនមេ MCP បានចាប់ផ្តើមឡើងវិញ។", + "stoppedHint": "ដំណើរការ `omniroute mcp enable` ដើម្បីបើកវា។", + "enabled": "ម៉ាស៊ីនមេ MCP ត្រូវបានបើក។", + "disabled": "ម៉ាស៊ីនមេ MCP ត្រូវបានបិទ។", + "enable": { + "description": "បើកម៉ាស៊ីនមេ MCP", + "transport": "មធ្យោបាយបញ្ជូនដែលត្រូវប្រើ៖ stdio|sse|streamable-http" + }, + "disable": { + "description": "បិទម៉ាស៊ីនមេ MCP" + }, "call": { "description": "ហៅប្រើឧបករណ៍ MCP ដោយផ្ទាល់", "args": "អាប់ជិចអាគុយម៉ង់ JSON (ក្នុងបន្ទាត់)", diff --git a/bin/cli/locales/kn.json b/bin/cli/locales/kn.json index 511d8e3d04..4d3f577475 100644 --- a/bin/cli/locales/kn.json +++ b/bin/cli/locales/kn.json @@ -256,6 +256,7 @@ "max_restarts": "ಬಿಟ್ಟುಕೊಡುವ ಮೊದಲು 30s ಒಳಗೆ ಕ್ರ್ಯಾಶ್ನಿಂದ ಗರಿಷ್ಠ ಮರುಪ್ರಾರಂಭಗಳ ಸಂಖ್ಯೆ (ಡೀಫಾಲ್ಟ್: 2)", "tray": "ಸಿಸ್ಟಮ್ ಟ್ರೇಯಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿ (ಡೆಸ್ಕ್ಟಾಪ್ ಮಾತ್ರ, ಆಯ್ಕೆ ಮಾಡಿದಲ್ಲಿ)", "no_tray": "ಸಿಸ್ಟಮ್ ಟ್ರೇ ಐಕಾನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ", + "ready_timeout": "ಸಿದ್ಧತಾ ಪ್ರೋಬ್ ಕಾಲಮಿತಿ ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ (OMNIROUTE_READY_TIMEOUT_MS ಕೂಡ, ಡೀಫಾಲ್ಟ್ 60000)", "tls_cert": "HTTPS ಒದಗಿಸಲು TLS ಪ್ರಮಾಣಪತ್ರದ (PEM) ಪಥ (OMNIROUTE_TLS_CERT ಸಹ)", "tls_key": "HTTPS ಒದಗಿಸಲು TLS ಖಾಸಗಿ ಕೀಲಿಯ (PEM) ಪಥ (OMNIROUTE_TLS_KEY ಸಹ)" }, @@ -347,6 +348,16 @@ "running": "MCP ಸರ್ವರ್ ಚಾಲನೆಯಲ್ಲಿದೆ ({transport})", "stopped": "MCP ಸರ್ವರ್ ನಿಲ್ಲಿಸಲಾಗಿದೆ.", "restarted": "MCP ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸಲಾಗಿದೆ.", + "stoppedHint": "ಇದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು `omniroute mcp enable` ಅನ್ನು ಚಲಾಯಿಸಿ.", + "enabled": "MCP ಸರ್ವರ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.", + "disabled": "MCP ಸರ್ವರ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.", + "enable": { + "description": "MCP ಸರ್ವರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", + "transport": "ಬಳಸಬೇಕಾದ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP ಸರ್ವರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + }, "call": { "description": "MCP ಟೂಲ್ ಅನ್ನು ನೇರವಾಗಿ ಆಹ್ವಾನಿಸಿ", "args": "JSON ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳ ಆಬ್ಜೆಕ್ಟ್ (ಇನ್ಲೈನ್)", diff --git a/bin/cli/locales/ko.json b/bin/cli/locales/ko.json index e8de762002..fdd8dba57e 100644 --- a/bin/cli/locales/ko.json +++ b/bin/cli/locales/ko.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON으로 출력", "yesOpt": "확인 건너뛰기" }, + "setup": { + "title": "OmniRoute 설정", + "passwordPrompt": "관리자 비밀번호", + "providerPrompt": "기본 공급자(건너뛰려면 비워 두세요)", + "done": "설정 완료", + "passwordSet": "관리자 비밀번호가 구성되었습니다", + "providerSet": "구성된 공급자: {name}", + "testingProvider": "공급자 연결 테스트 중: {name}", + "testPassed": "공급자 테스트 통과", + "testFailed": "공급자 테스트 실패: {error}", + "loginEnabled": "로그인: 활성화됨(비밀번호 업데이트됨)", + "loginDisabled": "로그인: 비활성화됨", + "providerInfo": "공급자: {info}", + "opencode": "OpenCode용 번들 @omniroute/opencode-plugin 설치 및 구성" + }, + "doctor": { + "title": "OmniRoute 진단", + "dbOk": "데이터베이스: 정상({path})", + "dbMissing": "데이터베이스: 초기화되지 않음 — `omniroute setup`을 실행하세요", + "portOk": "포트 {port}: 사용 가능", + "portConflict": "포트 {port}: 다른 프로세스에서 사용 중", + "encryptionOk": "암호화 키: 구성됨", + "encryptionMissing": "암호화 키 누락 — `omniroute setup`을 실행하세요", + "allGood": "모든 검사를 통과했습니다.", + "warnings": "경고 {count}개 — 위 내용을 확인하세요." + }, + "providers": { + "title": "공급자", + "noProviders": "구성된 공급자가 없습니다. 다음을 실행하세요: omniroute setup", + "testing": "{name} 테스트 중...", + "available": "사용 가능한 공급자 {count}개", + "connected": "연결됨", + "disconnected": "연결 끊김", + "validationFailed": "유효성 검사 실패: {error}", + "metrics": { + "description": "공급자 성능 지표 표시(지연 시간, 성공률, 비용)", + "provider": "공급자 ID로 필터링", + "connection_id": "연결 ID로 필터링", + "period": "기간: 1h|6h|24h|7d|30d(기본값: 24h)", + "metric": "특정 지표 필드에 초점 맞추기", + "sort": "필드별 정렬(내림차순)", + "limit": "최대 행 수(기본값: 50)", + "watch": "5초마다 새로 고침(라이브 모드)", + "compare": "나란히 비교할 쉼표로 구분된 공급자 ID" + }, + "metric_single": { + "description": "특정 연결의 단일 지표 값 가져오기" + }, + "rotate": { + "description": "공급자 연결의 업스트림 API 키 교체", + "newKeyOpt": "새 API 키 값(권장하지 않음: --from-env 사용 권장)", + "fromEnvOpt": "환경 변수 VAR에서 새 키 읽기", + "oauthOpt": "대신 OAuth 재인증 절차 시작", + "skipTestOpt": "교체 후 연결 테스트 건너뛰기", + "dryRunOpt": "실제로 변경하지 않고 변경될 내용 출력", + "confirmPrompt": "연결 \"{name}\" ({id})의 API 키를 교체하시겠습니까? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id})의 키를 교체합니다. 변경 사항은 적용되지 않았습니다.", + "oauthHint": "OAuth 연결 — 실행: omniroute oauth {provider}", + "envVarEmpty": "환경 변수 {var}이(가) 설정되지 않았거나 비어 있습니다.", + "success": "\"{name}\"의 키가 교체되었습니다. 확인하려면 `providers test {id}`를 실행하세요.", + "testPassed": "교체 후 테스트를 통과했습니다.", + "testFailed": "교체 후 테스트 실패: {error}" + }, + "status": { + "description": "모든 제공업체 연결의 키 상태 표시(사용 기간, 만료, 쿨다운)", + "providerOpt": "제공업체 이름으로 필터링", + "header": "ID 제공업체 이름 만료 상태 테스트 상태 쿨다운 종료 시각", + "noData": "사용 가능한 제공업체 연결 데이터가 없습니다.", + "requiresServer": "providers status를 사용하려면 OmniRoute 서버가 실행 중이어야 합니다." + } + }, + "keys": { + "title": "API 키", + "addDescription": "제공업체의 API 키 추가 또는 업데이트", + "listDescription": "구성된 모든 API 키 나열", + "removeDescription": "제공업체의 API 키 제거", + "regenerateDescription": "OmniRoute API 키 재생성", + "revokeDescription": "OmniRoute API 키 폐기", + "revealDescription": "마스킹되지 않은 API 키 값 표시", + "usageDescription": "API 키의 최근 사용 내역 표시", + "usageLimitOpt": "최근 요청 수", + "rotateDescription": "새 키를 생성하고 이전 키 무효화", + "graceOpt": "이전 키가 무효화되기 전 유예 기간(ms)", + "stdinOpt": "인수 대신 stdin에서 API 키 읽기", + "added": "{provider}의 키가 추가되었습니다.", + "removed": "키가 제거되었습니다.", + "listed": "키 {count}개.", + "noKeys": "구성된 키가 없습니다.", + "noUsage": "사용 데이터가 없습니다.", + "confirmRemove": "키 {id}을(를) 제거하시겠습니까?", + "confirmRegenerate": "키 {id}을(를) 재생성하시겠습니까?", + "confirmRevoke": "키 {id}을(를) 폐기하시겠습니까?", + "confirmRotate": "키 {id}을(를) 교체하시겠습니까? (이전 키는 유예 기간 후 무효화됩니다)", + "regenerated": "재생성되었습니다. 새 키: {key}", + "revoked": "키 {id}이(가) 폐기되었습니다.", + "rotated": "키 {id}가 교체되었습니다. 새 키 ID: {newId}", + "revealWarning": "⚠ 마스킹되지 않은 전체 키가 표시됩니다. 화면이 다른 사람에게 보이지 않는지 확인하세요.", + "providerRequired": "제공자는 필수입니다.", + "keyRequired": "API 키는 필수입니다.", + "stdinEmpty": "stdin을 통해 제공된 API 키가 없습니다.", + "unknownProvider": "알 수 없는 제공자: {provider}", + "policy": { + "title": "키 정책", + "showDescription": "키의 요청 한도/비용 정책 표시", + "setDescription": "키의 요청 한도/비용 정책 설정", + "rateLimitOpt": "분당 최대 요청 수", + "maxCostOpt": "일일 최대 비용(USD)", + "allowedModelsOpt": "허용된 모델의 쉼표로 구분된 목록", + "nothingToSet": "제공된 정책 필드가 없습니다. --rate-limit, --max-cost 또는 --allowed-models를 사용하세요.", + "updated": "정책이 업데이트되었습니다." + }, + "expiration": { + "title": "키 만료", + "listDescription": "곧 만료되는 키 목록 표시", + "daysOpt": "N일 이내에 만료되는 키 표시", + "none": "{days}일 이내에 만료되는 키가 없습니다.", + "listTitle": "{days}일 이내에 만료되는 키:" + } + }, + "authExport": { + "description": "복호화된 제공자 자격 증명 내보내기(로컬 전용, 일반 텍스트 출력)", + "idOpt": "이 ID/이름/제공자와 일치하는 연결만 내보내기", + "formatOpt": "출력 형식: json 또는 env", + "outOpt": "stdout 대신 파일에 출력 쓰기(0600 권한으로 기록됨)", + "forceOpt": "일반 텍스트 비밀 정보가 출력되거나 기록됨을 이해했음을 확인", + "warning": "⚠ 복호화된 일반 텍스트 API 키와 OAuth 토큰이 출력되거나 기록됩니다. 화면, 셸 기록 및 모든 출력 파일이 노출되지 않도록 주의하세요.", + "confirmHeading": "⚠ 경고: 복호화된 제공자 자격 증명을 일반 텍스트로 내보냅니다.", + "confirmBody": "이 명령은 선택한 연결의 apiKey, accessToken, refreshToken 및\nidToken을 복호화하여 출력하거나 기록합니다. 출력 내용을 비밀 정보로 취급하세요.", + "confirmFooter": "확인하려면 다음을 실행하세요:\n omniroute auth export --force", + "missingKey": "자격 증명을 내보내려면 STORAGE_ENCRYPTION_KEY가 필요합니다.", + "notFound": "연결을 찾을 수 없음: {id}", + "invalidFormat": "잘못된 형식: {format}. json 또는 env를 사용하세요." + }, + "stream": { + "description": "SSE 검사 모드로 채팅 응답 스트리밍", + "file": "파일에서 프롬프트 읽기", + "stdin": "stdin에서 프롬프트 읽기", + "model": "모델 ID(기본값: auto)", + "system": "시스템 프롬프트", + "combo": "이름으로 특정 콤보 강제 지정", + "max_tokens": "응답의 최대 토큰 수", + "responses_api": "/v1/chat/completions 대신 /v1/responses 사용", + "raw": "수신된 원시 SSE 줄을 그대로 출력", + "debug": "청크별 타이밍 정보를 stderr에 출력", + "save": "모든 SSE 이벤트를 .jsonl 파일에 저장", + "error": { + "empty_prompt": "오류: 프롬프트가 필요합니다(위치 인수, --file 또는 --stdin)" + } + }, + "usage": { + "description": "사용량 분석, 예산, 할당량 및 로그", + "analytics": { + "description": "집계된 사용량 분석 표시", + "period": "기간: 1d|7d|30d|90d|ytd|all (기본값: 30d)", + "provider": "제공자 ID로 필터링" + }, + "budget": { + "description": "비용 예산 관리", + "set": { + "scope": "예산 범위(기본값: global)", + "period": "예산 기간: daily|weekly|monthly (기본값: monthly)" + } + }, + "quota": { + "description": "제공자 할당량 사용량 표시", + "provider": "제공자 ID로 필터링", + "check": "새 요청에 할당량을 사용할 수 있는지 표시" + }, + "logs": { + "description": "요청 호출 로그 표시", + "limit": "반환할 로그 항목 수(기본값: 100)", + "search": "로그 필터링을 위한 검색 쿼리", + "since": "이 타임스탬프 이후의 로그 반환", + "follow": "새 로그 항목을 지속적으로 추적", + "api_key": "API 키로 로그 필터링" + }, + "utilization": { + "description": "API 키 사용률 지표 표시", + "api_key": "API 키로 필터링" + }, + "history": { + "description": "요청 기록 표시", + "limit": "기록 항목 수(기본값: 100)" + }, + "proxy_logs": { + "description": "프록시 수준 요청 로그 표시", + "limit": "프록시 로그 항목 수(기본값: 100)" + } + }, + "cost": { + "description": "제공자, 모델, 콤보 또는 API 키별 세부 내역이 포함된 비용 보고서 표시", + "period": "기간: 1d|7d|30d|90d|ytd|all (기본값: 30d)", + "since": "시작 날짜(ISO 형식, 예: 2026-01-01) — --period보다 우선 적용", + "until": "종료 날짜(ISO 형식)", + "group_by": "결과 그룹화 기준: provider|model|api-key|combo|day (기본값: provider)", + "api_key_filter": "특정 API 키로 필터링", + "limit": "표시할 최대 행 수(기본값: 100)" + }, + "simulate": { + "description": "드라이런 라우팅 시뮬레이션 — 업스트림을 호출하지 않고 선택될 제공자 표시", + "file": "JSON 파일에서 전체 요청 본문 불러오기", + "model": "모델 ID(기본값: auto)", + "combo": "이름으로 특정 콤보 강제 지정", + "reasoning": "추론 노력 수준(low|medium|high)", + "thinking": "확장 사고 토큰 예산", + "explain": "폴백 트리와 비용 범위를 stderr에 출력", + "noCombo": "일치하는 콤보를 찾을 수 없습니다. 다음 명령으로 구성하세요: omniroute combo create" + }, + "chat": { + "description": "OmniRoute에 일회성 채팅 프롬프트 보내기", + "file": "파일에서 프롬프트 읽기", + "stdin": "표준 입력에서 프롬프트 읽기", + "system": "시스템 프롬프트", + "model": "모델 ID(기본값: auto)", + "max_tokens": "응답의 최대 토큰 수", + "temperature": "샘플링 온도(0–2)", + "top_p": "Top-p 핵 샘플링", + "reasoning_effort": "추론 노력 수준(low|medium|high)", + "thinking_budget": "확장 사고 토큰 예산", + "combo": "이름으로 특정 조합 강제 사용", + "responses_api": "/v1/chat/completions 대신 /v1/responses 사용", + "stream": "응답을 점진적으로 스트리밍", + "no_history": "~/.omniroute/cli-history.jsonl에 저장하지 않음", + "error": { + "empty_prompt": "오류: 프롬프트가 필요합니다(위치 인수, --file 또는 --stdin)" + } + }, + "serve": { + "description": "OmniRoute 서버 시작(기본 동작)", + "starting": "포트 {port}에서 OmniRoute 서버를 시작하는 중...", + "ready": "http://localhost:{port}에서 준비 완료", + "stopping": "서버를 중지하는 중(PID {pid})...", + "stopped": "서버가 중지되었습니다.", + "notRunning": "서버가 실행 중이 아닙니다.", + "port": "수신 대기할 포트(기본값: 20128)", + "no_open": "브라우저를 자동으로 열지 않음", + "daemon": "서버를 백그라운드 데몬으로 실행", + "log": "서버 로그를 인라인으로 표시", + "no_recovery": "충돌 시 자동 재시작 비활성화(디버깅 모드)", + "max_restarts": "포기하기 전 30초 이내 최대 충돌 재시작 횟수(기본값: 2)", + "tray": "시스템 트레이에서 시작(데스크톱 전용, 선택 사항)", + "no_tray": "시스템 트레이 아이콘 비활성화", + "ready_timeout": "준비 상태 프로브 제한 시간(ms)(OMNIROUTE_READY_TIMEOUT_MS로도 설정 가능, 기본값: 60000)", + "tls_cert": "HTTPS 제공을 위한 TLS 인증서(PEM) 경로(OMNIROUTE_TLS_CERT로도 설정 가능)", + "tls_key": "HTTPS 제공을 위한 TLS 비공개 키(PEM) 경로(OMNIROUTE_TLS_KEY로도 설정 가능)" + }, + "backup": { + "title": "백업", + "description": "OmniRoute 데이터 백업 생성", + "creating": "백업을 생성하는 중...", + "done": "백업이 {path}에 저장되었습니다.", + "noFiles": "백업할 파일이 없습니다(데이터베이스가 초기화되지 않음)", + "failed": "백업 실패: {error}", + "restoring": "{path}에서 복원하는 중...", + "restored": "복원이 완료되었습니다.", + "restoreDescription": "백업에서 복원", + "listTitle": "사용 가능한 백업", + "noBackups": "백업을 찾을 수 없습니다.", + "notFound": "백업을 찾을 수 없음: {name}", + "confirmRestore": "현재 데이터를 {ts}의 백업으로 덮어쓰시겠습니까?", + "createDescription": "OmniRoute 데이터 백업 생성", + "nameOpt": "사용자 지정 백업 이름", + "cloudOpt": "클라우드 스토리지에 백업 업로드", + "encryptOpt": "AES-256-GCM으로 백업 암호화", + "keyFileOpt": "암호화 암호가 포함된 파일의 경로", + "excludeOpt": "패턴과 일치하는 파일 제외(반복 가능)", + "retentionOpt": "최근 N개의 백업만 유지", + "passphrasePrompt": "암호화 암호:", + "noPassphrase": "암호화된 백업에는 암호가 필요합니다.", + "cloudFailed": "경고: 클라우드 업로드에 실패했습니다. 로컬 백업은 저장되었습니다.", + "cloudUploaded": "클라우드 백업 업로드됨: {url}", + "auto": { + "title": "백업 일정", + "enableDescription": "예약된 자동 백업 활성화", + "disableDescription": "예약된 자동 백업 비활성화", + "statusDescription": "현재 백업 일정 상태 표시", + "cronOpt": "일정의 Cron 표현식(기본값: 매일 오전 3시)", + "enabled": "자동 백업이 활성화되었습니다(Cron: {cron}).", + "hint": "시작 시 omniroute serve가 일정을 읽습니다.", + "disabled": "자동 백업이 비활성화되었습니다.", + "notConfigured": "구성된 백업 일정이 없습니다." + } + }, + "health": { + "description": "서버 상태 및 구성 요소 상태 확인", + "noServer": "서버가 실행 중이 아닙니다. 다음 명령으로 시작하세요: omniroute serve", + "title": "상태", + "status": "상태: {status}", + "uptime": "가동 시간: {uptime}", + "requests": "요청 수(24시간): {count}", + "cost": "비용(24시간): ${cost}" + }, + "quota": { + "description": "제공업체 할당량 사용량 표시", + "noServer": "서버가 실행 중이 아닙니다. 다음 명령으로 시작하세요: omniroute serve", + "noData": "사용 가능한 할당량 정보가 없습니다." + }, + "cache": { + "description": "응답 캐시 관리", + "noServer": "서버가 실행 중이 아닙니다. 다음 명령으로 시작하세요: omniroute serve", + "cleared": "캐시가 삭제되었습니다.", + "clearFailed": "캐시를 삭제하지 못했습니다." + }, + "redis": { + "description": "OmniRoute 캐싱 및 할당량 추적을 위한 로컬 Redis 컨테이너(Podman 또는 Docker)를 원클릭으로 실행" + }, + "test": { + "description": "제공업체 연결 테스트", + "noServer": "서버가 실행 중이 아닙니다. 다음 명령으로 시작하세요: omniroute serve", + "testing": "{provider} / {model} 테스트 중...", + "passed": "연결에 성공했습니다!", + "failed": "연결에 실패했습니다: {error}", + "allProvidersOpt": "구성된 모든 제공자 테스트", + "latencyOpt": "지연 시간 측정값 표시(평균/최소/최대 ms)", + "repeatOpt": "테스트를 N회 반복하고 결과 집계", + "compareOpt": "비교할 모델을 쉼표로 구분하여 입력(예: gpt-4o,claude-3-5-sonnet)", + "saveOpt": "결과를 JSON 파일에 저장", + "saved": "결과가 {path}에 저장되었습니다", + "compareTitle": "모델 비교", + "compareMinTwo": "--compare에는 최소 두 개의 모델이 필요합니다(쉼표로 구분)", + "noProviders": "구성된 제공자가 없습니다. 다음 명령으로 추가하세요: omniroute keys add" + }, + "update": { + "checking": "업데이트 확인 중...", + "upToDate": "이미 최신 버전입니다({version}).", + "available": "사용 가능한 업데이트: {current} → {latest}", + "installing": "{latest} 설치 중...", + "done": "{latest}(으)로 업데이트되었습니다. 적용하려면 서버를 다시 시작하세요." + }, + "mcp": { + "title": "MCP 서버", + "running": "MCP 서버 실행 중({transport})", + "stopped": "MCP 서버가 중지되었습니다.", + "restarted": "MCP 서버가 다시 시작되었습니다.", + "stoppedHint": "활성화하려면 `omniroute mcp enable`을 실행하세요.", + "enabled": "MCP 서버가 활성화되었습니다.", + "disabled": "MCP 서버가 비활성화되었습니다.", + "enable": { + "description": "MCP 서버 활성화", + "transport": "사용할 전송 방식: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP 서버 비활성화" + }, + "call": { + "description": "MCP 도구 직접 호출", + "args": "JSON 인수 객체(인라인)", + "args_file": "JSON 인수 파일 경로", + "stream": "스트리밍 엔드포인트 사용(/api/mcp/stream)", + "scope": "필수 범위(반복 가능, 예: read:health)" + }, + "scopes": { + "description": "사용 가능한 MCP 범위 목록 표시", + "tool": "특정 도구에 필요한 범위 표시" + }, + "tools": { + "description": "MCP 도구 검사", + "list": { + "description": "모든 MCP 도구 목록 표시", + "scope": "범위별 필터링" + }, + "info": { + "description": "MCP 도구의 메타데이터 표시" + }, + "schema": { + "description": "MCP 도구의 입력/출력 JSON 스키마 표시", + "io": "스키마 종류: input|output (기본값: input)" + } + }, + "audit": { + "description": "MCP 감사 로그(audit --source mcp의 별칭)" + } + }, + "a2a": { + "skills": { + "description": "에이전트 카드에서 사용 가능한 A2A 스킬 목록 표시" + }, + "invoke": { + "description": "A2A 스킬을 호출하고 작업 ID 반환", + "input": "JSON 입력 객체", + "input_file": "JSON 입력 파일 경로", + "wait": "반환하기 전에 작업이 완료될 때까지 대기", + "timeout": "완료 대기 시간 제한(ms)(기본값: 60000)" + }, + "tasks": { + "description": "A2A 작업 관리", + "list": { + "status": "상태별 필터링", + "skill": "스킬 ID별 필터링" + }, + "watch": { + "description": "완료될 때까지 작업 상태 폴링" + }, + "stream": { + "description": "SSE를 통해 작업 실행 이벤트 스트리밍" + }, + "logs": { + "description": "작업 메시지 및 아티팩트 표시" + } + } + }, + "policy": { + "description": "OmniRoute 권한 부여 정책 관리", + "list": { + "description": "정책 목록 표시", + "kind": "종류별 필터링(allow|deny|rate-limit|cost-cap)", + "scope": "범위별 필터링(global|api-key|provider)" + }, + "get": { + "description": "ID로 정책 세부 정보 가져오기" + }, + "create": { + "description": "JSON 파일에서 정책 생성", + "file": "정책 JSON 파일 경로" + }, + "update": { + "description": "JSON 파일에서 정책 업데이트", + "file": "정책 JSON 파일 경로" + }, + "delete": { + "description": "ID로 정책 삭제", + "yes": "확인 프롬프트 건너뛰기" + }, + "evaluate": { + "description": "정책 평가 시험 실행(종료 코드 0=허용, 4=거부)", + "api_key": "평가할 API 키", + "action": "확인할 작업(예: chat, embed, admin)", + "resource": "리소스 경로 또는 식별자", + "context": "JSON 객체 형식의 추가 컨텍스트" + }, + "export": { + "description": "모든 정책을 JSON 파일로 내보내기" + }, + "import": { + "description": "JSON 파일에서 정책 가져오기", + "overwrite": "동일한 ID의 기존 정책 덮어쓰기" + } + }, + "compression": { + "description": "OmniRoute 압축 파이프라인 구성 및 검사", + "status": { + "description": "현재 압축 상태 및 설정 표시" + }, + "configure": { + "description": "압축 설정 구성", + "engine": "압축 엔진(caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman 적극성 0.0~1.0", + "rtk_budget": "RTK 토큰 예산", + "language_pack": "활성화할 언어 팩" + }, + "engine": { + "description": "활성 압축 엔진 가져오기 또는 설정" + }, + "combos": { + "description": "압축 조합 통계 관리" + }, + "rules": { + "description": "압축 규칙 관리", + "add": { + "pattern": "일치시킬 패턴(regex 또는 field:pattern)", + "action": "작업: drop|shrink|replace" + } + }, + "language_packs": { + "description": "사용 가능한 압축 언어 팩 목록 표시" + }, + "preview": { + "description": "요청에 대한 압축 효과 미리보기", + "file": "요청 JSON 파일 경로" + } + }, + "tunnel": { + "title": "터널", + "listDescription": "활성 터널 목록 표시", + "createDescription": "터널 생성", + "created": "터널 생성됨: {url}", + "stopped": "터널이 중지되었습니다.", + "confirmStop": "터널 {id}을(를) 중지하시겠습니까?", + "stopDescription": "터널 중지", + "statusDescription": "터널의 상세 상태 표시", + "logsDescription": "터널 로그 표시", + "infoDescription": "터널의 구성 세부 정보 표시", + "rotateDescription": "새 터널 URL 생성", + "tailOpt": "표시할 로그 줄 수", + "typeRequired": "터널 유형이 필요합니다.", + "noLogs": "사용 가능한 로그가 없습니다.", + "notAvailable": "터널 정보를 사용할 수 없습니다.", + "noTunnels": "활성 터널이 없습니다.", + "infoTitle": "터널 정보: {type}", + "rotated": "터널 URL이 갱신되었습니다: {url}", + "confirmRotate": "터널 {type}을(를) 갱신하시겠습니까? (새 URL이 생성됩니다)" + }, + "stop": { + "description": "OmniRoute 서버 중지", + "stopping": "서버를 중지하는 중(PID {pid})...", + "stopped": "서버가 중지되었습니다.", + "notRunning": "실행 중인 서버가 없습니다.", + "portFallback": "PID 파일을 찾을 수 없어 포트 기반 중지를 시도합니다..." + }, + "restart": { + "description": "OmniRoute 서버 다시 시작", + "restarting": "OmniRoute 서버를 다시 시작하는 중..." + }, + "dashboard": { + "description": "브라우저에서 OmniRoute 대시보드 열기", + "opening": "{url}에서 대시보드를 여는 중", + "urlOnly": "브라우저를 열지 않고 대시보드 URL 출력", + "tui": "대화형 TUI 대시보드 열기(터미널 UI, 탭 7개)" + }, + "models": { + "description": "사용 가능한 모델 목록 표시(서버 필요)", + "search": "ID, 이름, 제공업체 또는 설명을 기준으로 모델 필터링", + "noServer": "서버가 실행 중이 아닙니다. 다음 명령으로 시작하세요: omniroute serve", + "noModels": "모델을 찾을 수 없습니다." + }, + "audit": { + "description": "규정 준수 및 MCP 감사 로그에 액세스", + "source": "로그 소스: all|compliance|mcp (기본값: all)", + "since": "이 타임스탬프 이후의 항목 반환(ISO 8601)", + "until": "이 타임스탬프까지의 항목 반환(ISO 8601)", + "tail": { + "description": "최근 감사 로그 항목 표시", + "follow": "새 항목을 지속적으로 추적(2초 간격 폴링)", + "limit": "표시할 최대 항목 수(기본값: 100)" + }, + "search": { + "description": "키워드로 감사 로그 항목 검색", + "limit": "최대 결과 수(기본값: 200)", + "actor": "행위자 ID로 필터링", + "action": "작업 이름으로 필터링" + }, + "export": { + "description": "감사 로그를 파일로 내보내기", + "format": "출력 형식: jsonl|csv (기본값: jsonl)" + }, + "stats": { + "description": "감사 로그 통계 표시", + "period": "기간: 1d|7d|30d (기본값: 7d)" + }, + "get": { + "description": "ID로 단일 감사 로그 항목 가져오기" + } + }, + "skills": { + "description": "OmniRoute 스킬 관리(sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "설치된 스킬 목록 표시", + "type": "유형별 필터링(sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "활성화된 스킬만 표시", + "disabled": "비활성화된 스킬만 표시", + "api_key": "API 키로 필터링" + }, + "get": { + "description": "ID로 스킬 세부 정보 가져오기" + }, + "install": { + "description": "파일 또는 URL에서 스킬 설치", + "from_file": "스킬 JSON 정의 파일 경로", + "from_url": "원격 스킬 정의 URL", + "type": "스킬 유형(sandbox|custom|hybrid)", + "enable": "설치 후 스킬 활성화" + }, + "enable": { + "description": "ID로 스킬 활성화" + }, + "disable": { + "description": "ID로 스킬 비활성화", + "yes": "확인 메시지 건너뛰기" + }, + "delete": { + "description": "ID로 스킬 삭제", + "yes": "확인 메시지 건너뛰기" + }, + "execute": { + "description": "ID로 스킬 실행", + "input": "JSON 입력 객체", + "input_file": "JSON 입력 파일 경로", + "timeout": "실행 제한 시간(ms)(기본값: 30000)" + }, + "executions": { + "description": "스킬 실행 기록 목록 표시", + "skill": "스킬 ID로 필터링", + "limit": "최대 결과 수(기본값: 50)", + "status": "상태로 필터링(running|completed|failed)" + }, + "skillssh": { + "description": "SSH를 통해 설치된 스킬 관리" + }, + "marketplace": { + "description": "마켓플레이스에서 스킬 탐색 및 설치" + }, + "mp": { + "search": { + "description": "마켓플레이스 패키지 검색", + "category": "카테고리로 필터링", + "tag": "태그로 필터링", + "limit": "최대 결과 수(기본값: 30)", + "sort": "정렬 기준: downloads|rating|recent" + }, + "info": { + "description": "패키지 세부 정보 및 readme 보기" + }, + "install": { + "description": "마켓플레이스 패키지 설치", + "version": "패키지 버전(기본값: latest)", + "enable": "설치 후 활성화", + "yes": "확인 메시지 건너뛰기" + }, + "categories": { + "description": "마켓플레이스 카테고리 목록 보기" + }, + "featured": { + "description": "추천 마켓플레이스 패키지 보기" + } + } + }, + "memory": { + "description": "OmniRoute 대화형 메모리 관리(FTS5 + vector)", + "search": { + "description": "의미론적 쿼리로 메모리 항목 검색", + "type": "메모리 유형으로 필터링(user|feedback|project|reference)", + "limit": "최대 결과 수(기본값: 20)", + "api_key": "API 키로 필터링", + "token_budget": "결과의 총 토큰 수 제한" + }, + "add": { + "description": "새 메모리 항목 추가", + "content": "메모리 텍스트 콘텐츠", + "file": "파일에서 콘텐츠 읽기", + "type": "메모리 유형(기본값: user)", + "metadata": "JSON 메타데이터 객체", + "api_key": "API 키와 연결" + }, + "clear": { + "description": "필터와 일치하는 메모리 항목 삭제", + "type": "유형으로 필터링", + "older": "지정된 기간보다 오래된 항목 삭제(30d, 6m, 1y)", + "api_key": "API 키로 필터링", + "yes": "확인 메시지 건너뛰기" + }, + "list": { + "description": "검색 순위 없이 메모리 항목 목록 보기", + "type": "유형으로 필터링", + "limit": "최대 결과 수(기본값: 100)", + "api_key": "API 키로 필터링" + }, + "get": { + "description": "ID로 단일 메모리 항목 가져오기" + }, + "delete": { + "description": "ID로 메모리 항목 삭제", + "yes": "확인 프롬프트 건너뛰기" + }, + "health": { + "description": "메모리 하위 시스템 상태 표시(FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth 제공자 연결 관리", + "providers": { + "description": "OAuth 지원 제공자 및 흐름 유형 목록 표시" + }, + "start": { + "description": "제공자의 OAuth 인증 흐름 시작", + "provider": "제공자 ID (gemini, copilot, cursor, …)", + "no_browser": "URL만 출력 — 브라우저를 열지 않음", + "import_system": "로컬 시스템 설정에서 자격 증명 자동 가져오기", + "social": "소셜 로그인 제공자(google|github) — kiro에 필수", + "timeout": "인증 대기 시간 제한(ms, 기본값: 300000)" + }, + "status": { + "description": "활성 OAuth 연결 목록 표시", + "provider": "제공자 ID로 필터링" + }, + "revoke": { + "description": "OAuth 연결 해지", + "provider": "해지할 제공자 ID", + "connection_id": "ID로 특정 연결 해지", + "yes": "확인 프롬프트 건너뛰기" + } + }, + "cloud": { + "description": "클라우드 AI 에이전트 작업 관리(codex, devin, jules)", + "agents": { + "description": "사용 가능한 클라우드 에이전트 목록 표시" + }, + "agent": { + "description": "{agent} 클라우드 에이전트 작업 관리", + "auth": { + "description": "OAuth를 통해 {agent} 인증" + } + }, + "task": { + "description": "클라우드 에이전트 작업 관리", + "create": { + "description": "새 에이전트 작업 생성", + "title": "작업 제목(기본값: 프롬프트의 처음 80자)", + "prompt": "작업 프롬프트 텍스트", + "prompt_file": "파일에서 프롬프트 읽기", + "repo": "작업용으로 복제할 저장소 URL", + "branch": "사용할 브랜치 이름", + "metadata": "JSON 메타데이터 객체" + }, + "list": { + "description": "에이전트 작업 목록 표시", + "status": "상태별 필터링(running|completed|failed|cancelled)", + "limit": "최대 결과 수(기본값: 50)" + }, + "get": { + "description": "ID로 작업 세부 정보 가져오기" + }, + "status": { + "description": "작업 상태 출력(running|completed|failed|cancelled)" + }, + "cancel": { + "description": "실행 중인 작업 취소", + "yes": "확인 프롬프트 건너뛰기" + }, + "approve": { + "description": "실행을 시작하도록 에이전트 계획 승인" + }, + "message": { + "description": "실행 중인 작업에 메시지 보내기" + } + }, + "sources": { + "description": "작업에서 생성된 소스 파일 목록 표시" + } + }, + "eval": { + "description": "평가 스위트 및 실행 관리", + "suites": { + "description": "평가 스위트 관리", + "list": { + "description": "평가 스위트 목록 보기" + }, + "get": { + "description": "ID로 평가 스위트 세부 정보 가져오기" + }, + "create": { + "description": "JSON 파일에서 평가 스위트 만들기", + "file": "스위트 정의 JSON 파일 경로" + } + }, + "run": { + "description": "스위트에 대한 평가 실행 시작", + "model": "평가할 모델 ID(기본값: auto)", + "combo": "이름으로 특정 조합 강제 지정", + "concurrency": "동시 실행 샘플 수(기본값: 4)", + "tag": "나중에 필터링할 수 있도록 이 실행에 태그 지정", + "watch": "완료될 때까지 실행 진행 상황 확인" + }, + "list": { + "description": "평가 실행 목록 보기", + "suite": "스위트 ID로 필터링", + "status": "상태로 필터링", + "since": "이 타임스탬프 이후의 실행 반환", + "limit": "최대 결과 수(기본값: 50)" + }, + "get": { + "description": "ID로 평가 실행 세부 정보 가져오기" + }, + "results": { + "description": "평가 실행의 샘플 결과 보기", + "failed": "실패한 샘플만 보기" + }, + "cancel": { + "description": "실행 중인 평가 취소", + "yes": "확인 프롬프트 건너뛰기" + }, + "scorecard": { + "description": "완료된 평가 실행의 스코어카드 보기" + } + }, + "webhooks": { + "description": "OmniRoute 웹훅 관리", + "events": { + "description": "사용 가능한 모든 웹훅 이벤트 유형 목록 보기" + }, + "list": { + "description": "구성된 웹훅 목록 보기" + }, + "get": { + "description": "ID로 웹훅 세부 정보 가져오기" + }, + "add": { + "description": "새 웹훅 등록", + "url": "대상 URL", + "events": "쉼표로 구분된 이벤트 유형 목록", + "secret": "HMAC 서명 비밀 키", + "header": "key=value 형식의 추가 헤더(반복 가능)", + "no_enabled": "비활성화 상태로 웹훅 만들기" + }, + "update": { + "description": "기존 웹훅 업데이트", + "enabled": "활성화 상태 설정(true|false)" + }, + "remove": { + "description": "웹훅 삭제", + "yes": "확인 프롬프트 건너뛰기" + }, + "test": { + "description": "웹훅에 테스트 이벤트 보내기", + "event": "시뮬레이션할 이벤트 유형(기본값: request.completed)" + } + }, "program": { "description": "OmniRoute — 자동 폴백 기능을 갖춘 스마트 AI 라우터", "version": "버전 출력 후 종료", @@ -26,7 +832,509 @@ "context": "이 명령에 사용할 서버 컨텍스트/프로필", "lang": "CLI 표시 언어 설정 (OMNIROUTE_LANG 재정의)" }, - "redis": { - "description": "OmniRoute 캐싱 및 할당량 추적을 위한 로컬 Redis 컨테이너(Podman 또는 Docker)를 원클릭으로 실행" + "files": { + "description": "파일 관리(업로드, 목록 보기, 가져오기, 다운로드, 삭제)", + "list": { + "purpose": "용도별 필터링", + "limit": "최대 결과 수" + }, + "get": { + "description": "파일 메타데이터 가져오기" + }, + "upload": { + "description": "파일 업로드", + "purpose": "파일 용도 (batch, assistants, fine-tune)" + }, + "content": { + "description": "파일 콘텐츠 다운로드", + "out": "저장 경로 (기본값: stdout)" + }, + "delete": { + "yes": "확인 건너뛰기" + } + }, + "batches": { + "description": "OpenAI 호환 배치 작업 관리", + "list": { + "status": "상태별 필터링", + "limit": "최대 결과 수" + }, + "create": { + "description": "배치 작업 생성", + "inputFile": "입력 파일 ID", + "endpoint": "대상 엔드포인트", + "window": "완료 기간", + "metadata": "메타데이터 key=value 추가" + }, + "submit": { + "description": "JSONL 파일 업로드 및 배치 생성", + "jsonl": "JSONL 파일 경로", + "endpoint": "대상 엔드포인트", + "wait": "완료될 때까지 대기" + }, + "cancel": { + "yes": "확인 건너뛰기" + }, + "wait": { + "timeout": "제한 시간(ms)" + }, + "output": { + "out": "출력 저장 경로" + }, + "errors": { + "out": "오류 저장 경로" + } + }, + "translator": { + "description": "LLM 형식 간 요청 본문 변환", + "detect": { + "description": "본문 형식 감지" + }, + "translate": { + "description": "본문을 한 형식에서 다른 형식으로 변환" + }, + "send": { + "description": "변환 후 업스트림으로 전달" + }, + "stream": { + "description": "요청 본문을 스트리밍 방식으로 변환" + }, + "from": "소스 형식 (openai|anthropic|gemini|cohere)", + "to": "대상 형식 (openai|anthropic|gemini|cohere)", + "file": "요청 본문 JSON 파일 경로", + "out": "출력을 파일에 저장", + "model": "모델 재정의", + "history": { + "limit": "최대 결과 수" + } + }, + "pricing": { + "description": "모델 가격 데이터 관리", + "sync": { + "description": "업스트림 소스에서 가격 동기화", + "provider": "제공업체별 필터링", + "force": "강제 재동기화" + }, + "list": { + "provider": "제공업체별 필터링", + "model": "모델별 필터링", + "limit": "최대 결과 수" + }, + "defaults": { + "description": "기본 요금 관리", + "input": "100만 토큰당 입력 비용(USD)", + "output": "100만 토큰당 출력 비용(USD)", + "cacheRead": "100만 토큰당 캐시 읽기 비용(USD)", + "cacheWrite": "100만 토큰당 캐시 쓰기 비용(USD)" + }, + "diff": { + "description": "업스트림 가격과의 차이 표시", + "model": "모델로 필터링" + } + }, + "radar": { + "description": "로컬 Radar 카탈로그 피드 검사 및 동기화", + "status": "로컬 Radar 설정 및 피드 캐시 상태 표시", + "sync": "로컬 서버를 통해 카탈로그, 추천, 혜택 및 Intel 동기화" + }, + "resilience": { + "description": "복원력 메커니즘 검사 및 관리", + "status": { + "provider": "제공업체로 필터링" + }, + "breakers": { + "provider": "제공업체로 필터링" + }, + "cooldowns": { + "provider": "제공업체로 필터링", + "connectionId": "연결 ID로 필터링" + }, + "lockouts": { + "provider": "제공업체로 필터링", + "model": "모델로 필터링" + }, + "reset": { + "description": "차단기/쿨다운 상태 초기화", + "provider": "초기화할 제공업체", + "connectionId": "초기화할 연결 ID", + "model": "잠금 해제할 모델", + "allCooldowns": "제공업체의 모든 쿨다운 초기화", + "yes": "확인 건너뛰기" + }, + "profile": { + "description": "복원력 프로필 관리", + "name": "프로필 이름" + }, + "config": { + "description": "복원력 구성 관리", + "threshold": "실패 임계값", + "resetTimeout": "초기화 제한 시간(ms)", + "baseCooldown": "기본 쿨다운(ms)" + } + }, + "nodes": { + "description": "제공업체 노드(엔드포인트) 관리", + "list": { + "provider": "제공업체로 필터링", + "enabled": "활성화된 노드만 표시" + }, + "add": { + "provider": "제공업체 이름", + "baseUrl": "노드의 기본 URL", + "name": "노드 이름", + "weight": "부하 분산 가중치", + "region": "지역 태그", + "authHeader": "사용자 지정 인증 헤더(key=value)" + }, + "update": { + "baseUrl": "새 기본 URL", + "name": "새 이름", + "weight": "새 가중치", + "region": "새 리전", + "enabled": "활성화 또는 비활성화(true|false)" + }, + "remove": { + "yes": "확인 건너뛰기" + }, + "validate": { + "baseUrl": "검증할 URL", + "provider": "검증에 사용할 제공업체" + }, + "test": { + "description": "노드에 테스트 요청 보내기" + }, + "metrics": { + "description": "노드 메트릭 표시", + "period": "기간(예: 24h, 7d)" + } + }, + "context": { + "description": "컨텍스트 엔지니어링 파이프라인 구성(Caveman, RTK)", + "analytics": { + "period": "기간(예: 7d, 30d)" + }, + "caveman": { + "description": "Caveman 컨텍스트 압축기 관리", + "config": { + "description": "Caveman 구성 표시 또는 업데이트", + "aggressiveness": "적극성 0.0–1.0", + "maxShrinkPct": "최대 축소 비율", + "preserveTags": "보존할 태그(쉼표로 구분)" + } + }, + "rtk": { + "description": "RTK 컨텍스트 최적화 도구 관리", + "config": { + "description": "RTK 구성 표시 또는 업데이트", + "tokenBudget": "RTK의 토큰 예산", + "reservePct": "예약 비율" + }, + "filters": { + "description": "RTK 필터 관리", + "pattern": "필터 패턴(정규식)", + "priority": "필터 우선순위(기본값: 100)", + "action": "필터 작업: drop|shrink|replace", + "yes": "확인 건너뛰기" + }, + "test": { + "file": "요청 JSON 파일 경로" + } + }, + "combos": { + "description": "컨텍스트 인식 콤보 관리" + } + }, + "sessions": { + "description": "활성 세션 검사 및 관리", + "list": { + "user": "사용자별 필터링", + "kind": "종류별 필터링(dashboard|api-key|mcp|a2a)", + "active": "활성 세션만 표시", + "limit": "최대 결과 수(기본값: 100)" + }, + "expire": { + "yes": "확인 건너뛰기" + }, + "expireAll": { + "user": "세션을 만료시킬 사용자", + "yes": "확인 건너뛰기" + } + }, + "tags": { + "description": "리소스 태그 관리", + "add": { + "color": "태그 색상(16진수 또는 이름)", + "description": "태그 설명" + }, + "remove": { + "yes": "확인 건너뛰기" + }, + "assign": { + "tag": "태그 이름", + "to": "대상 리소스(type:id 형식, 예: provider:openai)" + }, + "unassign": { + "tag": "태그 이름", + "from": "소스 리소스(type:id 형식)" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI 사양에 액세스하고 테스트", + "dump": { + "description": "OpenAPI 사양을 stdout 또는 파일로 덤프", + "format": "출력 형식: yaml|json (기본값: yaml)", + "out": "저장할 파일 경로" + }, + "validate": { + "description": "OpenAPI 사양 검증" + }, + "try": { + "description": "사양을 통해 API 엔드포인트 테스트", + "method": "HTTP 메서드(기본값: GET)", + "body": "요청 본문 JSON 파일 경로", + "query": "key=value 형식의 쿼리 매개변수(반복 가능)", + "header": "key=value 형식의 헤더(반복 가능)" + }, + "endpoints": { + "description": "모든 API 엔드포인트 나열", + "search": "경로 또는 요약으로 필터링" + }, + "paths": { + "description": "모든 API 경로 나열" + } + }, + "combo": { + "title": "콤보", + "switched": "활성 콤보: {name}", + "created": "콤보가 생성되었습니다: {name}", + "deleted": "콤보가 삭제되었습니다: {name}", + "noCombos": "설정된 콤보가 없습니다.", + "confirmDelete": "콤보 {name}을(를) 삭제하시겠습니까?", + "suggest": { + "description": "AI 점수를 사용하여 작업에 가장 적합한 콤보 추천", + "task": "작업 설명", + "maxCost": "요청당 최대 비용(USD)", + "maxLatencyMs": "최대 지연 시간(밀리초)", + "weights": "JSON 점수 가중치(예: {\"latency\":0.7,\"cost\":0.3})", + "top": "표시할 상위 후보 수(기본값: 5)", + "explain": "근거를 stderr에 출력", + "switch": "가장 높은 순위의 콤보 활성화" + } + }, + "oneproxy": { + "description": "OneProxy 업스트림 풀 관리", + "stats": { + "provider": "제공업체별 필터링", + "period": "기간(기본값: 24h)" + }, + "fetch": { + "description": "풀에서 프록시 가져오기", + "count": "가져올 프록시 수(기본값: 1)", + "type": "프록시 유형: http|socks5 (기본값: http)" + }, + "rotate": { + "description": "프록시 강제 교체", + "provider": "교체할 제공업체", + "connectionId": "교체할 특정 연결 ID" + }, + "config": { + "description": "OneProxy 설정 표시 또는 업데이트", + "enabled": "프록시 풀 활성화 (true|false)", + "poolSize": "풀 크기", + "providerSource": "프록시 제공업체 URL", + "rotationPolicy": "로테이션 정책: sticky|per-request|periodic" + }, + "pool": { + "description": "현재 프록시 풀과 메트릭 목록 표시" + } + }, + "open": { + "description": "브라우저에서 특정 OmniRoute 대시보드 페이지 열기", + "url": "URL만 출력하고 브라우저는 열지 않기" + }, + "telemetry": { + "description": "집계된 텔레메트리 데이터에 액세스", + "summary": { + "description": "집계된 텔레메트리 요약 표시", + "period": "기간: 24h|7d|30d (기본값: 24h)", + "compareTo": "이전 기간과 비교" + }, + "export": { + "description": "텔레메트리 이벤트를 JSONL로 내보내기", + "out": "출력 파일 경로 (기본값: telemetry.jsonl)", + "period": "내보내기 기간 (기본값: 7d)" + } + }, + "sync": { + "description": "OmniRoute 인스턴스 간 구성 동기화", + "push": { + "description": "구성을 클라우드 또는 원격 인스턴스로 푸시", + "target": "대상 (cloud 또는 context:name)", + "bundle": "동기화할 번들 구성 요소", + "dryRun": "적용하지 않고 미리 보기" + }, + "pull": { + "description": "클라우드 또는 원격에서 구성 가져오기", + "source": "소스 (cloud 또는 context:name)", + "merge": "기존 구성과 병합", + "replace": "기존 구성 교체", + "dryRun": "적용하지 않고 미리 보기" + }, + "diff": { + "source": "소스 컨텍스트", + "target": "대상 컨텍스트" + }, + "bundle": { + "description": "구성을 번들 파일로 내보내기", + "include": "포함할 구성 요소 (쉼표로 구분)" + }, + "import": { + "description": "번들 파일 가져오기", + "dryRun": "적용하지 않고 유효성 검사" + }, + "initialize": { + "fromCloud": "클라우드 백업에서 초기화" + }, + "tokens": { + "description": "동기화 토큰 관리", + "create": { + "name": "토큰 이름", + "scope": "토큰 범위", + "ttl": "토큰 TTL (예: 30d)" + }, + "revoke": { + "yes": "확인 건너뛰기" + } + }, + "resolve": { + "description": "동기화 충돌을 대화형으로 해결" + } + }, + "config": { + "contexts": { + "description": "서버 컨텍스트/프로필 관리 (추가, 사용, 목록 표시, 상세 표시, 제거, 이름 변경, 내보내기, 가져오기)" + }, + "lang": { + "description": "CLI 표시 언어 관리", + "getDescription": "현재 활성화된 언어 코드 표시", + "setDescription": "표시 언어를 설정하고 구성에 저장", + "listDescription": "사용 가능한 모든 언어 나열", + "listTitle": "사용 가능한 언어", + "current": "언어: {code} ({name})", + "saved": "언어가 {code}({name})(으)로 설정되었습니다.", + "noCode": "언어 코드가 필요합니다. 사용 가능한 코드를 확인하려면 'omniroute config lang list'를 실행하세요.", + "unknown": "알 수 없는 언어 코드: {code}. 사용 가능한 코드를 확인하려면 'omniroute config lang list'를 실행하세요.", + "alreadySet": "언어가 이미 {code}(으)로 설정되어 있습니다.", + "envHint": "팁: 환경에서 OMNIROUTE_LANG={code}로 설정할 수도 있습니다." + } + }, + "completion": { + "description": "셸 자동 완성 스크립트 생성 또는 설치", + "zsh": "zsh 자동 완성 스크립트 출력", + "bash": "bash 자동 완성 스크립트 출력", + "fish": "fish 자동 완성 스크립트 출력", + "install": "감지된 셸의 자동 완성 스크립트를 전역으로 설치", + "refresh": "콤보/제공업체/모델 캐시 새로 고침" + }, + "logs": { + "description": "요청 로그 스트리밍 또는 내보내기", + "follow": "실시간으로 로그 스트리밍", + "filter": "레벨별 필터링(error,warn,info) — 쉼표로 구분", + "lines": "가져올 줄 수", + "timeout": "연결 제한 시간(ms)", + "baseUrl": "OmniRoute API 기본 URL", + "requestId": "요청 ID로 필터링", + "apiKey": "API 키로 필터링", + "combo": "콤보 이름으로 필터링", + "status": "HTTP 상태 코드로 필터링", + "durationMin": "최소 요청 소요 시간(ms)", + "durationMax": "최대 요청 소요 시간(ms)", + "export": "로그를 파일로 저장(json/jsonl/csv)", + "exported": "로그가 {path}에 저장되었습니다.", + "stopped": "로그 스트리밍이 중지되었습니다.", + "streamError": "로그 스트리밍 오류: {message}" + }, + "tray": { + "description": "시스템 트레이 아이콘 제어", + "show": "트레이 아이콘 표시(서버가 --tray 옵션으로 실행 중인 경우)", + "hide": "트레이 아이콘 숨기기", + "quit": "트레이를 통해 OmniRoute 종료" + }, + "autostart": { + "description": "부팅 시 OmniRoute 자동 시작 관리(Linux: systemd 사용자 서비스)", + "enable": "부팅 시 자동 시작 활성화", + "disable": "부팅 시 자동 시작 비활성화", + "toggle": "부팅 시 자동 시작 전환", + "status": "자동 시작 상태 표시" + }, + "runtime": { + "description": "네이티브 런타임 종속성 관리", + "check": "런타임 디렉터리의 네이티브 종속성 상태 확인", + "repair": "런타임 디렉터리에 네이티브 종속성 재설치", + "repair_force": "유효한 경우에도 강제로 재설치", + "clean": "런타임 디렉터리 제거(디스크 공간 확보)", + "clean_yes": "확인 건너뛰기" + }, + "repl": { + "description": "LLM을 사용하는 대화형 멀티턴 REPL", + "model": "사용할 모델(기본값: auto)", + "combo": "사용할 콤보 이름", + "system": "시스템 프롬프트", + "resume": "이름으로 저장된 세션 재개" + }, + "plugin": { + "description": "CLI 플러그인 관리(omniroute-cmd-*)", + "list": "설치된 플러그인 목록 표시", + "install": "npm 또는 로컬 경로에서 플러그인 설치", + "remove": "설치된 플러그인 제거", + "info": "설치된 플러그인의 세부 정보 표시", + "search": "npm 레지스트리에서 사용 가능한 플러그인 검색", + "update": "설치된 플러그인 업데이트", + "scaffold": "새 플러그인 보일러플레이트 생성" + }, + "launch": { + "description": "OmniRoute를 가리키도록 Claude Code 실행(로컬 또는 원격, --profile 사용)", + "token": "Claude 클라이언트가 전송해야 하는 토큰(ANTHROPIC_AUTH_TOKEN)", + "notRunning": "{port}에서 OmniRoute에 연결할 수 없습니다. 'omniroute serve'로 시작하세요.", + "notFound": "PATH에서 'claude' CLI를 찾을 수 없습니다." + }, + "run": { + "description": "OmniRoute를 통해 지원되는 CLI 대상 실행" + }, + "setupClaude": { + "description": "OmniRoute 모델 카탈로그에서 ~/.claude/profiles Claude Code 프로필 생성" + }, + "connect": { + "description": "원격 OmniRoute 서버에 연결하고 원격 모드로 전환" + }, + "tokens": { + "description": "범위가 지정된 CLI 액세스 토큰 관리(원격 모드)" + }, + "configure": { + "description": "활성 서버에서 제공자+모델을 선택하고 지원되는 로컬 CLI 구성" + }, + "launchCodex": { + "description": "OmniRoute를 가리키도록 Codex CLI 실행(로컬 또는 원격 VPS)" + }, + "setupCodex": { + "description": "OmniRoute 실시간 모델 카탈로그에서 ~/.codex 프로필 파일 생성" + }, + "packs": { + "description": "선택적 런타임 팩 관리(ML / 브라우저 자동화)", + "listDescription": "선택적 팩과 설치 상태 목록 표시", + "installDescription": "DATA_DIR에 선택적 팩 설치", + "verifyDescription": "제공된 체크섬 인덱스를 기준으로 설치된 팩 검증", + "removeDescription": "설치된 선택적 팩 제거", + "sourceOpt": "팩 페이로드와 팩 인덱스가 있는 디렉터리", + "warnNoIndex": "optional-packs.index.json을 찾을 수 없습니다. 이 체크아웃에서는 설치/검증을 사용할 수 없습니다(데스크톱 번들에는 포함되어 있음).", + "errUnknown": "알 수 없는 팩: {name}", + "errNoIndex": "팩 인덱스를 찾을 수 없습니다. 팩 페이로드가 있는 --source 을 전달하세요(데스크톱 번들에서는 앱 옆에 포함되어 있음).", + "installed": "팩 \"{name}\"이(가) {dir}에 설치되고 검증되었습니다.", + "restartHint": "런타임이 팩을 인식하도록 OmniRoute 서버(또는 데스크톱 앱)를 다시 시작하세요", + "removed": "팩 \"{name}\"이(가) 제거되었습니다", + "notInstalled": "팩 \"{name}\"은(는) 설치되어 있지 않았습니다", + "verifyOk": "설치된 모든 팩이 검증되었습니다", + "verifyFailed": "{count}개의 팩이 검증에 실패했습니다", + "noneInstalled": "설치된 선택적 팩이 없습니다" } } diff --git a/bin/cli/locales/lt.json b/bin/cli/locales/lt.json index ee74a635ae..00188a755b 100644 --- a/bin/cli/locales/lt.json +++ b/bin/cli/locales/lt.json @@ -256,6 +256,7 @@ "max_restarts": "Didžiausias paleidimų iš naujo po strigties skaičius per 30 s prieš nutraukiant bandymus (numatyta: 2)", "tray": "Paleisti sistemos dėkle (tik darbalaukio programoje, pasirenkama)", "no_tray": "Išjungti sistemos dėklo piktogramą", + "ready_timeout": "Parengties patikros skirtasis laikas ms (taip pat OMNIROUTE_READY_TIMEOUT_MS, numatytoji reikšmė 60000)", "tls_cert": "Kelias į TLS sertifikatą (PEM), skirtą HTTPS teikti (taip pat OMNIROUTE_TLS_CERT)", "tls_key": "Kelias į privatųjį TLS raktą (PEM), skirtą HTTPS teikti (taip pat OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP serveris veikia ({transport})", "stopped": "MCP serveris sustabdytas.", "restarted": "MCP serveris paleistas iš naujo.", + "stoppedHint": "Norėdami jį įjungti, paleiskite `omniroute mcp enable`.", + "enabled": "MCP serveris įjungtas.", + "disabled": "MCP serveris išjungtas.", + "enable": { + "description": "Įjungti MCP serverį", + "transport": "Naudotinas perdavimo būdas: stdio|sse|streamable-http" + }, + "disable": { + "description": "Išjungti MCP serverį" + }, "call": { "description": "Tiesiogiai iškviesti MCP įrankį", "args": "JSON argumentų objektas (įterptasis)", diff --git a/bin/cli/locales/lv.json b/bin/cli/locales/lv.json index be3380a609..1aedea5dce 100644 --- a/bin/cli/locales/lv.json +++ b/bin/cli/locales/lv.json @@ -256,6 +256,7 @@ "max_restarts": "Maksimālās avāriju restartēšanas 30 sekunžu laikā pirms padoties (noklusējums: 2)", "tray": "Sākt sistēmas tray (tikai darbvirsmas, izvēlēties)", "no_tray": "Atspējot sistēmas tray ikonu", + "ready_timeout": "Gatavības pārbaudes taimauts milisekundēs (arī OMNIROUTE_READY_TIMEOUT_MS, noklusējuma vērtība 60000)", "tls_cert": "Ceļš uz TLS sertifikātu (PEM) HTTPS apkalpošanai (arī OMNIROUTE_TLS_CERT)", "tls_key": "Ceļš uz TLS privāto atslēgu (PEM) HTTPS apkalpošanai (arī OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP serveris darbojas ({transport})", "stopped": "MCP serveris apturēts.", "restarted": "MCP serveris restartēts.", + "stoppedHint": "Lai to ieslēgtu, palaidiet `omniroute mcp enable`.", + "enabled": "MCP serveris ir iespējots.", + "disabled": "MCP serveris ir atspējots.", + "enable": { + "description": "Iespējot MCP serveri", + "transport": "Izmantojamais transports: stdio|sse|streamable-http" + }, + "disable": { + "description": "Atspējot MCP serveri" + }, "call": { "description": "Izsaukt MCP rīku tieši", "args": "JSON argumentu objekts (iekšējais)", diff --git a/bin/cli/locales/ml.json b/bin/cli/locales/ml.json index 4849173edc..357c9921d6 100644 --- a/bin/cli/locales/ml.json +++ b/bin/cli/locales/ml.json @@ -256,6 +256,7 @@ "max_restarts": "ഉപേക്ഷിക്കുന്നതിന് മുമ്പ് 30s-നുള്ളിൽ അനുവദിക്കുന്ന പരമാവധി ക്രാഷ് പുനരാരംഭങ്ങൾ (ഡിഫോൾട്ട്: 2)", "tray": "സിസ്റ്റം ട്രേയിൽ ആരംഭിക്കുക (ഡെസ്ക്ടോപ്പിൽ മാത്രം, സ്വമേധയാ തിരഞ്ഞെടുക്കാവുന്നത്)", "no_tray": "സിസ്റ്റം ട്രേ ഐക്കൺ പ്രവർത്തനരഹിതമാക്കുക", + "ready_timeout": "റെഡിനസ് പ്രോബ് സമയപരിധി ms-ൽ (OMNIROUTE_READY_TIMEOUT_MS എന്നതും, സ്ഥിരസ്ഥിതി 60000)", "tls_cert": "HTTPS നൽകുന്നതിനുള്ള TLS സർട്ടിഫിക്കറ്റിന്റെ (PEM) പാത (OMNIROUTE_TLS_CERT-ലും)", "tls_key": "HTTPS നൽകുന്നതിനുള്ള TLS സ്വകാര്യ കീയുടെ (PEM) പാത (OMNIROUTE_TLS_KEY-ലും)" }, @@ -347,6 +348,16 @@ "running": "MCP സെർവർ പ്രവർത്തിക്കുന്നു ({transport})", "stopped": "MCP സെർവർ നിർത്തി.", "restarted": "MCP സെർവർ പുനരാരംഭിച്ചു.", + "stoppedHint": "ഇത് പ്രവർത്തനക്ഷമമാക്കാൻ `omniroute mcp enable` പ്രവർത്തിപ്പിക്കുക.", + "enabled": "MCP സെർവർ പ്രവർത്തനക്ഷമമാക്കി.", + "disabled": "MCP സെർവർ പ്രവർത്തനരഹിതമാക്കി.", + "enable": { + "description": "MCP സെർവർ പ്രവർത്തനക്ഷമമാക്കുക", + "transport": "ഉപയോഗിക്കേണ്ട ട്രാൻസ്പോർട്ട്: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP സെർവർ പ്രവർത്തനരഹിതമാക്കുക" + }, "call": { "description": "ഒരു MCP ടൂൾ നേരിട്ട് പ്രവർത്തിപ്പിക്കുക", "args": "JSON ആർഗ്യുമെന്റുകളുടെ ഒബ്ജക്റ്റ് (ഇൻലൈൻ)", diff --git a/bin/cli/locales/mr.json b/bin/cli/locales/mr.json index 23a22e0806..8bc022d15b 100644 --- a/bin/cli/locales/mr.json +++ b/bin/cli/locales/mr.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "त्रुटी: {message}", + "serverOffline": "OmniRoute सर्व्हर ऑफलाइन आहे. तो सुरू करण्यासाठी चालवा: omniroute serve", + "authRequired": "प्रमाणीकरण आवश्यक आहे. OMNIROUTE_API_KEY सेट करा किंवा हे चालवा: omniroute setup", + "rateLimited": "दरमर्यादा ओलांडली आहे. {seconds} सेकंदांनंतर पुन्हा प्रयत्न करा.", + "timeout": "{ms} मि.से. नंतर विनंतीची कालमर्यादा संपली.", + "success": "पूर्ण झाले.", + "yes": "होय", + "no": "नाही", + "confirm": "तुम्हाला खात्री आहे का? (होय/नाही)", + "dryRun": "[dry-run] {action} केले असते", + "cancelled": "रद्द केले.", + "jsonOpt": "JSON स्वरूपात आउटपुट द्या", + "yesOpt": "पुष्टीकरण प्रॉम्प्ट वगळा" + }, + "setup": { + "title": "OmniRoute सेटअप", + "passwordPrompt": "प्रशासकाचा पासवर्ड", + "providerPrompt": "डीफॉल्ट सेवा-प्रदाता (वगळण्यासाठी रिक्त ठेवा)", + "done": "सेटअप पूर्ण झाला", + "passwordSet": "प्रशासकाचा पासवर्ड कॉन्फिगर केला", + "providerSet": "सेवा-प्रदाता कॉन्फिगर केला: {name}", + "testingProvider": "सेवा-प्रदात्याच्या कनेक्शनची चाचणी सुरू आहे: {name}", + "testPassed": "सेवा-प्रदात्याची चाचणी यशस्वी झाली", + "testFailed": "सेवा-प्रदात्याची चाचणी अयशस्वी झाली: {error}", + "loginEnabled": "लॉगिन: सक्षम केले (पासवर्ड अद्ययावत केला)", + "loginDisabled": "लॉगिन: अक्षम केले", + "providerInfo": "सेवा-प्रदाता: {info}", + "opencode": "OpenCode साठी सोबत दिलेले @omniroute/opencode-plugin स्थापित आणि कॉन्फिगर करा" + }, + "doctor": { + "title": "OmniRoute निदान", + "dbOk": "डेटाबेस: ठीक आहे ({path})", + "dbMissing": "डेटाबेस: प्रारंभित केलेला नाही — `omniroute setup` चालवा", + "portOk": "पोर्ट {port}: उपलब्ध", + "portConflict": "पोर्ट {port}: दुसऱ्या प्रक्रियेद्वारे वापरात आहे", + "encryptionOk": "एन्क्रिप्शन की: कॉन्फिगर केली", + "encryptionMissing": "एन्क्रिप्शन की उपलब्ध नाही — `omniroute setup` चालवा", + "allGood": "सर्व तपासण्या यशस्वी झाल्या.", + "warnings": "{count} चेतावणी(ण्या) — वर पाहा." + }, + "providers": { + "title": "सेवा-प्रदाते", + "noProviders": "कोणतेही सेवा-प्रदाते कॉन्फिगर केलेले नाहीत. चालवा: omniroute setup", + "testing": "{name} ची चाचणी सुरू आहे...", + "available": "{count} सेवा-प्रदाता उपलब्ध", + "connected": "कनेक्ट केले", + "disconnected": "डिस्कनेक्ट केले", + "validationFailed": "प्रमाणीकरण अयशस्वी: {error}", + "metrics": { + "description": "प्रदात्याच्या कार्यप्रदर्शनाची मेट्रिक्स दाखवा (विलंब, यशाचा दर, खर्च)", + "provider": "प्रदाता ID नुसार फिल्टर करा", + "connection_id": "कनेक्शन ID नुसार फिल्टर करा", + "period": "कालावधी: 1h|6h|24h|7d|30d (डीफॉल्ट: 24h)", + "metric": "विशिष्ट मेट्रिक फील्डवर लक्ष केंद्रित करा", + "sort": "फील्डनुसार क्रम लावा (उतरता क्रम)", + "limit": "कमाल पंक्ती (डीफॉल्ट: 50)", + "watch": "दर 5s ने रिफ्रेश करा (लाइव्ह मोड)", + "compare": "शेजारी-शेजारी तुलना करण्यासाठी स्वल्पविरामाने विभक्त केलेले प्रदाता ID" + }, + "metric_single": { + "description": "विशिष्ट कनेक्शनसाठी एकच मेट्रिक मूल्य मिळवा" + }, + "rotate": { + "description": "प्रदाता कनेक्शनसाठी अपस्ट्रीम API की रोटेट करा", + "newKeyOpt": "नवीन API कीचे मूल्य (टाळा: शक्यतो --from-env वापरा)", + "fromEnvOpt": "पर्यावरण चल VAR मधून नवीन की वाचा", + "oauthOpt": "त्याऐवजी OAuth पुनर्प्रमाणीकरण प्रक्रिया सुरू करा", + "skipTestOpt": "रोटेशननंतरची कनेक्टिव्हिटी चाचणी वगळा", + "dryRunOpt": "काहीही न लिहिता काय बदलेल ते दाखवा", + "confirmPrompt": "कनेक्शन \"{name}\" ({id}) साठी API की बदलायची? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) साठी की रोटेट केली असती. कोणतेही बदल केले नाहीत.", + "oauthHint": "OAuth कनेक्शन — चालवा: omniroute oauth {provider}", + "envVarEmpty": "पर्यावरण चल {var} सेट केलेले नाही किंवा रिकामे आहे.", + "success": "\"{name}\" साठी की रोटेट केली. पडताळणीसाठी `providers test {id}` चालवा.", + "testPassed": "रोटेशननंतरची चाचणी उत्तीर्ण झाली.", + "testFailed": "रोटेशननंतरची चाचणी अयशस्वी: {error}" + }, + "status": { + "description": "सर्व प्रदाता कनेक्शनसाठी कीची स्थिती दाखवा (वय, कालबाह्यता, कूलडाउन)", + "providerOpt": "प्रदात्याच्या नावानुसार फिल्टर करा", + "header": "ID प्रदाता नाव कालबाह्यता स्थिती चाचणी स्थिती कूलडाउनपर्यंत", + "noData": "प्रदाता कनेक्शनचा डेटा उपलब्ध नाही.", + "requiresServer": "providers status साठी OmniRoute सर्व्हर चालू असणे आवश्यक आहे." + } + }, + "keys": { + "title": "API की", + "addDescription": "प्रदात्यासाठी API की जोडा किंवा अपडेट करा", + "listDescription": "कॉन्फिगर केलेल्या सर्व API कींची सूची दाखवा", + "removeDescription": "प्रदात्यासाठी API की काढून टाका", + "regenerateDescription": "OmniRoute API की पुन्हा व्युत्पन्न करा", + "revokeDescription": "OmniRoute API की रद्द करा", + "revealDescription": "लपवलेले नसलेले API कीचे मूल्य दाखवा", + "usageDescription": "API कीचा अलीकडील वापर दाखवा", + "usageLimitOpt": "अलीकडील विनंत्यांची संख्या", + "rotateDescription": "नवीन की व्युत्पन्न करा आणि जुनी की अवैध करा", + "graceOpt": "जुनी की अवैध करण्यापूर्वीचा वाढीव कालावधी (ms)", + "stdinOpt": "आर्ग्युमेंटऐवजी stdin मधून API की वाचा", + "added": "{provider} साठी की जोडली.", + "removed": "की काढली.", + "listed": "{count} की.", + "noKeys": "कोणत्याही की कॉन्फिगर केलेल्या नाहीत.", + "noUsage": "वापराचा कोणताही डेटा आढळला नाही.", + "confirmRemove": "{id} ही की काढायची?", + "confirmRegenerate": "{id} ही की पुन्हा तयार करायची?", + "confirmRevoke": "{id} ही की रद्द करायची?", + "confirmRotate": "{id} ही की बदलायची? (वाढीव कालावधीनंतर जुनी की अवैध केली जाईल)", + "regenerated": "पुन्हा तयार केली. नवीन की: {key}", + "revoked": "{id} ही की रद्द केली.", + "rotated": "{id} ही की बदलली. नवीन की ID: {newId}", + "revealWarning": "⚠ यामुळे मास्क न केलेली संपूर्ण की दिसेल. तुमची स्क्रीन खाजगी असल्याची खात्री करा.", + "providerRequired": "प्रदाता आवश्यक आहे.", + "keyRequired": "API की आवश्यक आहे.", + "stdinEmpty": "stdin द्वारे कोणतीही API की प्रदान केली नाही.", + "unknownProvider": "अज्ञात प्रदाता: {provider}", + "policy": { + "title": "की धोरण", + "showDescription": "कीसाठी दर/खर्च धोरण दाखवा", + "setDescription": "कीसाठी दर/खर्च धोरण सेट करा", + "rateLimitOpt": "प्रति मिनिट कमाल विनंत्या", + "maxCostOpt": "प्रतिदिन कमाल खर्च (USD)", + "allowedModelsOpt": "अनुमत मॉडेल्सची स्वल्पविरामाने विभक्त केलेली सूची", + "nothingToSet": "कोणतीही धोरण फील्ड प्रदान केलेली नाहीत. --rate-limit, --max-cost किंवा --allowed-models वापरा.", + "updated": "धोरण अपडेट केले." + }, + "expiration": { + "title": "कीची कालबाह्यता", + "listDescription": "लवकरच कालबाह्य होणाऱ्या कींची सूची दाखवा", + "daysOpt": "N दिवसांच्या आत कालबाह्य होणाऱ्या की दाखवा", + "none": "{days} दिवसांच्या आत कोणत्याही की कालबाह्य होणार नाहीत.", + "listTitle": "{days} दिवसांच्या आत कालबाह्य होणाऱ्या की:" + } + }, + "authExport": { + "description": "डिक्रिप्ट केलेली प्रदाता क्रेडेन्शियल्स एक्सपोर्ट करा (फक्त स्थानिक वापरासाठी, साध्या मजकुरातील आउटपुट)", + "idOpt": "फक्त या id/name/provider शी जुळणारे कनेक्शन एक्सपोर्ट करा", + "formatOpt": "आउटपुट स्वरूप: json किंवा env", + "outOpt": "stdout ऐवजी आउटपुट फाइलमध्ये लिहा (0600 परवानग्यांसह लिहिले जाईल)", + "forceOpt": "यामुळे साध्या मजकुरातील गुपिते प्रदर्शित/लिहिली जातील, हे तुम्हाला समजल्याची पुष्टी करा", + "warning": "⚠ यामुळे डिक्रिप्ट केलेल्या साध्या मजकुरातील API की आणि OAuth टोकन प्रदर्शित/लिहिले जातील. तुमची स्क्रीन, शेल हिस्टरी आणि कोणतीही आउटपुट फाइल खाजगी राहील याची खात्री करा.", + "confirmHeading": "⚠ चेतावणी: यामुळे डिक्रिप्ट केलेली प्रदाता क्रेडेन्शियल्स साध्या मजकुरात एक्सपोर्ट केली जातात", + "confirmBody": "हा कमांड निवडलेल्या कनेक्शनसाठी apiKey, accessToken, refreshToken आणि\nidToken डिक्रिप्ट करून प्रदर्शित करतो/लिहितो. आउटपुटला गुपित समजा.", + "confirmFooter": "पुष्टी करण्यासाठी, चालवा:\n omniroute auth export --force", + "missingKey": "क्रेडेन्शियल्स एक्सपोर्ट करण्यासाठी STORAGE_ENCRYPTION_KEY आवश्यक आहे.", + "notFound": "कनेक्शन सापडले नाही: {id}", + "invalidFormat": "अवैध स्वरूप: {format}. json किंवा env वापरा." + }, + "stream": { + "description": "SSE तपासणी मोडसह चॅट प्रतिसाद स्ट्रीम करा", + "file": "फाइलमधून प्रॉम्प्ट वाचा", + "stdin": "stdin मधून प्रॉम्प्ट वाचा", + "model": "मॉडेल ID (डीफॉल्ट: auto)", + "system": "सिस्टम प्रॉम्प्ट", + "combo": "नावानुसार विशिष्ट कॉम्बो सक्तीने वापरा", + "max_tokens": "प्रतिसादातील कमाल टोकन", + "responses_api": "/v1/chat/completions ऐवजी /v1/responses वापरा", + "raw": "प्राप्त झालेल्या कच्च्या SSE ओळी प्रिंट करा", + "debug": "प्रत्येक चंकची वेळविषयक माहिती stderr वर प्रिंट करा", + "save": "सर्व SSE इव्हेंट्स .jsonl फाइलमध्ये जतन करा", + "error": { + "empty_prompt": "त्रुटी: प्रॉम्प्ट आवश्यक आहे (पोझिशनल आर्ग्युमेंट, --file किंवा --stdin)" + } + }, + "usage": { + "description": "वापर विश्लेषण, बजेट, कोटा आणि लॉग्स", + "analytics": { + "description": "एकत्रित वापर विश्लेषण दाखवा", + "period": "कालावधी: 1d|7d|30d|90d|ytd|all (डीफॉल्ट: 30d)", + "provider": "प्रोव्हायडर ID नुसार फिल्टर करा" + }, + "budget": { + "description": "खर्चाचे बजेट व्यवस्थापित करा", + "set": { + "scope": "बजेटची व्याप्ती (डीफॉल्ट: global)", + "period": "बजेट कालावधी: daily|weekly|monthly (डीफॉल्ट: monthly)" + } + }, + "quota": { + "description": "प्रोव्हायडर कोटाचा वापर दाखवा", + "provider": "प्रोव्हायडर ID नुसार फिल्टर करा", + "check": "नवीन विनंतीसाठी कोटा उपलब्ध आहे का ते दाखवा" + }, + "logs": { + "description": "विनंती कॉल लॉग्स दाखवा", + "limit": "परत करायच्या लॉग नोंदींची संख्या (डीफॉल्ट: 100)", + "search": "लॉग्स फिल्टर करण्यासाठी शोध क्वेरी", + "since": "या टाइमस्टॅम्पपासूनचे लॉग्स परत करा", + "follow": "नवीन लॉग नोंदी सतत दाखवत राहा", + "api_key": "API कीनुसार लॉग्स फिल्टर करा" + }, + "utilization": { + "description": "API की वापराची मेट्रिक्स दाखवा", + "api_key": "API कीनुसार फिल्टर करा" + }, + "history": { + "description": "विनंतीचा इतिहास दाखवा", + "limit": "इतिहास नोंदींची संख्या (डीफॉल्ट: 100)" + }, + "proxy_logs": { + "description": "प्रॉक्सी-स्तरीय विनंती लॉग्स दाखवा", + "limit": "प्रॉक्सी लॉग नोंदींची संख्या (डीफॉल्ट: 100)" + } + }, + "cost": { + "description": "प्रोव्हायडर, मॉडेल, कॉम्बो किंवा API कीनुसार तपशीलवार विभागणीसह खर्च अहवाल दाखवा", + "period": "कालावधी: 1d|7d|30d|90d|ytd|all (डीफॉल्ट: 30d)", + "since": "प्रारंभ तारीख (ISO स्वरूप, उदा. 2026-01-01) — --period ला अधिलिखित करते", + "until": "समाप्ती तारीख (ISO स्वरूप)", + "group_by": "निकाल यानुसार गटबद्ध करा: provider|model|api-key|combo|day (डीफॉल्ट: provider)", + "api_key_filter": "विशिष्ट API कीनुसार फिल्टर करा", + "limit": "दाखवायच्या ओळींची कमाल संख्या (डीफॉल्ट: 100)" + }, + "simulate": { + "description": "ड्राय-रन राउटिंग सिम्युलेशन — अपस्ट्रीमला कॉल न करता कोणते प्रोव्हायडर निवडले जातील ते दाखवा", + "file": "JSON फाइलमधून संपूर्ण विनंतीचा मुख्य भाग लोड करा", + "model": "मॉडेल ID (डीफॉल्ट: auto)", + "combo": "नावानुसार विशिष्ट कॉम्बो सक्तीने वापरा", + "reasoning": "तर्कशक्ती प्रयत्न पातळी (low|medium|high)", + "thinking": "विस्तारित विचारासाठी टोकन मर्यादा", + "explain": "फॉलबॅक ट्री आणि खर्चाची श्रेणी stderr वर प्रिंट करा", + "noCombo": "जुळणारा कॉम्बो आढळला नाही. याद्वारे एक कॉन्फिगर करा: omniroute combo create" + }, + "chat": { + "description": "OmniRoute ला एकदाच वापरायचा चॅट प्रॉम्प्ट पाठवा", + "file": "फाइलमधून प्रॉम्प्ट वाचा", + "stdin": "stdin मधून प्रॉम्प्ट वाचा", + "system": "सिस्टम प्रॉम्प्ट", + "model": "मॉडेल ID (डीफॉल्ट: auto)", + "max_tokens": "प्रतिसादातील कमाल टोकन", + "temperature": "सॅम्पलिंग तापमान (0–2)", + "top_p": "Top-p न्यूक्लियस सॅम्पलिंग", + "reasoning_effort": "तर्कशक्ती प्रयत्न पातळी (low|medium|high)", + "thinking_budget": "विस्तारित विचारासाठी टोकन मर्यादा", + "combo": "नावानुसार विशिष्ट कॉम्बो सक्तीने वापरा", + "responses_api": "/v1/chat/completions ऐवजी /v1/responses वापरा", + "stream": "प्रतिसाद टप्प्याटप्प्याने स्ट्रीम करा", + "no_history": "~/.omniroute/cli-history.jsonl मध्ये जतन करू नका", + "error": { + "empty_prompt": "त्रुटी: प्रॉम्प्ट आवश्यक आहे (पोझिशनल आर्ग्युमेंट, --file किंवा --stdin)" + } + }, + "serve": { + "description": "OmniRoute सर्व्हर सुरू करा (डीफॉल्ट कृती)", + "starting": "पोर्ट {port} वर OmniRoute सर्व्हर सुरू होत आहे...", + "ready": "http://localhost:{port} येथे तयार आहे", + "stopping": "सर्व्हर थांबवत आहे (PID {pid})...", + "stopped": "सर्व्हर थांबवला.", + "notRunning": "सर्व्हर सुरू नाही.", + "port": "ऐकण्यासाठी पोर्ट (डीफॉल्ट: 20128)", + "no_open": "ब्राउझर आपोआप उघडू नका", + "daemon": "सर्व्हर पार्श्वभूमी डेमन म्हणून चालवा", + "log": "सर्व्हर लॉग इनलाइन दाखवा", + "no_recovery": "क्रॅश झाल्यावर स्वयंचलित रीस्टार्ट अक्षम करा (डीबगिंग मोड)", + "max_restarts": "हार मानण्यापूर्वी 30s मध्ये क्रॅशनंतर कमाल रीस्टार्ट संख्या (डीफॉल्ट: 2)", + "tray": "सिस्टम ट्रेमध्ये सुरू करा (फक्त डेस्कटॉप, निवड केल्यास)", + "no_tray": "सिस्टम ट्रे चिन्ह अक्षम करा", + "ready_timeout": "रेडिनेस प्रोब कालबाह्यता मिलीसेकंदांमध्ये (OMNIROUTE_READY_TIMEOUT_MS देखील, डीफॉल्ट 60000)", + "tls_cert": "HTTPS सेवा देण्यासाठी TLS प्रमाणपत्राचा (PEM) पाथ (OMNIROUTE_TLS_CERT देखील)", + "tls_key": "HTTPS सेवा देण्यासाठी TLS खासगी कीचा (PEM) पाथ (OMNIROUTE_TLS_KEY देखील)" + }, + "backup": { + "title": "बॅकअप", + "description": "OmniRoute डेटाचा बॅकअप तयार करा", + "creating": "बॅकअप तयार करत आहे...", + "done": "बॅकअप {path} येथे जतन केला", + "noFiles": "बॅकअप घेण्यासाठी फायली नाहीत (डेटाबेस प्रारंभ केलेला नाही)", + "failed": "बॅकअप अयशस्वी: {error}", + "restoring": "{path} मधून पुनर्संचयित करत आहे...", + "restored": "पुनर्संचयन पूर्ण झाले.", + "restoreDescription": "बॅकअपमधून पुनर्संचयित करा", + "listTitle": "उपलब्ध बॅकअप", + "noBackups": "कोणतेही बॅकअप आढळले नाहीत.", + "notFound": "बॅकअप आढळला नाही: {name}", + "confirmRestore": "{ts} च्या बॅकअपने सध्याचा डेटा अधिलिखित करायचा?", + "createDescription": "OmniRoute डेटाचा बॅकअप तयार करा", + "nameOpt": "सानुकूल बॅकअप नाव", + "cloudOpt": "क्लाउड स्टोरेजवर बॅकअप अपलोड करा", + "encryptOpt": "AES-256-GCM वापरून बॅकअप कूटबद्ध करा", + "keyFileOpt": "कूटबद्धीकरण पासफ्रेज असलेल्या फाइलचा पाथ", + "excludeOpt": "पॅटर्नशी जुळणारी फाइल वगळा (पुनरावृत्ती करता येते)", + "retentionOpt": "फक्त शेवटचे N बॅकअप ठेवा", + "passphrasePrompt": "कूटबद्धीकरण पासफ्रेज:", + "noPassphrase": "कूटबद्ध बॅकअपसाठी पासफ्रेज आवश्यक आहे.", + "cloudFailed": "इशारा: क्लाउड अपलोड अयशस्वी झाले. स्थानिक बॅकअप जतन केला आहे.", + "cloudUploaded": "क्लाउड बॅकअप अपलोड केला: {url}", + "auto": { + "title": "बॅकअप वेळापत्रक", + "enableDescription": "नियोजित स्वयंचलित बॅकअप सक्षम करा", + "disableDescription": "नियोजित स्वयंचलित बॅकअप अक्षम करा", + "statusDescription": "सध्याच्या बॅकअप वेळापत्रकाची स्थिती दाखवा", + "cronOpt": "वेळापत्रकासाठी Cron एक्सप्रेशन (डीफॉल्ट: दररोज पहाटे 3 वाजता)", + "enabled": "स्वयंचलित बॅकअप सक्षम केला (cron: {cron}).", + "hint": "हे वेळापत्रक सुरू होताना omniroute serve द्वारे वाचले जाते.", + "disabled": "स्वयंचलित बॅकअप अक्षम केला.", + "notConfigured": "कोणतेही बॅकअप वेळापत्रक कॉन्फिगर केलेले नाही." + } + }, + "health": { + "description": "सर्व्हरचे आरोग्य आणि घटकांची स्थिती तपासा", + "noServer": "सर्व्हर चालू नाही. यासह सुरू करा: omniroute serve", + "title": "स्थिती", + "status": "स्थिती: {status}", + "uptime": "कार्यरत कालावधी: {uptime}", + "requests": "विनंत्या (24 तास): {count}", + "cost": "खर्च (24 तास): ${cost}" + }, + "quota": { + "description": "प्रदात्याच्या कोटा वापराची माहिती दाखवा", + "noServer": "सर्व्हर चालू नाही. सुरू करण्यासाठी: omniroute serve", + "noData": "कोट्याची माहिती उपलब्ध नाही." + }, + "cache": { + "description": "प्रतिसाद कॅशे व्यवस्थापित करा", + "noServer": "सर्व्हर चालू नाही. सुरू करण्यासाठी: omniroute serve", + "cleared": "कॅशे साफ केली.", + "clearFailed": "कॅशे साफ करण्यात अयशस्वी." + }, "redis": { "description": "OmniRoute कॅशिंग आणि कोटा ट्रॅकिंगसाठी एका क्लिकमध्ये स्थानिक Redis कंटेनर (Podman किंवा Docker) लाँच करा" + }, + "test": { + "description": "प्रदात्याच्या कनेक्शनची चाचणी करा", + "noServer": "सर्व्हर चालू नाही. सुरू करण्यासाठी: omniroute serve", + "testing": "{provider} / {model} ची चाचणी सुरू आहे...", + "passed": "कनेक्शन यशस्वी!", + "failed": "कनेक्शन अयशस्वी: {error}", + "allProvidersOpt": "कॉन्फिगर केलेल्या सर्व प्रदात्यांची चाचणी करा", + "latencyOpt": "विलंब मोजमाप दाखवा (सरासरी/किमान/कमाल ms)", + "repeatOpt": "चाचणी N वेळा पुन्हा करा आणि निकाल एकत्रित करा", + "compareOpt": "तुलना करण्यासाठी स्वल्पविरामाने विभक्त केलेली मॉडेल्स (उदा. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "निकाल JSON फाइलमध्ये जतन करा", + "saved": "निकाल {path} येथे जतन केले", + "compareTitle": "मॉडेल तुलना", + "compareMinTwo": "--compare साठी किमान दोन मॉडेल्स आवश्यक आहेत (स्वल्पविरामाने विभक्त)", + "noProviders": "कोणतेही प्रदाते कॉन्फिगर केलेले नाहीत. पुढील आदेशाने एक जोडा: omniroute keys add" + }, + "update": { + "checking": "अपडेट तपासत आहे...", + "upToDate": "आधीपासूनच अद्ययावत आहे ({version}).", + "available": "अपडेट उपलब्ध: {current} → {latest}", + "installing": "{latest} इंस्टॉल करत आहे...", + "done": "{latest} वर अपडेट केले. लागू करण्यासाठी सर्व्हर रीस्टार्ट करा." + }, + "mcp": { + "title": "MCP सर्व्हर", + "running": "MCP सर्व्हर चालू आहे ({transport})", + "stopped": "MCP सर्व्हर थांबवला.", + "restarted": "MCP सर्व्हर रीस्टार्ट केला.", + "stoppedHint": "तो सुरू करण्यासाठी `omniroute mcp enable` चालवा.", + "enabled": "MCP सर्व्हर सक्षम केला.", + "disabled": "MCP सर्व्हर अक्षम केला.", + "enable": { + "description": "MCP सर्व्हर सक्षम करा", + "transport": "वापरायचे ट्रान्सपोर्ट: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP सर्व्हर अक्षम करा" + }, + "call": { + "description": "MCP साधन थेट वापरा", + "args": "JSON आर्ग्युमेंट्स ऑब्जेक्ट (इनलाइन)", + "args_file": "JSON आर्ग्युमेंट्स फाइलचा पथ", + "stream": "स्ट्रीमिंग एंडपॉइंट वापरा (/api/mcp/stream)", + "scope": "आवश्यक स्कोप (पुनरावृत्तीयोग्य, उदा. read:health)" + }, + "scopes": { + "description": "उपलब्ध MCP स्कोपची सूची दाखवा", + "tool": "विशिष्ट साधनासाठी आवश्यक स्कोप दाखवा" + }, + "tools": { + "description": "MCP साधनांची तपासणी करा", + "list": { + "description": "सर्व MCP साधनांची सूची दाखवा", + "scope": "स्कोपनुसार फिल्टर करा" + }, + "info": { + "description": "MCP साधनासाठी मेटाडेटा दाखवा" + }, + "schema": { + "description": "MCP साधनासाठी इनपुट/आउटपुट JSON स्कीमा दाखवा", + "io": "स्कीमा प्रकार: input|output (डीफॉल्ट: input)" + } + }, + "audit": { + "description": "MCP ऑडिट लॉग (audit --source mcp याचे उपनाव)" + } + }, + "a2a": { + "skills": { + "description": "एजंट कार्डवरील उपलब्ध A2A कौशल्यांची सूची दाखवा" + }, + "invoke": { + "description": "A2A कौशल्य वापरा आणि टास्क ID परत करा", + "input": "JSON इनपुट ऑब्जेक्ट", + "input_file": "JSON इनपुट फाइलचा पथ", + "wait": "परत येण्यापूर्वी टास्क पूर्ण होण्याची प्रतीक्षा करा", + "timeout": "पूर्ण होण्याची प्रतीक्षा करण्यासाठी कालमर्यादा ms मध्ये (डीफॉल्ट: 60000)" + }, + "tasks": { + "description": "A2A टास्क व्यवस्थापित करा", + "list": { + "status": "स्थितीनुसार फिल्टर करा", + "skill": "कौशल्य ID नुसार फिल्टर करा" + }, + "watch": { + "description": "टास्क पूर्ण होईपर्यंत त्याची स्थिती तपासत राहा" + }, + "stream": { + "description": "SSE द्वारे टास्क अंमलबजावणी इव्हेंट्स स्ट्रीम करा" + }, + "logs": { + "description": "टास्क संदेश आणि आर्टिफॅक्ट्स दाखवा" + } + } + }, + "policy": { + "description": "OmniRoute अधिकृतता धोरणे व्यवस्थापित करा", + "list": { + "description": "धोरणांची सूची दाखवा", + "kind": "प्रकारानुसार फिल्टर करा (allow|deny|rate-limit|cost-cap)", + "scope": "स्कोपनुसार फिल्टर करा (global|api-key|provider)" + }, + "get": { + "description": "ID द्वारे धोरणाचे तपशील मिळवा" + }, + "create": { + "description": "JSON फाइलमधून धोरण तयार करा", + "file": "धोरणाच्या JSON फाइलचा पथ" + }, + "update": { + "description": "JSON फाइलमधून धोरण अपडेट करा", + "file": "धोरणाच्या JSON फाइलचा पथ" + }, + "delete": { + "description": "ID द्वारे धोरण हटवा", + "yes": "पुष्टीकरण प्रॉम्प्ट वगळा" + }, + "evaluate": { + "description": "धोरण मूल्यमापनाची ड्राय-रन करा (exit 0=अनुमत, 4=नाकारलेले)", + "api_key": "मूल्यमापनासाठी API की", + "action": "तपासायची क्रिया (उदा. chat, embed, admin)", + "resource": "संसाधनाचा पथ किंवा अभिज्ञापक", + "context": "JSON ऑब्जेक्ट म्हणून अतिरिक्त संदर्भ" + }, + "export": { + "description": "सर्व धोरणे JSON फाइलमध्ये निर्यात करा" + }, + "import": { + "description": "JSON फाइलमधून धोरणे आयात करा", + "overwrite": "समान ID असलेली विद्यमान धोरणे अधिलिखित करा" + } + }, + "compression": { + "description": "OmniRoute कॉम्प्रेशन पाइपलाइन कॉन्फिगर करा आणि तपासा", + "status": { + "description": "सध्याची कॉम्प्रेशन स्थिती आणि सेटिंग्ज दाखवा" + }, + "configure": { + "description": "कॉम्प्रेशन सेटिंग्ज कॉन्फिगर करा", + "engine": "कॉम्प्रेशन इंजिन (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman आक्रमकता 0.0–1.0", + "rtk_budget": "RTK टोकन मर्यादा", + "language_pack": "सक्रिय करायचा भाषा पॅक" + }, + "engine": { + "description": "सक्रिय कॉम्प्रेशन इंजिन मिळवा किंवा सेट करा" + }, + "combos": { + "description": "कॉम्प्रेशन कॉम्बो आकडेवारी व्यवस्थापित करा" + }, + "rules": { + "description": "कॉम्प्रेशन नियम व्यवस्थापित करा", + "add": { + "pattern": "जुळवणीसाठी पॅटर्न (regex किंवा field:pattern)", + "action": "क्रिया: drop|shrink|replace" + } + }, + "language_packs": { + "description": "उपलब्ध कॉम्प्रेशन भाषा पॅकची सूची दाखवा" + }, + "preview": { + "description": "विनंतीवरील कॉम्प्रेशन परिणामाचे पूर्वावलोकन करा", + "file": "विनंतीच्या JSON फाइलचा पथ" + } + }, + "tunnel": { + "title": "टनेल्स", + "listDescription": "सक्रिय टनेल्सची सूची दाखवा", + "createDescription": "टनेल तयार करा", + "created": "टनेल तयार झाला: {url}", + "stopped": "टनेल थांबवला.", + "confirmStop": "टनेल {id} थांबवायचा?", + "stopDescription": "टनेल थांबवा", + "statusDescription": "टनेलची तपशीलवार स्थिती दाखवा", + "logsDescription": "टनेलचे लॉग दाखवा", + "infoDescription": "टनेलचे कॉन्फिगरेशन तपशील दाखवा", + "rotateDescription": "नवीन टनेल URL व्युत्पन्न करा", + "tailOpt": "दाखवायच्या लॉग ओळींची संख्या", + "typeRequired": "टनेलचा प्रकार आवश्यक आहे.", + "noLogs": "कोणतेही लॉग उपलब्ध नाहीत.", + "notAvailable": "टनेलची माहिती उपलब्ध नाही.", + "noTunnels": "कोणतेही सक्रिय टनेल्स नाहीत.", + "infoTitle": "टनेलची माहिती: {type}", + "rotated": "टनेल URL बदलला: {url}", + "confirmRotate": "टनेल {type} चा URL बदलायचा? (नवीन URL व्युत्पन्न केला जाईल)" + }, + "stop": { + "description": "OmniRoute सर्व्हर थांबवा", + "stopping": "सर्व्हर थांबवत आहे (PID {pid})...", + "stopped": "सर्व्हर थांबवला.", + "notRunning": "कोणताही सर्व्हर चालू नाही.", + "portFallback": "कोणतीही PID फाइल सापडली नाही, पोर्टच्या आधारे थांबवण्याचा प्रयत्न करत आहे..." + }, + "restart": { + "description": "OmniRoute सर्व्हर रीस्टार्ट करा", + "restarting": "OmniRoute सर्व्हर रीस्टार्ट करत आहे..." + }, + "dashboard": { + "description": "ब्राउझरमध्ये OmniRoute डॅशबोर्ड उघडा", + "opening": "{url} येथे डॅशबोर्ड उघडत आहे", + "urlOnly": "ब्राउझर न उघडता डॅशबोर्डची URL दाखवा", + "tui": "परस्परसंवादी TUI डॅशबोर्ड उघडा (टर्मिनल UI, 7 टॅब)" + }, + "models": { + "description": "उपलब्ध मॉडेल्सची सूची दाखवा (सर्व्हर आवश्यक)", + "search": "ID, नाव, प्रदाता किंवा वर्णनानुसार मॉडेल्स फिल्टर करा", + "noServer": "सर्व्हर चालू नाही. याद्वारे सुरू करा: omniroute serve", + "noModels": "कोणतीही मॉडेल्स सापडली नाहीत." + }, + "audit": { + "description": "अनुपालन आणि MCP ऑडिट लॉग्समध्ये प्रवेश करा", + "source": "लॉग स्रोत: all|compliance|mcp (डीफॉल्ट: all)", + "since": "या टाइमस्टॅम्पपासूनच्या नोंदी दाखवा (ISO 8601)", + "until": "या टाइमस्टॅम्पपर्यंतच्या नोंदी दाखवा (ISO 8601)", + "tail": { + "description": "अलीकडील ऑडिट लॉग नोंदी दाखवा", + "follow": "नवीन नोंदी सतत दाखवत राहा (2s पोल)", + "limit": "दाखवायच्या कमाल नोंदी (डीफॉल्ट: 100)" + }, + "search": { + "description": "कीवर्डनुसार ऑडिट लॉग नोंदी शोधा", + "limit": "कमाल परिणाम (डीफॉल्ट: 200)", + "actor": "अभिनेता ID नुसार फिल्टर करा", + "action": "कृतीच्या नावानुसार फिल्टर करा" + }, + "export": { + "description": "ऑडिट लॉग फाइलमध्ये निर्यात करा", + "format": "आउटपुट स्वरूप: jsonl|csv (डीफॉल्ट: jsonl)" + }, + "stats": { + "description": "ऑडिट लॉगची आकडेवारी दाखवा", + "period": "कालावधी: 1d|7d|30d (डीफॉल्ट: 7d)" + }, + "get": { + "description": "ID नुसार एकच ऑडिट लॉग नोंद मिळवा" + } + }, + "skills": { + "description": "OmniRoute कौशल्ये व्यवस्थापित करा (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "स्थापित कौशल्यांची सूची दाखवा", + "type": "प्रकारानुसार फिल्टर करा (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "फक्त सक्षम कौशल्ये दाखवा", + "disabled": "फक्त अक्षम कौशल्ये दाखवा", + "api_key": "API कीनुसार फिल्टर करा" + }, + "get": { + "description": "ID नुसार कौशल्याचा तपशील मिळवा" + }, + "install": { + "description": "फाइल किंवा URL वरून कौशल्य स्थापित करा", + "from_file": "कौशल्याच्या JSON व्याख्या फाइलचा पथ", + "from_url": "दूरस्थ कौशल्य व्याख्येचा URL", + "type": "कौशल्य प्रकार (sandbox|custom|hybrid)", + "enable": "स्थापनेनंतर कौशल्य सक्षम करा" + }, + "enable": { + "description": "ID द्वारे कौशल्य सक्षम करा" + }, + "disable": { + "description": "ID द्वारे कौशल्य अक्षम करा", + "yes": "पुष्टीकरण सूचना वगळा" + }, + "delete": { + "description": "ID द्वारे कौशल्य हटवा", + "yes": "पुष्टीकरण सूचना वगळा" + }, + "execute": { + "description": "ID द्वारे कौशल्य कार्यान्वित करा", + "input": "JSON इनपुट ऑब्जेक्ट", + "input_file": "JSON इनपुट फाइलचा पथ", + "timeout": "कार्यान्वयन कालमर्यादा ms मध्ये (डीफॉल्ट: 30000)" + }, + "executions": { + "description": "कौशल्य कार्यान्वयन इतिहासाची सूची दाखवा", + "skill": "कौशल्य ID नुसार फिल्टर करा", + "limit": "कमाल परिणाम (डीफॉल्ट: 50)", + "status": "स्थितीनुसार फिल्टर करा (running|completed|failed)" + }, + "skillssh": { + "description": "SSH द्वारे स्थापित केलेली कौशल्ये व्यवस्थापित करा" + }, + "marketplace": { + "description": "मार्केटप्लेसमधून कौशल्ये ब्राउझ आणि स्थापित करा" + }, + "mp": { + "search": { + "description": "मार्केटप्लेस पॅकेजेस शोधा", + "category": "श्रेणीनुसार फिल्टर करा", + "tag": "टॅगनुसार फिल्टर करा", + "limit": "कमाल परिणाम (डीफॉल्ट: 30)", + "sort": "यानुसार क्रमवारी लावा: downloads|rating|recent" + }, + "info": { + "description": "पॅकेजचे तपशील आणि readme दाखवा" + }, + "install": { + "description": "मार्केटप्लेस पॅकेज स्थापित करा", + "version": "पॅकेज आवृत्ती (डीफॉल्ट: latest)", + "enable": "स्थापनेनंतर सक्षम करा", + "yes": "पुष्टीकरण सूचना वगळा" + }, + "categories": { + "description": "मार्केटप्लेस श्रेणींची सूची दाखवा" + }, + "featured": { + "description": "वैशिष्ट्यीकृत मार्केटप्लेस पॅकेजेस दाखवा" + } + } + }, + "memory": { + "description": "OmniRoute संभाषणात्मक मेमरी व्यवस्थापित करा (FTS5 + vector)", + "search": { + "description": "अर्थाधारित क्वेरीने मेमरी नोंदी शोधा", + "type": "मेमरी प्रकारानुसार फिल्टर करा (user|feedback|project|reference)", + "limit": "कमाल परिणाम (डीफॉल्ट: 20)", + "api_key": "API कीनुसार फिल्टर करा", + "token_budget": "परिणामांमधील एकूण टोकन्स मर्यादित करा" + }, + "add": { + "description": "नवीन मेमरी नोंद जोडा", + "content": "मेमरीचा मजकूर आशय", + "file": "फाइलमधून आशय वाचा", + "type": "मेमरी प्रकार (डीफॉल्ट: user)", + "metadata": "JSON मेटाडेटा ऑब्जेक्ट", + "api_key": "API कीशी संलग्न करा" + }, + "clear": { + "description": "फिल्टरशी जुळणाऱ्या मेमरी नोंदी हटवा", + "type": "प्रकारानुसार फिल्टर करा", + "older": "निर्दिष्ट कालावधीपेक्षा जुन्या नोंदी हटवा (30d, 6m, 1y)", + "api_key": "API कीनुसार फिल्टर करा", + "yes": "पुष्टीकरणाचा प्रॉम्प्ट वगळा" + }, + "list": { + "description": "शोध क्रमवारीशिवाय मेमरी नोंदींची सूची दाखवा", + "type": "प्रकारानुसार फिल्टर करा", + "limit": "कमाल परिणाम (डीफॉल्ट: 100)", + "api_key": "API कीनुसार फिल्टर करा" + }, + "get": { + "description": "ID द्वारे एकच मेमरी नोंद मिळवा" + }, + "delete": { + "description": "ID द्वारे मेमरी नोंद हटवा", + "yes": "पुष्टीकरणाचा प्रॉम्प्ट वगळा" + }, + "health": { + "description": "मेमरी उपप्रणालीचे आरोग्य दाखवा (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth प्रदाता कनेक्शन्स व्यवस्थापित करा", + "providers": { + "description": "OAuth-सक्षम प्रदाते आणि त्यांच्या फ्लो प्रकारांची सूची दाखवा" + }, + "start": { + "description": "प्रदात्यासाठी OAuth अधिकृतता फ्लो सुरू करा", + "provider": "प्रदाता ID (gemini, copilot, cursor, …)", + "no_browser": "फक्त URL प्रिंट करा — ब्राउझर उघडू नका", + "import_system": "स्थानिक सिस्टम कॉन्फिगमधून क्रेडेन्शियल्स स्वयंचलितपणे आयात करा", + "social": "सोशल लॉगिन प्रदाता (google|github) — kiro साठी आवश्यक", + "timeout": "अधिकृततेची वाट पाहण्याचा टाइमआउट ms मध्ये (डीफॉल्ट: 300000)" + }, + "status": { + "description": "सक्रिय OAuth कनेक्शन्सची सूची दाखवा", + "provider": "प्रदाता ID नुसार फिल्टर करा" + }, + "revoke": { + "description": "OAuth कनेक्शन रद्द करा", + "provider": "रद्द करायचा प्रदाता ID", + "connection_id": "ID द्वारे विशिष्ट कनेक्शन रद्द करा", + "yes": "पुष्टीकरणाचा प्रॉम्प्ट वगळा" + } + }, + "cloud": { + "description": "क्लाउड AI एजंट टास्क व्यवस्थापित करा (codex, devin, jules)", + "agents": { + "description": "उपलब्ध क्लाउड एजंट्सची सूची दाखवा" + }, + "agent": { + "description": "{agent} क्लाउड एजंट टास्क व्यवस्थापित करा", + "auth": { + "description": "OAuth द्वारे {agent} ला अधिकृत करा" + } + }, + "task": { + "description": "क्लाउड एजंट टास्क व्यवस्थापित करा", + "create": { + "description": "नवीन एजंट टास्क तयार करा", + "title": "टास्कचे शीर्षक (डीफॉल्ट: प्रॉम्प्टमधील पहिले 80 वर्ण)", + "prompt": "टास्क प्रॉम्प्ट मजकूर", + "prompt_file": "फाइलमधून प्रॉम्प्ट वाचा", + "repo": "टास्कसाठी क्लोन करायची रिपॉझिटरी URL", + "branch": "वापरायचे ब्रँच नाव", + "metadata": "JSON मेटाडेटा ऑब्जेक्ट" + }, + "list": { + "description": "एजंटची कार्ये सूचीबद्ध करा", + "status": "स्थितीनुसार फिल्टर करा (running|completed|failed|cancelled)", + "limit": "कमाल निकाल (डीफॉल्ट: 50)" + }, + "get": { + "description": "ID द्वारे कार्याचे तपशील मिळवा" + }, + "status": { + "description": "कार्याची स्थिती दर्शवा (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "चालू असलेले कार्य रद्द करा", + "yes": "पुष्टीकरण प्रॉम्प्ट वगळा" + }, + "approve": { + "description": "अंमलबजावणी सुरू करण्यासाठी एजंटच्या योजनेला मंजुरी द्या" + }, + "message": { + "description": "चालू असलेल्या कार्याला संदेश पाठवा" + } + }, + "sources": { + "description": "कार्याद्वारे तयार केलेल्या स्रोत फाइल्सची सूची दाखवा" + } + }, + "eval": { + "description": "मूल्यांकन संच आणि धावा व्यवस्थापित करा", + "suites": { + "description": "मूल्यांकन संच व्यवस्थापित करा", + "list": { + "description": "मूल्यांकन संचांची सूची दाखवा" + }, + "get": { + "description": "ID द्वारे मूल्यांकन संचाचे तपशील मिळवा" + }, + "create": { + "description": "JSON फाइलमधून मूल्यांकन संच तयार करा", + "file": "संचाच्या व्याख्येच्या JSON फाइलचा पथ" + } + }, + "run": { + "description": "संचासाठी मूल्यांकन धाव सुरू करा", + "model": "मूल्यांकन करण्यासाठी मॉडेल ID (डीफॉल्ट: auto)", + "combo": "नावानुसार विशिष्ट कॉम्बो सक्तीने वापरा", + "concurrency": "समवर्ती नमुन्यांची संख्या (डीफॉल्ट: 4)", + "tag": "नंतर फिल्टर करण्यासाठी या धावेला टॅग लावा", + "watch": "पूर्ण होईपर्यंत धावेच्या प्रगतीवर लक्ष ठेवा" + }, + "list": { + "description": "मूल्यांकन धावांची सूची दाखवा", + "suite": "संचाच्या ID नुसार फिल्टर करा", + "status": "स्थितीनुसार फिल्टर करा", + "since": "या टाइमस्टॅम्पपासूनच्या धावा परत करा", + "limit": "कमाल निकाल (डीफॉल्ट: 50)" + }, + "get": { + "description": "ID द्वारे मूल्यांकन धावेचे तपशील मिळवा" + }, + "results": { + "description": "मूल्यांकन धावेसाठी नमुन्यांचे निकाल दाखवा", + "failed": "केवळ अयशस्वी नमुने दाखवा" + }, + "cancel": { + "description": "चालू असलेले मूल्यांकन रद्द करा", + "yes": "पुष्टीकरण प्रॉम्प्ट वगळा" + }, + "scorecard": { + "description": "पूर्ण झालेल्या मूल्यांकन धावेसाठी स्कोअरकार्ड दाखवा" + } + }, + "webhooks": { + "description": "OmniRoute वेबहुक्स व्यवस्थापित करा", + "events": { + "description": "सर्व उपलब्ध वेबहुक इव्हेंट प्रकारांची सूची दाखवा" + }, + "list": { + "description": "कॉन्फिगर केलेल्या वेबहुक्सची सूची दाखवा" + }, + "get": { + "description": "ID द्वारे वेबहुकचे तपशील मिळवा" + }, + "add": { + "description": "नवीन वेबहुक नोंदणी करा", + "url": "गंतव्य URL", + "events": "स्वल्पविरामाने विभक्त केलेली इव्हेंट प्रकारांची सूची", + "secret": "HMAC स्वाक्षरी गुपित", + "header": "key=value स्वरूपातील अतिरिक्त हेडर (पुनरावृत्तीयोग्य)", + "no_enabled": "अक्षम स्थितीत वेबहुक तयार करा" + }, + "update": { + "description": "विद्यमान वेबहुक अद्ययावत करा", + "enabled": "सक्षम स्थिती सेट करा (true|false)" + }, + "remove": { + "description": "वेबहुक हटवा", + "yes": "पुष्टीकरण प्रॉम्प्ट वगळा" + }, + "test": { + "description": "वेबहुकला चाचणी इव्हेंट पाठवा", + "event": "अनुकरण करण्यासाठी इव्हेंट प्रकार (डीफॉल्ट: request.completed)" + } + }, + "program": { + "description": "OmniRoute — स्वयंचलित फॉलबॅकसह स्मार्ट AI राउटर", + "version": "आवृत्ती प्रिंट करा आणि बाहेर पडा", + "output": "आउटपुट स्वरूप (table, json, jsonl, csv)", + "quiet": "अनावश्यक आउटपुट दडपून टाका", + "no_color": "रंगीत आउटपुट अक्षम करा", + "timeout": "HTTP विनंतीची कालमर्यादा मिलिसेकंदांत", + "api_key": "OmniRoute सर्व्हरसाठी API की", + "base_url": "OmniRoute सर्व्हरचा मूळ URL", + "context": "या कमांडसाठी वापरायचा सर्व्हर संदर्भ/प्रोफाइल", + "lang": "CLI प्रदर्शन भाषा सेट करा (OMNIROUTE_LANG वर अधिलिखित करते)" + }, + "files": { + "description": "फाइल्स व्यवस्थापित करा (अपलोड, सूची, मिळवा, डाउनलोड, हटवा)", + "list": { + "purpose": "उद्देशानुसार फिल्टर करा", + "limit": "कमाल निकाल" + }, + "get": { + "description": "फाइल मेटाडेटा मिळवा" + }, + "upload": { + "description": "फाइल अपलोड करा", + "purpose": "फाइलचा उद्देश (batch, assistants, fine-tune)" + }, + "content": { + "description": "फाइलमधील सामग्री डाउनलोड करा", + "out": "पाथवर जतन करा (डीफॉल्ट: stdout)" + }, + "delete": { + "yes": "पुष्टीकरण वगळा" + } + }, + "batches": { + "description": "OpenAI-सुसंगत बॅच जॉब्स व्यवस्थापित करा", + "list": { + "status": "स्थितीनुसार फिल्टर करा", + "limit": "कमाल निकाल" + }, + "create": { + "description": "बॅच जॉब तयार करा", + "inputFile": "इनपुट फाइल ID", + "endpoint": "लक्ष्य एंडपॉइंट", + "window": "पूर्णत्व कालावधी", + "metadata": "मेटाडेटा key=value जोडा" + }, + "submit": { + "description": "JSONL फाइल अपलोड करून बॅच तयार करा", + "jsonl": "JSONL फाइलचा पाथ", + "endpoint": "लक्ष्य एंडपॉइंट", + "wait": "पूर्ण होण्याची प्रतीक्षा करा" + }, + "cancel": { + "yes": "पुष्टीकरण वगळा" + }, + "wait": { + "timeout": "टाइमआउट (ms मध्ये)" + }, + "output": { + "out": "आउटपुट निर्दिष्ट पथावर जतन करा" + }, + "errors": { + "out": "त्रुटी निर्दिष्ट पथावर जतन करा" + } + }, + "translator": { + "description": "LLM फॉरमॅट्सदरम्यान विनंतीचे मुख्य भाग भाषांतरित करा", + "detect": { + "description": "मुख्य भागाचा फॉरमॅट शोधा" + }, + "translate": { + "description": "मुख्य भाग एका फॉरमॅटमधून दुसऱ्या फॉरमॅटमध्ये रूपांतरित करा" + }, + "send": { + "description": "भाषांतर करून अपस्ट्रीमकडे पाठवा" + }, + "stream": { + "description": "विनंतीच्या मुख्य भागाचे स्ट्रीमिंग पद्धतीने भाषांतर करा" + }, + "from": "स्रोत फॉरमॅट (openai|anthropic|gemini|cohere)", + "to": "लक्ष्य फॉरमॅट (openai|anthropic|gemini|cohere)", + "file": "विनंतीच्या मुख्य भागाच्या JSON फाइलचा पथ", + "out": "आउटपुट फाइलमध्ये जतन करा", + "model": "मॉडेल ओव्हरराइड करा", + "history": { + "limit": "कमाल परिणाम" + } + }, + "pricing": { + "description": "मॉडेल्ससाठी किंमत डेटा व्यवस्थापित करा", + "sync": { + "description": "अपस्ट्रीम स्रोतांमधून किमती समक्रमित करा", + "provider": "प्रदात्यानुसार फिल्टर करा", + "force": "सक्तीने पुन्हा समक्रमित करा" + }, + "list": { + "provider": "प्रदात्यानुसार फिल्टर करा", + "model": "मॉडेलनुसार फिल्टर करा", + "limit": "कमाल परिणाम" + }, + "defaults": { + "description": "डीफॉल्ट किंमत व्यवस्थापित करा", + "input": "प्रति 1M टोकन्स इनपुट खर्च (USD)", + "output": "प्रति 1M टोकन्स आउटपुट खर्च (USD)", + "cacheRead": "प्रति 1M टोकन्स कॅशे वाचन खर्च (USD)", + "cacheWrite": "प्रति 1M टोकन्स कॅशे लेखन खर्च (USD)" + }, + "diff": { + "description": "अपस्ट्रीम किमतींपासूनची तफावत दाखवा", + "model": "मॉडेलनुसार फिल्टर करा" + } + }, + "radar": { + "description": "स्थानिक Radar कॅटलॉग फीड्स तपासा आणि समक्रमित करा", + "status": "स्थानिक Radar सेटिंग्ज आणि फीड कॅशेची स्थिती दाखवा", + "sync": "स्थानिक सर्व्हरद्वारे कॅटलॉग, रेफरल्स, ऑफर्स आणि Intel समक्रमित करा" + }, + "resilience": { + "description": "लवचिकता यंत्रणा तपासा आणि व्यवस्थापित करा", + "status": { + "provider": "प्रदात्यानुसार फिल्टर करा" + }, + "breakers": { + "provider": "प्रदात्यानुसार फिल्टर करा" + }, + "cooldowns": { + "provider": "प्रदात्यानुसार फिल्टर करा", + "connectionId": "कनेक्शन ID नुसार फिल्टर करा" + }, + "lockouts": { + "provider": "प्रदात्यानुसार फिल्टर करा", + "model": "मॉडेलनुसार फिल्टर करा" + }, + "reset": { + "description": "ब्रेकर/कूलडाउन स्थिती रीसेट करा", + "provider": "रीसेट करण्यासाठी प्रदाता", + "connectionId": "रीसेट करण्यासाठी कनेक्शन ID", + "model": "लॉकआउट रीसेट करण्यासाठी मॉडेल", + "allCooldowns": "प्रदात्यासाठी सर्व कूलडाउन रीसेट करा", + "yes": "पुष्टीकरण वगळा" + }, + "profile": { + "description": "लवचिकता प्रोफाइल व्यवस्थापित करा", + "name": "प्रोफाइलचे नाव" + }, + "config": { + "description": "लवचिकता कॉन्फिग व्यवस्थापित करा", + "threshold": "अपयश मर्यादा", + "resetTimeout": "रीसेट टाइमआउट (ms मध्ये)", + "baseCooldown": "मूलभूत कूलडाउन (ms मध्ये)" + } + }, + "nodes": { + "description": "प्रदाता नोड्स (एंडपॉइंट्स) व्यवस्थापित करा", + "list": { + "provider": "प्रदात्यानुसार फिल्टर करा", + "enabled": "फक्त सक्षम केलेले नोड्स दाखवा" + }, + "add": { + "provider": "प्रदात्याचे नाव", + "baseUrl": "नोडसाठी मूलभूत URL", + "name": "नोडचे नाव", + "weight": "लोड बॅलन्सिंगचे वजन", + "region": "प्रदेश टॅग", + "authHeader": "सानुकूल प्रमाणीकरण हेडर (key=value)" + }, + "update": { + "baseUrl": "नवीन मूलभूत URL", + "name": "नवीन नाव", + "weight": "नवीन वजन", + "region": "नवीन प्रदेश", + "enabled": "सक्षम किंवा अक्षम करा (true|false)" + }, + "remove": { + "yes": "पुष्टीकरण वगळा" + }, + "validate": { + "baseUrl": "प्रमाणित करण्यासाठी URL", + "provider": "ज्याच्या संदर्भात प्रमाणित करायचे तो प्रदाता" + }, + "test": { + "description": "नोडला चाचणी विनंती पाठवा" + }, + "metrics": { + "description": "नोडची मेट्रिक्स दाखवा", + "period": "कालावधी (उदा. 24h, 7d)" + } + }, + "context": { + "description": "कॉन्टेक्स्ट इंजिनिअरिंग पाइपलाइन कॉन्फिगर करा (Caveman, RTK)", + "analytics": { + "period": "कालावधी (उदा. 7d, 30d)" + }, + "caveman": { + "description": "Caveman कॉन्टेक्स्ट कॉम्प्रेसर व्यवस्थापित करा", + "config": { + "description": "Caveman कॉन्फिग दाखवा किंवा अपडेट करा", + "aggressiveness": "आक्रमकता 0.0–1.0", + "maxShrinkPct": "कमाल संकोचन टक्केवारी", + "preserveTags": "जतन करायचे स्वल्पविरामाने विभक्त केलेले टॅग" + } + }, + "rtk": { + "description": "RTK कॉन्टेक्स्ट ऑप्टिमायझर व्यवस्थापित करा", + "config": { + "description": "RTK कॉन्फिग दाखवा किंवा अपडेट करा", + "tokenBudget": "RTK साठी टोकन बजेट", + "reservePct": "राखीव टक्केवारी" + }, + "filters": { + "description": "RTK फिल्टर्स व्यवस्थापित करा", + "pattern": "फिल्टर पॅटर्न (regex)", + "priority": "फिल्टर प्राधान्य (डीफॉल्ट: 100)", + "action": "फिल्टर कृती: drop|shrink|replace", + "yes": "पुष्टीकरण वगळा" + }, + "test": { + "file": "विनंतीच्या JSON फाइलचा पाथ" + } + }, + "combos": { + "description": "संदर्भ-जागरूक कॉम्बो व्यवस्थापन" + } + }, + "sessions": { + "description": "सक्रिय सत्रांची तपासणी आणि व्यवस्थापन करा", + "list": { + "user": "वापरकर्त्यानुसार फिल्टर करा", + "kind": "प्रकारानुसार फिल्टर करा (dashboard|api-key|mcp|a2a)", + "active": "फक्त सक्रिय सत्रे दाखवा", + "limit": "कमाल परिणाम (डीफॉल्ट: 100)" + }, + "expire": { + "yes": "पुष्टीकरण वगळा" + }, + "expireAll": { + "user": "ज्या वापरकर्त्याची सत्रे कालबाह्य करायची आहेत", + "yes": "पुष्टीकरण वगळा" + } + }, + "tags": { + "description": "रिसोर्स टॅग व्यवस्थापित करा", + "add": { + "color": "टॅगचा रंग (hex किंवा नाव)", + "description": "टॅगचे वर्णन" + }, + "remove": { + "yes": "पुष्टीकरण वगळा" + }, + "assign": { + "tag": "टॅगचे नाव", + "to": "लक्ष्य रिसोर्स type:id म्हणून (उदा. provider:openai)" + }, + "unassign": { + "tag": "टॅगचे नाव", + "from": "स्रोत रिसोर्स type:id म्हणून" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI स्पेकमध्ये प्रवेश करा आणि त्याची चाचणी करा", + "dump": { + "description": "OpenAPI स्पेक stdout किंवा फाइलमध्ये डंप करा", + "format": "आउटपुट फॉरमॅट: yaml|json (डीफॉल्ट: yaml)", + "out": "फाइल पाथवर जतन करा" + }, + "validate": { + "description": "OpenAPI स्पेक सत्यापित करा" + }, + "try": { + "description": "स्पेकद्वारे API एंडपॉइंटची चाचणी करा", + "method": "HTTP पद्धत (डीफॉल्ट: GET)", + "body": "विनंती बॉडीच्या JSON फाइलचा पाथ", + "query": "क्वेरी पॅरामीटर key=value म्हणून (पुनरावृत्तीयोग्य)", + "header": "हेडर key=value म्हणून (पुनरावृत्तीयोग्य)" + }, + "endpoints": { + "description": "सर्व API एंडपॉइंट्सची सूची दाखवा", + "search": "पाथ किंवा सारांशानुसार फिल्टर करा" + }, + "paths": { + "description": "सर्व API पाथची सूची दाखवा" + } + }, + "combo": { + "title": "कॉम्बोज", + "switched": "सक्रिय कॉम्बो: {name}", + "created": "कॉम्बो तयार केला: {name}", + "deleted": "कॉम्बो हटवला: {name}", + "noCombos": "कोणतेही कॉम्बो कॉन्फिगर केलेले नाहीत.", + "confirmDelete": "{name} कॉम्बो हटवायचा?", + "suggest": { + "description": "AI स्कोअरिंग वापरून कार्यासाठी सर्वोत्तम कॉम्बो सुचवा", + "task": "कार्याचे वर्णन", + "maxCost": "प्रति विनंती कमाल खर्च, USD मध्ये", + "maxLatencyMs": "कमाल विलंब, मिलिसेकंदांमध्ये", + "weights": "JSON स्कोअरिंग वजने, उदा. {\"latency\":0.7,\"cost\":0.3}", + "top": "दाखवायच्या सर्वोत्तम उमेदवारांची संख्या (डीफॉल्ट: 5)", + "explain": "तर्क stderr वर प्रिंट करा", + "switch": "सर्वोच्च क्रमांकाचा कॉम्बो सक्रिय करा" + } + }, + "oneproxy": { + "description": "OneProxy अपस्ट्रीम पूल व्यवस्थापित करा", + "stats": { + "provider": "प्रदात्यानुसार फिल्टर करा", + "period": "कालावधी (डीफॉल्ट: 24h)" + }, + "fetch": { + "description": "पूलमधून प्रॉक्सी मिळवा", + "count": "मिळवायच्या प्रॉक्सींची संख्या (डीफॉल्ट: 1)", + "type": "प्रॉक्सी प्रकार: http|socks5 (डीफॉल्ट: http)" + }, + "rotate": { + "description": "प्रॉक्सी रोटेशन सक्तीने करा", + "provider": "ज्या प्रदात्यासाठी रोटेशन करायचे आहे", + "connectionId": "रोटेशन करण्यासाठी विशिष्ट कनेक्शन ID" + }, + "config": { + "description": "OneProxy कॉन्फिगरेशन दाखवा किंवा अपडेट करा", + "enabled": "प्रॉक्सी पूल सक्षम करा (true|false)", + "poolSize": "पूलचा आकार", + "providerSource": "प्रॉक्सी प्रदात्यासाठी URL", + "rotationPolicy": "रोटेशन धोरण: sticky|per-request|periodic" + }, + "pool": { + "description": "मेट्रिक्ससह सध्याचा प्रॉक्सी पूल सूचीबद्ध करा" + } + }, + "open": { + "description": "ब्राउझरमध्ये विशिष्ट OmniRoute डॅशबोर्ड पृष्ठ उघडा", + "url": "फक्त URL प्रिंट करा, ब्राउझर उघडू नका" + }, + "telemetry": { + "description": "एकत्रित टेलिमेट्री डेटा वापरा", + "summary": { + "description": "एकत्रित टेलिमेट्री सारांश दाखवा", + "period": "कालावधी: 24h|7d|30d (डीफॉल्ट: 24h)", + "compareTo": "मागील कालावधीशी तुलना करा" + }, + "export": { + "description": "टेलिमेट्री इव्हेंट्स JSONL मध्ये एक्सपोर्ट करा", + "out": "आउटपुट फाइलचा पथ (डीफॉल्ट: telemetry.jsonl)", + "period": "एक्सपोर्टसाठी कालावधी (डीफॉल्ट: 7d)" + } + }, + "sync": { + "description": "OmniRoute इन्स्टन्सेसदरम्यान कॉन्फिगरेशन सिंक करा", + "push": { + "description": "कॉन्फिगरेशन क्लाउड किंवा रिमोट इन्स्टन्सवर पुश करा", + "target": "लक्ष्य (cloud किंवा context:name)", + "bundle": "सिंक करण्यासाठी बंडलचे भाग", + "dryRun": "लागू न करता पूर्वावलोकन करा" + }, + "pull": { + "description": "क्लाउड किंवा रिमोटमधून कॉन्फिग मिळवा", + "source": "स्रोत (क्लाउड किंवा context:name)", + "merge": "विद्यमान कॉन्फिगमध्ये विलीन करा", + "replace": "विद्यमान कॉन्फिग बदला", + "dryRun": "लागू न करता पूर्वावलोकन करा" + }, + "diff": { + "source": "स्रोत कॉन्टेक्स्ट", + "target": "लक्ष्य कॉन्टेक्स्ट" + }, + "bundle": { + "description": "कॉन्फिग बंडल फाइल म्हणून निर्यात करा", + "include": "समाविष्ट करायचे भाग (स्वल्पविरामाने विभक्त)" + }, + "import": { + "description": "बंडल फाइल आयात करा", + "dryRun": "लागू न करता वैधता तपासा" + }, + "initialize": { + "fromCloud": "क्लाउड बॅकअपमधून प्रारंभ करा" + }, + "tokens": { + "description": "सिंक टोकन व्यवस्थापित करा", + "create": { + "name": "टोकनचे नाव", + "scope": "टोकनची व्याप्ती", + "ttl": "टोकन TTL (उदा. 30d)" + }, + "revoke": { + "yes": "पुष्टीकरण वगळा" + } + }, + "resolve": { + "description": "सिंक संघर्ष परस्परसंवादी पद्धतीने सोडवा" + } + }, + "config": { + "contexts": { + "description": "सर्व्हर कॉन्टेक्स्ट/प्रोफाइल व्यवस्थापित करा (जोडा, वापरा, सूची दाखवा, तपशील दाखवा, काढा, नाव बदला, निर्यात करा, आयात करा)" + }, + "lang": { + "description": "CLI ची प्रदर्शन भाषा व्यवस्थापित करा", + "getDescription": "सध्या सक्रिय असलेला भाषा कोड दाखवा", + "setDescription": "प्रदर्शन भाषा सेट करा आणि ती कॉन्फिगमध्ये जतन करा", + "listDescription": "उपलब्ध सर्व भाषांची सूची दाखवा", + "listTitle": "उपलब्ध भाषा", + "current": "भाषा: {code} ({name})", + "saved": "भाषा {code} ({name}) वर सेट केली.", + "noCode": "भाषा कोड आवश्यक आहे. उपलब्ध कोड पाहण्यासाठी 'omniroute config lang list' चालवा.", + "unknown": "अज्ञात भाषा कोड: {code}. उपलब्ध कोड पाहण्यासाठी 'omniroute config lang list' चालवा.", + "alreadySet": "भाषा आधीपासूनच {code} वर सेट आहे.", + "envHint": "टीप: तुम्ही तुमच्या एन्व्हायर्नमेंटमध्ये OMNIROUTE_LANG={code} देखील सेट करू शकता." + } + }, + "completion": { + "description": "शेल कम्प्लीशन स्क्रिप्ट तयार करा किंवा स्थापित करा", + "zsh": "zsh कम्प्लीशन स्क्रिप्ट प्रिंट करा", + "bash": "bash कम्प्लीशन स्क्रिप्ट प्रिंट करा", + "fish": "fish कम्प्लीशन स्क्रिप्ट प्रिंट करा", + "install": "शोधलेल्या शेलसाठी कम्प्लीशन स्क्रिप्ट जागतिक स्तरावर स्थापित करा", + "refresh": "कॉम्बो/प्रोव्हायडर/मॉडेलचा कॅश रिफ्रेश करा" + }, + "logs": { + "description": "विनंती लॉग स्ट्रीम किंवा निर्यात करा", + "follow": "लॉग रिअल-टाइममध्ये स्ट्रीम करा", + "filter": "पातळीनुसार फिल्टर करा (error,warn,info) — स्वल्पविरामाने विभक्त", + "lines": "आणायच्या ओळींची संख्या", + "timeout": "कनेक्शन टाइमआउट ms मध्ये", + "baseUrl": "OmniRoute API बेस URL", + "requestId": "विनंती ID नुसार फिल्टर करा", + "apiKey": "API कीनुसार फिल्टर करा", + "combo": "कॉम्बो नावानुसार फिल्टर करा", + "status": "HTTP स्थिती कोडनुसार फिल्टर करा", + "durationMin": "किमान विनंती कालावधी ms मध्ये", + "durationMax": "कमाल विनंती कालावधी ms मध्ये", + "export": "लॉग्स फाइलमध्ये जतन करा (json/jsonl/csv)", + "exported": "लॉग्स {path} येथे जतन केले", + "stopped": "लॉग प्रवाह थांबवला.", + "streamError": "लॉग प्रवाह त्रुटी: {message}" + }, + "tray": { + "description": "सिस्टम ट्रे आयकॉन नियंत्रित करा", + "show": "ट्रे आयकॉन दाखवा (सर्व्हर --tray सह चालू असल्यास)", + "hide": "ट्रे आयकॉन लपवा", + "quit": "ट्रेद्वारे OmniRoute बंद करा" + }, + "autostart": { + "description": "बूटवेळी OmniRoute चे स्वयंचलित प्रारंभ व्यवस्थापित करा (Linux: systemd वापरकर्ता सेवा)", + "enable": "बूटवेळी स्वयंचलित प्रारंभ सक्षम करा", + "disable": "बूटवेळी स्वयंचलित प्रारंभ अक्षम करा", + "toggle": "बूटवेळी स्वयंचलित प्रारंभ टॉगल करा", + "status": "स्वयंचलित प्रारंभाची स्थिती दाखवा" + }, + "runtime": { + "description": "नेटिव्ह रनटाइम अवलंबित्वे व्यवस्थापित करा", + "check": "रनटाइम डिरेक्टरीमधील नेटिव्ह अवलंबित्वांची स्थिती तपासा", + "repair": "रनटाइम डिरेक्टरीमध्ये नेटिव्ह अवलंबित्वे पुन्हा स्थापित करा", + "repair_force": "वैध असली तरीही सक्तीने पुन्हा स्थापित करा", + "clean": "रनटाइम डिरेक्टरी काढून टाका (डिस्क जागा मोकळी करते)", + "clean_yes": "पुष्टीकरण वगळा" + }, + "repl": { + "description": "LLM सह परस्परसंवादी बहु-टर्न REPL", + "model": "वापरायचे मॉडेल (डीफॉल्ट: auto)", + "combo": "वापरायचे कॉम्बो नाव", + "system": "सिस्टम प्रॉम्प्ट", + "resume": "जतन केलेले सत्र नावानुसार पुन्हा सुरू करा" + }, + "plugin": { + "description": "CLI प्लगइन्स व्यवस्थापित करा (omniroute-cmd-*)", + "list": "स्थापित प्लगइन्सची यादी दाखवा", + "install": "npm किंवा स्थानिक पाथवरून प्लगइन स्थापित करा", + "remove": "स्थापित प्लगइन काढून टाका", + "info": "स्थापित प्लगइनचे तपशील दाखवा", + "search": "उपलब्ध प्लगइन्ससाठी npm रजिस्ट्रीमध्ये शोधा", + "update": "स्थापित प्लगइन अद्यतनित करा", + "scaffold": "नवीन प्लगइनचा मूलभूत आराखडा तयार करा" + }, + "launch": { + "description": "OmniRoute कडे निर्देशित केलेले Claude Code सुरू करा (स्थानिक किंवा दूरस्थ, --profile सह)", + "token": "Claude क्लायंटने पाठवायचे टोकन (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "{port} वर OmniRoute उपलब्ध नाही. ते 'omniroute serve' वापरून सुरू करा.", + "notFound": "PATH मध्ये 'claude' CLI आढळले नाही." + }, + "run": { + "description": "OmniRoute द्वारे समर्थित CLI लक्ष्य सुरू करा" + }, + "setupClaude": { + "description": "OmniRoute मॉडेल कॅटलॉगमधून ~/.claude/profiles Claude Code प्रोफाइल तयार करा" + }, + "connect": { + "description": "दूरस्थ OmniRoute सर्व्हरशी कनेक्ट करा आणि दूरस्थ मोडमध्ये प्रवेश करा" + }, + "tokens": { + "description": "व्याप्तीबद्ध CLI प्रवेश टोकन व्यवस्थापित करा (दूरस्थ मोड)" + }, + "configure": { + "description": "सक्रिय सर्व्हरमधून प्रदाता+मॉडेल निवडा आणि समर्थित स्थानिक CLI कॉन्फिगर करा" + }, + "launchCodex": { + "description": "OmniRoute कडे निर्देशित केलेले Codex CLI सुरू करा (स्थानिक किंवा दूरस्थ VPS)" + }, + "setupCodex": { + "description": "OmniRoute च्या थेट मॉडेल कॅटलॉगमधून ~/.codex प्रोफाइल फाइल्स तयार करा" + }, + "packs": { + "description": "पर्यायी रनटाइम पॅक व्यवस्थापित करा (ML / ब्राउझर स्वयंचलन)", + "listDescription": "पर्यायी पॅक आणि त्यांच्या स्थापनेची स्थिती सूचीबद्ध करा", + "installDescription": "DATA_DIR मध्ये पर्यायी पॅक स्थापित करा", + "verifyDescription": "पुरवलेल्या चेकसम निर्देशांकाच्या आधारे स्थापित पॅक सत्यापित करा", + "removeDescription": "स्थापित केलेला पर्यायी पॅक काढून टाका", + "sourceOpt": "पॅक पेलोड आणि पॅक निर्देशांक असलेली निर्देशिका", + "warnNoIndex": "optional-packs.index.json आढळली नाही — या चेकआउटमध्ये स्थापना/सत्यापन उपलब्ध नाही (डेस्कटॉप बंडलमध्ये ती समाविष्ट असते)", + "errUnknown": "अज्ञात पॅक: {name}", + "errNoIndex": "पॅक निर्देशांक आढळला नाही; पॅक पेलोड असलेली --source द्या (डेस्कटॉप बंडलमध्ये ती ॲपच्या शेजारी समाविष्ट असते)", + "installed": "पॅक \"{name}\" {dir} येथे स्थापित आणि सत्यापित केला", + "restartHint": "रनटाइमने पॅक वापरावा यासाठी OmniRoute सर्व्हर (किंवा डेस्कटॉप ॲप) रीस्टार्ट करा", + "removed": "पॅक \"{name}\" काढून टाकला", + "notInstalled": "पॅक \"{name}\" स्थापित केलेला नव्हता", + "verifyOk": "सर्व स्थापित पॅक सत्यापित झाले", + "verifyFailed": "{count} पॅकचे सत्यापन अयशस्वी झाले", + "noneInstalled": "कोणतेही पर्यायी पॅक स्थापित केलेले नाहीत" } } diff --git a/bin/cli/locales/ms.json b/bin/cli/locales/ms.json index b0f5f826fe..5597af8479 100644 --- a/bin/cli/locales/ms.json +++ b/bin/cli/locales/ms.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "Ralat: {message}", + "serverOffline": "Pelayan OmniRoute di luar talian. Mulakannya dengan: omniroute serve", + "authRequired": "Pengesahan diperlukan. Tetapkan OMNIROUTE_API_KEY atau jalankan: omniroute setup", + "rateLimited": "Had kadar telah dilebihi. Cuba semula selepas {seconds}s.", + "timeout": "Permintaan tamat masa selepas {ms}ms.", + "success": "Selesai.", + "yes": "ya", + "no": "tidak", + "confirm": "Adakah anda pasti? (ya/tidak)", + "dryRun": "[dry-run] akan {action}", + "cancelled": "Dibatalkan.", + "jsonOpt": "Output sebagai JSON", + "yesOpt": "Langkau gesaan pengesahan" + }, + "setup": { + "title": "Persediaan OmniRoute", + "passwordPrompt": "Kata laluan pentadbir", + "providerPrompt": "Penyedia lalai (biarkan kosong untuk langkau)", + "done": "Persediaan selesai", + "passwordSet": "Kata laluan pentadbir telah dikonfigurasikan", + "providerSet": "Penyedia dikonfigurasikan: {name}", + "testingProvider": "Menguji sambungan penyedia: {name}", + "testPassed": "Ujian penyedia berjaya", + "testFailed": "Ujian penyedia gagal: {error}", + "loginEnabled": "Log masuk: didayakan (kata laluan dikemas kini)", + "loginDisabled": "Log masuk: dilumpuhkan", + "providerInfo": "Penyedia: {info}", + "opencode": "Pasang dan konfigurasikan @omniroute/opencode-plugin terbina dalam untuk OpenCode" + }, + "doctor": { + "title": "Diagnostik OmniRoute", + "dbOk": "Pangkalan data: OK ({path})", + "dbMissing": "Pangkalan data: belum dimulakan — jalankan `omniroute setup`", + "portOk": "Port {port}: tersedia", + "portConflict": "Port {port}: sedang digunakan oleh proses lain", + "encryptionOk": "Kunci penyulitan: dikonfigurasikan", + "encryptionMissing": "Kunci penyulitan tiada — jalankan `omniroute setup`", + "allGood": "Semua semakan berjaya.", + "warnings": "{count} amaran — lihat di atas." + }, + "providers": { + "title": "Penyedia", + "noProviders": "Tiada penyedia dikonfigurasikan. Jalankan: omniroute setup", + "testing": "Menguji {name}...", + "available": "{count} penyedia tersedia", + "connected": "Disambungkan", + "disconnected": "Terputus", + "validationFailed": "Pengesahan gagal: {error}", + "metrics": { + "description": "Tunjukkan metrik prestasi penyedia (kependaman, kadar kejayaan, kos)", + "provider": "Tapis mengikut ID penyedia", + "connection_id": "Tapis mengikut ID sambungan", + "period": "Tempoh masa: 1h|6h|24h|7d|30d (lalai: 24h)", + "metric": "Fokus pada medan metrik tertentu", + "sort": "Isih mengikut medan (menurun)", + "limit": "Baris maksimum (lalai: 50)", + "watch": "Muat semula setiap 5s (mod langsung)", + "compare": "ID penyedia dipisahkan koma untuk dibandingkan sebelah-menyebelah" + }, + "metric_single": { + "description": "Dapatkan satu nilai metrik untuk sambungan tertentu" + }, + "rotate": { + "description": "Gilirkan kunci API huluan untuk sambungan penyedia", + "newKeyOpt": "Nilai kunci API baharu (elakkan: utamakan --from-env)", + "fromEnvOpt": "Baca kunci baharu daripada pemboleh ubah persekitaran VAR", + "oauthOpt": "Cetuskan aliran pengesahan semula OAuth sebaliknya", + "skipTestOpt": "Langkau ujian kesambungan selepas penggiliran", + "dryRunOpt": "Paparkan perubahan yang akan dilakukan tanpa menulis", + "confirmPrompt": "Gantikan kunci API untuk sambungan \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Akan menggilirkan kunci untuk \"{name}\" ({id}). Tiada perubahan dibuat.", + "oauthHint": "Sambungan OAuth — jalankan: omniroute oauth {provider}", + "envVarEmpty": "Pemboleh ubah persekitaran {var} tidak ditetapkan atau kosong.", + "success": "Kunci telah digilirkan untuk \"{name}\". Jalankan `providers test {id}` untuk mengesahkan.", + "testPassed": "Ujian selepas penggiliran berjaya.", + "testFailed": "Ujian selepas penggiliran gagal: {error}" + }, + "status": { + "description": "Tunjukkan status kunci untuk semua sambungan penyedia (usia, tamat tempoh, tempoh bertenang)", + "providerOpt": "Tapis mengikut nama penyedia", + "header": "ID Penyedia Nama Status Tamat Tempoh Status Ujian Tempoh Bertenang Hingga", + "noData": "Tiada data sambungan penyedia tersedia.", + "requiresServer": "providers status memerlukan pelayan OmniRoute sedang berjalan." + } + }, + "keys": { + "title": "Kunci API", + "addDescription": "Tambah atau kemas kini kunci API untuk penyedia", + "listDescription": "Senaraikan semua kunci API yang dikonfigurasikan", + "removeDescription": "Alih keluar kunci API untuk penyedia", + "regenerateDescription": "Jana semula kunci API OmniRoute", + "revokeDescription": "Batalkan kunci API OmniRoute", + "revealDescription": "Dedahkan nilai kunci API yang tidak disamarkan", + "usageDescription": "Tunjukkan penggunaan terkini untuk kunci API", + "usageLimitOpt": "Bilangan permintaan terkini", + "rotateDescription": "Jana kunci baharu dan batalkan kunci lama", + "graceOpt": "Tempoh tangguh (ms) sebelum kunci lama dinyahsahkan", + "stdinOpt": "Baca kunci API daripada stdin dan bukannya argumen", + "added": "Kunci ditambahkan untuk {provider}.", + "removed": "Kunci dialih keluar.", + "listed": "{count} kunci.", + "noKeys": "Tiada kunci dikonfigurasikan.", + "noUsage": "Tiada data penggunaan ditemukan.", + "confirmRemove": "Alih keluar kunci {id}?", + "confirmRegenerate": "Jana semula kunci {id}?", + "confirmRevoke": "Batalkan kunci {id}?", + "confirmRotate": "Putar ganti kunci {id}? (kunci lama akan dinyahsahkan selepas tempoh tangguh)", + "regenerated": "Telah dijana semula. Kunci baharu: {key}", + "revoked": "Kunci {id} telah dibatalkan.", + "rotated": "Kunci {id} telah diputar ganti. ID kunci baharu: {newId}", + "revealWarning": "⚠ Ini akan memaparkan kunci penuh tanpa penyamaran. Pastikan skrin anda tidak dapat dilihat oleh orang lain.", + "providerRequired": "Penyedia diperlukan.", + "keyRequired": "Kunci API diperlukan.", + "stdinEmpty": "Tiada kunci API diberikan melalui stdin.", + "unknownProvider": "Penyedia tidak diketahui: {provider}", + "policy": { + "title": "Dasar Kunci", + "showDescription": "Tunjukkan dasar kadar/kos untuk kunci", + "setDescription": "Tetapkan dasar kadar/kos untuk kunci", + "rateLimitOpt": "Permintaan maksimum seminit", + "maxCostOpt": "Kos maksimum sehari (USD)", + "allowedModelsOpt": "Senarai model yang dibenarkan, dipisahkan dengan koma", + "nothingToSet": "Tiada medan dasar diberikan. Gunakan --rate-limit, --max-cost, atau --allowed-models.", + "updated": "Dasar telah dikemas kini." + }, + "expiration": { + "title": "Tamat Tempoh Kunci", + "listDescription": "Senaraikan kunci yang akan tamat tempoh tidak lama lagi", + "daysOpt": "Tunjukkan kunci yang akan tamat tempoh dalam tempoh N hari", + "none": "Tiada kunci yang akan tamat tempoh dalam tempoh {days} hari.", + "listTitle": "Kunci yang akan tamat tempoh dalam tempoh {days} hari:" + } + }, + "authExport": { + "description": "Eksport kelayakan penyedia yang DINYAHKRIP (setempat sahaja, output teks biasa)", + "idOpt": "Eksport hanya sambungan yang sepadan dengan id/nama/penyedia ini", + "formatOpt": "Format output: json atau env", + "outOpt": "Tulis output ke fail dan bukannya stdout (ditulis dengan kebenaran 0600)", + "forceOpt": "Sahkan bahawa anda memahami tindakan ini akan mencetak/menulis rahsia dalam bentuk teks biasa", + "warning": "⚠ Tindakan ini mencetak/menulis kunci API dan token OAuth yang telah DINYAHKRIP dalam bentuk teks biasa. Pastikan skrin, sejarah shell dan sebarang fail output anda kekal peribadi.", + "confirmHeading": "⚠ AMARAN: tindakan ini mengeksport kelayakan penyedia yang telah DINYAHKRIP dalam bentuk teks biasa", + "confirmBody": "Perintah ini menyahkrip dan mencetak/menulis apiKey, accessToken, refreshToken, dan\nidToken untuk sambungan yang dipilih. Anggap output ini sebagai rahsia.", + "confirmFooter": "Untuk mengesahkan, jalankan:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY diperlukan untuk mengeksport bukti kelayakan.", + "notFound": "Sambungan tidak ditemukan: {id}", + "invalidFormat": "Format tidak sah: {format}. Gunakan json atau env." + }, + "stream": { + "description": "Strim respons sembang dengan mod pemeriksaan SSE", + "file": "Baca gesaan daripada fail", + "stdin": "Baca gesaan daripada stdin", + "model": "ID model (lalai: auto)", + "system": "Gesaan sistem", + "combo": "Paksa kombo tertentu mengikut nama", + "max_tokens": "Token maksimum dalam respons", + "responses_api": "Gunakan /v1/responses dan bukannya /v1/chat/completions", + "raw": "Cetak baris SSE mentah seperti yang diterima", + "debug": "Cetak maklumat pemasaan setiap cebisan ke stderr", + "save": "Simpan semua peristiwa SSE ke fail .jsonl", + "error": { + "empty_prompt": "Ralat: gesaan diperlukan (argumen kedudukan, --file, atau --stdin)" + } + }, + "usage": { + "description": "Analitis penggunaan, belanjawan, kuota dan log", + "analytics": { + "description": "Tunjukkan analitis penggunaan teragregat", + "period": "Julat masa: 1d|7d|30d|90d|ytd|all (lalai: 30d)", + "provider": "Tapis mengikut ID penyedia" + }, + "budget": { + "description": "Urus belanjawan kos", + "set": { + "scope": "Skop belanjawan (lalai: global)", + "period": "Tempoh belanjawan: daily|weekly|monthly (lalai: monthly)" + } + }, + "quota": { + "description": "Tunjukkan penggunaan kuota penyedia", + "provider": "Tapis mengikut ID penyedia", + "check": "Tunjukkan sama ada kuota tersedia untuk permintaan baharu" + }, + "logs": { + "description": "Tunjukkan log panggilan permintaan", + "limit": "Bilangan entri log untuk dikembalikan (lalai: 100)", + "search": "Pertanyaan carian untuk menapis log", + "since": "Kembalikan log sejak cap masa ini", + "follow": "Ikuti entri log baharu secara berterusan", + "api_key": "Tapis log mengikut kunci API" + }, + "utilization": { + "description": "Tunjukkan metrik penggunaan kunci API", + "api_key": "Tapis mengikut kunci API" + }, + "history": { + "description": "Tunjukkan sejarah permintaan", + "limit": "Bilangan entri sejarah (lalai: 100)" + }, + "proxy_logs": { + "description": "Tunjukkan log permintaan peringkat proksi", + "limit": "Bilangan entri log proksi (lalai: 100)" + } + }, + "cost": { + "description": "Tunjukkan laporan kos dengan pecahan mengikut penyedia, model, kombo atau kunci API", + "period": "Julat masa: 1d|7d|30d|90d|ytd|all (lalai: 30d)", + "since": "Tarikh mula (format ISO, cth. 2026-01-01) — mengatasi --period", + "until": "Tarikh tamat (format ISO)", + "group_by": "Kumpulkan hasil mengikut: provider|model|api-key|combo|day (lalai: provider)", + "api_key_filter": "Tapis mengikut kunci API tertentu", + "limit": "Bilangan maksimum baris untuk dipaparkan (lalai: 100)" + }, + "simulate": { + "description": "Simulasi penghalaan percubaan — tunjukkan penyedia yang akan dipilih tanpa memanggil upstream", + "file": "Muatkan kandungan penuh permintaan daripada fail JSON", + "model": "ID model (lalai: auto)", + "combo": "Paksa combo tertentu mengikut nama", + "reasoning": "Tahap usaha penaakulan (low|medium|high)", + "thinking": "Bajet token pemikiran lanjutan", + "explain": "Cetak pepohon fallback dan julat kos ke stderr", + "noCombo": "Tiada combo yang sepadan ditemui. Konfigurasikan satu dengan: omniroute combo create" + }, + "chat": { + "description": "Hantar gesaan sembang sekali sahaja kepada OmniRoute", + "file": "Baca gesaan daripada fail", + "stdin": "Baca gesaan daripada stdin", + "system": "Gesaan sistem", + "model": "ID model (lalai: auto)", + "max_tokens": "Token maksimum dalam respons", + "temperature": "Suhu pensampelan (0–2)", + "top_p": "Pensampelan nukleus top-p", + "reasoning_effort": "Tahap usaha penaakulan (low|medium|high)", + "thinking_budget": "Bajet token pemikiran lanjutan", + "combo": "Paksa combo tertentu mengikut nama", + "responses_api": "Gunakan /v1/responses dan bukannya /v1/chat/completions", + "stream": "Strim respons secara berperingkat", + "no_history": "Jangan simpan ke ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Ralat: gesaan diperlukan (argumen kedudukan, --file, atau --stdin)" + } + }, + "serve": { + "description": "Mulakan pelayan OmniRoute (tindakan lalai)", + "starting": "Memulakan pelayan OmniRoute pada port {port}...", + "ready": "Sedia di http://localhost:{port}", + "stopping": "Menghentikan pelayan (PID {pid})...", + "stopped": "Pelayan dihentikan.", + "notRunning": "Pelayan tidak sedang berjalan.", + "port": "Port untuk menerima sambungan (lalai: 20128)", + "no_open": "Jangan buka pelayar secara automatik", + "daemon": "Jalankan pelayan sebagai daemon latar belakang", + "log": "Tunjukkan log pelayan sebaris", + "no_recovery": "Lumpuhkan mula semula automatik apabila ranap (mod penyahpepijatan)", + "max_restarts": "Bilangan maksimum mula semula akibat ranap dalam tempoh 30s sebelum berhenti mencuba (lalai: 2)", + "tray": "Mulakan dalam dulang sistem (desktop sahaja, ikut serta)", + "no_tray": "Lumpuhkan ikon dulang sistem", + "ready_timeout": "Tamat masa prob kesediaan dalam ms (juga OMNIROUTE_READY_TIMEOUT_MS, lalai 60000)", + "tls_cert": "Laluan ke sijil TLS (PEM) untuk menyediakan HTTPS (juga OMNIROUTE_TLS_CERT)", + "tls_key": "Laluan ke kunci peribadi TLS (PEM) untuk menyediakan HTTPS (juga OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sandaran", + "description": "Cipta sandaran data OmniRoute", + "creating": "Mencipta sandaran...", + "done": "Sandaran disimpan ke {path}", + "noFiles": "Tiada fail untuk disandarkan (pangkalan data belum dimulakan)", + "failed": "Sandaran gagal: {error}", + "restoring": "Memulihkan daripada {path}...", + "restored": "Pemulihan selesai.", + "restoreDescription": "Pulihkan daripada sandaran", + "listTitle": "Sandaran Tersedia", + "noBackups": "Tiada sandaran ditemukan.", + "notFound": "Sandaran tidak ditemukan: {name}", + "confirmRestore": "Tulis ganti data semasa dengan sandaran daripada {ts}?", + "createDescription": "Cipta sandaran data OmniRoute", + "nameOpt": "Nama sandaran tersuai", + "cloudOpt": "Muat naik sandaran ke storan awan", + "encryptOpt": "Sulitkan sandaran dengan AES-256-GCM", + "keyFileOpt": "Laluan ke fail yang mengandungi frasa laluan penyulitan", + "excludeOpt": "Kecualikan fail yang sepadan dengan corak (boleh diulang)", + "retentionOpt": "Kekalkan hanya N sandaran terakhir", + "passphrasePrompt": "Frasa laluan penyulitan:", + "noPassphrase": "Frasa laluan diperlukan untuk sandaran yang disulitkan.", + "cloudFailed": "Amaran: muat naik ke awan gagal. Sandaran setempat telah disimpan.", + "cloudUploaded": "Sandaran awan dimuat naik: {url}", + "auto": { + "title": "Jadual Sandaran", + "enableDescription": "Dayakan sandaran automatik berjadual", + "disableDescription": "Lumpuhkan sandaran automatik berjadual", + "statusDescription": "Tunjukkan status jadual sandaran semasa", + "cronOpt": "Ungkapan cron untuk jadual (lalai: setiap hari pada pukul 3 pagi)", + "enabled": "Sandaran automatik didayakan (cron: {cron}).", + "hint": "Jadual dibaca oleh omniroute serve semasa permulaan.", + "disabled": "Sandaran automatik dilumpuhkan.", + "notConfigured": "Tiada jadual sandaran dikonfigurasikan." + } + }, + "health": { + "description": "Semak kesihatan pelayan dan status komponen", + "noServer": "Pelayan tidak berjalan. Mulakan dengan: omniroute serve", + "title": "Kesihatan", + "status": "Status: {status}", + "uptime": "Masa operasi: {uptime}", + "requests": "Permintaan (24j): {count}", + "cost": "Kos (24j): ${cost}" + }, + "quota": { + "description": "Tunjukkan penggunaan kuota penyedia", + "noServer": "Pelayan tidak berjalan. Mulakan dengan: omniroute serve", + "noData": "Tiada maklumat kuota tersedia." + }, + "cache": { + "description": "Urus cache respons", + "noServer": "Pelayan tidak berjalan. Mulakan dengan: omniroute serve", + "cleared": "Cache dikosongkan.", + "clearFailed": "Gagal mengosongkan cache." + }, "redis": { "description": "Lancarkan kontena Redis tempatan dengan satu klik (Podman atau Docker) untuk caching dan penjejakan kuota OmniRoute" + }, + "test": { + "description": "Uji sambungan penyedia", + "noServer": "Pelayan tidak berjalan. Mulakan dengan: omniroute serve", + "testing": "Menguji {provider} / {model}...", + "passed": "Sambungan berjaya!", + "failed": "Sambungan gagal: {error}", + "allProvidersOpt": "Uji semua penyedia yang dikonfigurasikan", + "latencyOpt": "Tunjukkan ukuran kependaman (purata/min/maks ms)", + "repeatOpt": "Ulangi ujian sebanyak N kali dan gabungkan hasil", + "compareOpt": "Model dipisahkan koma untuk dibandingkan (cth. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Simpan hasil ke fail JSON", + "saved": "Hasil disimpan ke {path}", + "compareTitle": "Perbandingan Model", + "compareMinTwo": "Sekurang-kurangnya dua model diperlukan untuk --compare (dipisahkan koma)", + "noProviders": "Tiada penyedia dikonfigurasikan. Tambah satu dengan: omniroute keys add" + }, + "update": { + "checking": "Menyemak kemas kini...", + "upToDate": "Sudah dikemas kini ({version}).", + "available": "Kemas kini tersedia: {current} → {latest}", + "installing": "Memasang {latest}...", + "done": "Dikemas kini kepada {latest}. Mulakan semula pelayan untuk menerapkannya." + }, + "mcp": { + "title": "Pelayan MCP", + "running": "Pelayan MCP sedang berjalan ({transport})", + "stopped": "Pelayan MCP dihentikan.", + "restarted": "Pelayan MCP dimulakan semula.", + "stoppedHint": "Jalankan `omniroute mcp enable` untuk menghidupkannya.", + "enabled": "Pelayan MCP didayakan.", + "disabled": "Pelayan MCP dilumpuhkan.", + "enable": { + "description": "Dayakan pelayan MCP", + "transport": "Pengangkutan untuk digunakan: stdio|sse|streamable-http" + }, + "disable": { + "description": "Nyahdayakan pelayan MCP" + }, + "call": { + "description": "Panggil alat MCP secara langsung", + "args": "Objek argumen JSON (sebaris)", + "args_file": "Laluan ke fail argumen JSON", + "stream": "Gunakan titik akhir penstriman (/api/mcp/stream)", + "scope": "Skop yang diperlukan (boleh diulang, cth. read:health)" + }, + "scopes": { + "description": "Senaraikan skop MCP yang tersedia", + "tool": "Tunjukkan skop yang diperlukan oleh alat tertentu" + }, + "tools": { + "description": "Periksa alat MCP", + "list": { + "description": "Senaraikan semua alat MCP", + "scope": "Tapis mengikut skop" + }, + "info": { + "description": "Tunjukkan metadata untuk alat MCP" + }, + "schema": { + "description": "Tunjukkan skema JSON input/output untuk alat MCP", + "io": "Jenis skema: input|output (lalai: input)" + } + }, + "audit": { + "description": "Log audit MCP (alias untuk audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Senaraikan kemahiran A2A yang tersedia daripada kad ejen" + }, + "invoke": { + "description": "Panggil kemahiran A2A dan kembalikan ID tugas", + "input": "Objek input JSON", + "input_file": "Laluan ke fail input JSON", + "wait": "Tunggu sehingga tugas selesai sebelum kembali", + "timeout": "Had masa menunggu sehingga selesai dalam ms (lalai: 60000)" + }, + "tasks": { + "description": "Urus tugas A2A", + "list": { + "status": "Tapis mengikut status", + "skill": "Tapis mengikut ID kemahiran" + }, + "watch": { + "description": "Semak status tugas secara berkala sehingga selesai" + }, + "stream": { + "description": "Strim peristiwa pelaksanaan tugas melalui SSE" + }, + "logs": { + "description": "Tunjukkan mesej dan artifak tugas" + } + } + }, + "policy": { + "description": "Urus dasar kebenaran OmniRoute", + "list": { + "description": "Senaraikan dasar", + "kind": "Tapis mengikut jenis (allow|deny|rate-limit|cost-cap)", + "scope": "Tapis mengikut skop (global|api-key|provider)" + }, + "get": { + "description": "Dapatkan butiran dasar mengikut ID" + }, + "create": { + "description": "Cipta dasar daripada fail JSON", + "file": "Laluan ke fail JSON dasar" + }, + "update": { + "description": "Kemas kini dasar daripada fail JSON", + "file": "Laluan ke fail JSON dasar" + }, + "delete": { + "description": "Padam dasar mengikut ID", + "yes": "Langkau gesaan pengesahan" + }, + "evaluate": { + "description": "Jalankan penilaian dasar secara percubaan (keluar 0=dibenarkan, 4=ditolak)", + "api_key": "Kunci API untuk dinilai", + "action": "Tindakan untuk diperiksa (cth. chat, embed, admin)", + "resource": "Laluan atau pengecam sumber", + "context": "Konteks tambahan sebagai objek JSON" + }, + "export": { + "description": "Eksport semua dasar ke fail JSON" + }, + "import": { + "description": "Import dasar daripada fail JSON", + "overwrite": "Tulis ganti dasar sedia ada dengan ID yang sama" + } + }, + "compression": { + "description": "Konfigurasikan dan periksa saluran pemampatan OmniRoute", + "status": { + "description": "Tunjukkan status dan tetapan pemampatan semasa" + }, + "configure": { + "description": "Konfigurasikan tetapan pemampatan", + "engine": "Enjin pemampatan (caveman|rtk|hybrid|none)", + "caveman_agg": "Keagresifan Caveman 0.0–1.0", + "rtk_budget": "Belanjawan token RTK", + "language_pack": "Pek bahasa untuk diaktifkan" + }, + "engine": { + "description": "Dapatkan atau tetapkan enjin pemampatan aktif" + }, + "combos": { + "description": "Urus statistik gabungan pemampatan" + }, + "rules": { + "description": "Urus peraturan pemampatan", + "add": { + "pattern": "Corak untuk dipadankan (regex atau field:pattern)", + "action": "Tindakan: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Senaraikan pek bahasa pemampatan yang tersedia" + }, + "preview": { + "description": "Pratonton kesan pemampatan pada permintaan", + "file": "Laluan ke fail JSON permintaan" + } + }, + "tunnel": { + "title": "Terowong", + "listDescription": "Senaraikan terowong aktif", + "createDescription": "Cipta terowong", + "created": "Terowong dicipta: {url}", + "stopped": "Terowong dihentikan.", + "confirmStop": "Hentikan terowong {id}?", + "stopDescription": "Hentikan terowong", + "statusDescription": "Tunjukkan status terperinci terowong", + "logsDescription": "Tunjukkan log untuk terowong", + "infoDescription": "Tunjukkan butiran konfigurasi terowong", + "rotateDescription": "Jana URL terowong baharu", + "tailOpt": "Bilangan baris log untuk ditunjukkan", + "typeRequired": "Jenis terowong diperlukan.", + "noLogs": "Tiada log tersedia.", + "notAvailable": "Maklumat terowong tidak tersedia.", + "noTunnels": "Tiada terowong aktif.", + "infoTitle": "Maklumat terowong: {type}", + "rotated": "URL terowong ditukar: {url}", + "confirmRotate": "Tukar URL terowong {type}? (URL baharu akan dijana)" + }, + "stop": { + "description": "Hentikan pelayan OmniRoute", + "stopping": "Sedang menghentikan pelayan (PID {pid})...", + "stopped": "Pelayan dihentikan.", + "notRunning": "Tiada pelayan sedang berjalan.", + "portFallback": "Tiada fail PID ditemukan, cuba menghentikan berdasarkan port..." + }, + "restart": { + "description": "Mulakan semula pelayan OmniRoute", + "restarting": "Sedang memulakan semula pelayan OmniRoute..." + }, + "dashboard": { + "description": "Buka papan pemuka OmniRoute dalam pelayar", + "opening": "Sedang membuka papan pemuka di {url}", + "urlOnly": "Paparkan URL papan pemuka tanpa membuka pelayar", + "tui": "Buka papan pemuka TUI interaktif (UI terminal, 7 tab)" + }, + "models": { + "description": "Senaraikan model yang tersedia (memerlukan pelayan)", + "search": "Tapis model mengikut ID, nama, penyedia atau perihalan", + "noServer": "Pelayan tidak berjalan. Mulakan dengan: omniroute serve", + "noModels": "Tiada model ditemukan." + }, + "audit": { + "description": "Akses log audit pematuhan dan MCP", + "source": "Sumber log: all|compliance|mcp (lalai: all)", + "since": "Kembalikan entri sejak cap masa ini (ISO 8601)", + "until": "Kembalikan entri sehingga cap masa ini (ISO 8601)", + "tail": { + "description": "Tunjukkan entri log audit terkini", + "follow": "Ikuti entri baharu secara berterusan (tinjauan setiap 2s)", + "limit": "Bilangan maksimum entri untuk ditunjukkan (lalai: 100)" + }, + "search": { + "description": "Cari entri log audit mengikut kata kunci", + "limit": "Bilangan maksimum hasil (lalai: 200)", + "actor": "Tapis mengikut ID pelaku", + "action": "Tapis mengikut nama tindakan" + }, + "export": { + "description": "Eksport log audit ke fail", + "format": "Format output: jsonl|csv (lalai: jsonl)" + }, + "stats": { + "description": "Tunjukkan statistik log audit", + "period": "Tempoh masa: 1d|7d|30d (lalai: 7d)" + }, + "get": { + "description": "Dapatkan satu entri log audit mengikut ID" + } + }, + "skills": { + "description": "Urus kemahiran OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Senaraikan kemahiran yang dipasang", + "type": "Tapis mengikut jenis (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Tunjukkan kemahiran yang didayakan sahaja", + "disabled": "Tunjukkan kemahiran yang dilumpuhkan sahaja", + "api_key": "Tapis mengikut kunci API" + }, + "get": { + "description": "Dapatkan butiran kemahiran mengikut ID" + }, + "install": { + "description": "Pasang kemahiran daripada fail atau URL", + "from_file": "Laluan ke fail definisi JSON kemahiran", + "from_url": "URL definisi kemahiran jauh", + "type": "Jenis kemahiran (sandbox|custom|hybrid)", + "enable": "Dayakan kemahiran selepas pemasangan" + }, + "enable": { + "description": "Dayakan kemahiran mengikut ID" + }, + "disable": { + "description": "Nyahdayakan kemahiran mengikut ID", + "yes": "Langkau gesaan pengesahan" + }, + "delete": { + "description": "Padam kemahiran mengikut ID", + "yes": "Langkau gesaan pengesahan" + }, + "execute": { + "description": "Laksanakan kemahiran mengikut ID", + "input": "Objek input JSON", + "input_file": "Laluan ke fail input JSON", + "timeout": "Had masa pelaksanaan dalam ms (lalai: 30000)" + }, + "executions": { + "description": "Senaraikan sejarah pelaksanaan kemahiran", + "skill": "Tapis mengikut ID kemahiran", + "limit": "Hasil maksimum (lalai: 50)", + "status": "Tapis mengikut status (running|completed|failed)" + }, + "skillssh": { + "description": "Urus kemahiran yang dipasang melalui SSH" + }, + "marketplace": { + "description": "Semak imbas dan pasang kemahiran daripada pasaran" + }, + "mp": { + "search": { + "description": "Cari pakej pasaran", + "category": "Tapis mengikut kategori", + "tag": "Tapis mengikut tag", + "limit": "Hasil maksimum (lalai: 30)", + "sort": "Isih mengikut: downloads|rating|recent" + }, + "info": { + "description": "Tunjukkan butiran pakej dan readme" + }, + "install": { + "description": "Pasang pakej pasaran", + "version": "Versi pakej (lalai: latest)", + "enable": "Dayakan selepas pemasangan", + "yes": "Langkau gesaan pengesahan" + }, + "categories": { + "description": "Senaraikan kategori pasaran" + }, + "featured": { + "description": "Tunjukkan pakej pasaran pilihan" + } + } + }, + "memory": { + "description": "Urus memori perbualan OmniRoute (FTS5 + vector)", + "search": { + "description": "Cari entri memori menggunakan pertanyaan semantik", + "type": "Tapis mengikut jenis memori (user|feedback|project|reference)", + "limit": "Hasil maksimum (lalai: 20)", + "api_key": "Tapis mengikut kunci API", + "token_budget": "Hadkan jumlah token dalam hasil" + }, + "add": { + "description": "Tambah entri memori baharu", + "content": "Kandungan teks memori", + "file": "Baca kandungan daripada fail", + "type": "Jenis memori (lalai: user)", + "metadata": "Objek metadata JSON", + "api_key": "Kaitkan dengan kunci API" + }, + "clear": { + "description": "Padam entri memori yang sepadan dengan penapis", + "type": "Tapis mengikut jenis", + "older": "Padam entri yang lebih lama daripada tempoh (30d, 6m, 1y)", + "api_key": "Tapis mengikut kunci API", + "yes": "Langkau gesaan pengesahan" + }, + "list": { + "description": "Senaraikan entri memori tanpa pengisihan kedudukan carian", + "type": "Tapis mengikut jenis", + "limit": "Hasil maksimum (lalai: 100)", + "api_key": "Tapis mengikut kunci API" + }, + "get": { + "description": "Dapatkan satu entri memori mengikut ID" + }, + "delete": { + "description": "Padam entri memori mengikut ID", + "yes": "Langkau gesaan pengesahan" + }, + "health": { + "description": "Tunjukkan status kesihatan subsistem memori (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Urus sambungan penyedia OAuth", + "providers": { + "description": "Senaraikan penyedia yang menyokong OAuth dan jenis aliran mereka" + }, + "start": { + "description": "Mulakan aliran kebenaran OAuth untuk penyedia", + "provider": "ID penyedia (gemini, copilot, cursor, …)", + "no_browser": "Cetak URL sahaja — jangan buka pelayar", + "import_system": "Import kelayakan secara automatik daripada konfigurasi sistem setempat", + "social": "Penyedia log masuk sosial (google|github) — diperlukan untuk kiro", + "timeout": "Had masa menunggu kebenaran dalam ms (lalai: 300000)" + }, + "status": { + "description": "Senaraikan sambungan OAuth yang aktif", + "provider": "Tapis mengikut ID penyedia" + }, + "revoke": { + "description": "Batalkan sambungan OAuth", + "provider": "ID penyedia untuk dibatalkan", + "connection_id": "Batalkan sambungan tertentu mengikut ID", + "yes": "Langkau gesaan pengesahan" + } + }, + "cloud": { + "description": "Urus tugas ejen AI awan (codex, devin, jules)", + "agents": { + "description": "Senaraikan ejen awan yang tersedia" + }, + "agent": { + "description": "Urus tugas ejen awan {agent}", + "auth": { + "description": "Benarkan {agent} melalui OAuth" + } + }, + "task": { + "description": "Urus tugas ejen awan", + "create": { + "description": "Cipta tugas ejen baharu", + "title": "Tajuk tugas (lalai kepada 80 aksara pertama gesaan)", + "prompt": "Teks gesaan tugas", + "prompt_file": "Baca gesaan daripada fail", + "repo": "URL repositori untuk diklon bagi tugas", + "branch": "Nama cabang untuk digunakan", + "metadata": "Objek metadata JSON" + }, + "list": { + "description": "Senaraikan tugas ejen", + "status": "Tapis mengikut status (running|completed|failed|cancelled)", + "limit": "Hasil maksimum (lalai: 50)" + }, + "get": { + "description": "Dapatkan butiran tugas mengikut ID" + }, + "status": { + "description": "Paparkan status tugas (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Batalkan tugas yang sedang berjalan", + "yes": "Langkau gesaan pengesahan" + }, + "approve": { + "description": "Luluskan pelan ejen untuk memulakan pelaksanaan" + }, + "message": { + "description": "Hantar mesej kepada tugas yang sedang berjalan" + } + }, + "sources": { + "description": "Senaraikan fail sumber yang dihasilkan oleh tugas" + } + }, + "eval": { + "description": "Urus suite dan pelaksanaan penilaian", + "suites": { + "description": "Urus suite penilaian", + "list": { + "description": "Senaraikan suite penilaian" + }, + "get": { + "description": "Dapatkan butiran suite penilaian mengikut ID" + }, + "create": { + "description": "Cipta suite penilaian daripada fail JSON", + "file": "Laluan ke fail JSON definisi suite" + } + }, + "run": { + "description": "Mulakan pelaksanaan penilaian untuk suite", + "model": "ID model untuk dinilai (lalai: auto)", + "combo": "Paksa kombo tertentu mengikut nama", + "concurrency": "Bilangan sampel serentak (lalai: 4)", + "tag": "Tag pelaksanaan ini untuk penapisan kemudian", + "watch": "Pantau kemajuan pelaksanaan sehingga selesai" + }, + "list": { + "description": "Senaraikan pelaksanaan penilaian", + "suite": "Tapis mengikut ID suite", + "status": "Tapis mengikut status", + "since": "Kembalikan pelaksanaan sejak cap masa ini", + "limit": "Hasil maksimum (lalai: 50)" + }, + "get": { + "description": "Dapatkan butiran pelaksanaan penilaian mengikut ID" + }, + "results": { + "description": "Tunjukkan hasil sampel untuk pelaksanaan penilaian", + "failed": "Tunjukkan sampel yang gagal sahaja" + }, + "cancel": { + "description": "Batalkan penilaian yang sedang berjalan", + "yes": "Langkau gesaan pengesahan" + }, + "scorecard": { + "description": "Tunjukkan kad skor untuk pelaksanaan penilaian yang telah selesai" + } + }, + "webhooks": { + "description": "Urus webhook OmniRoute", + "events": { + "description": "Senaraikan semua jenis peristiwa webhook yang tersedia" + }, + "list": { + "description": "Senaraikan webhook yang dikonfigurasikan" + }, + "get": { + "description": "Dapatkan butiran webhook mengikut ID" + }, + "add": { + "description": "Daftarkan webhook baharu", + "url": "URL destinasi", + "events": "Senarai jenis acara yang dipisahkan dengan koma", + "secret": "Rahsia penandatanganan HMAC", + "header": "Pengepala tambahan dalam format key=value (boleh diulang)", + "no_enabled": "Cipta webhook dalam keadaan dinyahdayakan" + }, + "update": { + "description": "Kemas kini webhook sedia ada", + "enabled": "Tetapkan keadaan didayakan (true|false)" + }, + "remove": { + "description": "Padam webhook", + "yes": "Langkau gesaan pengesahan" + }, + "test": { + "description": "Hantar acara ujian kepada webhook", + "event": "Jenis acara untuk disimulasikan (lalai: request.completed)" + } + }, + "program": { + "description": "OmniRoute — Penghala AI Pintar dengan Sandaran Automatik", + "version": "Paparkan versi dan keluar", + "output": "Format output (table, json, jsonl, csv)", + "quiet": "Sembunyikan output yang tidak penting", + "no_color": "Nyahdayakan output berwarna", + "timeout": "Had masa permintaan HTTP dalam milisaat", + "api_key": "Kunci API untuk pelayan OmniRoute", + "base_url": "URL asas pelayan OmniRoute", + "context": "Konteks/profil pelayan untuk digunakan bagi perintah ini", + "lang": "Tetapkan bahasa paparan CLI (mengatasi OMNIROUTE_LANG)" + }, + "files": { + "description": "Urus fail (muat naik, senaraikan, dapatkan, muat turun, padam)", + "list": { + "purpose": "Tapis mengikut tujuan", + "limit": "Hasil maksimum" + }, + "get": { + "description": "Dapatkan metadata fail" + }, + "upload": { + "description": "Muat naik fail", + "purpose": "Tujuan fail (batch, assistants, fine-tune)" + }, + "content": { + "description": "Muat turun kandungan fail", + "out": "Simpan ke laluan (lalai: stdout)" + }, + "delete": { + "yes": "Langkau pengesahan" + } + }, + "batches": { + "description": "Urus tugas kelompok yang serasi dengan OpenAI", + "list": { + "status": "Tapis mengikut status", + "limit": "Hasil maksimum" + }, + "create": { + "description": "Cipta tugas kelompok", + "inputFile": "ID fail input", + "endpoint": "Titik akhir sasaran", + "window": "Tempoh penyiapan", + "metadata": "Tambah metadata key=value" + }, + "submit": { + "description": "Muat naik fail JSONL dan cipta kelompok", + "jsonl": "Laluan ke fail JSONL", + "endpoint": "Titik akhir sasaran", + "wait": "Tunggu sehingga selesai" + }, + "cancel": { + "yes": "Langkau pengesahan" + }, + "wait": { + "timeout": "Had masa dalam ms" + }, + "output": { + "out": "Simpan output ke laluan" + }, + "errors": { + "out": "Simpan ralat ke laluan" + } + }, + "translator": { + "description": "Terjemahkan isi permintaan antara format LLM", + "detect": { + "description": "Kesan format isi" + }, + "translate": { + "description": "Tukar isi daripada satu format kepada format yang lain" + }, + "send": { + "description": "Terjemahkan dan hantar ke huluan" + }, + "stream": { + "description": "Terjemahkan secara penstriman isi permintaan" + }, + "from": "Format sumber (openai|anthropic|gemini|cohere)", + "to": "Format sasaran (openai|anthropic|gemini|cohere)", + "file": "Laluan ke fail JSON isi permintaan", + "out": "Simpan output ke fail", + "model": "Gantikan model", + "history": { + "limit": "Hasil maksimum" + } + }, + "pricing": { + "description": "Urus data harga untuk model", + "sync": { + "description": "Segerakkan harga daripada sumber huluan", + "provider": "Tapis mengikut penyedia", + "force": "Paksa penyegerakan semula" + }, + "list": { + "provider": "Tapis mengikut penyedia", + "model": "Tapis mengikut model", + "limit": "Hasil maksimum" + }, + "defaults": { + "description": "Urus harga lalai", + "input": "Kos input bagi setiap 1J token (USD)", + "output": "Kos output bagi setiap 1J token (USD)", + "cacheRead": "Kos bacaan cache bagi setiap 1J token (USD)", + "cacheWrite": "Kos penulisan cache bagi setiap 1J token (USD)" + }, + "diff": { + "description": "Tunjukkan perbezaan daripada harga huluan", + "model": "Tapis mengikut model" + } + }, + "radar": { + "description": "Periksa dan segerakkan suapan katalog Radar setempat", + "status": "Tunjukkan tetapan Radar setempat dan status cache suapan", + "sync": "Segerakkan katalog, rujukan, tawaran dan Intel melalui pelayan setempat" + }, + "resilience": { + "description": "Periksa dan urus mekanisme daya tahan", + "status": { + "provider": "Tapis mengikut penyedia" + }, + "breakers": { + "provider": "Tapis mengikut penyedia" + }, + "cooldowns": { + "provider": "Tapis mengikut penyedia", + "connectionId": "Tapis mengikut ID sambungan" + }, + "lockouts": { + "provider": "Tapis mengikut penyedia", + "model": "Tapis mengikut model" + }, + "reset": { + "description": "Tetapkan semula keadaan pemutus/tempoh bertenang", + "provider": "Penyedia untuk ditetapkan semula", + "connectionId": "ID sambungan untuk ditetapkan semula", + "model": "Model untuk menetapkan semula sekatan", + "allCooldowns": "Tetapkan semula semua tempoh bertenang bagi penyedia", + "yes": "Langkau pengesahan" + }, + "profile": { + "description": "Urus profil daya tahan", + "name": "Nama profil" + }, + "config": { + "description": "Urus konfigurasi daya tahan", + "threshold": "Ambang kegagalan", + "resetTimeout": "Tamat masa penetapan semula dalam ms", + "baseCooldown": "Tempoh bertenang asas dalam ms" + } + }, + "nodes": { + "description": "Urus nod penyedia (titik akhir)", + "list": { + "provider": "Tapis mengikut penyedia", + "enabled": "Tunjukkan nod yang didayakan sahaja" + }, + "add": { + "provider": "Nama penyedia", + "baseUrl": "URL asas untuk nod", + "name": "Nama nod", + "weight": "Pemberat pengimbangan beban", + "region": "Tag rantau", + "authHeader": "Pengepala pengesahan tersuai (key=value)" + }, + "update": { + "baseUrl": "URL asas baharu", + "name": "Nama baharu", + "weight": "Pemberat baharu", + "region": "Rantau baharu", + "enabled": "Dayakan atau nyahdayakan (true|false)" + }, + "remove": { + "yes": "Langkau pengesahan" + }, + "validate": { + "baseUrl": "URL untuk disahkan", + "provider": "Penyedia untuk digunakan bagi pengesahan" + }, + "test": { + "description": "Hantar permintaan ujian ke nod" + }, + "metrics": { + "description": "Tunjukkan metrik nod", + "period": "Tempoh masa (cth. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurasikan saluran paip kejuruteraan konteks (Caveman, RTK)", + "analytics": { + "period": "Tempoh masa (cth. 7d, 30d)" + }, + "caveman": { + "description": "Urus pemampat konteks Caveman", + "config": { + "description": "Tunjukkan atau kemas kini konfigurasi Caveman", + "aggressiveness": "Tahap keagresifan 0.0–1.0", + "maxShrinkPct": "Peratusan pengecilan maksimum", + "preserveTags": "Tag dipisahkan koma untuk dikekalkan" + } + }, + "rtk": { + "description": "Urus pengoptimum konteks RTK", + "config": { + "description": "Tunjukkan atau kemas kini konfigurasi RTK", + "tokenBudget": "Bajet token untuk RTK", + "reservePct": "Peratusan rizab" + }, + "filters": { + "description": "Urus penapis RTK", + "pattern": "Corak penapis (regex)", + "priority": "Keutamaan penapis (lalai: 100)", + "action": "Tindakan penapis: drop|shrink|replace", + "yes": "Langkau pengesahan" + }, + "test": { + "file": "Laluan ke fail JSON permintaan" + } + }, + "combos": { + "description": "Pengurusan kombo peka konteks" + } + }, + "sessions": { + "description": "Periksa dan urus sesi aktif", + "list": { + "user": "Tapis mengikut pengguna", + "kind": "Tapis mengikut jenis (dashboard|api-key|mcp|a2a)", + "active": "Tunjukkan sesi aktif sahaja", + "limit": "Hasil maksimum (lalai: 100)" + }, + "expire": { + "yes": "Langkau pengesahan" + }, + "expireAll": { + "user": "Pengguna yang sesinya akan ditamatkan", + "yes": "Langkau pengesahan" + } + }, + "tags": { + "description": "Urus tag sumber", + "add": { + "color": "Warna tag (hex atau nama)", + "description": "Perihalan tag" + }, + "remove": { + "yes": "Langkau pengesahan" + }, + "assign": { + "tag": "Nama tag", + "to": "Sumber sasaran dalam format type:id (cth. provider:openai)" + }, + "unassign": { + "tag": "Nama tag", + "from": "Sumber asal dalam format type:id" + } + }, + "openapi": { + "description": "Akses dan uji spesifikasi OpenAPI OmniRoute", + "dump": { + "description": "Eksport spesifikasi OpenAPI ke stdout atau fail", + "format": "Format output: yaml|json (lalai: yaml)", + "out": "Simpan ke laluan fail" + }, + "validate": { + "description": "Sahkan spesifikasi OpenAPI" + }, + "try": { + "description": "Uji titik akhir API melalui spesifikasi", + "method": "Kaedah HTTP (lalai: GET)", + "body": "Laluan ke fail JSON isi permintaan", + "query": "Parameter pertanyaan dalam format key=value (boleh diulang)", + "header": "Pengepala dalam format key=value (boleh diulang)" + }, + "endpoints": { + "description": "Senaraikan semua titik akhir API", + "search": "Tapis mengikut laluan atau ringkasan" + }, + "paths": { + "description": "Senaraikan semua laluan API" + } + }, + "combo": { + "title": "Kombo", + "switched": "Gabungan aktif: {name}", + "created": "Gabungan dicipta: {name}", + "deleted": "Gabungan dipadamkan: {name}", + "noCombos": "Tiada gabungan dikonfigurasikan.", + "confirmDelete": "Padamkan gabungan {name}?", + "suggest": { + "description": "Cadangkan gabungan terbaik untuk sesuatu tugas menggunakan pemarkahan AI", + "task": "Penerangan tugas", + "maxCost": "Kos maksimum bagi setiap permintaan dalam USD", + "maxLatencyMs": "Kependaman maksimum dalam milisaat", + "weights": "Pemberat pemarkahan JSON, cth. {\"latency\":0.7,\"cost\":0.3}", + "top": "Bilangan calon teratas untuk dipaparkan (lalai: 5)", + "explain": "Cetak rasional ke stderr", + "switch": "Aktifkan gabungan dengan kedudukan tertinggi" + } + }, + "oneproxy": { + "description": "Urus kumpulan huluan OneProxy", + "stats": { + "provider": "Tapis mengikut penyedia", + "period": "Tempoh masa (lalai: 24h)" + }, + "fetch": { + "description": "Dapatkan proksi daripada kumpulan", + "count": "Bilangan proksi untuk didapatkan (lalai: 1)", + "type": "Jenis proksi: http|socks5 (lalai: http)" + }, + "rotate": { + "description": "Paksa penggiliran proksi", + "provider": "Penyedia untuk digilirkan", + "connectionId": "ID sambungan khusus untuk digilirkan" + }, + "config": { + "description": "Tunjukkan atau kemas kini konfigurasi OneProxy", + "enabled": "Dayakan kumpulan proksi (true|false)", + "poolSize": "Saiz kumpulan", + "providerSource": "URL untuk penyedia proksi", + "rotationPolicy": "Dasar penggiliran: sticky|per-request|periodic" + }, + "pool": { + "description": "Senaraikan kumpulan proksi semasa berserta metrik" + } + }, + "open": { + "description": "Buka halaman papan pemuka OmniRoute tertentu dalam pelayar", + "url": "Cetak URL sahaja, jangan buka pelayar" + }, + "telemetry": { + "description": "Akses data telemetri teragregat", + "summary": { + "description": "Tunjukkan ringkasan telemetri teragregat", + "period": "Tempoh masa: 24h|7d|30d (lalai: 24h)", + "compareTo": "Bandingkan dengan tempoh sebelumnya" + }, + "export": { + "description": "Eksport peristiwa telemetri ke JSONL", + "out": "Laluan fail output (lalai: telemetry.jsonl)", + "period": "Tempoh masa untuk eksport (lalai: 7d)" + } + }, + "sync": { + "description": "Segerakkan konfigurasi antara tika OmniRoute", + "push": { + "description": "Tolak konfigurasi ke awan atau tika jauh", + "target": "Sasaran (cloud atau context:name)", + "bundle": "Bahagian pakej untuk disegerakkan", + "dryRun": "Pratonton tanpa menggunakan perubahan" + }, + "pull": { + "description": "Tarik konfigurasi daripada awan atau jauh", + "source": "Sumber (awan atau context:name)", + "merge": "Gabungkan dengan konfigurasi sedia ada", + "replace": "Gantikan konfigurasi sedia ada", + "dryRun": "Pratonton tanpa menggunakan perubahan" + }, + "diff": { + "source": "Konteks sumber", + "target": "Konteks sasaran" + }, + "bundle": { + "description": "Eksport konfigurasi sebagai fail pakej", + "include": "Bahagian untuk disertakan (dipisahkan dengan koma)" + }, + "import": { + "description": "Import fail pakej", + "dryRun": "Sahkan tanpa menggunakan perubahan" + }, + "initialize": { + "fromCloud": "Mulakan daripada sandaran awan" + }, + "tokens": { + "description": "Urus token penyegerakan", + "create": { + "name": "Nama token", + "scope": "Skop token", + "ttl": "TTL token (cth. 30d)" + }, + "revoke": { + "yes": "Langkau pengesahan" + } + }, + "resolve": { + "description": "Selesaikan konflik penyegerakan secara interaktif" + } + }, + "config": { + "contexts": { + "description": "Urus konteks/profil pelayan (tambah, guna, senarai, papar, alih keluar, namakan semula, eksport, import)" + }, + "lang": { + "description": "Urus bahasa paparan CLI", + "getDescription": "Papar kod bahasa yang sedang aktif", + "setDescription": "Tetapkan bahasa paparan dan simpannya dalam konfigurasi", + "listDescription": "Senaraikan semua bahasa yang tersedia", + "listTitle": "Bahasa Tersedia", + "current": "Bahasa: {code} ({name})", + "saved": "Bahasa ditetapkan kepada {code} ({name}).", + "noCode": "Kod bahasa diperlukan. Jalankan 'omniroute config lang list' untuk melihat kod yang tersedia.", + "unknown": "Kod bahasa tidak diketahui: {code}. Jalankan 'omniroute config lang list' untuk melihat kod yang tersedia.", + "alreadySet": "Bahasa telah pun ditetapkan kepada {code}.", + "envHint": "Petua: anda juga boleh menetapkan OMNIROUTE_LANG={code} dalam persekitaran anda." + } + }, + "completion": { + "description": "Jana atau pasang skrip pelengkapan shell", + "zsh": "Cetak skrip pelengkapan zsh", + "bash": "Cetak skrip pelengkapan bash", + "fish": "Cetak skrip pelengkapan fish", + "install": "Pasang skrip pelengkapan secara global untuk shell yang dikesan", + "refresh": "Segarkan semula cache gabungan/penyedia/model" + }, + "logs": { + "description": "Strim atau eksport log permintaan", + "follow": "Strim log dalam masa nyata", + "filter": "Tapis mengikut tahap (error,warn,info) — dipisahkan dengan koma", + "lines": "Bilangan baris untuk diambil", + "timeout": "Tamat masa sambungan dalam ms", + "baseUrl": "URL asas API OmniRoute", + "requestId": "Tapis mengikut ID permintaan", + "apiKey": "Tapis mengikut kunci API", + "combo": "Tapis mengikut nama kombo", + "status": "Tapis mengikut kod status HTTP", + "durationMin": "Tempoh minimum permintaan dalam ms", + "durationMax": "Tempoh maksimum permintaan dalam ms", + "export": "Simpan log ke fail (json/jsonl/csv)", + "exported": "Log disimpan ke {path}", + "stopped": "Strim log dihentikan.", + "streamError": "Ralat strim log: {message}" + }, + "tray": { + "description": "Kawal ikon dulang sistem", + "show": "Tunjukkan ikon dulang (jika pelayan sedang berjalan dengan --tray)", + "hide": "Sembunyikan ikon dulang", + "quit": "Keluar daripada OmniRoute melalui dulang" + }, + "autostart": { + "description": "Urus mula automatik OmniRoute semasa but (Linux: perkhidmatan pengguna systemd)", + "enable": "Dayakan mula automatik semasa but", + "disable": "Lumpuhkan mula automatik semasa but", + "toggle": "Togol mula automatik semasa but", + "status": "Tunjukkan status mula automatik" + }, + "runtime": { + "description": "Urus kebergantungan masa jalan natif", + "check": "Semak status kebergantungan natif dalam direktori masa jalan", + "repair": "Pasang semula kebergantungan natif dalam direktori masa jalan", + "repair_force": "Paksa pemasangan semula walaupun sah", + "clean": "Alih keluar direktori masa jalan (mengosongkan ruang cakera)", + "clean_yes": "Langkau pengesahan" + }, + "repl": { + "description": "REPL berbilang giliran interaktif dengan LLM", + "model": "Model untuk digunakan (lalai: auto)", + "combo": "Nama kombo untuk digunakan", + "system": "Gesaan sistem", + "resume": "Sambung semula sesi tersimpan mengikut nama" + }, + "plugin": { + "description": "Urus pemalam CLI (omniroute-cmd-*)", + "list": "Senaraikan pemalam yang dipasang", + "install": "Pasang pemalam daripada npm atau laluan setempat", + "remove": "Alih keluar pemalam yang dipasang", + "info": "Tunjukkan butiran pemalam yang dipasang", + "search": "Cari pendaftaran npm untuk pemalam yang tersedia", + "update": "Kemas kini pemalam yang dipasang", + "scaffold": "Jana rangka asas pemalam baharu" + }, + "launch": { + "description": "Lancarkan Claude Code yang diarahkan ke OmniRoute (setempat atau jauh, dengan --profile)", + "token": "Token yang perlu dihantar oleh klien Claude (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute tidak dapat dicapai pada {port}. Mulakannya dengan 'omniroute serve'.", + "notFound": "CLI 'claude' tidak ditemukan dalam PATH." + }, + "run": { + "description": "Lancarkan sasaran CLI yang disokong melalui OmniRoute" + }, + "setupClaude": { + "description": "Jana profil Claude Code ~/.claude/profiles daripada katalog model OmniRoute" + }, + "connect": { + "description": "Sambung ke pelayan OmniRoute jauh dan masuk ke mod jauh" + }, + "tokens": { + "description": "Urus token akses CLI berskop (mod jauh)" + }, + "configure": { + "description": "Pilih penyedia+model daripada pelayan aktif dan konfigurasikan CLI setempat yang disokong" + }, + "launchCodex": { + "description": "Lancarkan Codex CLI yang diarahkan ke OmniRoute (VPS setempat atau jauh)" + }, + "setupCodex": { + "description": "Jana fail profil ~/.codex daripada katalog model langsung OmniRoute" + }, + "packs": { + "description": "Urus pek masa jalan pilihan (ML / automasi pelayar)", + "listDescription": "Senaraikan pek pilihan dan status pemasangannya", + "installDescription": "Pasang pek pilihan ke dalam DATA_DIR", + "verifyDescription": "Sahkan pek yang dipasang berdasarkan indeks jumlah semak yang disertakan", + "removeDescription": "Alih keluar pek pilihan yang dipasang", + "sourceOpt": "Direktori yang mengandungi muatan pek dan indeks pek", + "warnNoIndex": "optional-packs.index.json tidak ditemukan — pemasangan/pengesahan tidak tersedia dalam salinan kod ini (berkas desktop menyertakannya)", + "errUnknown": "pek tidak diketahui: {name}", + "errNoIndex": "indeks pek tidak ditemukan; berikan --source yang mengandungi muatan pek (berkas desktop menyertakannya bersebelahan dengan aplikasi)", + "installed": "pek \"{name}\" dipasang dan disahkan di {dir}", + "restartHint": "mulakan semula pelayan OmniRoute (atau aplikasi desktop) supaya masa jalan mengesan pek tersebut", + "removed": "pek \"{name}\" dialih keluar", + "notInstalled": "pek \"{name}\" tidak dipasang", + "verifyOk": "semua pek yang dipasang telah disahkan", + "verifyFailed": "{count} pek gagal disahkan", + "noneInstalled": "tiada pek pilihan dipasang" } } diff --git a/bin/cli/locales/mt.json b/bin/cli/locales/mt.json index e03907dacd..0dfa9e27cb 100644 --- a/bin/cli/locales/mt.json +++ b/bin/cli/locales/mt.json @@ -256,6 +256,7 @@ "max_restarts": "L-ogħla numru ta' restarts wara crash fi żmien 30s qabel ma jċedi (default: 2)", "tray": "Bda' fil-caffettar tal-pajjiż (biss desktop, għażla)", "no_tray": "Iddiżattiva l-ikona tal-caffettar tal-pajjiż", + "ready_timeout": "Limitu taż-żmien tal-verifika tat-tħejjija f'ms (ukoll OMNIROUTE_READY_TIMEOUT_MS, valur predefinit 60000)", "tls_cert": "Triq għal ċertifikat TLS (PEM) biex isservi HTTPS (ukoll OMNIROUTE_TLS_CERT)", "tls_key": "Triq għas-sieqa privata tal-TLS (PEM) biex isservi HTTPS (ukoll OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Servier MCP qed jaħdem ({transport})", "stopped": "Servier MCP waqaf.", "restarted": "Servier MCP restartat.", + "stoppedHint": "Ħaddem `omniroute mcp enable` biex tattivah.", + "enabled": "Is-server MCP huwa attivat.", + "disabled": "Is-server MCP huwa diżattivat.", + "enable": { + "description": "Attiva s-server MCP", + "transport": "Trasport li għandu jintuża: stdio|sse|streamable-http" + }, + "disable": { + "description": "Iddiżattiva s-server MCP" + }, "call": { "description": "Sejjaħ għodda MCP direttament", "args": "Oġġett argomenti JSON (internament)", diff --git a/bin/cli/locales/my.json b/bin/cli/locales/my.json index 0540f3ad4c..7b78ef0199 100644 --- a/bin/cli/locales/my.json +++ b/bin/cli/locales/my.json @@ -26,7 +26,7 @@ "testFailed": "Provider စမ်းသပ်မှု မအောင်မြင်ပါ: {error}", "loginEnabled": "လော့ဂ်အင်: ဖွင့်ထားသည် (စကားဝှက်ကို အပ်ဒိတ်လုပ်ပြီး)", "loginDisabled": "လော့ဂ်အင်: ပိတ်ထားသည်", - "providerInfo": "Provider: {info}", + "providerInfo": "ပံ့ပိုးသူ: {info}", "opencode": "OpenCode အတွက် တွဲဖက်ပါရှိသော @omniroute/opencode-plugin ကို ထည့်သွင်းပြီး စီစဉ်သတ်မှတ်ရန်" }, "doctor": { @@ -41,7 +41,7 @@ "warnings": "သတိပေးချက် {count} ခု — အပေါ်တွင် ကြည့်ပါ။" }, "providers": { - "title": "Providers", + "title": "ပံ့ပိုးသူများ", "noProviders": "မည်သည့် provider ကိုမျှ စီစဉ်သတ်မှတ်မထားပါ။ လုပ်ဆောင်ရန်: omniroute setup", "testing": "{name} ကို စမ်းသပ်နေသည်...", "available": "အသုံးပြုနိုင်သော provider {count} ခု", @@ -86,7 +86,7 @@ } }, "keys": { - "title": "API Keys", + "title": "API သော့များ", "addDescription": "ဝန်ဆောင်မှုပေးသူတစ်ခုအတွက် API key ကို ထည့်ရန် သို့မဟုတ် အပ်ဒိတ်လုပ်ရန်", "listDescription": "ပြင်ဆင်သတ်မှတ်ထားသော API key အားလုံးကို စာရင်းပြုစုရန်", "removeDescription": "ဝန်ဆောင်မှုပေးသူတစ်ခုအတွက် API key ကို ဖယ်ရှားရန်", @@ -152,7 +152,7 @@ "file": "ဖိုင်မှ prompt ကို ဖတ်ပါ", "stdin": "stdin မှ prompt ကို ဖတ်ပါ", "model": "Model ID (မူလသတ်မှတ်ချက်: auto)", - "system": "System prompt", + "system": "စနစ်ညွှန်ကြားချက်", "combo": "သတ်မှတ်ထားသော combo တစ်ခုကို အမည်ဖြင့် မဖြစ်မနေ အသုံးပြုပါ", "max_tokens": "Response အတွင်း အများဆုံး token အရေအတွက်", "responses_api": "/v1/chat/completions အစား /v1/responses ကို အသုံးပြုပါ", @@ -226,7 +226,7 @@ "description": "OmniRoute သို့ တစ်ကြိမ်တည်းသုံး chat prompt ပို့ရန်", "file": "ဖိုင်မှ prompt ကို ဖတ်ရန်", "stdin": "stdin မှ prompt ကို ဖတ်ရန်", - "system": "System prompt", + "system": "စနစ်ညွှန်ကြားချက်", "model": "Model ID (မူလသတ်မှတ်ချက်: auto)", "max_tokens": "တုံ့ပြန်ချက်တွင် ပါဝင်မည့် token အရေအတွက် အများဆုံး", "temperature": "နမူနာရွေးချယ်မှု temperature (0–2)", @@ -256,6 +256,7 @@ "max_restarts": "လက်လျှော့မတိုင်မီ 30s အတွင်း ပျက်သွား၍ ပြန်လည်စတင်နိုင်သည့် အများဆုံးအကြိမ်ရေ (မူလသတ်မှတ်ချက်: 2)", "tray": "စနစ် tray တွင် စတင်ပါ (desktop အတွက်သာ၊ ရွေးချယ်ဖွင့်သုံးရန်)", "no_tray": "စနစ် tray အိုင်ကွန်ကို ပိတ်ပါ", + "ready_timeout": "အဆင်သင့်ဖြစ်မှု စစ်ဆေးချက်၏ အချိန်ကုန်ဆုံးကာလကို ms ဖြင့် သတ်မှတ်ပါ (OMNIROUTE_READY_TIMEOUT_MS လည်းဖြစ်ပြီး မူလတန်ဖိုးမှာ 60000 ဖြစ်သည်)", "tls_cert": "HTTPS ဖြင့် ဝန်ဆောင်မှုပေးရန် TLS certificate (PEM) သို့ လမ်းကြောင်း (OMNIROUTE_TLS_CERT လည်းဖြစ်သည်)", "tls_key": "HTTPS ဖြင့် ဝန်ဆောင်မှုပေးရန် TLS private key (PEM) သို့ လမ်းကြောင်း (OMNIROUTE_TLS_KEY လည်းဖြစ်သည်)" }, @@ -347,6 +348,16 @@ "running": "MCP ဆာဗာ လည်ပတ်နေသည် ({transport})", "stopped": "MCP ဆာဗာ ရပ်တန့်သွားပါပြီ။", "restarted": "MCP ဆာဗာကို ပြန်လည်စတင်ပြီးပါပြီ။", + "stoppedHint": "၎င်းကို ဖွင့်ရန် `omniroute mcp enable` ကို လုပ်ဆောင်ပါ။", + "enabled": "MCP ဆာဗာကို ဖွင့်ထားသည်။", + "disabled": "MCP ဆာဗာကို ပိတ်ထားသည်။", + "enable": { + "description": "MCP ဆာဗာကို ဖွင့်ရန်", + "transport": "အသုံးပြုမည့် ပို့ဆောင်မှုနည်းလမ်း: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP ဆာဗာကို ပိတ်ရန်" + }, "call": { "description": "MCP ကိရိယာတစ်ခုကို တိုက်ရိုက် ခေါ်ယူအသုံးပြုရန်", "args": "JSON အငြင်းပွားဖွယ်ရာ အရာဝတ္ထု (စာကြောင်းအတွင်း)", @@ -633,7 +644,7 @@ "content": "Memory စာသားအကြောင်းအရာ", "file": "ဖိုင်မှ အကြောင်းအရာကို ဖတ်ရန်", "type": "Memory အမျိုးအစား (မူလသတ်မှတ်ချက်: user)", - "metadata": "JSON metadata object", + "metadata": "JSON မက်တာဒေတာ အရာဝတ္ထု", "api_key": "API key နှင့် ချိတ်ဆက်ရန်" }, "clear": { @@ -667,7 +678,7 @@ }, "start": { "description": "provider တစ်ခုအတွက် OAuth ခွင့်ပြုချက် flow ကို စတင်ရန်", - "provider": "Provider ID (gemini, copilot, cursor, …)", + "provider": "ပံ့ပိုးသူ ID (gemini, copilot, cursor, …)", "no_browser": "URL ကိုသာ ဖော်ပြရန် — browser ကို မဖွင့်ပါနှင့်", "import_system": "စက်တွင်း system config မှ အထောက်အထားများကို အလိုအလျောက် ထည့်သွင်းရန်", "social": "Social login provider (google|github) — kiro အတွက် လိုအပ်သည်", @@ -704,7 +715,7 @@ "prompt_file": "ဖိုင်မှ prompt ကို ဖတ်ရန်", "repo": "လုပ်ဆောင်စရာအတွက် clone ပြုလုပ်မည့် repository URL", "branch": "အသုံးပြုမည့် branch အမည်", - "metadata": "JSON metadata object" + "metadata": "JSON မက်တာဒေတာ အရာဝတ္ထု" }, "list": { "description": "agent လုပ်ဆောင်စရာများကို စာရင်းပြုရန်", @@ -1268,7 +1279,7 @@ "description": "LLM ဖြင့် အပြန်အလှန် ဆွေးနွေးမှုအကြိမ်များစွာ ပြုလုပ်နိုင်သော REPL", "model": "အသုံးပြုမည့် မော်ဒယ် (ပုံသေ- auto)", "combo": "အသုံးပြုမည့် Combo အမည်", - "system": "System prompt", + "system": "စနစ်ညွှန်ကြားချက်", "resume": "သိမ်းဆည်းထားသော session ကို အမည်ဖြင့် ပြန်လည်စတင်ရန်" }, "plugin": { diff --git a/bin/cli/locales/ne.json b/bin/cli/locales/ne.json index 8e41f9fa02..b69359633f 100644 --- a/bin/cli/locales/ne.json +++ b/bin/cli/locales/ne.json @@ -226,11 +226,11 @@ "description": "OmniRoute मा एकपटकको chat prompt पठाउनुहोस्", "file": "file बाट prompt पढ्नुहोस्", "stdin": "stdin बाट prompt पढ्नुहोस्", - "system": "System prompt", + "system": "प्रणाली प्रम्प्ट", "model": "Model ID (पूर्वनिर्धारित: auto)", "max_tokens": "response मा अधिकतम tokens", "temperature": "sampling temperature (0–2)", - "top_p": "Top-p nucleus sampling", + "top_p": "Top-p न्युक्लियस नमुना चयन", "reasoning_effort": "तर्क प्रयासको स्तर (low|medium|high)", "thinking_budget": "विस्तारित सोचाइको token बजेट", "combo": "नामद्वारा कुनै विशिष्ट combo प्रयोग गर्न बाध्य पार्नुहोस्", @@ -256,6 +256,7 @@ "max_restarts": "प्रयास छोड्नुअघि 30s भित्र क्र्यासपछि पुनः सुरु गर्ने अधिकतम सङ्ख्या (पूर्वनिर्धारित: 2)", "tray": "सिस्टम ट्रेमा सुरु गर्नुहोस् (डेस्कटपमा मात्र, स्वैच्छिक)", "no_tray": "सिस्टम ट्रे आइकन असक्षम गर्नुहोस्", + "ready_timeout": "मिलिसेकेन्डमा तत्परता प्रोबको समयसीमा (OMNIROUTE_READY_TIMEOUT_MS पनि, पूर्वनिर्धारित 60000)", "tls_cert": "HTTPS सेवा दिन TLS प्रमाणपत्र (PEM) को पथ (OMNIROUTE_TLS_CERT पनि)", "tls_key": "HTTPS सेवा दिन TLS निजी कुञ्जी (PEM) को पथ (OMNIROUTE_TLS_KEY पनि)" }, @@ -347,6 +348,16 @@ "running": "MCP सर्भर चलिरहेको छ ({transport})", "stopped": "MCP सर्भर रोकियो।", "restarted": "MCP सर्भर पुनः सुरु गरियो।", + "stoppedHint": "यसलाई सक्रिय गर्न `omniroute mcp enable` चलाउनुहोस्।", + "enabled": "MCP सर्भर सक्रिय गरियो।", + "disabled": "MCP सर्भर निष्क्रिय गरियो।", + "enable": { + "description": "MCP सर्भर सक्रिय गर्नुहोस्", + "transport": "प्रयोग गर्ने ट्रान्सपोर्ट: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP सर्भर निष्क्रिय गर्नुहोस्" + }, "call": { "description": "MCP उपकरणलाई सिधै आह्वान गर्नुहोस्", "args": "JSON आर्गुमेन्ट अब्जेक्ट (इनलाइन)", diff --git a/bin/cli/locales/nl.json b/bin/cli/locales/nl.json index 13ac1fb601..1fbb3a92b3 100644 --- a/bin/cli/locales/nl.json +++ b/bin/cli/locales/nl.json @@ -14,6 +14,812 @@ "jsonOpt": "Uitvoer als JSON", "yesOpt": "Bevestiging overslaan" }, + "setup": { + "title": "OmniRoute-installatie", + "passwordPrompt": "Beheerderswachtwoord", + "providerPrompt": "Standaardprovider (laat leeg om over te slaan)", + "done": "Installatie voltooid", + "passwordSet": "Beheerderswachtwoord geconfigureerd", + "providerSet": "Provider geconfigureerd: {name}", + "testingProvider": "Providerverbinding testen: {name}", + "testPassed": "Providertest geslaagd", + "testFailed": "Providertest mislukt: {error}", + "loginEnabled": "Inloggen: ingeschakeld (wachtwoord bijgewerkt)", + "loginDisabled": "Inloggen: uitgeschakeld", + "providerInfo": "Provider: {info}", + "opencode": "Installeer en configureer de meegeleverde @omniroute/opencode-plugin voor OpenCode" + }, + "doctor": { + "title": "OmniRoute-diagnose", + "dbOk": "Database: OK ({path})", + "dbMissing": "Database: niet geïnitialiseerd — voer `omniroute setup` uit", + "portOk": "Poort {port}: beschikbaar", + "portConflict": "Poort {port}: in gebruik door een ander proces", + "encryptionOk": "Encryptiesleutel: geconfigureerd", + "encryptionMissing": "Encryptiesleutel ontbreekt — voer `omniroute setup` uit", + "allGood": "Alle controles geslaagd.", + "warnings": "{count} waarschuwing(en) — zie hierboven." + }, + "providers": { + "title": "Providers", + "noProviders": "Geen providers geconfigureerd. Voer uit: omniroute setup", + "testing": "{name} testen...", + "available": "{count} provider(s) beschikbaar", + "connected": "Verbonden", + "disconnected": "Niet verbonden", + "validationFailed": "Validatie mislukt: {error}", + "metrics": { + "description": "Prestatiestatistieken van providers weergeven (latentie, succespercentage, kosten)", + "provider": "Filteren op provider-ID", + "connection_id": "Filteren op verbindings-ID", + "period": "Tijdsperiode: 1h|6h|24h|7d|30d (standaard: 24h)", + "metric": "Focussen op een specifiek statistiekveld", + "sort": "Sorteren op veld (aflopend)", + "limit": "Maximumaantal rijen (standaard: 50)", + "watch": "Elke 5 s vernieuwen (livemodus)", + "compare": "Door komma's gescheiden provider-ID's om naast elkaar te vergelijken" + }, + "metric_single": { + "description": "Eén statistiekwaarde voor een specifieke verbinding ophalen" + }, + "rotate": { + "description": "De upstream-API-sleutel voor een providerverbinding roteren", + "newKeyOpt": "Nieuwe API-sleutelwaarde (vermijd dit; gebruik bij voorkeur --from-env)", + "fromEnvOpt": "Lees de nieuwe sleutel uit omgevingsvariabele VAR", + "oauthOpt": "Start in plaats daarvan de OAuth-herauthenticatiestroom", + "skipTestOpt": "Sla de verbindingstest na rotatie over", + "dryRunOpt": "Toon wat er zou veranderen zonder wijzigingen op te slaan", + "confirmPrompt": "API-sleutel voor verbinding \"{name}\" ({id}) vervangen? [y/N]", + "dryRunResult": "[dry-run] Sleutel voor \"{name}\" ({id}) zou worden geroteerd. Er zijn geen wijzigingen aangebracht.", + "oauthHint": "OAuth-verbinding — voer uit: omniroute oauth {provider}", + "envVarEmpty": "Omgevingsvariabele {var} is niet ingesteld of is leeg.", + "success": "Sleutel voor \"{name}\" geroteerd. Voer `providers test {id}` uit om dit te verifiëren.", + "testPassed": "Test na rotatie geslaagd.", + "testFailed": "Test na rotatie mislukt: {error}" + }, + "status": { + "description": "Toon de sleutelstatus voor alle providerverbindingen (leeftijd, vervaldatum, afkoelperiode)", + "providerOpt": "Filteren op providernaam", + "header": "ID Provider Naam Vervaldatum Status Teststatus Afkoelperiode tot", + "noData": "Geen gegevens over providerverbindingen beschikbaar.", + "requiresServer": "Voor providers status moet de OmniRoute-server actief zijn." + } + }, + "keys": { + "title": "API-sleutels", + "addDescription": "Een API-sleutel voor een provider toevoegen of bijwerken", + "listDescription": "Alle geconfigureerde API-sleutels weergeven", + "removeDescription": "Een API-sleutel voor een provider verwijderen", + "regenerateDescription": "Een OmniRoute-API-sleutel opnieuw genereren", + "revokeDescription": "Een OmniRoute-API-sleutel intrekken", + "revealDescription": "De ongemaskeerde waarde van de API-sleutel weergeven", + "usageDescription": "Recent gebruik van een API-sleutel weergeven", + "usageLimitOpt": "Aantal recente verzoeken", + "rotateDescription": "Een nieuwe sleutel genereren en de oude ongeldig maken", + "graceOpt": "Respijtperiode (ms) voordat de oude sleutel ongeldig wordt gemaakt", + "stdinOpt": "API-sleutel uit stdin lezen in plaats van uit het argument", + "added": "Sleutel toegevoegd voor {provider}.", + "removed": "Sleutel verwijderd.", + "listed": "{count} sleutel(s).", + "noKeys": "Geen sleutels geconfigureerd.", + "noUsage": "Geen gebruiksgegevens gevonden.", + "confirmRemove": "Sleutel {id} verwijderen?", + "confirmRegenerate": "Sleutel {id} opnieuw genereren?", + "confirmRevoke": "Sleutel {id} intrekken?", + "confirmRotate": "Sleutel {id} roteren? (de oude sleutel wordt na de respijtperiode ongeldig gemaakt)", + "regenerated": "Opnieuw gegenereerd. Nieuwe sleutel: {key}", + "revoked": "Sleutel {id} ingetrokken.", + "rotated": "Sleutel {id} geroteerd. Nieuwe sleutel-ID: {newId}", + "revealWarning": "⚠ Hiermee wordt de volledige, niet-gemaskeerde sleutel weergegeven. Zorg dat niemand op uw scherm kan meekijken.", + "providerRequired": "Provider is vereist.", + "keyRequired": "API-sleutel is vereist.", + "stdinEmpty": "Geen API-sleutel via stdin opgegeven.", + "unknownProvider": "Onbekende provider: {provider}", + "policy": { + "title": "Sleutelbeleid", + "showDescription": "Beleid voor limieten/kosten van een sleutel weergeven", + "setDescription": "Beleid voor limieten/kosten van een sleutel instellen", + "rateLimitOpt": "Maximaal aantal aanvragen per minuut", + "maxCostOpt": "Maximale kosten per dag (USD)", + "allowedModelsOpt": "Door komma's gescheiden lijst met toegestane modellen", + "nothingToSet": "Geen beleidsvelden opgegeven. Gebruik --rate-limit, --max-cost of --allowed-models.", + "updated": "Beleid bijgewerkt." + }, + "expiration": { + "title": "Vervaldatum van sleutel", + "listDescription": "Binnenkort verlopende sleutels weergeven", + "daysOpt": "Sleutels weergeven die binnen N dagen verlopen", + "none": "Geen sleutels die binnen {days} dagen verlopen.", + "listTitle": "Sleutels die binnen {days} dagen verlopen:" + } + }, + "authExport": { + "description": "ONTSLEUTELDE providerreferenties exporteren (alleen lokaal, uitvoer als platte tekst)", + "idOpt": "Alleen de verbinding exporteren die overeenkomt met deze id/naam/provider", + "formatOpt": "Uitvoerformaat: json of env", + "outOpt": "Uitvoer naar een bestand schrijven in plaats van stdout (geschreven met 0600-machtigingen)", + "forceOpt": "Bevestigen dat u begrijpt dat hiermee geheimen als platte tekst worden weergegeven/geschreven", + "warning": "⚠ Hiermee worden ONTSLEUTELDE API-sleutels en OAuth-tokens als platte tekst weergegeven/geschreven. Zorg ervoor dat uw scherm, shellgeschiedenis en eventuele uitvoerbestanden privé blijven.", + "confirmHeading": "⚠ WAARSCHUWING: hiermee worden ONTSLEUTELDE providerreferenties als platte tekst geëxporteerd", + "confirmBody": "Deze opdracht ontsleutelt apiKey, accessToken, refreshToken en\nidToken voor de geselecteerde verbinding(en) en geeft deze weer of schrijft ze weg. Behandel de uitvoer als een geheim.", + "confirmFooter": "Voer ter bevestiging het volgende uit:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY is vereist om referenties te exporteren.", + "notFound": "Verbinding niet gevonden: {id}", + "invalidFormat": "Ongeldig formaat: {format}. Gebruik json of env." + }, + "stream": { + "description": "Een chatreactie streamen met SSE-inspectiemodi", + "file": "Prompt uit bestand lezen", + "stdin": "Prompt uit stdin lezen", + "model": "Model-ID (standaard: auto)", + "system": "Systeemprompt", + "combo": "Een specifieke combinatie op naam afdwingen", + "max_tokens": "Maximaal aantal tokens in reactie", + "responses_api": "/v1/responses gebruiken in plaats van /v1/chat/completions", + "raw": "Onbewerkte SSE-regels afdrukken zoals ontvangen", + "debug": "Timinginformatie per chunk naar stderr schrijven", + "save": "Alle SSE-gebeurtenissen opslaan in een .jsonl-bestand", + "error": { + "empty_prompt": "Fout: prompt is vereist (positioneel argument, --file of --stdin)" + } + }, + "usage": { + "description": "Gebruiksanalyses, budgetten, quota en logboeken", + "analytics": { + "description": "Geaggregeerde gebruiksanalyses weergeven", + "period": "Tijdsbereik: 1d|7d|30d|90d|ytd|all (standaard: 30d)", + "provider": "Filteren op provider-ID" + }, + "budget": { + "description": "Kostenbudgetten beheren", + "set": { + "scope": "Budgetbereik (standaard: global)", + "period": "Budgetperiode: daily|weekly|monthly (standaard: monthly)" + } + }, + "quota": { + "description": "Quotagebruik van provider weergeven", + "provider": "Filteren op provider-ID", + "check": "Weergeven of quota beschikbaar is voor een nieuwe aanvraag" + }, + "logs": { + "description": "Logboeken van aanvraagaanroepen weergeven", + "limit": "Aantal te retourneren logboekvermeldingen (standaard: 100)", + "search": "Zoekopdracht om logboeken te filteren", + "since": "Logboeken vanaf dit tijdstempel retourneren", + "follow": "Nieuwe logboekvermeldingen continu volgen", + "api_key": "Logboeken filteren op API-sleutel" + }, + "utilization": { + "description": "Gebruiksstatistieken van API-sleutels weergeven", + "api_key": "Filteren op API-sleutel" + }, + "history": { + "description": "Aanvraaggeschiedenis weergeven", + "limit": "Aantal geschiedenisvermeldingen (standaard: 100)" + }, + "proxy_logs": { + "description": "Aanvraaglogboeken op proxyniveau weergeven", + "limit": "Aantal proxylogboekvermeldingen (standaard: 100)" + } + }, + "cost": { + "description": "Kostenrapport weergeven met uitsplitsing naar provider, model, combinatie of API-sleutel", + "period": "Tijdsbereik: 1d|7d|30d|90d|ytd|all (standaard: 30d)", + "since": "Startdatum (ISO-formaat, bijv. 2026-01-01) — overschrijft --period", + "until": "Einddatum (ISO-formaat)", + "group_by": "Resultaten groeperen op: provider|model|api-key|combo|day (standaard: provider)", + "api_key_filter": "Filteren op een specifieke API-sleutel", + "limit": "Maximaal aantal weer te geven rijen (standaard: 100)" + }, + "simulate": { + "description": "Dry-run-routingsimulatie — weergeven welke providers zouden worden geselecteerd zonder upstream aan te roepen", + "file": "Volledige aanvraagbody laden vanuit JSON-bestand", + "model": "Model-ID (standaard: auto)", + "combo": "Een specifieke combinatie op naam afdwingen", + "reasoning": "Niveau van redeneerinspanning (low|medium|high)", + "thinking": "Tokenbudget voor uitgebreid denken", + "explain": "Fallbackboom en kostenbereik naar stderr schrijven", + "noCombo": "Geen overeenkomende combinatie gevonden. Configureer er een met: omniroute combo create" + }, + "chat": { + "description": "Stuur een eenmalige chatprompt naar OmniRoute", + "file": "Prompt uit bestand lezen", + "stdin": "Prompt van stdin lezen", + "system": "Systeemprompt", + "model": "Model-ID (standaard: auto)", + "max_tokens": "Maximumaantal tokens in antwoord", + "temperature": "Samplingtemperatuur (0–2)", + "top_p": "Top-p-nucleussampling", + "reasoning_effort": "Niveau van redeneerinspanning (low|medium|high)", + "thinking_budget": "Tokenbudget voor uitgebreid denkwerk", + "combo": "Een specifieke combinatie op naam afdwingen", + "responses_api": "/v1/responses gebruiken in plaats van /v1/chat/completions", + "stream": "Antwoord stapsgewijs streamen", + "no_history": "Niet opslaan in ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Fout: prompt is vereist (positioneel argument, --file of --stdin)" + } + }, + "serve": { + "description": "De OmniRoute-server starten (standaardactie)", + "starting": "OmniRoute-server wordt gestart op poort {port}...", + "ready": "Beschikbaar op http://localhost:{port}", + "stopping": "Server wordt gestopt (PID {pid})...", + "stopped": "Server gestopt.", + "notRunning": "Server is niet actief.", + "port": "Poort om op te luisteren (standaard: 20128)", + "no_open": "Browser niet automatisch openen", + "daemon": "Server als achtergronddaemon uitvoeren", + "log": "Serverlogboeken inline weergeven", + "no_recovery": "Automatisch opnieuw starten na crash uitschakelen (foutopsporingsmodus)", + "max_restarts": "Maximaal aantal herstarts na crashes binnen 30 s voordat wordt opgegeven (standaard: 2)", + "tray": "Starten in het systeemvak (alleen desktop, optioneel)", + "no_tray": "Systeemvakpictogram uitschakelen", + "ready_timeout": "Time-out voor gereedheidscontrole in ms (ook OMNIROUTE_READY_TIMEOUT_MS, standaard 60000)", + "tls_cert": "Pad naar een TLS-certificaat (PEM) om HTTPS aan te bieden (ook OMNIROUTE_TLS_CERT)", + "tls_key": "Pad naar de privésleutel voor TLS (PEM) om HTTPS aan te bieden (ook OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Back-up", + "description": "Een back-up van OmniRoute-gegevens maken", + "creating": "Back-up wordt gemaakt...", + "done": "Back-up opgeslagen in {path}", + "noFiles": "Geen bestanden om een back-up van te maken (database niet geïnitialiseerd)", + "failed": "Back-up mislukt: {error}", + "restoring": "Herstellen vanaf {path}...", + "restored": "Herstel voltooid.", + "restoreDescription": "Herstellen vanuit een back-up", + "listTitle": "Beschikbare back-ups", + "noBackups": "Geen back-ups gevonden.", + "notFound": "Back-up niet gevonden: {name}", + "confirmRestore": "Huidige gegevens overschrijven met de back-up van {ts}?", + "createDescription": "Een back-up van OmniRoute-gegevens maken", + "nameOpt": "Aangepaste back-upnaam", + "cloudOpt": "Back-up uploaden naar cloudopslag", + "encryptOpt": "Back-up versleutelen met AES-256-GCM", + "keyFileOpt": "Pad naar het bestand met de wachtwoordzin voor versleuteling", + "excludeOpt": "Bestanden uitsluiten die overeenkomen met het patroon (herhaalbaar)", + "retentionOpt": "Alleen de laatste N back-ups bewaren", + "passphrasePrompt": "Wachtwoordzin voor versleuteling:", + "noPassphrase": "Een wachtwoordzin is vereist voor een versleutelde back-up.", + "cloudFailed": "Waarschuwing: uploaden naar de cloud is mislukt. De lokale back-up is opgeslagen.", + "cloudUploaded": "Cloudback-up geüpload: {url}", + "auto": { + "title": "Back-upschema", + "enableDescription": "Geplande automatische back-ups inschakelen", + "disableDescription": "Geplande automatische back-ups uitschakelen", + "statusDescription": "Huidige status van het back-upschema weergeven", + "cronOpt": "Cron-expressie voor het schema (standaard: dagelijks om 03.00 uur)", + "enabled": "Automatische back-up ingeschakeld (cron: {cron}).", + "hint": "Het schema wordt bij het opstarten gelezen door omniroute serve.", + "disabled": "Automatische back-up uitgeschakeld.", + "notConfigured": "Geen back-upschema geconfigureerd." + } + }, + "health": { + "description": "Serverstatus en componentstatus controleren", + "noServer": "Server is niet actief. Start met: omniroute serve", + "title": "Status", + "status": "Status: {status}", + "uptime": "Actief sinds: {uptime}", + "requests": "Verzoeken (24 uur): {count}", + "cost": "Kosten (24 uur): ${cost}" + }, + "quota": { + "description": "Quotagebruik van provider weergeven", + "noServer": "Server is niet actief. Start met: omniroute serve", + "noData": "Geen quota-informatie beschikbaar." + }, + "cache": { + "description": "Antwoordcache beheren", + "noServer": "Server is niet actief. Start met: omniroute serve", + "cleared": "Cache gewist.", + "clearFailed": "Kan cache niet wissen." + }, + "redis": { + "description": "Start een lokale Redis-container met één klik (Podman of Docker) voor OmniRoute-caching en quotumtracking" + }, + "test": { + "description": "Een providerverbinding testen", + "noServer": "Server draait niet. Start met: omniroute serve", + "testing": "{provider} / {model} testen...", + "passed": "Verbinding geslaagd!", + "failed": "Verbinding mislukt: {error}", + "allProvidersOpt": "Alle geconfigureerde providers testen", + "latencyOpt": "Latentiemetingen weergeven (gem./min./max. ms)", + "repeatOpt": "Test N keer herhalen en resultaten samenvoegen", + "compareOpt": "Door komma's gescheiden modellen om te vergelijken (bijv. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Resultaten opslaan in een JSON-bestand", + "saved": "Resultaten opgeslagen in {path}", + "compareTitle": "Modelvergelijking", + "compareMinTwo": "Ten minste twee modellen vereist voor --compare (door komma's gescheiden)", + "noProviders": "Geen providers geconfigureerd. Voeg er een toe met: omniroute keys add" + }, + "update": { + "checking": "Controleren op updates...", + "upToDate": "Al up-to-date ({version}).", + "available": "Update beschikbaar: {current} → {latest}", + "installing": "{latest} installeren...", + "done": "Bijgewerkt naar {latest}. Start de server opnieuw om de update toe te passen." + }, + "mcp": { + "title": "MCP-server", + "running": "MCP-server actief ({transport})", + "stopped": "MCP-server gestopt.", + "restarted": "MCP-server opnieuw gestart.", + "stoppedHint": "Voer `omniroute mcp enable` uit om deze in te schakelen.", + "enabled": "MCP-server ingeschakeld.", + "disabled": "MCP-server uitgeschakeld.", + "enable": { + "description": "De MCP-server inschakelen", + "transport": "Te gebruiken transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "De MCP-server uitschakelen" + }, + "call": { + "description": "Een MCP-tool rechtstreeks aanroepen", + "args": "Object met JSON-argumenten (inline)", + "args_file": "Pad naar bestand met JSON-argumenten", + "stream": "Streaming-endpoint gebruiken (/api/mcp/stream)", + "scope": "Vereist bereik (herhaalbaar, bijv. read:health)" + }, + "scopes": { + "description": "Beschikbare MCP-bereiken weergeven", + "tool": "Bereiken weergeven die door een specifieke tool worden vereist" + }, + "tools": { + "description": "MCP-tools inspecteren", + "list": { + "description": "Alle MCP-tools weergeven", + "scope": "Filteren op bereik" + }, + "info": { + "description": "Metagegevens voor een MCP-tool weergeven" + }, + "schema": { + "description": "JSON-schema voor invoer/uitvoer van een MCP-tool weergeven", + "io": "Schematype: invoer|uitvoer (standaard: invoer)" + } + }, + "audit": { + "description": "MCP-auditlogboek (alias voor audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Beschikbare A2A-vaardigheden van de agentkaart weergeven" + }, + "invoke": { + "description": "Een A2A-vaardigheid aanroepen en de taak-ID retourneren", + "input": "JSON-invoerobject", + "input_file": "Pad naar JSON-invoerbestand", + "wait": "Wachten tot de taak is voltooid alvorens terug te keren", + "timeout": "Time-out voor wachten op voltooiing in ms (standaard: 60000)" + }, + "tasks": { + "description": "A2A-taken beheren", + "list": { + "status": "Filteren op status", + "skill": "Filteren op vaardigheids-ID" + }, + "watch": { + "description": "Taakstatus opvragen tot voltooiing" + }, + "stream": { + "description": "Taakuitvoeringsgebeurtenissen streamen via SSE" + }, + "logs": { + "description": "Taakberichten en artefacten weergeven" + } + } + }, + "policy": { + "description": "OmniRoute-autorisatiebeleid beheren", + "list": { + "description": "Beleidsregels weergeven", + "kind": "Filteren op type (allow|deny|rate-limit|cost-cap)", + "scope": "Filteren op bereik (global|api-key|provider)" + }, + "get": { + "description": "Beleidsdetails ophalen op basis van ID" + }, + "create": { + "description": "Een beleid aanmaken vanuit een JSON-bestand", + "file": "Pad naar JSON-beleidsbestand" + }, + "update": { + "description": "Een beleid bijwerken vanuit een JSON-bestand", + "file": "Pad naar JSON-beleidsbestand" + }, + "delete": { + "description": "Een beleid verwijderen op basis van ID", + "yes": "Bevestigingsprompt overslaan" + }, + "evaluate": { + "description": "Proefuitvoering van beleidsevaluatie (afsluitcode 0=toegestaan, 4=geweigerd)", + "api_key": "Te evalueren API-sleutel", + "action": "Te controleren actie (bijv. chat, embed, admin)", + "resource": "Resourcepad of identificatiecode", + "context": "Aanvullende context als JSON-object" + }, + "export": { + "description": "Alle beleidsregels exporteren naar een JSON-bestand" + }, + "import": { + "description": "Beleidsregels importeren uit een JSON-bestand", + "overwrite": "Bestaande beleidsregels met dezelfde ID overschrijven" + } + }, + "compression": { + "description": "De OmniRoute-compressiepijplijn configureren en inspecteren", + "status": { + "description": "Huidige compressiestatus en -instellingen weergeven" + }, + "configure": { + "description": "Compressie-instellingen configureren", + "engine": "Compressie-engine (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-agressiviteit 0,0–1,0", + "rtk_budget": "RTK-tokenbudget", + "language_pack": "Te activeren taalpakket" + }, + "engine": { + "description": "De actieve compressie-engine ophalen of instellen" + }, + "combos": { + "description": "Statistieken voor compressiecombinaties beheren" + }, + "rules": { + "description": "Compressieregels beheren", + "add": { + "pattern": "Zoekpatroon (regex of veld:patroon)", + "action": "Actie: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Beschikbare taalpakketten voor compressie weergeven" + }, + "preview": { + "description": "Effect van compressie op een verzoek bekijken", + "file": "Pad naar JSON-bestand met verzoek" + } + }, + "tunnel": { + "title": "Tunnels", + "listDescription": "Actieve tunnels weergeven", + "createDescription": "Een tunnel maken", + "created": "Tunnel gemaakt: {url}", + "stopped": "Tunnel gestopt.", + "confirmStop": "Tunnel {id} stoppen?", + "stopDescription": "Een tunnel stoppen", + "statusDescription": "Gedetailleerde status van een tunnel weergeven", + "logsDescription": "Logboeken van een tunnel weergeven", + "infoDescription": "Configuratiedetails van een tunnel weergeven", + "rotateDescription": "Een nieuwe tunnel-URL genereren", + "tailOpt": "Aantal weer te geven logregels", + "typeRequired": "Tunneltype is vereist.", + "noLogs": "Geen logboeken beschikbaar.", + "notAvailable": "Tunnelinformatie niet beschikbaar.", + "noTunnels": "Geen actieve tunnels.", + "infoTitle": "Tunnelinformatie: {type}", + "rotated": "Tunnel-URL vernieuwd: {url}", + "confirmRotate": "Tunnel {type} vernieuwen? (er wordt een nieuwe URL gegenereerd)" + }, + "stop": { + "description": "De OmniRoute-server stoppen", + "stopping": "Server wordt gestopt (PID {pid})...", + "stopped": "Server gestopt.", + "notRunning": "Er is geen server actief.", + "portFallback": "Geen PID-bestand gevonden, er wordt geprobeerd te stoppen op basis van de poort..." + }, + "restart": { + "description": "De OmniRoute-server opnieuw starten", + "restarting": "OmniRoute-server wordt opnieuw gestart..." + }, + "dashboard": { + "description": "Het OmniRoute-dashboard openen in een browser", + "opening": "Dashboard wordt geopend op {url}", + "urlOnly": "Dashboard-URL weergeven zonder de browser te openen", + "tui": "Interactief TUI-dashboard openen (terminalinterface, 7 tabbladen)" + }, + "models": { + "description": "Beschikbare modellen weergeven (server vereist)", + "search": "Modellen filteren op id, naam, provider of beschrijving", + "noServer": "Server draait niet. Start met: omniroute serve", + "noModels": "Geen modellen gevonden." + }, + "audit": { + "description": "Toegang tot compliance- en MCP-auditlogboeken", + "source": "Logboekbron: all|compliance|mcp (standaard: all)", + "since": "Vermeldingen retourneren vanaf dit tijdstip (ISO 8601)", + "until": "Vermeldingen retourneren tot dit tijdstip (ISO 8601)", + "tail": { + "description": "Recente auditlogboekvermeldingen weergeven", + "follow": "Nieuwe vermeldingen continu volgen (peiling om de 2 s)", + "limit": "Maximumaantal weer te geven vermeldingen (standaard: 100)" + }, + "search": { + "description": "Auditlogboekvermeldingen zoeken op trefwoord", + "limit": "Maximumaantal resultaten (standaard: 200)", + "actor": "Filteren op actor-ID", + "action": "Filteren op actienaam" + }, + "export": { + "description": "Auditlogboek exporteren naar bestand", + "format": "Uitvoerformaat: jsonl|csv (standaard: jsonl)" + }, + "stats": { + "description": "Auditlogboekstatistieken weergeven", + "period": "Periode: 1d|7d|30d (standaard: 7d)" + }, + "get": { + "description": "Eén auditlogboekvermelding ophalen op basis van ID" + } + }, + "skills": { + "description": "OmniRoute-skills beheren (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Geïnstalleerde skills weergeven", + "type": "Filteren op type (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Alleen ingeschakelde skills weergeven", + "disabled": "Alleen uitgeschakelde skills weergeven", + "api_key": "Filteren op API-sleutel" + }, + "get": { + "description": "Details van een skill ophalen op basis van ID" + }, + "install": { + "description": "Een skill installeren vanuit een bestand of URL", + "from_file": "Pad naar het JSON-definitiebestand van de skill", + "from_url": "URL van de externe skilldefinitie", + "type": "Skilltype (sandbox|custom|hybrid)", + "enable": "Skill inschakelen na installatie" + }, + "enable": { + "description": "Een skill inschakelen op basis van ID" + }, + "disable": { + "description": "Een skill uitschakelen op basis van ID", + "yes": "Bevestigingsprompt overslaan" + }, + "delete": { + "description": "Een skill verwijderen op basis van ID", + "yes": "Bevestigingsprompt overslaan" + }, + "execute": { + "description": "Een skill uitvoeren op basis van ID", + "input": "JSON-invoerobject", + "input_file": "Pad naar JSON-invoerbestand", + "timeout": "Time-out voor uitvoering in ms (standaard: 30000)" + }, + "executions": { + "description": "Geschiedenis van skilluitvoeringen weergeven", + "skill": "Filteren op skill-ID", + "limit": "Maximaal aantal resultaten (standaard: 50)", + "status": "Filteren op status (running|completed|failed)" + }, + "skillssh": { + "description": "Via SSH geïnstalleerde skills beheren" + }, + "marketplace": { + "description": "Skills bekijken en installeren vanuit de marketplace" + }, + "mp": { + "search": { + "description": "Marketplace-pakketten zoeken", + "category": "Filteren op categorie", + "tag": "Filteren op tag", + "limit": "Maximaal aantal resultaten (standaard: 30)", + "sort": "Sorteren op: downloads|rating|recent" + }, + "info": { + "description": "Pakketdetails en readme weergeven" + }, + "install": { + "description": "Een marketplace-pakket installeren", + "version": "Pakketversie (standaard: latest)", + "enable": "Inschakelen na installatie", + "yes": "Bevestigingsprompt overslaan" + }, + "categories": { + "description": "Marketplace-categorieën weergeven" + }, + "featured": { + "description": "Uitgelichte marketplace-pakketten weergeven" + } + } + }, + "memory": { + "description": "OmniRoute-gespreksgeheugen beheren (FTS5 + vector)", + "search": { + "description": "Geheugenitems zoeken met een semantische zoekopdracht", + "type": "Filteren op geheugentype (user|feedback|project|reference)", + "limit": "Maximaal aantal resultaten (standaard: 20)", + "api_key": "Filteren op API-sleutel", + "token_budget": "Totaal aantal tokens in resultaten beperken" + }, + "add": { + "description": "Een nieuw geheugenitem toevoegen", + "content": "Tekstinhoud van het geheugen", + "file": "Inhoud uit bestand lezen", + "type": "Geheugentype (standaard: user)", + "metadata": "JSON-metadataobject", + "api_key": "Koppelen aan API-sleutel" + }, + "clear": { + "description": "Geheugenitems verwijderen die overeenkomen met filters", + "type": "Filteren op type", + "older": "Items verwijderen die ouder zijn dan de duur (30d, 6m, 1y)", + "api_key": "Filteren op API-sleutel", + "yes": "Bevestigingsprompt overslaan" + }, + "list": { + "description": "Geheugenitems weergeven zonder zoekrangschikking", + "type": "Filteren op type", + "limit": "Maximaal aantal resultaten (standaard: 100)", + "api_key": "Filteren op API-sleutel" + }, + "get": { + "description": "Eén geheugenitem ophalen op basis van ID" + }, + "delete": { + "description": "Een geheugenitem verwijderen op basis van ID", + "yes": "Bevestigingsprompt overslaan" + }, + "health": { + "description": "Status van geheugensubsysteem weergeven (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth-providerverbindingen beheren", + "providers": { + "description": "Providers met OAuth-ondersteuning en hun flowtypen weergeven" + }, + "start": { + "description": "OAuth-autorisatieflow voor een provider starten", + "provider": "Provider-ID (gemini, copilot, cursor, …)", + "no_browser": "Alleen URL weergeven — browser niet openen", + "import_system": "Inloggegevens automatisch importeren uit de lokale systeemconfiguratie", + "social": "Provider voor sociale aanmelding (google|github) — vereist voor kiro", + "timeout": "Time-out voor wachten op autorisatie in ms (standaard: 300000)" + }, + "status": { + "description": "Actieve OAuth-verbindingen weergeven", + "provider": "Filteren op provider-ID" + }, + "revoke": { + "description": "Een OAuth-verbinding intrekken", + "provider": "Provider-ID om in te trekken", + "connection_id": "Een specifieke verbinding op ID intrekken", + "yes": "Bevestigingsprompt overslaan" + } + }, + "cloud": { + "description": "Cloud-AI-agenttaken beheren (codex, devin, jules)", + "agents": { + "description": "Beschikbare cloudagents weergeven" + }, + "agent": { + "description": "Cloudagenttaken voor {agent} beheren", + "auth": { + "description": "{agent} autoriseren via OAuth" + } + }, + "task": { + "description": "Cloudagenttaken beheren", + "create": { + "description": "Een nieuwe agenttaak aanmaken", + "title": "Taaktitel (standaard de eerste 80 tekens van de prompt)", + "prompt": "Tekst van taakprompt", + "prompt_file": "Prompt uit bestand lezen", + "repo": "Repository-URL om voor de taak te klonen", + "branch": "Te gebruiken branchnaam", + "metadata": "JSON-metadataobject" + }, + "list": { + "description": "Agenttaken weergeven", + "status": "Filteren op status (running|completed|failed|cancelled)", + "limit": "Maximumaantal resultaten (standaard: 50)" + }, + "get": { + "description": "Taakdetails op ID ophalen" + }, + "status": { + "description": "Taakstatus weergeven (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Een actieve taak annuleren", + "yes": "Bevestigingsprompt overslaan" + }, + "approve": { + "description": "Het agentplan goedkeuren om de uitvoering te starten" + }, + "message": { + "description": "Een bericht naar een actieve taak sturen" + } + }, + "sources": { + "description": "Door een taak geproduceerde bronbestanden weergeven" + } + }, + "eval": { + "description": "Evaluatiesuites en uitvoeringen beheren", + "suites": { + "description": "Evaluatiesuites beheren", + "list": { + "description": "Evaluatiesuites weergeven" + }, + "get": { + "description": "Details van evaluatiesuite ophalen op ID" + }, + "create": { + "description": "Een evaluatiesuite maken vanuit een JSON-bestand", + "file": "Pad naar JSON-bestand met suitedefinitie" + } + }, + "run": { + "description": "Een evaluatierun starten voor een suite", + "model": "Te evalueren model-ID (standaard: auto)", + "combo": "Een specifieke combinatie afdwingen op naam", + "concurrency": "Aantal gelijktijdige samples (standaard: 4)", + "tag": "Deze run taggen om later te filteren", + "watch": "Voortgang van run volgen tot voltooiing" + }, + "list": { + "description": "Evaluatieruns weergeven", + "suite": "Filteren op suite-ID", + "status": "Filteren op status", + "since": "Runs vanaf dit tijdstip retourneren", + "limit": "Maximaal aantal resultaten (standaard: 50)" + }, + "get": { + "description": "Details van evaluatierun ophalen op ID" + }, + "results": { + "description": "Sampleresultaten voor een evaluatierun weergeven", + "failed": "Alleen mislukte samples weergeven" + }, + "cancel": { + "description": "Een actieve evaluatie annuleren", + "yes": "Bevestigingsprompt overslaan" + }, + "scorecard": { + "description": "Scorekaart voor een voltooide evaluatierun weergeven" + } + }, + "webhooks": { + "description": "OmniRoute-webhooks beheren", + "events": { + "description": "Alle beschikbare webhookgebeurtenistypen weergeven" + }, + "list": { + "description": "Geconfigureerde webhooks weergeven" + }, + "get": { + "description": "Webhookdetails ophalen op ID" + }, + "add": { + "description": "Een nieuwe webhook registreren", + "url": "Bestemmings-URL", + "events": "Door komma's gescheiden lijst met gebeurtenistypen", + "secret": "HMAC-ondertekeningsgeheim", + "header": "Extra header in key=value-indeling (herhaalbaar)", + "no_enabled": "Webhook in uitgeschakelde status maken" + }, + "update": { + "description": "Een bestaande webhook bijwerken", + "enabled": "Ingeschakelde status instellen (true|false)" + }, + "remove": { + "description": "Een webhook verwijderen", + "yes": "Bevestigingsprompt overslaan" + }, + "test": { + "description": "Een testgebeurtenis naar een webhook verzenden", + "event": "Te simuleren gebeurtenistype (standaard: request.completed)" + } + }, "program": { "description": "OmniRoute — Slimme AI-router met automatische fallback", "version": "Versie afdrukken en afsluiten", @@ -26,7 +832,509 @@ "context": "Servercontext/profiel voor dit commando", "lang": "CLI-weergavetaal instellen (overschrijft OMNIROUTE_LANG)" }, - "redis": { - "description": "Start een lokale Redis-container met één klik (Podman of Docker) voor OmniRoute-caching en quotumtracking" + "files": { + "description": "Bestanden beheren (uploaden, weergeven, ophalen, downloaden, verwijderen)", + "list": { + "purpose": "Filteren op doel", + "limit": "Maximaal aantal resultaten" + }, + "get": { + "description": "Bestandsmetadata ophalen" + }, + "upload": { + "description": "Een bestand uploaden", + "purpose": "Bestandsdoel (batch, assistants, fine-tune)" + }, + "content": { + "description": "Bestandsinhoud downloaden", + "out": "Opslaan in pad (standaard: stdout)" + }, + "delete": { + "yes": "Bevestiging overslaan" + } + }, + "batches": { + "description": "OpenAI-compatibele batchtaken beheren", + "list": { + "status": "Filteren op status", + "limit": "Maximumaantal resultaten" + }, + "create": { + "description": "Een batchtaak aanmaken", + "inputFile": "Invoerbestands-ID", + "endpoint": "Doelendpoint", + "window": "Voltooiingsvenster", + "metadata": "Metagegevens key=value toevoegen" + }, + "submit": { + "description": "JSONL-bestand uploaden en batch aanmaken", + "jsonl": "Pad naar JSONL-bestand", + "endpoint": "Doelendpoint", + "wait": "Wachten op voltooiing" + }, + "cancel": { + "yes": "Bevestiging overslaan" + }, + "wait": { + "timeout": "Time-out in ms" + }, + "output": { + "out": "Uitvoer opslaan in pad" + }, + "errors": { + "out": "Fouten opslaan in pad" + } + }, + "translator": { + "description": "Aanvraaginhoud vertalen tussen LLM-indelingen", + "detect": { + "description": "Indeling van aanvraaginhoud detecteren" + }, + "translate": { + "description": "Aanvraaginhoud van de ene indeling naar de andere converteren" + }, + "send": { + "description": "Vertalen en doorsturen naar upstream" + }, + "stream": { + "description": "Aanvraaginhoud streamend vertalen" + }, + "from": "Bronindeling (openai|anthropic|gemini|cohere)", + "to": "Doelindeling (openai|anthropic|gemini|cohere)", + "file": "Pad naar JSON-bestand met aanvraaginhoud", + "out": "Uitvoer opslaan in bestand", + "model": "Model overschrijven", + "history": { + "limit": "Maximumaantal resultaten" + } + }, + "pricing": { + "description": "Prijsgegevens voor modellen beheren", + "sync": { + "description": "Prijzen synchroniseren vanuit upstream-bronnen", + "provider": "Filteren op provider", + "force": "Hersynchronisatie forceren" + }, + "list": { + "provider": "Filteren op provider", + "model": "Filteren op model", + "limit": "Maximumaantal resultaten" + }, + "defaults": { + "description": "Standaardprijzen beheren", + "input": "Invoerkosten per 1 miljoen tokens (USD)", + "output": "Uitvoerkosten per 1 miljoen tokens (USD)", + "cacheRead": "Kosten voor cachelezingen per 1 miljoen tokens (USD)", + "cacheWrite": "Kosten voor cacheschrijfbewerkingen per 1 miljoen tokens (USD)" + }, + "diff": { + "description": "Afwijking van upstreamprijzen tonen", + "model": "Filteren op model" + } + }, + "radar": { + "description": "Lokale Radar-catalogusfeeds inspecteren en synchroniseren", + "status": "Lokale Radar-instellingen en cachestatus van feeds tonen", + "sync": "Catalogus, verwijzingen, aanbiedingen en Intel synchroniseren via de lokale server" + }, + "resilience": { + "description": "Veerkrachtmechanismen inspecteren en beheren", + "status": { + "provider": "Filteren op provider" + }, + "breakers": { + "provider": "Filteren op provider" + }, + "cooldowns": { + "provider": "Filteren op provider", + "connectionId": "Filteren op verbindings-ID" + }, + "lockouts": { + "provider": "Filteren op provider", + "model": "Filteren op model" + }, + "reset": { + "description": "Status van stroomonderbreker/cooldown resetten", + "provider": "Te resetten provider", + "connectionId": "Te resetten verbindings-ID", + "model": "Model waarvoor de blokkering moet worden gereset", + "allCooldowns": "Alle cooldowns voor provider resetten", + "yes": "Bevestiging overslaan" + }, + "profile": { + "description": "Veerkrachtprofiel beheren", + "name": "Profielnaam" + }, + "config": { + "description": "Veerkrachtconfiguratie beheren", + "threshold": "Drempelwaarde voor fouten", + "resetTimeout": "Resettime-out in ms", + "baseCooldown": "Basiscooldown in ms" + } + }, + "nodes": { + "description": "Providernodes (eindpunten) beheren", + "list": { + "provider": "Filteren op provider", + "enabled": "Alleen ingeschakelde nodes tonen" + }, + "add": { + "provider": "Providernaam", + "baseUrl": "Basis-URL voor de node", + "name": "Nodenaam", + "weight": "Gewicht voor taakverdeling", + "region": "Regiotag", + "authHeader": "Aangepaste authenticatieheader (key=value)" + }, + "update": { + "baseUrl": "Nieuwe basis-URL", + "name": "Nieuwe naam", + "weight": "Nieuw gewicht", + "region": "Nieuwe regio", + "enabled": "In- of uitschakelen (true|false)" + }, + "remove": { + "yes": "Bevestiging overslaan" + }, + "validate": { + "baseUrl": "Te valideren URL", + "provider": "Provider waartegen moet worden gevalideerd" + }, + "test": { + "description": "Testverzoek naar node verzenden" + }, + "metrics": { + "description": "Nodemetrieken weergeven", + "period": "Tijdsperiode (bijv. 24h, 7d)" + } + }, + "context": { + "description": "Context-engineeringpipeline configureren (Caveman, RTK)", + "analytics": { + "period": "Tijdsperiode (bijv. 7d, 30d)" + }, + "caveman": { + "description": "Caveman-contextcompressor beheren", + "config": { + "description": "Caveman-configuratie weergeven of bijwerken", + "aggressiveness": "Agressiviteit 0.0–1.0", + "maxShrinkPct": "Maximaal verkleiningspercentage", + "preserveTags": "Door komma's gescheiden tags die behouden moeten blijven" + } + }, + "rtk": { + "description": "RTK-contextoptimalisator beheren", + "config": { + "description": "RTK-configuratie weergeven of bijwerken", + "tokenBudget": "Tokenbudget voor RTK", + "reservePct": "Reservepercentage" + }, + "filters": { + "description": "RTK-filters beheren", + "pattern": "Filterpatroon (regex)", + "priority": "Filterprioriteit (standaard: 100)", + "action": "Filteractie: drop|shrink|replace", + "yes": "Bevestiging overslaan" + }, + "test": { + "file": "Pad naar JSON-bestand met verzoek" + } + }, + "combos": { + "description": "Contextbewust combinatiebeheer" + } + }, + "sessions": { + "description": "Actieve sessies bekijken en beheren", + "list": { + "user": "Filteren op gebruiker", + "kind": "Filteren op type (dashboard|api-key|mcp|a2a)", + "active": "Alleen actieve sessies weergeven", + "limit": "Maximaal aantal resultaten (standaard: 100)" + }, + "expire": { + "yes": "Bevestiging overslaan" + }, + "expireAll": { + "user": "Gebruiker van wie de sessies moeten verlopen", + "yes": "Bevestiging overslaan" + } + }, + "tags": { + "description": "Resourcetags beheren", + "add": { + "color": "Tagkleur (hex of naam)", + "description": "Tagbeschrijving" + }, + "remove": { + "yes": "Bevestiging overslaan" + }, + "assign": { + "tag": "Tagnaam", + "to": "Doelresource als type:id (bijv. provider:openai)" + }, + "unassign": { + "tag": "Tagnaam", + "from": "Bronresource als type:id" + } + }, + "openapi": { + "description": "De OmniRoute OpenAPI-specificatie openen en testen", + "dump": { + "description": "OpenAPI-specificatie naar stdout of een bestand uitvoeren", + "format": "Uitvoerformaat: yaml|json (standaard: yaml)", + "out": "Opslaan naar bestandspad" + }, + "validate": { + "description": "De OpenAPI-specificatie valideren" + }, + "try": { + "description": "Een API-endpoint testen via de specificatie", + "method": "HTTP-methode (standaard: GET)", + "body": "Pad naar JSON-bestand met aanvraagbody", + "query": "Queryparameter als key=value (herhaalbaar)", + "header": "Header als key=value (herhaalbaar)" + }, + "endpoints": { + "description": "Alle API-endpoints weergeven", + "search": "Filteren op pad of samenvatting" + }, + "paths": { + "description": "Alle API-paden weergeven" + } + }, + "combo": { + "title": "Combinaties", + "switched": "Actieve combinatie: {name}", + "created": "Combinatie aangemaakt: {name}", + "deleted": "Combinatie verwijderd: {name}", + "noCombos": "Geen combinaties geconfigureerd.", + "confirmDelete": "Combinatie {name} verwijderen?", + "suggest": { + "description": "De beste combinatie voor een taak voorstellen met behulp van AI-scores", + "task": "Taakbeschrijving", + "maxCost": "Maximale kosten per aanvraag in USD", + "maxLatencyMs": "Maximale latentie in milliseconden", + "weights": "JSON-scoregewichten, bijv. {\"latency\":0.7,\"cost\":0.3}", + "top": "Aantal beste kandidaten om weer te geven (standaard: 5)", + "explain": "Motivering naar stderr uitvoeren", + "switch": "De hoogst gerangschikte combinatie activeren" + } + }, + "oneproxy": { + "description": "De OneProxy-upstreampool beheren", + "stats": { + "provider": "Filteren op provider", + "period": "Tijdsperiode (standaard: 24h)" + }, + "fetch": { + "description": "Proxy's ophalen uit de pool", + "count": "Aantal op te halen proxy's (standaard: 1)", + "type": "Proxytype: http|socks5 (standaard: http)" + }, + "rotate": { + "description": "Proxyrotatie forceren", + "provider": "Provider waarvoor moet worden geroteerd", + "connectionId": "Specifieke verbindings-ID om te roteren" + }, + "config": { + "description": "OneProxy-configuratie weergeven of bijwerken", + "enabled": "Proxypool inschakelen (true|false)", + "poolSize": "Poolgrootte", + "providerSource": "URL voor proxyprovider", + "rotationPolicy": "Rotatiebeleid: sticky|per-request|periodic" + }, + "pool": { + "description": "Huidige proxypool met statistieken weergeven" + } + }, + "open": { + "description": "Een specifieke OmniRoute-dashboardpagina in de browser openen", + "url": "Alleen URL weergeven, browser niet openen" + }, + "telemetry": { + "description": "Toegang tot geaggregeerde telemetriegegevens", + "summary": { + "description": "Samenvatting van geaggregeerde telemetrie weergeven", + "period": "Periode: 24h|7d|30d (standaard: 24h)", + "compareTo": "Vergelijken met de vorige periode" + }, + "export": { + "description": "Telemetriegebeurtenissen exporteren naar JSONL", + "out": "Pad naar uitvoerbestand (standaard: telemetry.jsonl)", + "period": "Periode voor export (standaard: 7d)" + } + }, + "sync": { + "description": "Configuratie synchroniseren tussen OmniRoute-instanties", + "push": { + "description": "Configuratie naar de cloud of externe instantie pushen", + "target": "Doel (cloud of context:name)", + "bundle": "Te synchroniseren onderdelen van de bundel", + "dryRun": "Voorbeeld bekijken zonder toe te passen" + }, + "pull": { + "description": "Configuratie ophalen uit de cloud of externe instantie", + "source": "Bron (cloud of context:name)", + "merge": "Samenvoegen met bestaande configuratie", + "replace": "Bestaande configuratie vervangen", + "dryRun": "Voorbeeld bekijken zonder toe te passen" + }, + "diff": { + "source": "Broncontext", + "target": "Doelcontext" + }, + "bundle": { + "description": "Configuratie exporteren als bundelbestand", + "include": "Op te nemen onderdelen (komma-gescheiden)" + }, + "import": { + "description": "Een bundelbestand importeren", + "dryRun": "Valideren zonder toe te passen" + }, + "initialize": { + "fromCloud": "Initialiseren vanuit cloudback-up" + }, + "tokens": { + "description": "Synchronisatietokens beheren", + "create": { + "name": "Tokennaam", + "scope": "Tokenbereik", + "ttl": "TTL van token (bijv. 30d)" + }, + "revoke": { + "yes": "Bevestiging overslaan" + } + }, + "resolve": { + "description": "Synchronisatieconflicten interactief oplossen" + } + }, + "config": { + "contexts": { + "description": "Servercontexten/-profielen beheren (toevoegen, gebruiken, weergeven, tonen, verwijderen, hernoemen, exporteren, importeren)" + }, + "lang": { + "description": "Weergavetaal van CLI beheren", + "getDescription": "De momenteel actieve taalcode weergeven", + "setDescription": "Stel de weergavetaal in en sla deze op in de configuratie", + "listDescription": "Alle beschikbare talen weergeven", + "listTitle": "Beschikbare talen", + "current": "Taal: {code} ({name})", + "saved": "Taal ingesteld op {code} ({name}).", + "noCode": "Taalcode vereist. Voer 'omniroute config lang list' uit om de beschikbare codes te bekijken.", + "unknown": "Onbekende taalcode: {code}. Voer 'omniroute config lang list' uit om de beschikbare codes te bekijken.", + "alreadySet": "De taal is al ingesteld op {code}.", + "envHint": "Tip: je kunt ook OMNIROUTE_LANG={code} instellen in je omgeving." + } + }, + "completion": { + "description": "Shell-aanvullingsscripts genereren of installeren", + "zsh": "Zsh-aanvullingsscript weergeven", + "bash": "Bash-aanvullingsscript weergeven", + "fish": "Fish-aanvullingsscript weergeven", + "install": "Aanvullingsscript globaal installeren voor de gedetecteerde shell", + "refresh": "Cache van combinaties/providers/modellen vernieuwen" + }, + "logs": { + "description": "Aanvraaglogboeken streamen of exporteren", + "follow": "Logboeken in realtime streamen", + "filter": "Filteren op niveau (error,warn,info) — door komma's gescheiden", + "lines": "Aantal op te halen regels", + "timeout": "Time-out voor verbinding in ms", + "baseUrl": "Basis-URL van de OmniRoute-API", + "requestId": "Filteren op aanvraag-ID", + "apiKey": "Filteren op API-sleutel", + "combo": "Filteren op combinatienaam", + "status": "Filteren op HTTP-statuscode", + "durationMin": "Minimale aanvraagduur in ms", + "durationMax": "Maximale aanvraagduur in ms", + "export": "Logboeken opslaan in een bestand (json/jsonl/csv)", + "exported": "Logboeken opgeslagen in {path}", + "stopped": "Logboekstream gestopt.", + "streamError": "Fout in logboekstream: {message}" + }, + "tray": { + "description": "Het systeemvakpictogram beheren", + "show": "Het systeemvakpictogram weergeven (als de server met --tray wordt uitgevoerd)", + "hide": "Het systeemvakpictogram verbergen", + "quit": "OmniRoute afsluiten via het systeemvak" + }, + "autostart": { + "description": "Automatisch opstarten van OmniRoute bij het opstarten beheren (Linux: systemd-gebruikersservice)", + "enable": "Automatisch opstarten inschakelen", + "disable": "Automatisch opstarten uitschakelen", + "toggle": "Automatisch opstarten in- of uitschakelen", + "status": "Status van automatisch opstarten weergeven" + }, + "runtime": { + "description": "Beheer systeemeigen runtime-afhankelijkheden", + "check": "Controleer de status van systeemeigen afhankelijkheden in de runtime-map", + "repair": "Installeer systeemeigen afhankelijkheden opnieuw in de runtime-map", + "repair_force": "Forceer herinstallatie, zelfs als ze geldig zijn", + "clean": "Verwijder de runtime-map (maakt schijfruimte vrij)", + "clean_yes": "Sla bevestiging over" + }, + "repl": { + "description": "Interactieve REPL met meerdere beurten en een LLM", + "model": "Te gebruiken model (standaard: auto)", + "combo": "Te gebruiken combinatienaam", + "system": "Systeemprompt", + "resume": "Hervat een opgeslagen sessie op naam" + }, + "plugin": { + "description": "Beheer CLI-plug-ins (omniroute-cmd-*)", + "list": "Geef geïnstalleerde plug-ins weer", + "install": "Installeer een plug-in vanuit npm of een lokaal pad", + "remove": "Verwijder een geïnstalleerde plug-in", + "info": "Toon details van een geïnstalleerde plug-in", + "search": "Doorzoek het npm-register naar beschikbare plug-ins", + "update": "Werk geïnstalleerde plug-in(s) bij", + "scaffold": "Genereer de basisstructuur voor een nieuwe plug-in" + }, + "launch": { + "description": "Start Claude Code, gericht op OmniRoute (lokaal of extern, met --profile)", + "token": "Token die de Claude-client moet verzenden (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute is niet bereikbaar op {port}. Start het met 'omniroute serve'.", + "notFound": "De 'claude'-CLI is niet gevonden in PATH." + }, + "run": { + "description": "Start een ondersteund CLI-doel via OmniRoute" + }, + "setupClaude": { + "description": "Genereer Claude Code-profielen in ~/.claude/profiles vanuit de OmniRoute-modelcatalogus" + }, + "connect": { + "description": "Maak verbinding met een externe OmniRoute-server en activeer de externe modus" + }, + "tokens": { + "description": "Beheer CLI-toegangstokens met een beperkt bereik (externe modus)" + }, + "configure": { + "description": "Kies een provider+model van de actieve server en configureer een ondersteunde lokale CLI" + }, + "launchCodex": { + "description": "Start Codex CLI, gericht op OmniRoute (lokale of externe VPS)" + }, + "setupCodex": { + "description": "Genereer profielbestanden in ~/.codex vanuit de actuele OmniRoute-modelcatalogus" + }, + "packs": { + "description": "Beheer optionele runtimepakketten (ML / browserautomatisering)", + "listDescription": "Geef optionele pakketten en hun installatiestatus weer", + "installDescription": "Installeer een optioneel pakket in DATA_DIR", + "verifyDescription": "Verifieer geïnstalleerde pakketten aan de hand van de meegeleverde checksumindex", + "removeDescription": "Verwijder een geïnstalleerd optioneel pakket", + "sourceOpt": "Map met de pakketinhoud en de pakketindex", + "warnNoIndex": "optional-packs.index.json niet gevonden — installeren/verifiëren is niet beschikbaar in deze checkout (desktopbundels bevatten dit bestand)", + "errUnknown": "onbekend pakket: {name}", + "errNoIndex": "pakketindex niet gevonden; geef --source op met de pakketinhoud (desktopbundels bevatten deze naast de app)", + "installed": "pakket \"{name}\" is geïnstalleerd en geverifieerd in {dir}", + "restartHint": "start de OmniRoute-server (of desktopapp) opnieuw zodat de runtime het pakket oppikt", + "removed": "pakket \"{name}\" verwijderd", + "notInstalled": "pakket \"{name}\" was niet geïnstalleerd", + "verifyOk": "alle geïnstalleerde pakketten zijn geverifieerd", + "verifyFailed": "verificatie van {count} pakket(ten) mislukt", + "noneInstalled": "geen optionele pakketten geïnstalleerd" } } diff --git a/bin/cli/locales/no.json b/bin/cli/locales/no.json index 46ecde1057..0f6316453b 100644 --- a/bin/cli/locales/no.json +++ b/bin/cli/locales/no.json @@ -14,6 +14,812 @@ "jsonOpt": "Utdata som JSON", "yesOpt": "Hopp over bekreftelse" }, + "setup": { + "title": "Oppsett av OmniRoute", + "passwordPrompt": "Administratorpassord", + "providerPrompt": "Standardleverandør (la stå tomt for å hoppe over)", + "done": "Oppsett fullført", + "passwordSet": "Administratorpassord konfigurert", + "providerSet": "Leverandør konfigurert: {name}", + "testingProvider": "Tester leverandørtilkobling: {name}", + "testPassed": "Leverandørtesten var vellykket", + "testFailed": "Leverandørtesten mislyktes: {error}", + "loginEnabled": "Innlogging: aktivert (passord oppdatert)", + "loginDisabled": "Innlogging: deaktivert", + "providerInfo": "Leverandør: {info}", + "opencode": "Installer og konfigurer den medfølgende @omniroute/opencode-plugin for OpenCode" + }, + "doctor": { + "title": "OmniRoute-diagnostikk", + "dbOk": "Database: OK ({path})", + "dbMissing": "Database: ikke initialisert — kjør `omniroute setup`", + "portOk": "Port {port}: tilgjengelig", + "portConflict": "Port {port}: brukes av en annen prosess", + "encryptionOk": "Krypteringsnøkkel: konfigurert", + "encryptionMissing": "Krypteringsnøkkel mangler — kjør `omniroute setup`", + "allGood": "Alle kontroller bestått.", + "warnings": "{count} advarsel/advarsler — se ovenfor." + }, + "providers": { + "title": "Leverandører", + "noProviders": "Ingen leverandører er konfigurert. Kjør: omniroute setup", + "testing": "Tester {name} ...", + "available": "{count} leverandør(er) tilgjengelig(e)", + "connected": "Tilkoblet", + "disconnected": "Frakoblet", + "validationFailed": "Validering mislyktes: {error}", + "metrics": { + "description": "Vis ytelsesmålinger for leverandører (ventetid, suksessrate, kostnad)", + "provider": "Filtrer etter leverandør-ID", + "connection_id": "Filtrer etter tilkoblings-ID", + "period": "Tidsperiode: 1h|6h|24h|7d|30d (standard: 24h)", + "metric": "Fokuser på et bestemt målefelt", + "sort": "Sorter etter felt (synkende)", + "limit": "Maksimalt antall rader (standard: 50)", + "watch": "Oppdater hvert 5. sekund (sanntidsmodus)", + "compare": "Kommaseparerte leverandør-ID-er som skal sammenlignes side om side" + }, + "metric_single": { + "description": "Hent én enkelt måleverdi for en bestemt tilkobling" + }, + "rotate": { + "description": "Roter den eksterne API-nøkkelen for en leverandørtilkobling", + "newKeyOpt": "Ny API-nøkkelverdi (unngå: foretrekk --from-env)", + "fromEnvOpt": "Les ny nøkkel fra miljøvariabelen VAR", + "oauthOpt": "Utløs OAuth-reauthentiseringsflyten i stedet", + "skipTestOpt": "Hopp over tilkoblingstest etter rotering", + "dryRunOpt": "Vis hva som ville blitt endret uten å skrive", + "confirmPrompt": "Erstatt API-nøkkelen for tilkoblingen «{name}» ({id})? [y/N]", + "dryRunResult": "[dry-run] Ville ha rotert nøkkelen for «{name}» ({id}). Ingen endringer utført.", + "oauthHint": "OAuth-tilkobling – kjør: omniroute oauth {provider}", + "envVarEmpty": "Miljøvariabelen {var} er ikke angitt eller er tom.", + "success": "Nøkkelen for «{name}» er rotert. Kjør `providers test {id}` for å bekrefte.", + "testPassed": "Testen etter rotering var vellykket.", + "testFailed": "Testen etter rotering mislyktes: {error}" + }, + "status": { + "description": "Vis nøkkelstatus for alle leverandørtilkoblinger (alder, utløp, nedkjølingstid)", + "providerOpt": "Filtrer etter leverandørnavn", + "header": "ID Leverandør Navn Utløpsstatus Teststatus Nedkjøling til", + "noData": "Ingen data om leverandørtilkoblinger er tilgjengelige.", + "requiresServer": "providers status krever at OmniRoute-serveren kjører." + } + }, + "keys": { + "title": "API-nøkler", + "addDescription": "Legg til eller oppdater en API-nøkkel for en leverandør", + "listDescription": "Vis alle konfigurerte API-nøkler", + "removeDescription": "Fjern en API-nøkkel for en leverandør", + "regenerateDescription": "Generer en OmniRoute-API-nøkkel på nytt", + "revokeDescription": "Tilbakekall en OmniRoute-API-nøkkel", + "revealDescription": "Vis den umaskerte API-nøkkelverdien", + "usageDescription": "Vis nylig bruk av en API-nøkkel", + "usageLimitOpt": "Antall nylige forespørsler", + "rotateDescription": "Generer en ny nøkkel og gjør den gamle ugyldig", + "graceOpt": "Utsettelsesperiode (ms) før den gamle nøkkelen gjøres ugyldig", + "stdinOpt": "Les API-nøkkelen fra stdin i stedet for argumentet", + "added": "Nøkkel lagt til for {provider}.", + "removed": "Nøkkelen er fjernet.", + "listed": "{count} nøkkel/nøkler.", + "noKeys": "Ingen nøkler er konfigurert.", + "noUsage": "Ingen bruksdata funnet.", + "confirmRemove": "Fjern nøkkel {id}?", + "confirmRegenerate": "Generer nøkkel {id} på nytt?", + "confirmRevoke": "Tilbakekall nøkkel {id}?", + "confirmRotate": "Roter nøkkel {id}? (den gamle nøkkelen gjøres ugyldig etter utsettelsesperioden)", + "regenerated": "Generert på nytt. Ny nøkkel: {key}", + "revoked": "Nøkkel {id} er tilbakekalt.", + "rotated": "Nøkkel {id} rotert. Ny nøkkel-ID: {newId}", + "revealWarning": "⚠ Dette vil vise hele den umaskerte nøkkelen. Sørg for at skjermen din er privat.", + "providerRequired": "Leverandør er påkrevd.", + "keyRequired": "API-nøkkel er påkrevd.", + "stdinEmpty": "Ingen API-nøkkel mottatt via stdin.", + "unknownProvider": "Ukjent leverandør: {provider}", + "policy": { + "title": "Nøkkelpolicy", + "showDescription": "Vis grense-/kostnadspolicy for en nøkkel", + "setDescription": "Angi grense-/kostnadspolicy for en nøkkel", + "rateLimitOpt": "Maksimalt antall forespørsler per minutt", + "maxCostOpt": "Maksimal kostnad per dag (USD)", + "allowedModelsOpt": "Kommaseparert liste over tillatte modeller", + "nothingToSet": "Ingen policyfelter angitt. Bruk --rate-limit, --max-cost eller --allowed-models.", + "updated": "Policy oppdatert." + }, + "expiration": { + "title": "Nøkkelutløp", + "listDescription": "Vis nøkler som snart utløper", + "daysOpt": "Vis nøkler som utløper innen N dager", + "none": "Ingen nøkler utløper innen {days} dager.", + "listTitle": "Nøkler som utløper innen {days} dager:" + } + }, + "authExport": { + "description": "Eksporter DEKRYPTERT leverandørlegitimasjon (kun lokalt, utdata i klartekst)", + "idOpt": "Eksporter bare tilkoblingen som samsvarer med denne ID-en/dette navnet/denne leverandøren", + "formatOpt": "Utdataformat: json eller env", + "outOpt": "Skriv utdata til en fil i stedet for stdout (skrives med 0600-tillatelser)", + "forceOpt": "Bekreft at du forstår at dette skriver ut/lagrer hemmeligheter i klartekst", + "warning": "⚠ Dette skriver ut/lagrer DEKRYPTERTE API-nøkler og OAuth-tokener i klartekst. Sørg for at skjermen, skallhistorikken og eventuelle utdatafiler forblir private.", + "confirmHeading": "⚠ ADVARSEL: Dette eksporterer DEKRYPTERT leverandørlegitimasjon i klartekst", + "confirmBody": "Denne kommandoen dekrypterer og skriver ut/lagrer apiKey, accessToken, refreshToken og\nidToken for de valgte tilkoblingene. Behandle utdataene som en hemmelighet.", + "confirmFooter": "Kjør følgende for å bekrefte:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY er påkrevd for å eksportere legitimasjon.", + "notFound": "Tilkobling ikke funnet: {id}", + "invalidFormat": "Ugyldig format: {format}. Bruk json eller env." + }, + "stream": { + "description": "Strøm et chatsvar med SSE-inspeksjonsmoduser", + "file": "Les ledetekst fra fil", + "stdin": "Les ledetekst fra stdin", + "model": "Modell-ID (standard: auto)", + "system": "Systemledetekst", + "combo": "Tving frem en bestemt kombinasjon etter navn", + "max_tokens": "Maksimalt antall tokener i svaret", + "responses_api": "Bruk /v1/responses i stedet for /v1/chat/completions", + "raw": "Skriv ut rå SSE-linjer etter hvert som de mottas", + "debug": "Skriv tidsinformasjon per del til stderr", + "save": "Lagre alle SSE-hendelser i en .jsonl-fil", + "error": { + "empty_prompt": "Feil: ledetekst er påkrevd (posisjonsargument, --file eller --stdin)" + } + }, + "usage": { + "description": "Bruksanalyse, budsjetter, kvoter og logger", + "analytics": { + "description": "Vis aggregert bruksanalyse", + "period": "Tidsperiode: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "provider": "Filtrer etter leverandør-ID" + }, + "budget": { + "description": "Administrer kostnadsbudsjetter", + "set": { + "scope": "Budsjettomfang (standard: globalt)", + "period": "Budsjettperiode: daily|weekly|monthly (standard: monthly)" + } + }, + "quota": { + "description": "Vis leverandørens kvotebruk", + "provider": "Filtrer etter leverandør-ID", + "check": "Vis om kvote er tilgjengelig for en ny forespørsel" + }, + "logs": { + "description": "Vis logger over forespørselskall", + "limit": "Antall loggoppføringer som skal returneres (standard: 100)", + "search": "Søkestreng for å filtrere logger", + "since": "Returner logger fra og med dette tidsstempelet", + "follow": "Følg kontinuerlig nye loggoppføringer", + "api_key": "Filtrer logger etter API-nøkkel" + }, + "utilization": { + "description": "Vis måledata for bruk av API-nøkler", + "api_key": "Filtrer etter API-nøkkel" + }, + "history": { + "description": "Vis forespørselshistorikk", + "limit": "Antall historikkoppføringer (standard: 100)" + }, + "proxy_logs": { + "description": "Vis forespørselslogger på proxy-nivå", + "limit": "Antall proxy-loggoppføringer (standard: 100)" + } + }, + "cost": { + "description": "Vis kostnadsrapport med fordeling etter leverandør, modell, kombinasjon eller API-nøkkel", + "period": "Tidsperiode: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "since": "Startdato (ISO-format, f.eks. 2026-01-01) — overstyrer --period", + "until": "Sluttdato (ISO-format)", + "group_by": "Grupper resultater etter: provider|model|api-key|combo|day (standard: provider)", + "api_key_filter": "Filtrer etter en bestemt API-nøkkel", + "limit": "Maksimalt antall rader som skal vises (standard: 100)" + }, + "simulate": { + "description": "Tørrkjøringssimulering av ruting — vis hvilke leverandører som ville blitt valgt uten å kalle oppstrømstjenesten", + "file": "Last inn hele forespørselskroppen fra en JSON-fil", + "model": "Modell-ID (standard: auto)", + "combo": "Tving en bestemt kombinasjon etter navn", + "reasoning": "Nivå for resonneringsinnsats (low|medium|high)", + "thinking": "Tokenbudsjett for utvidet tenkning", + "explain": "Skriv reservetreet og kostnadsintervallet til stderr", + "noCombo": "Ingen samsvarende kombinasjon funnet. Konfigurer en med: omniroute combo create" + }, + "chat": { + "description": "Send en engangs-chatmelding til OmniRoute", + "file": "Les melding fra fil", + "stdin": "Les melding fra standard inndata", + "system": "Systemmelding", + "model": "Modell-ID (standard: auto)", + "max_tokens": "Maksimalt antall tokener i svaret", + "temperature": "Samplingtemperatur (0–2)", + "top_p": "Top-p-kjernesampling", + "reasoning_effort": "Nivå for resonneringsinnsats (low|medium|high)", + "thinking_budget": "Tokenbudsjett for utvidet tenkning", + "combo": "Tving en bestemt kombinasjon etter navn", + "responses_api": "Bruk /v1/responses i stedet for /v1/chat/completions", + "stream": "Strøm svaret trinnvis", + "no_history": "Ikke lagre i ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Feil: melding er påkrevd (posisjonsargument, --file eller --stdin)" + } + }, + "serve": { + "description": "Start OmniRoute-serveren (standardhandling)", + "starting": "Starter OmniRoute-serveren på port {port}...", + "ready": "Klar på http://localhost:{port}", + "stopping": "Stopper serveren (PID {pid})...", + "stopped": "Serveren er stoppet.", + "notRunning": "Serveren kjører ikke.", + "port": "Port som skal lyttes på (standard: 20128)", + "no_open": "Ikke åpne nettleseren automatisk", + "daemon": "Kjør serveren som en bakgrunnsprosess", + "log": "Vis serverlogger fortløpende", + "no_recovery": "Deaktiver automatisk omstart ved krasj (feilsøkingsmodus)", + "max_restarts": "Maksimalt antall omstarter etter krasj innen 30 s før det gis opp (standard: 2)", + "tray": "Start i systemstatusfeltet (kun skrivebord, må aktiveres)", + "no_tray": "Deaktiver ikonet i systemstatusfeltet", + "ready_timeout": "Tidsavbrudd for klarhetssjekk i ms (også OMNIROUTE_READY_TIMEOUT_MS, standard 60000)", + "tls_cert": "Bane til et TLS-sertifikat (PEM) for å levere HTTPS (også OMNIROUTE_TLS_CERT)", + "tls_key": "Bane til den private TLS-nøkkelen (PEM) for å levere HTTPS (også OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sikkerhetskopi", + "description": "Opprett en sikkerhetskopi av OmniRoute-data", + "creating": "Oppretter sikkerhetskopi...", + "done": "Sikkerhetskopien ble lagret i {path}", + "noFiles": "Ingen filer å sikkerhetskopiere (databasen er ikke initialisert)", + "failed": "Sikkerhetskopiering mislyktes: {error}", + "restoring": "Gjenoppretter fra {path}...", + "restored": "Gjenoppretting fullført.", + "restoreDescription": "Gjenopprett fra en sikkerhetskopi", + "listTitle": "Tilgjengelige sikkerhetskopier", + "noBackups": "Fant ingen sikkerhetskopier.", + "notFound": "Fant ikke sikkerhetskopien: {name}", + "confirmRestore": "Vil du overskrive gjeldende data med sikkerhetskopien fra {ts}?", + "createDescription": "Opprett en sikkerhetskopi av OmniRoute-data", + "nameOpt": "Egendefinert navn på sikkerhetskopi", + "cloudOpt": "Last opp sikkerhetskopien til skylagring", + "encryptOpt": "Krypter sikkerhetskopien med AES-256-GCM", + "keyFileOpt": "Bane til filen som inneholder passordfrasen for kryptering", + "excludeOpt": "Ekskluder filer som samsvarer med mønsteret (kan gjentas)", + "retentionOpt": "Behold bare de siste N sikkerhetskopiene", + "passphrasePrompt": "Passordfrase for kryptering:", + "noPassphrase": "Passordfrase er påkrevd for krypterte sikkerhetskopier.", + "cloudFailed": "Advarsel: Opplasting til skyen mislyktes. Den lokale sikkerhetskopien ble lagret.", + "cloudUploaded": "Sikkerhetskopi lastet opp til skyen: {url}", + "auto": { + "title": "Tidsplan for sikkerhetskopiering", + "enableDescription": "Aktiver planlagte automatiske sikkerhetskopier", + "disableDescription": "Deaktiver planlagte automatiske sikkerhetskopier", + "statusDescription": "Vis gjeldende status for tidsplanen for sikkerhetskopiering", + "cronOpt": "Cron-uttrykk for tidsplanen (standard: daglig kl. 03:00)", + "enabled": "Automatisk sikkerhetskopiering aktivert (cron: {cron}).", + "hint": "Tidsplanen leses av omniroute serve ved oppstart.", + "disabled": "Automatisk sikkerhetskopiering deaktivert.", + "notConfigured": "Ingen tidsplan for sikkerhetskopiering er konfigurert." + } + }, + "health": { + "description": "Kontroller servertilstand og komponentstatus", + "noServer": "Serveren kjører ikke. Start den med: omniroute serve", + "title": "Tilstand", + "status": "Status: {status}", + "uptime": "Oppetid: {uptime}", + "requests": "Forespørsler (24 t): {count}", + "cost": "Kostnad (24 t): ${cost}" + }, + "quota": { + "description": "Vis bruk av leverandørkvoter", + "noServer": "Serveren kjører ikke. Start den med: omniroute serve", + "noData": "Ingen kvoteinformasjon er tilgjengelig." + }, + "cache": { + "description": "Administrer svarhurtigbuffer", + "noServer": "Serveren kjører ikke. Start den med: omniroute serve", + "cleared": "Hurtigbufferen er tømt.", + "clearFailed": "Kunne ikke tømme hurtigbufferen." + }, + "redis": { + "description": "Start en lokal Redis-beholder med ett klikk (Podman eller Docker) for OmniRoute-hurtigbufring og kvotesporing" + }, + "test": { + "description": "Test en leverandørtilkobling", + "noServer": "Serveren kjører ikke. Start med: omniroute serve", + "testing": "Tester {provider} / {model}...", + "passed": "Tilkoblingen var vellykket!", + "failed": "Tilkoblingen mislyktes: {error}", + "allProvidersOpt": "Test alle konfigurerte leverandører", + "latencyOpt": "Vis målinger av svartid (gj.sn./min./maks. ms)", + "repeatOpt": "Gjenta testen N ganger og aggreger resultatene", + "compareOpt": "Kommaseparerte modeller som skal sammenlignes (f.eks. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Lagre resultatene i en JSON-fil", + "saved": "Resultatene ble lagret i {path}", + "compareTitle": "Modellsammenligning", + "compareMinTwo": "Minst to modeller kreves for --compare (kommaseparert)", + "noProviders": "Ingen leverandører er konfigurert. Legg til en med: omniroute keys add" + }, + "update": { + "checking": "Ser etter oppdateringer...", + "upToDate": "Allerede oppdatert ({version}).", + "available": "Oppdatering tilgjengelig: {current} → {latest}", + "installing": "Installerer {latest}...", + "done": "Oppdatert til {latest}. Start serveren på nytt for å ta oppdateringen i bruk." + }, + "mcp": { + "title": "MCP-server", + "running": "MCP-serveren kjører ({transport})", + "stopped": "MCP-serveren er stoppet.", + "restarted": "MCP-serveren er startet på nytt.", + "stoppedHint": "Kjør `omniroute mcp enable` for å slå den på.", + "enabled": "MCP-serveren er aktivert.", + "disabled": "MCP-serveren er deaktivert.", + "enable": { + "description": "Aktiver MCP-serveren", + "transport": "Transport som skal brukes: stdio|sse|streamable-http" + }, + "disable": { + "description": "Deaktiver MCP-serveren" + }, + "call": { + "description": "Kall et MCP-verktøy direkte", + "args": "JSON-argumentobjekt (direkte)", + "args_file": "Bane til fil med JSON-argumenter", + "stream": "Bruk strømmingsendepunktet (/api/mcp/stream)", + "scope": "Påkrevd omfang (kan gjentas, f.eks. read:health)" + }, + "scopes": { + "description": "Vis tilgjengelige MCP-omfang", + "tool": "Vis omfang som kreves av et bestemt verktøy" + }, + "tools": { + "description": "Inspiser MCP-verktøy", + "list": { + "description": "Vis alle MCP-verktøy", + "scope": "Filtrer etter omfang" + }, + "info": { + "description": "Vis metadata for et MCP-verktøy" + }, + "schema": { + "description": "Vis JSON-skjema for inn- og utdata for et MCP-verktøy", + "io": "Skjematype: input|output (standard: input)" + } + }, + "audit": { + "description": "MCP-revisjonslogg (alias for audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "List tilgjengelige A2A-ferdigheter fra agentkortet" + }, + "invoke": { + "description": "Kall en A2A-ferdighet og returner oppgave-ID-en", + "input": "JSON-inndataobjekt", + "input_file": "Bane til JSON-inndatafil", + "wait": "Vent til oppgaven er fullført før retur", + "timeout": "Tidsavbrudd i ms mens det ventes på fullføring (standard: 60000)" + }, + "tasks": { + "description": "Administrer A2A-oppgaver", + "list": { + "status": "Filtrer etter status", + "skill": "Filtrer etter ferdighets-ID" + }, + "watch": { + "description": "Kontroller oppgavestatus regelmessig til fullføring" + }, + "stream": { + "description": "Strøm hendelser fra oppgavekjøringen via SSE" + }, + "logs": { + "description": "Vis oppgavemeldinger og artefakter" + } + } + }, + "policy": { + "description": "Administrer autorisasjonspolicyer for OmniRoute", + "list": { + "description": "List policyer", + "kind": "Filtrer etter type (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrer etter omfang (global|api-key|provider)" + }, + "get": { + "description": "Hent policydetaljer etter ID" + }, + "create": { + "description": "Opprett en policy fra en JSON-fil", + "file": "Bane til JSON-fil med policy" + }, + "update": { + "description": "Oppdater en policy fra en JSON-fil", + "file": "Bane til JSON-fil med policy" + }, + "delete": { + "description": "Slett en policy etter ID", + "yes": "Hopp over bekreftelsesforespørselen" + }, + "evaluate": { + "description": "Testkjør policyevaluering (avslutningskode 0=allowed, 4=denied)", + "api_key": "API-nøkkel som skal evalueres", + "action": "Handling som skal kontrolleres (f.eks. chat, embed, admin)", + "resource": "Ressursbane eller identifikator", + "context": "Ytterligere kontekst som JSON-objekt" + }, + "export": { + "description": "Eksporter alle policyer til en JSON-fil" + }, + "import": { + "description": "Importer policyer fra en JSON-fil", + "overwrite": "Overskriv eksisterende policyer med samme ID" + } + }, + "compression": { + "description": "Konfigurer og inspiser komprimeringsforløpet i OmniRoute", + "status": { + "description": "Vis gjeldende komprimeringsstatus og -innstillinger" + }, + "configure": { + "description": "Konfigurer komprimeringsinnstillinger", + "engine": "Komprimeringsmotor (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-aggressivitet 0.0–1.0", + "rtk_budget": "RTK-tokenbudsjett", + "language_pack": "Språkpakke som skal aktiveres" + }, + "engine": { + "description": "Hent eller angi den aktive komprimeringsmotoren" + }, + "combos": { + "description": "Administrer statistikk for komprimeringskombinasjoner" + }, + "rules": { + "description": "Administrer komprimeringsregler", + "add": { + "pattern": "Mønster som skal samsvare (regex eller field:pattern)", + "action": "Handling: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Vis tilgjengelige språkpakker for komprimering" + }, + "preview": { + "description": "Forhåndsvis komprimeringseffekten på en forespørsel", + "file": "Bane til JSON-filen med forespørselen" + } + }, + "tunnel": { + "title": "Tunneler", + "listDescription": "Vis aktive tunneler", + "createDescription": "Opprett en tunnel", + "created": "Tunnel opprettet: {url}", + "stopped": "Tunnelen er stoppet.", + "confirmStop": "Stoppe tunnel {id}?", + "stopDescription": "Stopp en tunnel", + "statusDescription": "Vis detaljert status for en tunnel", + "logsDescription": "Vis logger for en tunnel", + "infoDescription": "Vis konfigurasjonsdetaljer for en tunnel", + "rotateDescription": "Generer en ny tunnel-URL", + "tailOpt": "Antall logglinjer som skal vises", + "typeRequired": "Tunneltype er påkrevd.", + "noLogs": "Ingen logger er tilgjengelige.", + "notAvailable": "Tunnelinformasjon er ikke tilgjengelig.", + "noTunnels": "Ingen aktive tunneler.", + "infoTitle": "Tunnelinformasjon: {type}", + "rotated": "Tunnel-URL rotert: {url}", + "confirmRotate": "Rotere tunnelen {type}? (en ny URL blir generert)" + }, + "stop": { + "description": "Stopp OmniRoute-serveren", + "stopping": "Stopper serveren (PID {pid})...", + "stopped": "Serveren er stoppet.", + "notRunning": "Ingen server kjører.", + "portFallback": "Ingen PID-fil ble funnet. Forsøker portbasert stopp..." + }, + "restart": { + "description": "Start OmniRoute-serveren på nytt", + "restarting": "Starter OmniRoute-serveren på nytt..." + }, + "dashboard": { + "description": "Åpne OmniRoute-kontrollpanelet i en nettleser", + "opening": "Åpner kontrollpanelet på {url}", + "urlOnly": "Skriv ut URL-en til kontrollpanelet uten å åpne nettleseren", + "tui": "Åpne interaktivt TUI-kontrollpanel (terminalgrensesnitt, 7 faner)" + }, + "models": { + "description": "Vis tilgjengelige modeller (krever server)", + "search": "Filtrer modeller etter ID, navn, leverandør eller beskrivelse", + "noServer": "Serveren kjører ikke. Start med: omniroute serve", + "noModels": "Ingen modeller funnet." + }, + "audit": { + "description": "Få tilgang til logger for samsvar og MCP-revisjon", + "source": "Loggkilde: all|compliance|mcp (standard: all)", + "since": "Returner oppføringer fra og med dette tidsstempelet (ISO 8601)", + "until": "Returner oppføringer frem til dette tidsstempelet (ISO 8601)", + "tail": { + "description": "Vis nylige oppføringer i revisjonsloggen", + "follow": "Følg nye oppføringer kontinuerlig (avspørring hvert 2. sekund)", + "limit": "Maksimalt antall oppføringer som skal vises (standard: 100)" + }, + "search": { + "description": "Søk etter oppføringer i revisjonsloggen med nøkkelord", + "limit": "Maksimalt antall resultater (standard: 200)", + "actor": "Filtrer etter aktør-ID", + "action": "Filtrer etter handlingsnavn" + }, + "export": { + "description": "Eksporter revisjonsloggen til en fil", + "format": "Utdataformat: jsonl|csv (standard: jsonl)" + }, + "stats": { + "description": "Vis statistikk for revisjonsloggen", + "period": "Tidsperiode: 1d|7d|30d (standard: 7d)" + }, + "get": { + "description": "Hent én oppføring i revisjonsloggen etter ID" + } + }, + "skills": { + "description": "Administrer OmniRoute-ferdigheter (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Vis installerte ferdigheter", + "type": "Filtrer etter type (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Vis bare aktiverte ferdigheter", + "disabled": "Vis bare deaktiverte ferdigheter", + "api_key": "Filtrer etter API-nøkkel" + }, + "get": { + "description": "Hent detaljer om en ferdighet etter ID" + }, + "install": { + "description": "Installer en ferdighet fra en fil eller URL", + "from_file": "Bane til JSON-definisjonsfilen for ferdigheten", + "from_url": "URL til ekstern ferdighetsdefinisjon", + "type": "Ferdighetstype (sandbox|custom|hybrid)", + "enable": "Aktiver ferdigheten etter installasjon" + }, + "enable": { + "description": "Aktiver en ferdighet etter ID" + }, + "disable": { + "description": "Deaktiver en ferdighet etter ID", + "yes": "Hopp over bekreftelsesmeldingen" + }, + "delete": { + "description": "Slett en ferdighet etter ID", + "yes": "Hopp over bekreftelsesmeldingen" + }, + "execute": { + "description": "Kjør en ferdighet etter ID", + "input": "JSON-inndataobjekt", + "input_file": "Bane til JSON-inndatafilen", + "timeout": "Tidsavbrudd for kjøring i ms (standard: 30000)" + }, + "executions": { + "description": "Vis kjøringshistorikk for ferdigheter", + "skill": "Filtrer etter ferdighets-ID", + "limit": "Maksimalt antall resultater (standard: 50)", + "status": "Filtrer etter status (running|completed|failed)" + }, + "skillssh": { + "description": "Administrer ferdigheter installert via SSH" + }, + "marketplace": { + "description": "Bla gjennom og installer ferdigheter fra markedsplassen" + }, + "mp": { + "search": { + "description": "Søk etter pakker på markedsplassen", + "category": "Filtrer etter kategori", + "tag": "Filtrer etter tagg", + "limit": "Maksimalt antall resultater (standard: 30)", + "sort": "Sorter etter: downloads|rating|recent" + }, + "info": { + "description": "Vis pakkedetaljer og readme" + }, + "install": { + "description": "Installer en pakke fra markedsplassen", + "version": "Pakkeversjon (standard: latest)", + "enable": "Aktiver etter installasjon", + "yes": "Hopp over bekreftelsesforespørsel" + }, + "categories": { + "description": "Vis kategorier på markedsplassen" + }, + "featured": { + "description": "Vis fremhevede pakker på markedsplassen" + } + } + }, + "memory": { + "description": "Administrer samtaleminnet i OmniRoute (FTS5 + vector)", + "search": { + "description": "Søk i minneoppføringer med semantisk spørring", + "type": "Filtrer etter minnetype (user|feedback|project|reference)", + "limit": "Maksimalt antall resultater (standard: 20)", + "api_key": "Filtrer etter API-nøkkel", + "token_budget": "Begrens totalt antall tokener i resultatene" + }, + "add": { + "description": "Legg til en ny minneoppføring", + "content": "Tekstinnhold i minnet", + "file": "Les innhold fra fil", + "type": "Minnetype (standard: user)", + "metadata": "JSON-metadataobjekt", + "api_key": "Knytt til API-nøkkel" + }, + "clear": { + "description": "Slett minneoppføringer som samsvarer med filtrene", + "type": "Filtrer etter type", + "older": "Slett oppføringer eldre enn angitt varighet (30d, 6m, 1y)", + "api_key": "Filtrer etter API-nøkkel", + "yes": "Hopp over bekreftelsesforespørsel" + }, + "list": { + "description": "Vis minneoppføringer uten søkerangering", + "type": "Filtrer etter type", + "limit": "Maksimalt antall resultater (standard: 100)", + "api_key": "Filtrer etter API-nøkkel" + }, + "get": { + "description": "Hent én minneoppføring etter ID" + }, + "delete": { + "description": "Slett en minneoppføring etter ID", + "yes": "Hopp over bekreftelsesforespørsel" + }, + "health": { + "description": "Vis tilstanden til minneundersystemet (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Administrer tilkoblinger til OAuth-leverandører", + "providers": { + "description": "Vis leverandører som støtter OAuth, og flyttypene deres" + }, + "start": { + "description": "Start OAuth-autorisasjonsflyten for en leverandør", + "provider": "Leverandør-ID (gemini, copilot, cursor, …)", + "no_browser": "Skriv bare ut URL-en — ikke åpne nettleseren", + "import_system": "Importer legitimasjon automatisk fra lokal systemkonfigurasjon", + "social": "Leverandør for sosial pålogging (google|github) — påkrevd for kiro", + "timeout": "Tidsavbrudd i ms ved venting på autorisasjon (standard: 300000)" + }, + "status": { + "description": "Vis aktive OAuth-tilkoblinger", + "provider": "Filtrer etter leverandør-ID" + }, + "revoke": { + "description": "Tilbakekall en OAuth-tilkobling", + "provider": "Leverandør-ID som skal tilbakekalles", + "connection_id": "Tilbakekall en bestemt tilkobling etter ID", + "yes": "Hopp over bekreftelsesforespørsel" + } + }, + "cloud": { + "description": "Administrer oppgaver for skybaserte AI-agenter (codex, devin, jules)", + "agents": { + "description": "Vis tilgjengelige skyagenter" + }, + "agent": { + "description": "Administrer oppgaver for skyagenten {agent}", + "auth": { + "description": "Autoriser {agent} via OAuth" + } + }, + "task": { + "description": "Administrer oppgaver for skyagenter", + "create": { + "description": "Opprett en ny agentoppgave", + "title": "Oppgavetittel (bruker som standard de første 80 tegnene i instruksen)", + "prompt": "Tekst for oppgaveinstruks", + "prompt_file": "Les instruks fra fil", + "repo": "URL til repositoriet som skal klones for oppgaven", + "branch": "Grennavn som skal brukes", + "metadata": "JSON-metadataobjekt" + }, + "list": { + "description": "Vis agentoppgaver", + "status": "Filtrer etter status (running|completed|failed|cancelled)", + "limit": "Maksimalt antall resultater (standard: 50)" + }, + "get": { + "description": "Hent oppgavedetaljer etter ID" + }, + "status": { + "description": "Skriv ut oppgavestatus (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Avbryt en kjørende oppgave", + "yes": "Hopp over bekreftelsesforespørsel" + }, + "approve": { + "description": "Godkjenn agentplanen for å starte kjøringen" + }, + "message": { + "description": "Send en melding til en kjørende oppgave" + } + }, + "sources": { + "description": "Vis kildefiler produsert av en oppgave" + } + }, + "eval": { + "description": "Administrer evalueringspakker og kjøringer", + "suites": { + "description": "Administrer evalueringspakker", + "list": { + "description": "List evalueringssett" + }, + "get": { + "description": "Hent detaljer om evalueringssett etter ID" + }, + "create": { + "description": "Opprett et evalueringssett fra en JSON-fil", + "file": "Bane til JSON-filen med definisjonen av settet" + } + }, + "run": { + "description": "Start en evalueringskjøring for et sett", + "model": "Modell-ID som skal evalueres (standard: auto)", + "combo": "Tving bruk av en bestemt kombinasjon etter navn", + "concurrency": "Antall samtidige eksempler (standard: 4)", + "tag": "Merk denne kjøringen for senere filtrering", + "watch": "Følg fremdriften til kjøringen er fullført" + }, + "list": { + "description": "List evalueringskjøringer", + "suite": "Filtrer etter sett-ID", + "status": "Filtrer etter status", + "since": "Returner kjøringer siden dette tidsstempelet", + "limit": "Maksimalt antall resultater (standard: 50)" + }, + "get": { + "description": "Hent detaljer om evalueringskjøring etter ID" + }, + "results": { + "description": "Vis eksempelresultater for en evalueringskjøring", + "failed": "Vis bare mislykkede eksempler" + }, + "cancel": { + "description": "Avbryt en pågående evaluering", + "yes": "Hopp over bekreftelsesforespørselen" + }, + "scorecard": { + "description": "Vis poengkortet for en fullført evalueringskjøring" + } + }, + "webhooks": { + "description": "Administrer OmniRoute-webhooks", + "events": { + "description": "List alle tilgjengelige hendelsestyper for webhooks" + }, + "list": { + "description": "List konfigurerte webhooks" + }, + "get": { + "description": "Hent detaljer om webhook etter ID" + }, + "add": { + "description": "Registrer en ny webhook", + "url": "Måladresse (URL)", + "events": "Kommaseparert liste over hendelsestyper", + "secret": "HMAC-signeringshemmelighet", + "header": "Ekstra topptekst i formatet key=value (kan gjentas)", + "no_enabled": "Opprett webhook i deaktivert tilstand" + }, + "update": { + "description": "Oppdater en eksisterende webhook", + "enabled": "Angi aktivert tilstand (true|false)" + }, + "remove": { + "description": "Slett en webhook", + "yes": "Hopp over bekreftelsesforespørselen" + }, + "test": { + "description": "Send en testhendelse til en webhook", + "event": "Hendelsestype som skal simuleres (standard: request.completed)" + } + }, "program": { "description": "OmniRoute — Smart AI-ruter med automatisk fallback", "version": "Skriv ut versjon og avslutt", @@ -26,7 +832,509 @@ "context": "Serverkontekst/profil for denne kommandoen", "lang": "Angi CLI-visningsspråk (overstyrer OMNIROUTE_LANG)" }, - "redis": { - "description": "Start en lokal Redis-beholder med ett klikk (Podman eller Docker) for OmniRoute-hurtigbufring og kvotesporing" + "files": { + "description": "Administrer filer (last opp, list, hent, last ned, slett)", + "list": { + "purpose": "Filtrer etter formål", + "limit": "Maksimalt antall resultater" + }, + "get": { + "description": "Hent filmetadata" + }, + "upload": { + "description": "Last opp en fil", + "purpose": "Filformål (batch, assistants, fine-tune)" + }, + "content": { + "description": "Last ned filinnhold", + "out": "Lagre til bane (standard: stdout)" + }, + "delete": { + "yes": "Hopp over bekreftelse" + } + }, + "batches": { + "description": "Administrer OpenAI-kompatible batchjobber", + "list": { + "status": "Filtrer etter status", + "limit": "Maks. antall resultater" + }, + "create": { + "description": "Opprett en batchjobb", + "inputFile": "ID for inndatafil", + "endpoint": "Målendepunkt", + "window": "Fullføringsvindu", + "metadata": "Legg til metadata key=value" + }, + "submit": { + "description": "Last opp JSONL-fil og opprett batch", + "jsonl": "Bane til JSONL-fil", + "endpoint": "Målendepunkt", + "wait": "Vent til fullføring" + }, + "cancel": { + "yes": "Hopp over bekreftelse" + }, + "wait": { + "timeout": "Tidsavbrudd i ms" + }, + "output": { + "out": "Lagre utdata til bane" + }, + "errors": { + "out": "Lagre feil til bane" + } + }, + "translator": { + "description": "Oversett forespørselskropper mellom LLM-formater", + "detect": { + "description": "Identifiser formatet på forespørselskroppen" + }, + "translate": { + "description": "Konverter forespørselskroppen fra ett format til et annet" + }, + "send": { + "description": "Oversett og send videre til oppstrømstjenesten" + }, + "stream": { + "description": "Strømmeoversett en forespørselskropp" + }, + "from": "Kildeformat (openai|anthropic|gemini|cohere)", + "to": "Målformat (openai|anthropic|gemini|cohere)", + "file": "Bane til JSON-fil med forespørselskropp", + "out": "Lagre utdata til fil", + "model": "Overstyr modell", + "history": { + "limit": "Maks. antall resultater" + } + }, + "pricing": { + "description": "Administrer prisdata for modeller", + "sync": { + "description": "Synkroniser priser fra oppstrømskilder", + "provider": "Filtrer etter leverandør", + "force": "Tving ny synkronisering" + }, + "list": { + "provider": "Filtrer etter leverandør", + "model": "Filtrer etter modell", + "limit": "Maks. antall resultater" + }, + "defaults": { + "description": "Administrer standardpriser", + "input": "Kostnad for inndata per 1 mill. tokener (USD)", + "output": "Kostnad for utdata per 1 mill. tokener (USD)", + "cacheRead": "Kostnad for hurtigbufferlesing per 1 mill. tokener (USD)", + "cacheWrite": "Kostnad for hurtigbufferskriving per 1 mill. tokener (USD)" + }, + "diff": { + "description": "Vis avvik fra oppstrømspriser", + "model": "Filtrer etter modell" + } + }, + "radar": { + "description": "Inspiser og synkroniser de lokale Radar-katalogfeedene", + "status": "Vis lokale Radar-innstillinger og status for feedhurtigbuffer", + "sync": "Synkroniser katalog, henvisninger, tilbud og Intel via den lokale serveren" + }, + "resilience": { + "description": "Inspiser og administrer robusthetsmekanismer", + "status": { + "provider": "Filtrer etter leverandør" + }, + "breakers": { + "provider": "Filtrer etter leverandør" + }, + "cooldowns": { + "provider": "Filtrer etter leverandør", + "connectionId": "Filtrer etter tilkoblings-ID" + }, + "lockouts": { + "provider": "Filtrer etter leverandør", + "model": "Filtrer etter modell" + }, + "reset": { + "description": "Tilbakestill tilstanden for kretsbryter/nedkjøling", + "provider": "Leverandør som skal tilbakestilles", + "connectionId": "Tilkoblings-ID som skal tilbakestilles", + "model": "Modell som sperren skal oppheves for", + "allCooldowns": "Tilbakestill alle nedkjølingsperioder for leverandøren", + "yes": "Hopp over bekreftelse" + }, + "profile": { + "description": "Administrer robusthetsprofil", + "name": "Profilnavn" + }, + "config": { + "description": "Administrer robusthetskonfigurasjon", + "threshold": "Feilgrense", + "resetTimeout": "Tidsavbrudd for tilbakestilling i ms", + "baseCooldown": "Grunnleggende nedkjølingsperiode i ms" + } + }, + "nodes": { + "description": "Administrer leverandørnoder (endepunkter)", + "list": { + "provider": "Filtrer etter leverandør", + "enabled": "Vis bare aktiverte noder" + }, + "add": { + "provider": "Leverandørnavn", + "baseUrl": "Basis-URL for noden", + "name": "Nodenavn", + "weight": "Vekt for lastbalansering", + "region": "Regionkode", + "authHeader": "Egendefinert autentiseringshode (key=value)" + }, + "update": { + "baseUrl": "Ny basis-URL", + "name": "Nytt navn", + "weight": "Ny vekt", + "region": "Ny region", + "enabled": "Aktiver eller deaktiver (true|false)" + }, + "remove": { + "yes": "Hopp over bekreftelse" + }, + "validate": { + "baseUrl": "URL som skal valideres", + "provider": "Leverandør det skal valideres mot" + }, + "test": { + "description": "Send testforespørsel til node" + }, + "metrics": { + "description": "Vis nodemålinger", + "period": "Tidsperiode (f.eks. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurer kontekstutviklingspipeline (Caveman, RTK)", + "analytics": { + "period": "Tidsperiode (f.eks. 7d, 30d)" + }, + "caveman": { + "description": "Administrer Caveman-kontekstkomprimering", + "config": { + "description": "Vis eller oppdater Caveman-konfigurasjonen", + "aggressiveness": "Aggressivitet 0.0–1.0", + "maxShrinkPct": "Maksimal reduksjonsprosent", + "preserveTags": "Kommaseparerte tagger som skal bevares" + } + }, + "rtk": { + "description": "Administrer RTK-kontekstoptimalisering", + "config": { + "description": "Vis eller oppdater RTK-konfigurasjonen", + "tokenBudget": "Tokenbudsjett for RTK", + "reservePct": "Reserveprosent" + }, + "filters": { + "description": "Administrer RTK-filtre", + "pattern": "Filtermønster (regex)", + "priority": "Filterprioritet (standard: 100)", + "action": "Filterhandling: drop|shrink|replace", + "yes": "Hopp over bekreftelse" + }, + "test": { + "file": "Bane til JSON-fil med forespørsel" + } + }, + "combos": { + "description": "Kontekstbevisst kombinasjonsadministrasjon" + } + }, + "sessions": { + "description": "Inspiser og administrer aktive økter", + "list": { + "user": "Filtrer etter bruker", + "kind": "Filtrer etter type (dashboard|api-key|mcp|a2a)", + "active": "Vis bare aktive økter", + "limit": "Maksimalt antall resultater (standard: 100)" + }, + "expire": { + "yes": "Hopp over bekreftelse" + }, + "expireAll": { + "user": "Brukeren hvis økter skal utløpe", + "yes": "Hopp over bekreftelse" + } + }, + "tags": { + "description": "Administrer ressurstagger", + "add": { + "color": "Taggfarge (hex eller navn)", + "description": "Taggbeskrivelse" + }, + "remove": { + "yes": "Hopp over bekreftelse" + }, + "assign": { + "tag": "Taggnavn", + "to": "Målressurs som type:id (f.eks. provider:openai)" + }, + "unassign": { + "tag": "Taggnavn", + "from": "Kilderessurs som type:id" + } + }, + "openapi": { + "description": "Få tilgang til og test OmniRoute OpenAPI-spesifikasjonen", + "dump": { + "description": "Skriv OpenAPI-spesifikasjonen til stdout eller en fil", + "format": "Utdataformat: yaml|json (standard: yaml)", + "out": "Lagre til filbane" + }, + "validate": { + "description": "Valider OpenAPI-spesifikasjonen" + }, + "try": { + "description": "Test et API-endepunkt via spesifikasjonen", + "method": "HTTP-metode (standard: GET)", + "body": "Bane til JSON-filen med forespørselsdata", + "query": "Spørringsparameter som key=value (kan gjentas)", + "header": "Topptekst som key=value (kan gjentas)" + }, + "endpoints": { + "description": "Vis alle API-endepunkter", + "search": "Filtrer etter bane eller sammendrag" + }, + "paths": { + "description": "Vis alle API-baner" + } + }, + "combo": { + "title": "Kombinasjoner", + "switched": "Aktiv kombinasjon: {name}", + "created": "Kombinasjon opprettet: {name}", + "deleted": "Kombinasjon slettet: {name}", + "noCombos": "Ingen kombinasjoner er konfigurert.", + "confirmDelete": "Slette kombinasjonen {name}?", + "suggest": { + "description": "Foreslå den beste kombinasjonen for en oppgave ved hjelp av AI-poengberegning", + "task": "Oppgavebeskrivelse", + "maxCost": "Maksimal kostnad per forespørsel i USD", + "maxLatencyMs": "Maksimal ventetid i millisekunder", + "weights": "JSON-vekter for poengberegning, f.eks. {\"latency\":0.7,\"cost\":0.3}", + "top": "Antall toppkandidater som skal vises (standard: 5)", + "explain": "Skriv begrunnelsen til stderr", + "switch": "Aktiver den høyest rangerte kombinasjonen" + } + }, + "oneproxy": { + "description": "Administrer oppstrømsservergruppen for OneProxy", + "stats": { + "provider": "Filtrer etter leverandør", + "period": "Tidsperiode (standard: 24h)" + }, + "fetch": { + "description": "Hent proxyer fra gruppen", + "count": "Antall proxyer som skal hentes (standard: 1)", + "type": "Proxytype: http|socks5 (standard: http)" + }, + "rotate": { + "description": "Tving proxyrotasjon", + "provider": "Leverandør det skal roteres for", + "connectionId": "Spesifikk tilkoblings-ID som skal roteres" + }, + "config": { + "description": "Vis eller oppdater OneProxy-konfigurasjonen", + "enabled": "Aktiver proxy-pool (true|false)", + "poolSize": "Poolstørrelse", + "providerSource": "URL til proxy-leverandør", + "rotationPolicy": "Rotasjonspolicy: sticky|per-request|periodic" + }, + "pool": { + "description": "Vis gjeldende proxy-pool med måledata" + } + }, + "open": { + "description": "Åpne en bestemt OmniRoute-dashboardside i nettleseren", + "url": "Skriv bare ut URL-en, ikke åpne nettleseren" + }, + "telemetry": { + "description": "Få tilgang til aggregerte telemetridata", + "summary": { + "description": "Vis sammendrag av aggregerte telemetridata", + "period": "Tidsperiode: 24h|7d|30d (standard: 24h)", + "compareTo": "Sammenlign med forrige periode" + }, + "export": { + "description": "Eksporter telemetrihendelser til JSONL", + "out": "Filbane for utdata (standard: telemetry.jsonl)", + "period": "Tidsperiode for eksport (standard: 7d)" + } + }, + "sync": { + "description": "Synkroniser konfigurasjon mellom OmniRoute-forekomster", + "push": { + "description": "Send konfigurasjon til skyen eller en ekstern forekomst", + "target": "Mål (cloud eller context:name)", + "bundle": "Pakkedeler som skal synkroniseres", + "dryRun": "Forhåndsvis uten å bruke endringene" + }, + "pull": { + "description": "Hent konfigurasjon fra skyen eller en ekstern forekomst", + "source": "Kilde (cloud eller context:name)", + "merge": "Slå sammen med eksisterende konfigurasjon", + "replace": "Erstatt eksisterende konfigurasjon", + "dryRun": "Forhåndsvis uten å bruke endringene" + }, + "diff": { + "source": "Kildekontekst", + "target": "Målkontekst" + }, + "bundle": { + "description": "Eksporter konfigurasjon som en pakkefil", + "include": "Deler som skal inkluderes (kommadelt)" + }, + "import": { + "description": "Importer en pakkefil", + "dryRun": "Valider uten å bruke endringene" + }, + "initialize": { + "fromCloud": "Initialiser fra sikkerhetskopi i skyen" + }, + "tokens": { + "description": "Administrer synkroniseringstokener", + "create": { + "name": "Tokennavn", + "scope": "Tokenomfang", + "ttl": "Tokenets TTL (f.eks. 30d)" + }, + "revoke": { + "yes": "Hopp over bekreftelse" + } + }, + "resolve": { + "description": "Løs synkroniseringskonflikter interaktivt" + } + }, + "config": { + "contexts": { + "description": "Administrer serverkontekster/-profiler (legg til, bruk, vis liste, vis detaljer, fjern, gi nytt navn, eksporter, importer)" + }, + "lang": { + "description": "Administrer visningsspråk for CLI", + "getDescription": "Vis koden for språket som er aktivt nå", + "setDescription": "Angi visningsspråket og lagre det i konfigurasjonen", + "listDescription": "Vis alle tilgjengelige språk", + "listTitle": "Tilgjengelige språk", + "current": "Språk: {code} ({name})", + "saved": "Språket er satt til {code} ({name}).", + "noCode": "Språkkode er påkrevd. Kjør 'omniroute config lang list' for å se tilgjengelige koder.", + "unknown": "Ukjent språkkode: {code}. Kjør 'omniroute config lang list' for å se tilgjengelige koder.", + "alreadySet": "Språket er allerede satt til {code}.", + "envHint": "Tips: Du kan også angi OMNIROUTE_LANG={code} i miljøet ditt." + } + }, + "completion": { + "description": "Generer eller installer skript for skallfullføring", + "zsh": "Skriv ut skript for zsh-fullføring", + "bash": "Skriv ut skript for bash-fullføring", + "fish": "Skriv ut skript for fish-fullføring", + "install": "Installer fullføringsskriptet globalt for det oppdagede skallet", + "refresh": "Oppdater mellomlageret for kombinasjoner/leverandører/modeller" + }, + "logs": { + "description": "Strøm eller eksporter forespørselslogger", + "follow": "Strøm logger i sanntid", + "filter": "Filtrer etter nivå (error,warn,info) – kommaseparert", + "lines": "Antall linjer som skal hentes", + "timeout": "Tidsavbrudd for tilkobling i ms", + "baseUrl": "Basis-URL for OmniRoute API", + "requestId": "Filtrer etter forespørsels-ID", + "apiKey": "Filtrer etter API-nøkkel", + "combo": "Filtrer etter kombinasjonsnavn", + "status": "Filtrer etter HTTP-statuskode", + "durationMin": "Minste forespørselsvarighet i ms", + "durationMax": "Største forespørselsvarighet i ms", + "export": "Lagre logger i fil (json/jsonl/csv)", + "exported": "Logger lagret i {path}", + "stopped": "Loggstrømmingen er stoppet.", + "streamError": "Feil i loggstrømmen: {message}" + }, + "tray": { + "description": "Kontroller systemstatusfeltikonet", + "show": "Vis statusfeltikonet (hvis serveren kjører med --tray)", + "hide": "Skjul statusfeltikonet", + "quit": "Avslutt OmniRoute via statusfeltet" + }, + "autostart": { + "description": "Administrer automatisk oppstart av OmniRoute ved systemoppstart (Linux: systemd-brukertjeneste)", + "enable": "Aktiver automatisk oppstart ved systemoppstart", + "disable": "Deaktiver automatisk oppstart ved systemoppstart", + "toggle": "Slå automatisk oppstart ved systemoppstart av eller på", + "status": "Vis status for automatisk oppstart" + }, + "runtime": { + "description": "Administrer native kjøretidsavhengigheter", + "check": "Kontroller statusen for native avhengigheter i kjøretidskatalogen", + "repair": "Installer native avhengigheter på nytt i kjøretidskatalogen", + "repair_force": "Tving ny installasjon selv om de er gyldige", + "clean": "Fjern kjøretidskatalogen (frigjør diskplass)", + "clean_yes": "Hopp over bekreftelse" + }, + "repl": { + "description": "Interaktiv REPL med flere runder og LLM", + "model": "Modell som skal brukes (standard: auto)", + "combo": "Kombinasjonsnavn som skal brukes", + "system": "Systeminstruksjon", + "resume": "Gjenoppta en lagret økt etter navn" + }, + "plugin": { + "description": "Administrer CLI-programtillegg (omniroute-cmd-*)", + "list": "Vis installerte programtillegg", + "install": "Installer et programtillegg fra npm eller en lokal bane", + "remove": "Fjern et installert programtillegg", + "info": "Vis detaljer om et installert programtillegg", + "search": "Søk i npm-registeret etter tilgjengelige programtillegg", + "update": "Oppdater installerte programtillegg", + "scaffold": "Opprett en grunnstruktur for et nytt programtillegg" + }, + "launch": { + "description": "Start Claude Code koblet til OmniRoute (lokalt eller eksternt, med --profile)", + "token": "Tokenet som Claude-klienten skal sende (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute er ikke tilgjengelig på {port}. Start den med 'omniroute serve'.", + "notFound": "'claude'-CLI-en ble ikke funnet i PATH." + }, + "run": { + "description": "Start et støttet CLI-mål gjennom OmniRoute" + }, + "setupClaude": { + "description": "Generer Claude Code-profiler i ~/.claude/profiles fra OmniRoute-modellkatalogen" + }, + "connect": { + "description": "Koble til en ekstern OmniRoute-server og gå inn i ekstern modus" + }, + "tokens": { + "description": "Administrer omfangsbegrensede CLI-tilgangstokener (ekstern modus)" + }, + "configure": { + "description": "Velg en leverandør og modell fra den aktive serveren, og konfigurer en støttet lokal CLI" + }, + "launchCodex": { + "description": "Start Codex CLI koblet til OmniRoute (lokalt eller på ekstern VPS)" + }, + "setupCodex": { + "description": "Generer profilfiler i ~/.codex fra OmniRoutes aktive modellkatalog" + }, + "packs": { + "description": "Administrer valgfrie kjøretidspakker (ML / nettleserautomatisering)", + "listDescription": "Vis valgfrie pakker og installasjonsstatusen deres", + "installDescription": "Installer en valgfri pakke i DATA_DIR", + "verifyDescription": "Verifiser installerte pakker mot den medfølgende kontrollsumindeksen", + "removeDescription": "Fjern en installert valgfri pakke", + "sourceOpt": "Katalog som inneholder pakkenes nyttelast og pakkeindeksen", + "warnNoIndex": "optional-packs.index.json ble ikke funnet — installasjon/verifisering er utilgjengelig i denne utsjekkingen (skrivebordspakker inkluderer den)", + "errUnknown": "ukjent pakke: {name}", + "errNoIndex": "pakkeindeksen ble ikke funnet; angi --source som inneholder pakkenyttelasten (skrivebordspakker inkluderer den ved siden av appen)", + "installed": "pakken «{name}» er installert og verifisert i {dir}", + "restartHint": "start OmniRoute-serveren (eller skrivebordsappen) på nytt, slik at kjøremiljøet registrerer pakken", + "removed": "pakken «{name}» ble fjernet", + "notInstalled": "pakken «{name}» var ikke installert", + "verifyOk": "alle installerte pakker er verifisert", + "verifyFailed": "{count} pakke(r) besto ikke verifiseringen", + "noneInstalled": "ingen valgfrie pakker er installert" } } diff --git a/bin/cli/locales/or.json b/bin/cli/locales/or.json index c111950489..c6ba2a6eaa 100644 --- a/bin/cli/locales/or.json +++ b/bin/cli/locales/or.json @@ -256,6 +256,7 @@ "max_restarts": "ହାର ମାନିବା ପୂର୍ବରୁ 30s ମଧ୍ୟରେ ସର୍ବାଧିକ କ୍ରାଶ୍ ପୁନଃଆରମ୍ଭ ସଂଖ୍ୟା (ଡିଫଲ୍ଟ: 2)", "tray": "ସିଷ୍ଟମ୍ ଟ୍ରେରେ ଆରମ୍ଭ କରନ୍ତୁ (କେବଳ ଡେସ୍କଟପ୍, ଇଚ୍ଛାଧୀନ)", "no_tray": "ସିଷ୍ଟମ୍ ଟ୍ରେ ଆଇକନ୍ ଅକ୍ଷମ କରନ୍ତୁ", + "ready_timeout": "ମିଲିସେକେଣ୍ଡରେ ପ୍ରସ୍ତୁତି ପ୍ରୋବ୍ର ସମୟସୀମା (OMNIROUTE_READY_TIMEOUT_MS ମଧ୍ୟ, ଡିଫଲ୍ଟ 60000)", "tls_cert": "HTTPS ପରିବେଷଣ ପାଇଁ TLS ସର୍ଟିଫିକେଟ୍ (PEM)ର ପଥ (OMNIROUTE_TLS_CERT ମଧ୍ୟ)", "tls_key": "HTTPS ପରିବେଷଣ ପାଇଁ TLS ବ୍ୟକ୍ତିଗତ କୀ (PEM)ର ପଥ (OMNIROUTE_TLS_KEY ମଧ୍ୟ)" }, @@ -347,6 +348,16 @@ "running": "MCP ସର୍ଭର ଚାଲୁଛି ({transport})", "stopped": "MCP ସର୍ଭର ବନ୍ଦ ହୋଇଛି।", "restarted": "MCP ସର୍ଭର ପୁନଃଚାଲୁ ହୋଇଛି।", + "stoppedHint": "ଏହାକୁ ସକ୍ରିୟ କରିବା ପାଇଁ `omniroute mcp enable` ଚଲାନ୍ତୁ।", + "enabled": "MCP ସର୍ଭର୍ ସକ୍ରିୟ ହୋଇଛି।", + "disabled": "MCP ସର୍ଭର୍ ନିଷ୍କ୍ରିୟ ହୋଇଛି।", + "enable": { + "description": "MCP ସର୍ଭର୍କୁ ସକ୍ରିୟ କରନ୍ତୁ", + "transport": "ବ୍ୟବହାର କରିବାକୁ ଥିବା ପରିବହନ: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP ସର୍ଭର୍କୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ" + }, "call": { "description": "ସିଧାସଳଖ ଏକ MCP ଟୁଲ୍ ଆହ୍ୱାନ କରନ୍ତୁ", "args": "JSON ଆର୍ଗୁମେଣ୍ଟ ଅବଜେକ୍ଟ (ଇନ୍‌ଲାଇନ୍)", diff --git a/bin/cli/locales/pa.json b/bin/cli/locales/pa.json index 79c01f4de0..7eae474875 100644 --- a/bin/cli/locales/pa.json +++ b/bin/cli/locales/pa.json @@ -256,6 +256,7 @@ "max_restarts": "ਹਾਰ ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ 30s ਦੇ ਅੰਦਰ ਕ੍ਰੈਸ਼ ਤੋਂ ਬਾਅਦ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ (ਡਿਫਾਲਟ: 2)", "tray": "ਸਿਸਟਮ ਟਰੇ ਵਿੱਚ ਸ਼ੁਰੂ ਕਰੋ (ਸਿਰਫ਼ ਡੈਸਕਟਾਪ, ਚੋਣਵਾਂ)", "no_tray": "ਸਿਸਟਮ ਟਰੇ ਆਈਕਨ ਅਸਮਰੱਥ ਕਰੋ", + "ready_timeout": "ਰੈਡੀਨੈੱਸ ਪ੍ਰੋਬ ਦਾ ਟਾਈਮਆਉਟ ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ (OMNIROUTE_READY_TIMEOUT_MS ਵੀ, ਡਿਫਾਲਟ 60000)", "tls_cert": "HTTPS ਸਰਵ ਕਰਨ ਲਈ TLS ਸਰਟੀਫਿਕੇਟ (PEM) ਦਾ ਪਾਥ (OMNIROUTE_TLS_CERT ਵੀ)", "tls_key": "HTTPS ਸਰਵ ਕਰਨ ਲਈ TLS ਨਿੱਜੀ ਕੁੰਜੀ (PEM) ਦਾ ਪਾਥ (OMNIROUTE_TLS_KEY ਵੀ)" }, @@ -347,6 +348,16 @@ "running": "MCP ਸਰਵਰ ਚੱਲ ਰਿਹਾ ਹੈ ({transport})", "stopped": "MCP ਸਰਵਰ ਰੋਕਿਆ ਗਿਆ।", "restarted": "MCP ਸਰਵਰ ਮੁੜ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।", + "stoppedHint": "ਇਸਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ `omniroute mcp enable` ਚਲਾਓ।", + "enabled": "MCP ਸਰਵਰ ਚਾਲੂ ਹੈ।", + "disabled": "MCP ਸਰਵਰ ਬੰਦ ਹੈ।", + "enable": { + "description": "MCP ਸਰਵਰ ਚਾਲੂ ਕਰੋ", + "transport": "ਵਰਤਣ ਲਈ ਟ੍ਰਾਂਸਪੋਰਟ: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP ਸਰਵਰ ਬੰਦ ਕਰੋ" + }, "call": { "description": "ਕਿਸੇ MCP ਟੂਲ ਨੂੰ ਸਿੱਧੇ ਚਲਾਓ", "args": "JSON ਆਰਗੂਮੈਂਟ ਆਬਜੈਕਟ (ਇਨਲਾਈਨ)", diff --git a/bin/cli/locales/phi.json b/bin/cli/locales/phi.json index 2ee58428ea..99439697d5 100644 --- a/bin/cli/locales/phi.json +++ b/bin/cli/locales/phi.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "Error: {message}", + "serverOffline": "Offline ang OmniRoute server. Simulan ito gamit ang: omniroute serve", + "authRequired": "Kinakailangan ang authentication. Itakda ang OMNIROUTE_API_KEY o patakbuhin ang: omniroute setup", + "rateLimited": "Lumampas sa limitasyon ng rate. Subukan muli pagkalipas ng {seconds}s.", + "timeout": "Nag-timeout ang request pagkalipas ng {ms}ms.", + "success": "Tapos na.", + "yes": "oo", + "no": "hindi", + "confirm": "Sigurado ka ba? (oo/hindi)", + "dryRun": "[dry-run] isasagawa sana ang {action}", + "cancelled": "Kinansela.", + "jsonOpt": "I-output bilang JSON", + "yesOpt": "Laktawan ang prompt sa pagkumpirma" + }, + "setup": { + "title": "Pag-setup ng OmniRoute", + "passwordPrompt": "Password ng admin", + "providerPrompt": "Default na provider (iwanang blangko para laktawan)", + "done": "Kumpleto na ang pag-setup", + "passwordSet": "Na-configure na ang password ng admin", + "providerSet": "Na-configure ang provider: {name}", + "testingProvider": "Sinusubukan ang koneksyon sa provider: {name}", + "testPassed": "Pumasa ang pagsubok sa provider", + "testFailed": "Nabigo ang pagsubok sa provider: {error}", + "loginEnabled": "Pag-login: naka-enable (na-update ang password)", + "loginDisabled": "Pag-login: naka-disable", + "providerInfo": "Provider: {info}", + "opencode": "I-install at i-configure ang kasamang @omniroute/opencode-plugin para sa OpenCode" + }, + "doctor": { + "title": "OmniRoute Doctor", + "dbOk": "Database: OK ({path})", + "dbMissing": "Database: hindi pa nasisimulan — patakbuhin ang `omniroute setup`", + "portOk": "Port {port}: available", + "portConflict": "Port {port}: ginagamit ng ibang proseso", + "encryptionOk": "Encryption key: naka-configure", + "encryptionMissing": "Nawawala ang encryption key — patakbuhin ang `omniroute setup`", + "allGood": "Pumasa ang lahat ng pagsusuri.", + "warnings": "{count} babala — tingnan sa itaas." + }, + "providers": { + "title": "Mga Provider", + "noProviders": "Walang naka-configure na provider. Patakbuhin ang: omniroute setup", + "testing": "Sinusubukan ang {name}...", + "available": "{count} provider ang available", + "connected": "Nakakonekta", + "disconnected": "Hindi nakakonekta", + "validationFailed": "Nabigo ang pagpapatunay: {error}", + "metrics": { + "description": "Ipakita ang mga sukatan ng performance ng provider (latency, rate ng tagumpay, gastos)", + "provider": "I-filter ayon sa provider ID", + "connection_id": "I-filter ayon sa connection ID", + "period": "Yugto ng panahon: 1h|6h|24h|7d|30d (default: 24h)", + "metric": "Tumutok sa isang partikular na field ng sukatan", + "sort": "Pagbukud-bukurin ayon sa field (pababang ayos)", + "limit": "Pinakamaraming row (default: 50)", + "watch": "I-refresh bawat 5s (live mode)", + "compare": "Mga provider ID na pinaghihiwalay ng kuwit para paghambingin nang magkatabi" + }, + "metric_single": { + "description": "Kumuha ng isang value ng sukatan para sa isang partikular na koneksyon" + }, + "rotate": { + "description": "Palitan ang upstream API key para sa isang koneksyon ng provider", + "newKeyOpt": "Bagong value ng API key (iwasan: mas piliin ang --from-env)", + "fromEnvOpt": "Basahin ang bagong key mula sa environment variable na VAR", + "oauthOpt": "Sa halip, simulan ang daloy ng muling pagpapatunay ng OAuth", + "skipTestOpt": "Laktawan ang connectivity test pagkatapos palitan ang key", + "dryRunOpt": "Ipakita kung ano ang magbabago nang hindi nagsusulat", + "confirmPrompt": "Palitan ang API key para sa koneksyong \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Papalitan sana ang key para sa \"{name}\" ({id}). Walang ginawang pagbabago.", + "oauthHint": "Koneksyong OAuth — patakbuhin: omniroute oauth {provider}", + "envVarEmpty": "Hindi nakatakda o walang laman ang environment variable na {var}.", + "success": "Napalitan ang key para sa \"{name}\". Patakbuhin ang `providers test {id}` para beripikahin.", + "testPassed": "Pumasa ang test pagkatapos palitan ang key.", + "testFailed": "Nabigo ang test pagkatapos palitan ang key: {error}" + }, + "status": { + "description": "Ipakita ang kalagayan ng key para sa lahat ng koneksyon ng provider (tagal, expiration, cooldown)", + "providerOpt": "I-filter ayon sa pangalan ng provider", + "header": "ID Provider Pangalan Status ng Expiration Status ng Test Cooldown Hanggang", + "noData": "Walang available na data ng koneksyon ng provider.", + "requiresServer": "Kailangang tumatakbo ang server ng OmniRoute para sa providers status." + } + }, + "keys": { + "title": "Mga API Key", + "addDescription": "Magdagdag o mag-update ng API key para sa isang provider", + "listDescription": "Ilista ang lahat ng naka-configure na API key", + "removeDescription": "Alisin ang API key para sa isang provider", + "regenerateDescription": "Muling bumuo ng OmniRoute API key", + "revokeDescription": "Bawiin ang OmniRoute API key", + "revealDescription": "Ipakita ang hindi natatakpang value ng API key", + "usageDescription": "Ipakita ang kamakailang paggamit ng isang API key", + "usageLimitOpt": "Bilang ng mga kamakailang request", + "rotateDescription": "Bumuo ng bagong key at gawing invalid ang luma", + "graceOpt": "Palugit (ms) bago mawalan ng bisa ang lumang key", + "stdinOpt": "Basahin ang API key mula sa stdin sa halip na sa argument", + "added": "Naidagdag ang key para sa {provider}.", + "removed": "Naalis ang key.", + "listed": "{count} key.", + "noKeys": "Walang naka-configure na key.", + "noUsage": "Walang nakitang data ng paggamit.", + "confirmRemove": "Alisin ang key na {id}?", + "confirmRegenerate": "Muling buuin ang key na {id}?", + "confirmRevoke": "Bawiin ang key na {id}?", + "confirmRotate": "Palitan ang key na {id}? (mawawalan ng bisa ang lumang key pagkatapos ng palugit)", + "regenerated": "Muling nabuo. Bagong key: {key}", + "revoked": "Binawi ang key na {id}.", + "rotated": "Napalitan ang key na {id}. ID ng bagong key: {newId}", + "revealWarning": "⚠ Ipapakita nito ang buong hindi naka-mask na key. Tiyaking pribado ang iyong screen.", + "providerRequired": "Kinakailangan ang provider.", + "keyRequired": "Kinakailangan ang API key.", + "stdinEmpty": "Walang API key na ibinigay sa pamamagitan ng stdin.", + "unknownProvider": "Hindi kilalang provider: {provider}", + "policy": { + "title": "Patakaran sa Key", + "showDescription": "Ipakita ang patakaran sa rate/gastos para sa isang key", + "setDescription": "Itakda ang patakaran sa rate/gastos para sa isang key", + "rateLimitOpt": "Pinakamaraming request kada minuto", + "maxCostOpt": "Pinakamataas na gastos kada araw (USD)", + "allowedModelsOpt": "Listahan ng mga pinapayagang model na pinaghihiwalay ng kuwit", + "nothingToSet": "Walang ibinigay na field ng patakaran. Gamitin ang --rate-limit, --max-cost, o --allowed-models.", + "updated": "Na-update ang patakaran." + }, + "expiration": { + "title": "Pag-expire ng Key", + "listDescription": "Ilista ang mga key na malapit nang mag-expire", + "daysOpt": "Ipakita ang mga key na mag-e-expire sa loob ng N araw", + "none": "Walang key na mag-e-expire sa loob ng {days} araw.", + "listTitle": "Mga key na mag-e-expire sa loob ng {days} araw:" + } + }, + "authExport": { + "description": "I-export ang NA-DECRYPT na mga kredensyal ng provider (lokal lamang, plaintext na output)", + "idOpt": "I-export lamang ang koneksyong tumutugma sa id/pangalan/provider na ito", + "formatOpt": "Format ng output: json o env", + "outOpt": "Isulat ang output sa isang file sa halip na sa stdout (isusulat nang may mga pahintulot na 0600)", + "forceOpt": "Kumpirmahing nauunawaan mong nagpi-print/nagsusulat ito ng mga plaintext na lihim", + "warning": "⚠ Nagpi-print/nagsusulat ito ng mga NA-DECRYPT na plaintext na API key at OAuth token. Tiyaking mananatiling pribado ang iyong screen, kasaysayan ng shell, at anumang output file.", + "confirmHeading": "⚠ BABALA: ine-export nito ang mga NA-DECRYPT na kredensyal ng provider bilang plaintext", + "confirmBody": "Dini-decrypt at pini-print/isinusulat ng command na ito ang apiKey, accessToken, refreshToken, at\nidToken para sa napiling (mga) koneksyon. Ituring na lihim ang output.", + "confirmFooter": "Para kumpirmahin, patakbuhin:\n omniroute auth export --force", + "missingKey": "Kinakailangan ang STORAGE_ENCRYPTION_KEY upang i-export ang mga kredensyal.", + "notFound": "Hindi nahanap ang koneksyon: {id}", + "invalidFormat": "Di-wastong format: {format}. Gamitin ang json o env." + }, + "stream": { + "description": "I-stream ang tugon sa chat gamit ang mga mode ng inspeksyon ng SSE", + "file": "Basahin ang prompt mula sa file", + "stdin": "Basahin ang prompt mula sa stdin", + "model": "Model ID (default: auto)", + "system": "Prompt ng system", + "combo": "Pilitin ang isang partikular na combo ayon sa pangalan", + "max_tokens": "Pinakamataas na bilang ng mga token sa tugon", + "responses_api": "Gamitin ang /v1/responses sa halip na /v1/chat/completions", + "raw": "I-print ang mga raw na linya ng SSE ayon sa pagkakatanggap", + "debug": "I-print sa stderr ang impormasyon sa oras ng bawat chunk", + "save": "I-save ang lahat ng event ng SSE sa isang .jsonl file", + "error": { + "empty_prompt": "Error: kinakailangan ang prompt (positional arg, --file, o --stdin)" + } + }, + "usage": { + "description": "Analytics ng paggamit, mga badyet, quota, at log", + "analytics": { + "description": "Ipakita ang pinagsama-samang analytics ng paggamit", + "period": "Saklaw ng oras: 1d|7d|30d|90d|ytd|all (default: 30d)", + "provider": "I-filter ayon sa provider ID" + }, + "budget": { + "description": "Pamahalaan ang mga badyet sa gastos", + "set": { + "scope": "Saklaw ng badyet (default: global)", + "period": "Panahon ng badyet: daily|weekly|monthly (default: monthly)" + } + }, + "quota": { + "description": "Ipakita ang paggamit ng quota ng provider", + "provider": "I-filter ayon sa provider ID", + "check": "Ipakita kung may available na quota para sa bagong request" + }, + "logs": { + "description": "Ipakita ang mga log ng request call", + "limit": "Bilang ng mga entry sa log na ibabalik (default: 100)", + "search": "Query sa paghahanap upang i-filter ang mga log", + "since": "Ibalik ang mga log mula sa timestamp na ito", + "follow": "Patuloy na subaybayan ang mga bagong entry sa log", + "api_key": "I-filter ang mga log ayon sa API key" + }, + "utilization": { + "description": "Ipakita ang mga sukatan ng paggamit ng API key", + "api_key": "I-filter ayon sa API key" + }, + "history": { + "description": "Ipakita ang kasaysayan ng mga request", + "limit": "Bilang ng mga entry sa kasaysayan (default: 100)" + }, + "proxy_logs": { + "description": "Ipakita ang mga log ng request sa antas ng proxy", + "limit": "Bilang ng mga entry sa proxy log (default: 100)" + } + }, + "cost": { + "description": "Ipakita ang ulat ng gastos na may breakdown ayon sa provider, model, combo, o API key", + "period": "Saklaw ng oras: 1d|7d|30d|90d|ytd|all (default: 30d)", + "since": "Petsa ng pagsisimula (format na ISO, hal. 2026-01-01) — inuuna kaysa sa --period", + "until": "Petsa ng pagtatapos (format na ISO)", + "group_by": "Pangkatin ang mga resulta ayon sa: provider|model|api-key|combo|day (default: provider)", + "api_key_filter": "I-filter ayon sa isang partikular na API key", + "limit": "Pinakamataas na bilang ng mga row na ipapakita (default: 100)" + }, + "simulate": { + "description": "Dry-run na simulation ng pagruruta — ipakita kung aling mga provider ang pipiliin nang hindi tumatawag sa upstream", + "file": "I-load ang buong request body mula sa JSON file", + "model": "Model ID (default: auto)", + "combo": "Sapilitang gumamit ng partikular na combo ayon sa pangalan", + "reasoning": "Antas ng pagsisikap sa pangangatwiran (low|medium|high)", + "thinking": "Badyet ng token para sa pinalawig na pag-iisip", + "explain": "I-print ang fallback tree at saklaw ng gastos sa stderr", + "noCombo": "Walang nakitang tumutugmang combo. Mag-configure ng isa gamit ang: omniroute combo create" + }, + "chat": { + "description": "Magpadala ng one-shot na chat prompt sa OmniRoute", + "file": "Basahin ang prompt mula sa file", + "stdin": "Basahin ang prompt mula sa stdin", + "system": "System prompt", + "model": "Model ID (default: auto)", + "max_tokens": "Pinakamataas na bilang ng mga token sa tugon", + "temperature": "Temperatura ng sampling (0–2)", + "top_p": "Top-p nucleus sampling", + "reasoning_effort": "Antas ng pagsisikap sa pangangatwiran (low|medium|high)", + "thinking_budget": "Badyet ng token para sa pinalawig na pag-iisip", + "combo": "Sapilitang gumamit ng partikular na combo ayon sa pangalan", + "responses_api": "Gamitin ang /v1/responses sa halip na /v1/chat/completions", + "stream": "I-stream ang tugon nang paunti-unti", + "no_history": "Huwag i-save sa ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Error: kailangan ang prompt (positional arg, --file, o --stdin)" + } + }, + "serve": { + "description": "Simulan ang OmniRoute server (default na aksyon)", + "starting": "Sinisimulan ang OmniRoute server sa port {port}...", + "ready": "Handa na sa http://localhost:{port}", + "stopping": "Itinitigil ang server (PID {pid})...", + "stopped": "Itinigil na ang server.", + "notRunning": "Hindi tumatakbo ang server.", + "port": "Port na pakikinggan (default: 20128)", + "no_open": "Huwag awtomatikong buksan ang browser", + "daemon": "Patakbuhin ang server bilang background daemon", + "log": "Ipakita ang mga log ng server nang inline", + "no_recovery": "I-disable ang awtomatikong pag-restart kapag nag-crash (debugging mode)", + "max_restarts": "Pinakamataas na bilang ng pag-restart dahil sa pag-crash sa loob ng 30s bago sumuko (default: 2)", + "tray": "Magsimula sa system tray (desktop lang, kailangang i-enable)", + "no_tray": "I-disable ang icon sa system tray", + "ready_timeout": "Timeout ng readiness probe sa ms (OMNIROUTE_READY_TIMEOUT_MS din, default na 60000)", + "tls_cert": "Path patungo sa TLS certificate (PEM) para maghatid ng HTTPS (OMNIROUTE_TLS_CERT din)", + "tls_key": "Path patungo sa pribadong TLS key (PEM) para maghatid ng HTTPS (OMNIROUTE_TLS_KEY din)" + }, + "backup": { + "title": "Backup", + "description": "Gumawa ng backup ng data ng OmniRoute", + "creating": "Ginagawa ang backup...", + "done": "Na-save ang backup sa {path}", + "noFiles": "Walang file na iba-backup (hindi pa nasisimulan ang database)", + "failed": "Nabigo ang backup: {error}", + "restoring": "Nagre-restore mula sa {path}...", + "restored": "Kumpleto na ang pag-restore.", + "restoreDescription": "Mag-restore mula sa isang backup", + "listTitle": "Mga Available na Backup", + "noBackups": "Walang nakitang backup.", + "notFound": "Hindi nakita ang backup: {name}", + "confirmRestore": "I-overwrite ang kasalukuyang data gamit ang backup mula noong {ts}?", + "createDescription": "Gumawa ng backup ng data ng OmniRoute", + "nameOpt": "Custom na pangalan ng backup", + "cloudOpt": "I-upload ang backup sa cloud storage", + "encryptOpt": "I-encrypt ang backup gamit ang AES-256-GCM", + "keyFileOpt": "Path patungo sa file na naglalaman ng encryption passphrase", + "excludeOpt": "Ibukod ang file na tumutugma sa pattern (maaaring ulitin)", + "retentionOpt": "Panatilihin lamang ang huling N backup", + "passphrasePrompt": "Encryption passphrase:", + "noPassphrase": "Kailangan ang passphrase para sa naka-encrypt na backup.", + "cloudFailed": "Babala: nabigo ang pag-upload sa cloud. Na-save ang lokal na backup.", + "cloudUploaded": "Na-upload ang cloud backup: {url}", + "auto": { + "title": "Iskedyul ng Backup", + "enableDescription": "I-enable ang mga nakaiskedyul na awtomatikong backup", + "disableDescription": "I-disable ang mga nakaiskedyul na awtomatikong backup", + "statusDescription": "Ipakita ang kasalukuyang status ng iskedyul ng backup", + "cronOpt": "Cron expression para sa iskedyul (default: araw-araw nang 3am)", + "enabled": "Naka-enable ang awtomatikong backup (cron: {cron}).", + "hint": "Binabasa ng omniroute serve ang iskedyul sa pagsisimula.", + "disabled": "Naka-disable ang awtomatikong backup.", + "notConfigured": "Walang nakakonfigurang iskedyul ng backup." + } + }, + "health": { + "description": "Suriin ang kalusugan ng server at status ng mga component", + "noServer": "Hindi tumatakbo ang server. Simulan gamit ang: omniroute serve", + "title": "Kalusugan", + "status": "Katayuan: {status}", + "uptime": "Tagal ng paggana: {uptime}", + "requests": "Mga kahilingan (24h): {count}", + "cost": "Gastos (24h): ${cost}" + }, + "quota": { + "description": "Ipakita ang paggamit ng quota ng provider", + "noServer": "Hindi tumatakbo ang server. Simulan gamit ang: omniroute serve", + "noData": "Walang available na impormasyon tungkol sa quota." + }, + "cache": { + "description": "Pamahalaan ang cache ng tugon", + "noServer": "Hindi tumatakbo ang server. Simulan gamit ang: omniroute serve", + "cleared": "Na-clear ang cache.", + "clearFailed": "Hindi na-clear ang cache." + }, "redis": { - "description": "Launch a 1-click local Redis container (Podman or Docker) for OmniRoute caching and quota tracking" + "description": "Maglunsad ng lokal na Redis container sa isang click (Podman o Docker) para sa pag-cache at pagsubaybay ng quota ng OmniRoute" + }, + "test": { + "description": "Subukan ang koneksyon sa isang provider", + "noServer": "Hindi tumatakbo ang server. Simulan gamit ang: omniroute serve", + "testing": "Sinusubukan ang {provider} / {model}...", + "passed": "Matagumpay ang koneksyon!", + "failed": "Nabigo ang koneksyon: {error}", + "allProvidersOpt": "Subukan ang lahat ng naka-configure na provider", + "latencyOpt": "Ipakita ang mga sukat ng latency (average/min/max ms)", + "repeatOpt": "Ulitin ang pagsubok nang N beses at pagsama-samahin ang mga resulta", + "compareOpt": "Mga modelong pinaghihiwalay ng kuwit na ihahambing (hal. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "I-save ang mga resulta sa isang JSON file", + "saved": "Na-save ang mga resulta sa {path}", + "compareTitle": "Paghahambing ng mga Modelo", + "compareMinTwo": "Kailangan ng hindi bababa sa dalawang modelo para sa --compare (pinaghihiwalay ng kuwit)", + "noProviders": "Walang naka-configure na provider. Magdagdag gamit ang: omniroute keys add" + }, + "update": { + "checking": "Sinusuri kung may mga update...", + "upToDate": "Napapanahon na ({version}).", + "available": "May available na update: {current} → {latest}", + "installing": "Ini-install ang {latest}...", + "done": "Na-update sa {latest}. I-restart ang server upang mailapat." + }, + "mcp": { + "title": "MCP Server", + "running": "Tumatakbo ang MCP server ({transport})", + "stopped": "Huminto ang MCP server.", + "restarted": "Na-restart ang MCP server.", + "stoppedHint": "Patakbuhin ang `omniroute mcp enable` upang i-on ito.", + "enabled": "Naka-enable ang MCP server.", + "disabled": "Naka-disable ang MCP server.", + "enable": { + "description": "I-enable ang MCP server", + "transport": "Transport na gagamitin: stdio|sse|streamable-http" + }, + "disable": { + "description": "I-disable ang MCP server" + }, + "call": { + "description": "Direktang magpatakbo ng MCP tool", + "args": "Object ng mga argumentong JSON (inline)", + "args_file": "Path patungo sa file ng mga argumentong JSON", + "stream": "Gamitin ang streaming endpoint (/api/mcp/stream)", + "scope": "Kinakailangang scope (maaaring ulitin, hal. read:health)" + }, + "scopes": { + "description": "Ilista ang mga available na MCP scope", + "tool": "Ipakita ang mga scope na kinakailangan ng isang partikular na tool" + }, + "tools": { + "description": "Suriin ang mga MCP tool", + "list": { + "description": "Ilista ang lahat ng MCP tool", + "scope": "I-filter ayon sa scope" + }, + "info": { + "description": "Ipakita ang metadata para sa isang MCP tool" + }, + "schema": { + "description": "Ipakita ang input/output JSON schema para sa isang MCP tool", + "io": "Uri ng schema: input|output (default: input)" + } + }, + "audit": { + "description": "MCP audit log (alias para sa audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Ilista ang mga available na A2A skill mula sa agent card" + }, + "invoke": { + "description": "Magpatakbo ng A2A skill at ibalik ang task ID", + "input": "JSON input object", + "input_file": "Path patungo sa JSON input file", + "wait": "Hintaying makumpleto ang task bago ibalik", + "timeout": "Timeout sa paghihintay na makumpleto sa ms (default: 60000)" + }, + "tasks": { + "description": "Pamahalaan ang mga A2A task", + "list": { + "status": "I-filter ayon sa status", + "skill": "I-filter ayon sa skill ID" + }, + "watch": { + "description": "I-poll ang status ng task hanggang sa makumpleto" + }, + "stream": { + "description": "I-stream ang mga event sa pagpapatakbo ng task sa pamamagitan ng SSE" + }, + "logs": { + "description": "Ipakita ang mga mensahe at artifact ng task" + } + } + }, + "policy": { + "description": "Pamahalaan ang mga patakaran sa awtorisasyon ng OmniRoute", + "list": { + "description": "Ilista ang mga patakaran", + "kind": "I-filter ayon sa uri (allow|deny|rate-limit|cost-cap)", + "scope": "I-filter ayon sa scope (global|api-key|provider)" + }, + "get": { + "description": "Kunin ang mga detalye ng patakaran ayon sa ID" + }, + "create": { + "description": "Gumawa ng patakaran mula sa isang JSON file", + "file": "Path patungo sa JSON file ng patakaran" + }, + "update": { + "description": "I-update ang patakaran mula sa isang JSON file", + "file": "Path patungo sa JSON file ng patakaran" + }, + "delete": { + "description": "Tanggalin ang patakaran ayon sa ID", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "evaluate": { + "description": "Dry-run na pagsusuri ng patakaran (exit 0=pinapayagan, 4=tinanggihan)", + "api_key": "API key na susuriin", + "action": "Aksiyong susuriin (hal. chat, embed, admin)", + "resource": "Path o identifier ng resource", + "context": "Karagdagang konteksto bilang JSON object" + }, + "export": { + "description": "I-export ang lahat ng patakaran sa isang JSON file" + }, + "import": { + "description": "Mag-import ng mga patakaran mula sa isang JSON file", + "overwrite": "Patungan ang mga kasalukuyang patakaran na may parehong ID" + } + }, + "compression": { + "description": "I-configure at siyasatin ang compression pipeline ng OmniRoute", + "status": { + "description": "Ipakita ang kasalukuyang status at mga setting ng compression" + }, + "configure": { + "description": "I-configure ang mga setting ng compression", + "engine": "Compression engine (caveman|rtk|hybrid|none)", + "caveman_agg": "Antas ng pagiging agresibo ng Caveman 0.0–1.0", + "rtk_budget": "Badyet ng token ng RTK", + "language_pack": "Language pack na ia-activate" + }, + "engine": { + "description": "Kunin o itakda ang aktibong compression engine" + }, + "combos": { + "description": "Pamahalaan ang mga istatistika ng compression combo" + }, + "rules": { + "description": "Pamahalaan ang mga panuntunan sa compression", + "add": { + "pattern": "Pattern na itutugma (regex o field:pattern)", + "action": "Aksiyon: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Ilista ang mga available na compression language pack" + }, + "preview": { + "description": "I-preview ang epekto ng compression sa isang request", + "file": "Path patungo sa request JSON file" + } + }, + "tunnel": { + "title": "Mga Tunnel", + "listDescription": "Ilista ang mga aktibong tunnel", + "createDescription": "Gumawa ng tunnel", + "created": "Nagawa ang tunnel: {url}", + "stopped": "Itinigil ang tunnel.", + "confirmStop": "Itigil ang tunnel na {id}?", + "stopDescription": "Itigil ang isang tunnel", + "statusDescription": "Ipakita ang detalyadong status ng isang tunnel", + "logsDescription": "Ipakita ang mga log para sa isang tunnel", + "infoDescription": "Ipakita ang mga detalye ng configuration ng isang tunnel", + "rotateDescription": "Bumuo ng bagong tunnel URL", + "tailOpt": "Bilang ng mga linya ng log na ipapakita", + "typeRequired": "Kinakailangan ang uri ng tunnel.", + "noLogs": "Walang available na log.", + "notAvailable": "Hindi available ang impormasyon ng tunnel.", + "noTunnels": "Walang aktibong tunnel.", + "infoTitle": "Impormasyon ng tunnel: {type}", + "rotated": "Napalitan ang tunnel URL: {url}", + "confirmRotate": "I-rotate ang tunnel na {type}? (gagawa ng bagong URL)" + }, + "stop": { + "description": "Ihinto ang OmniRoute server", + "stopping": "Ihihinto ang server (PID {pid})...", + "stopped": "Nahinto na ang server.", + "notRunning": "Walang tumatakbong server.", + "portFallback": "Walang nakitang PID file, susubukang ihinto batay sa port..." + }, + "restart": { + "description": "I-restart ang OmniRoute server", + "restarting": "Nire-restart ang OmniRoute server..." + }, + "dashboard": { + "description": "Buksan ang OmniRoute dashboard sa browser", + "opening": "Binubuksan ang dashboard sa {url}", + "urlOnly": "I-print ang URL ng dashboard nang hindi binubuksan ang browser", + "tui": "Buksan ang interaktibong TUI dashboard (terminal UI, 7 tab)" + }, + "models": { + "description": "Ilista ang mga available na modelo (kailangan ang server)", + "search": "I-filter ang mga modelo ayon sa id, pangalan, provider, o paglalarawan", + "noServer": "Hindi tumatakbo ang server. Simulan gamit ang: omniroute serve", + "noModels": "Walang nakitang modelo." + }, + "audit": { + "description": "I-access ang mga log ng compliance at MCP audit", + "source": "Pinagmulan ng log: all|compliance|mcp (default: all)", + "since": "Ibalik ang mga entry mula sa timestamp na ito (ISO 8601)", + "until": "Ibalik ang mga entry hanggang sa timestamp na ito (ISO 8601)", + "tail": { + "description": "Ipakita ang mga kamakailang entry sa audit log", + "follow": "Patuloy na subaybayan ang mga bagong entry (2s poll)", + "limit": "Pinakamaraming entry na ipapakita (default: 100)" + }, + "search": { + "description": "Maghanap sa mga entry ng audit log ayon sa keyword", + "limit": "Pinakamaraming resulta (default: 200)", + "actor": "I-filter ayon sa actor ID", + "action": "I-filter ayon sa pangalan ng aksyon" + }, + "export": { + "description": "I-export ang audit log sa file", + "format": "Format ng output: jsonl|csv (default: jsonl)" + }, + "stats": { + "description": "Ipakita ang mga estadistika ng audit log", + "period": "Panahon: 1d|7d|30d (default: 7d)" + }, + "get": { + "description": "Kumuha ng isang entry sa audit log ayon sa ID" + } + }, + "skills": { + "description": "Pamahalaan ang mga skill ng OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Ilista ang mga naka-install na skill", + "type": "I-filter ayon sa uri (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Ipakita lamang ang mga naka-enable na skill", + "disabled": "Ipakita lamang ang mga naka-disable na skill", + "api_key": "I-filter ayon sa API key" + }, + "get": { + "description": "Kunin ang mga detalye ng isang skill ayon sa ID" + }, + "install": { + "description": "Mag-install ng skill mula sa file o URL", + "from_file": "Path patungo sa file ng kahulugang JSON ng skill", + "from_url": "URL ng remote na kahulugan ng skill", + "type": "Uri ng skill (sandbox|custom|hybrid)", + "enable": "I-enable ang skill pagkatapos i-install" + }, + "enable": { + "description": "I-enable ang isang skill ayon sa ID" + }, + "disable": { + "description": "I-disable ang isang skill ayon sa ID", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "delete": { + "description": "I-delete ang isang skill ayon sa ID", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "execute": { + "description": "Isagawa ang isang skill ayon sa ID", + "input": "JSON input object", + "input_file": "Path patungo sa JSON input file", + "timeout": "Timeout ng pagsasagawa sa ms (default: 30000)" + }, + "executions": { + "description": "Ilista ang history ng pagsasagawa ng skill", + "skill": "I-filter ayon sa skill ID", + "limit": "Pinakamaraming resulta (default: 50)", + "status": "I-filter ayon sa status (running|completed|failed)" + }, + "skillssh": { + "description": "Pamahalaan ang mga skill na naka-install sa pamamagitan ng SSH" + }, + "marketplace": { + "description": "Mag-browse at mag-install ng mga skill mula sa marketplace" + }, + "mp": { + "search": { + "description": "Maghanap ng mga package sa marketplace", + "category": "I-filter ayon sa category", + "tag": "I-filter ayon sa tag", + "limit": "Pinakamaraming resulta (default: 30)", + "sort": "Ayusin ayon sa: downloads|rating|recent" + }, + "info": { + "description": "Ipakita ang mga detalye at readme ng package" + }, + "install": { + "description": "Mag-install ng package mula sa marketplace", + "version": "Bersyon ng package (default: latest)", + "enable": "I-enable pagkatapos i-install", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "categories": { + "description": "Ilista ang mga category sa marketplace" + }, + "featured": { + "description": "Ipakita ang mga tampok na package sa marketplace" + } + } + }, + "memory": { + "description": "Pamahalaan ang memorya ng pag-uusap ng OmniRoute (FTS5 + vector)", + "search": { + "description": "Maghanap sa mga entry ng memorya gamit ang semantic query", + "type": "I-filter ayon sa uri ng memorya (user|feedback|project|reference)", + "limit": "Pinakamaraming resulta (default: 20)", + "api_key": "I-filter ayon sa API key", + "token_budget": "Limitahan ang kabuuang token sa mga resulta" + }, + "add": { + "description": "Magdagdag ng bagong entry sa memorya", + "content": "Nilalamang teksto ng memorya", + "file": "Basahin ang nilalaman mula sa file", + "type": "Uri ng memory (default: user)", + "metadata": "JSON metadata object", + "api_key": "Iugnay sa API key" + }, + "clear": { + "description": "Tanggalin ang mga memory entry na tumutugma sa mga filter", + "type": "I-filter ayon sa uri", + "older": "Tanggalin ang mga entry na mas luma sa itinakdang tagal (30d, 6m, 1y)", + "api_key": "I-filter ayon sa API key", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "list": { + "description": "Ilista ang mga memory entry nang walang pagraranggo ng paghahanap", + "type": "I-filter ayon sa uri", + "limit": "Pinakamaraming resulta (default: 100)", + "api_key": "I-filter ayon sa API key" + }, + "get": { + "description": "Kumuha ng isang memory entry ayon sa ID" + }, + "delete": { + "description": "Tanggalin ang isang memory entry ayon sa ID", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "health": { + "description": "Ipakita ang kalagayan ng memory subsystem (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Pamahalaan ang mga koneksyon ng OAuth provider", + "providers": { + "description": "Ilista ang mga provider na sumusuporta sa OAuth at ang mga uri ng flow ng mga ito" + }, + "start": { + "description": "Simulan ang OAuth authorization flow para sa isang provider", + "provider": "Provider ID (gemini, copilot, cursor, …)", + "no_browser": "URL lang ang i-print — huwag buksan ang browser", + "import_system": "Awtomatikong i-import ang mga credential mula sa configuration ng lokal na system", + "social": "Social login provider (google|github) — kailangan para sa kiro", + "timeout": "Timeout sa paghihintay ng awtorisasyon sa ms (default: 300000)" + }, + "status": { + "description": "Ilista ang mga aktibong koneksyon sa OAuth", + "provider": "I-filter ayon sa provider ID" + }, + "revoke": { + "description": "Bawiin ang isang koneksyon sa OAuth", + "provider": "Provider ID na babawiin", + "connection_id": "Bawiin ang isang partikular na koneksyon ayon sa ID", + "yes": "Laktawan ang prompt ng kumpirmasyon" + } + }, + "cloud": { + "description": "Pamahalaan ang mga gawain ng cloud AI agent (codex, devin, jules)", + "agents": { + "description": "Ilista ang mga available na cloud agent" + }, + "agent": { + "description": "Pamahalaan ang mga gawain ng {agent} cloud agent", + "auth": { + "description": "Awtorisahan ang {agent} sa pamamagitan ng OAuth" + } + }, + "task": { + "description": "Pamahalaan ang mga gawain ng cloud agent", + "create": { + "description": "Gumawa ng bagong gawain para sa agent", + "title": "Pamagat ng gawain (default ang unang 80 character ng prompt)", + "prompt": "Teksto ng prompt ng gawain", + "prompt_file": "Basahin ang prompt mula sa file", + "repo": "Repository URL na iko-clone para sa gawain", + "branch": "Pangalan ng branch na gagamitin", + "metadata": "JSON metadata object" + }, + "list": { + "description": "Ilista ang mga gawain ng agent", + "status": "I-filter ayon sa status (running|completed|failed|cancelled)", + "limit": "Pinakamaraming resulta (default: 50)" + }, + "get": { + "description": "Kunin ang mga detalye ng gawain ayon sa ID" + }, + "status": { + "description": "I-print ang status ng gawain (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Kanselahin ang tumatakbong gawain", + "yes": "Laktawan ang prompt sa pagkumpirma" + }, + "approve": { + "description": "Aprubahan ang plano ng agent upang simulan ang pagpapatupad" + }, + "message": { + "description": "Magpadala ng mensahe sa tumatakbong gawain" + } + }, + "sources": { + "description": "Ilista ang mga source file na ginawa ng isang gawain" + } + }, + "eval": { + "description": "Pamahalaan ang mga eval suite at pagpapatakbo", + "suites": { + "description": "Pamahalaan ang mga eval suite", + "list": { + "description": "Ilista ang mga eval suite" + }, + "get": { + "description": "Kunin ang mga detalye ng eval suite ayon sa ID" + }, + "create": { + "description": "Gumawa ng eval suite mula sa isang JSON file", + "file": "Path patungo sa JSON file ng depinisyon ng suite" + } + }, + "run": { + "description": "Magsimula ng eval run para sa isang suite", + "model": "Model ID na susuriin (default: auto)", + "combo": "Pilitin ang isang partikular na combo ayon sa pangalan", + "concurrency": "Bilang ng magkakasabay na sample (default: 4)", + "tag": "Lagyan ng tag ang run na ito para sa pagsala sa ibang pagkakataon", + "watch": "Subaybayan ang progreso ng run hanggang sa makumpleto" + }, + "list": { + "description": "Ilista ang mga eval run", + "suite": "I-filter ayon sa suite ID", + "status": "I-filter ayon sa status", + "since": "Ibalik ang mga run mula sa timestamp na ito", + "limit": "Pinakamaraming resulta (default: 50)" + }, + "get": { + "description": "Kunin ang mga detalye ng eval run ayon sa ID" + }, + "results": { + "description": "Ipakita ang mga resulta ng sample para sa isang eval run", + "failed": "Ipakita lamang ang mga nabigong sample" + }, + "cancel": { + "description": "Kanselahin ang tumatakbong eval", + "yes": "Laktawan ang prompt sa pagkumpirma" + }, + "scorecard": { + "description": "Ipakita ang scorecard para sa isang nakumpletong eval run" + } + }, + "webhooks": { + "description": "Pamahalaan ang mga webhook ng OmniRoute", + "events": { + "description": "Ilista ang lahat ng available na uri ng webhook event" + }, + "list": { + "description": "Ilista ang mga naka-configure na webhook" + }, + "get": { + "description": "Kunin ang mga detalye ng webhook ayon sa ID" + }, + "add": { + "description": "Magrehistro ng bagong webhook", + "url": "Destination URL", + "events": "Listahan ng mga uri ng event na pinaghihiwalay ng kuwit", + "secret": "Lihim sa paglagda gamit ang HMAC", + "header": "Karagdagang header sa format na key=value (maaaring ulitin)", + "no_enabled": "Gumawa ng webhook na naka-disable" + }, + "update": { + "description": "I-update ang kasalukuyang webhook", + "enabled": "Itakda ang enabled state (true|false)" + }, + "remove": { + "description": "Magtanggal ng webhook", + "yes": "Laktawan ang prompt ng kumpirmasyon" + }, + "test": { + "description": "Magpadala ng test event sa isang webhook", + "event": "Uri ng event na isi-simulate (default: request.completed)" + } + }, + "program": { + "description": "OmniRoute — Matalinong AI Router na may Awtomatikong Fallback", + "version": "I-print ang bersyon at lumabas", + "output": "Format ng output (table, json, jsonl, csv)", + "quiet": "Itago ang hindi mahalagang output", + "no_color": "I-disable ang may-kulay na output", + "timeout": "Timeout ng HTTP request sa millisecond", + "api_key": "API key para sa OmniRoute server", + "base_url": "Base URL ng OmniRoute server", + "context": "Context/profile ng server na gagamitin para sa command na ito", + "lang": "Itakda ang wika ng display ng CLI (ino-override ang OMNIROUTE_LANG)" + }, + "files": { + "description": "Pamahalaan ang mga file (upload, ilista, kunin, i-download, tanggalin)", + "list": { + "purpose": "I-filter ayon sa layunin", + "limit": "Pinakamaraming resulta" + }, + "get": { + "description": "Kunin ang metadata ng file" + }, + "upload": { + "description": "Mag-upload ng file", + "purpose": "Layunin ng file (batch, assistants, fine-tune)" + }, + "content": { + "description": "I-download ang nilalaman ng file", + "out": "I-save sa path (default: stdout)" + }, + "delete": { + "yes": "Laktawan ang kumpirmasyon" + } + }, + "batches": { + "description": "Pamahalaan ang mga OpenAI-compatible na batch job", + "list": { + "status": "I-filter ayon sa status", + "limit": "Pinakamaraming resulta" + }, + "create": { + "description": "Gumawa ng batch job", + "inputFile": "ID ng input file", + "endpoint": "Target na endpoint", + "window": "Palugit sa pagkumpleto", + "metadata": "Magdagdag ng metadata na key=value" + }, + "submit": { + "description": "Mag-upload ng JSONL file at gumawa ng batch", + "jsonl": "Path patungo sa JSONL file", + "endpoint": "Target na endpoint", + "wait": "Hintayin ang pagkumpleto" + }, + "cancel": { + "yes": "Laktawan ang kumpirmasyon" + }, + "wait": { + "timeout": "Timeout sa ms" + }, + "output": { + "out": "I-save ang output sa path" + }, + "errors": { + "out": "I-save ang mga error sa path" + } + }, + "translator": { + "description": "Isalin ang mga request body sa pagitan ng mga format ng LLM", + "detect": { + "description": "Tukuyin ang format ng body" + }, + "translate": { + "description": "I-convert ang body mula sa isang format patungo sa iba" + }, + "send": { + "description": "Isalin at ipadala sa upstream" + }, + "stream": { + "description": "Isalin habang sini-stream ang isang request body" + }, + "from": "Pinagmumulan na format (openai|anthropic|gemini|cohere)", + "to": "Target na format (openai|anthropic|gemini|cohere)", + "file": "Path sa JSON file ng request body", + "out": "I-save ang output sa file", + "model": "I-override ang modelo", + "history": { + "limit": "Maximum na bilang ng resulta" + } + }, + "pricing": { + "description": "Pamahalaan ang datos ng pagpepresyo para sa mga modelo", + "sync": { + "description": "I-sync ang mga presyo mula sa mga upstream source", + "provider": "I-filter ayon sa provider", + "force": "Puwersahing mag-sync muli" + }, + "list": { + "provider": "I-filter ayon sa provider", + "model": "I-filter ayon sa modelo", + "limit": "Maximum na bilang ng resulta" + }, + "defaults": { + "description": "Pamahalaan ang default na pagpepresyo", + "input": "Gastos sa input bawat 1M token (USD)", + "output": "Gastos sa output bawat 1M token (USD)", + "cacheRead": "Gastos sa pagbasa ng cache bawat 1M token (USD)", + "cacheWrite": "Gastos sa pagsulat sa cache bawat 1M token (USD)" + }, + "diff": { + "description": "Ipakita ang paglihis mula sa mga upstream na presyo", + "model": "I-filter ayon sa modelo" + } + }, + "radar": { + "description": "Suriin at i-synchronize ang mga lokal na feed ng catalog ng Radar", + "status": "Ipakita ang mga lokal na setting ng Radar at status ng feed cache", + "sync": "I-synchronize ang catalog, mga referral, mga alok, at Intel sa pamamagitan ng lokal na server" + }, + "resilience": { + "description": "Suriin at pamahalaan ang mga mekanismo ng resilience", + "status": { + "provider": "I-filter ayon sa provider" + }, + "breakers": { + "provider": "I-filter ayon sa provider" + }, + "cooldowns": { + "provider": "I-filter ayon sa provider", + "connectionId": "I-filter ayon sa connection ID" + }, + "lockouts": { + "provider": "I-filter ayon sa provider", + "model": "I-filter ayon sa modelo" + }, + "reset": { + "description": "I-reset ang estado ng breaker/cooldown", + "provider": "Provider na ire-reset", + "connectionId": "Connection ID na ire-reset", + "model": "Modelo na aalisan ng lockout", + "allCooldowns": "I-reset ang lahat ng cooldown para sa provider", + "yes": "Laktawan ang kumpirmasyon" + }, + "profile": { + "description": "Pamahalaan ang resilience profile", + "name": "Pangalan ng profile" + }, + "config": { + "description": "Pamahalaan ang resilience config", + "threshold": "Hangganan ng pagkabigo", + "resetTimeout": "Timeout sa pag-reset sa ms", + "baseCooldown": "Batayang cooldown sa ms" + } + }, + "nodes": { + "description": "Pamahalaan ang mga provider node (endpoint)", + "list": { + "provider": "I-filter ayon sa provider", + "enabled": "Mga naka-enable na node lang ang ipakita" + }, + "add": { + "provider": "Pangalan ng provider", + "baseUrl": "Base URL para sa node", + "name": "Pangalan ng node", + "weight": "Timbang sa load balancing", + "region": "Tag ng rehiyon", + "authHeader": "Custom na auth header (key=value)" + }, + "update": { + "baseUrl": "Bagong base URL", + "name": "Bagong pangalan", + "weight": "Bagong timbang", + "region": "Bagong rehiyon", + "enabled": "I-enable o i-disable (true|false)" + }, + "remove": { + "yes": "Laktawan ang kumpirmasyon" + }, + "validate": { + "baseUrl": "URL na iva-validate", + "provider": "Provider na pagbabatayan ng validation" + }, + "test": { + "description": "Magpadala ng test request sa node" + }, + "metrics": { + "description": "Ipakita ang mga metric ng node", + "period": "Panahon (hal. 24h, 7d)" + } + }, + "context": { + "description": "I-configure ang context engineering pipeline (Caveman, RTK)", + "analytics": { + "period": "Panahon (hal. 7d, 30d)" + }, + "caveman": { + "description": "Pamahalaan ang Caveman context compressor", + "config": { + "description": "Ipakita o i-update ang Caveman config", + "aggressiveness": "Antas ng pagiging agresibo 0.0–1.0", + "maxShrinkPct": "Pinakamataas na porsiyento ng pagpapaliit", + "preserveTags": "Mga tag na paghihiwalayin ng kuwit na papanatilihin" + } + }, + "rtk": { + "description": "Pamahalaan ang RTK context optimizer", + "config": { + "description": "Ipakita o i-update ang RTK config", + "tokenBudget": "Badyet ng token para sa RTK", + "reservePct": "Porsiyento ng reserba" + }, + "filters": { + "description": "Pamahalaan ang mga RTK filter", + "pattern": "Pattern ng filter (regex)", + "priority": "Priyoridad ng filter (default: 100)", + "action": "Aksiyon ng filter: drop|shrink|replace", + "yes": "Laktawan ang kumpirmasyon" + }, + "test": { + "file": "Path sa request JSON file" + } + }, + "combos": { + "description": "Pamamahala ng combo na isinasaalang-alang ang konteksto" + } + }, + "sessions": { + "description": "Suriin at pamahalaan ang mga aktibong session", + "list": { + "user": "I-filter ayon sa user", + "kind": "I-filter ayon sa uri (dashboard|api-key|mcp|a2a)", + "active": "Mga aktibong session lang ang ipakita", + "limit": "Maximum na resulta (default: 100)" + }, + "expire": { + "yes": "Laktawan ang kumpirmasyon" + }, + "expireAll": { + "user": "User na may mga session na ie-expire", + "yes": "Laktawan ang kumpirmasyon" + } + }, + "tags": { + "description": "Pamahalaan ang mga tag ng resource", + "add": { + "color": "Kulay ng tag (hex o pangalan)", + "description": "Paglalarawan ng tag" + }, + "remove": { + "yes": "Laktawan ang kumpirmasyon" + }, + "assign": { + "tag": "Pangalan ng tag", + "to": "Target na resource bilang type:id (hal. provider:openai)" + }, + "unassign": { + "tag": "Pangalan ng tag", + "from": "Pinagmumulang resource bilang type:id" + } + }, + "openapi": { + "description": "I-access at subukan ang OmniRoute OpenAPI spec", + "dump": { + "description": "I-dump ang OpenAPI spec sa stdout o file", + "format": "Format ng output: yaml|json (default: yaml)", + "out": "I-save sa file path" + }, + "validate": { + "description": "I-validate ang OpenAPI spec" + }, + "try": { + "description": "Subukan ang isang API endpoint gamit ang spec", + "method": "HTTP method (default: GET)", + "body": "Path sa request body JSON file", + "query": "Query param bilang key=value (maaaring ulitin)", + "header": "Header bilang key=value (maaaring ulitin)" + }, + "endpoints": { + "description": "Ilista ang lahat ng API endpoint", + "search": "I-filter ayon sa path o buod" + }, + "paths": { + "description": "Ilista ang lahat ng API path" + } + }, + "combo": { + "title": "Mga combo", + "switched": "Aktibong combo: {name}", + "created": "Nagawa ang combo: {name}", + "deleted": "Natanggal ang combo: {name}", + "noCombos": "Walang naka-configure na combo.", + "confirmDelete": "Tanggalin ang combo na {name}?", + "suggest": { + "description": "Magmungkahi ng pinakamahusay na combo para sa isang gawain gamit ang pagmamarka ng AI", + "task": "Paglalarawan ng gawain", + "maxCost": "Pinakamataas na gastos sa bawat request sa USD", + "maxLatencyMs": "Pinakamataas na latency sa millisecond", + "weights": "Mga timbang sa pagmamarka na JSON, hal. {\"latency\":0.7,\"cost\":0.3}", + "top": "Bilang ng mga nangungunang kandidato na ipapakita (default: 5)", + "explain": "I-print ang paliwanag sa stderr", + "switch": "I-activate ang combo na may pinakamataas na ranggo" + } + }, + "oneproxy": { + "description": "Pamahalaan ang upstream pool ng OneProxy", + "stats": { + "provider": "I-filter ayon sa provider", + "period": "Yugto ng panahon (default: 24h)" + }, + "fetch": { + "description": "Kumuha ng mga proxy mula sa pool", + "count": "Bilang ng mga proxy na kukunin (default: 1)", + "type": "Uri ng proxy: http|socks5 (default: http)" + }, + "rotate": { + "description": "Pilitin ang pag-rotate ng proxy", + "provider": "Provider na pagra-rotate-an", + "connectionId": "Partikular na connection ID na ira-rotate" + }, + "config": { + "description": "Ipakita o i-update ang config ng OneProxy", + "enabled": "I-enable ang proxy pool (true|false)", + "poolSize": "Laki ng pool", + "providerSource": "URL para sa provider ng proxy", + "rotationPolicy": "Patakaran sa pag-rotate: sticky|per-request|periodic" + }, + "pool": { + "description": "Ilista ang kasalukuyang proxy pool kasama ang mga sukatan" + } + }, + "open": { + "description": "Magbukas ng partikular na page ng dashboard ng OmniRoute sa browser", + "url": "URL lang ang i-print, huwag buksan ang browser" + }, + "telemetry": { + "description": "I-access ang pinagsama-samang data ng telemetry", + "summary": { + "description": "Ipakita ang buod ng pinagsama-samang telemetry", + "period": "Yugto ng panahon: 24h|7d|30d (default: 24h)", + "compareTo": "Ihambing sa nakaraang yugto" + }, + "export": { + "description": "I-export ang mga event ng telemetry sa JSONL", + "out": "Path ng output file (default: telemetry.jsonl)", + "period": "Yugto ng panahon para sa pag-export (default: 7d)" + } + }, + "sync": { + "description": "I-sync ang configuration sa pagitan ng mga instance ng OmniRoute", + "push": { + "description": "I-push ang config sa cloud o remote instance", + "target": "Target (cloud o context:name)", + "bundle": "Mga bahagi ng bundle na isi-sync", + "dryRun": "I-preview nang hindi inilalapat" + }, + "pull": { + "description": "Kunin ang config mula sa cloud o remote", + "source": "Pinagmulan (cloud o context:name)", + "merge": "Pagsamahin sa kasalukuyang config", + "replace": "Palitan ang kasalukuyang config", + "dryRun": "I-preview nang hindi inilalapat" + }, + "diff": { + "source": "Context ng pinagmulan", + "target": "Target na context" + }, + "bundle": { + "description": "I-export ang config bilang bundle file", + "include": "Mga bahaging isasama (pinaghihiwalay ng kuwit)" + }, + "import": { + "description": "Mag-import ng bundle file", + "dryRun": "I-validate nang hindi inilalapat" + }, + "initialize": { + "fromCloud": "I-initialize mula sa cloud backup" + }, + "tokens": { + "description": "Pamahalaan ang mga sync token", + "create": { + "name": "Pangalan ng token", + "scope": "Saklaw ng token", + "ttl": "TTL ng token (hal. 30d)" + }, + "revoke": { + "yes": "Laktawan ang kumpirmasyon" + } + }, + "resolve": { + "description": "Lutasin ang mga salungatan sa pag-sync nang interaktibo" + } + }, + "config": { + "contexts": { + "description": "Pamahalaan ang mga server context/profile (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Pamahalaan ang wika ng display ng CLI", + "getDescription": "Ipakita ang kasalukuyang aktibong code ng wika", + "setDescription": "Itakda ang wika ng display at i-save ito sa config", + "listDescription": "Ilista ang lahat ng available na wika", + "listTitle": "Mga Available na Wika", + "current": "Wika: {code} ({name})", + "saved": "Itinakda ang wika sa {code} ({name}).", + "noCode": "Kailangan ang code ng wika. Patakbuhin ang 'omniroute config lang list' upang makita ang mga available na code.", + "unknown": "Hindi kilalang code ng wika: {code}. Patakbuhin ang 'omniroute config lang list' upang makita ang mga available na code.", + "alreadySet": "Nakatakda na ang wika sa {code}.", + "envHint": "Tip: maaari mo ring itakda ang OMNIROUTE_LANG={code} sa iyong environment." + } + }, + "completion": { + "description": "Bumuo o mag-install ng mga shell completion script", + "zsh": "I-print ang zsh completion script", + "bash": "I-print ang bash completion script", + "fish": "I-print ang fish completion script", + "install": "I-install ang completion script nang global para sa natukoy na shell", + "refresh": "I-refresh ang cache ng mga combo/provider/model" + }, + "logs": { + "description": "I-stream o i-export ang mga log ng request", + "follow": "I-stream ang mga log nang real-time", + "filter": "I-filter ayon sa antas (error,warn,info) — pinaghihiwalay ng kuwit", + "lines": "Bilang ng mga linyang kukunin", + "timeout": "Timeout ng koneksyon sa ms", + "baseUrl": "Base URL ng OmniRoute API", + "requestId": "I-filter ayon sa request ID", + "apiKey": "I-filter ayon sa API key", + "combo": "I-filter ayon sa pangalan ng combo", + "status": "I-filter ayon sa HTTP status code", + "durationMin": "Pinakamababang tagal ng request sa ms", + "durationMax": "Pinakamataas na tagal ng request sa ms", + "export": "I-save ang mga log sa file (json/jsonl/csv)", + "exported": "Na-save ang mga log sa {path}", + "stopped": "Itinigil ang pag-stream ng log.", + "streamError": "Error sa pag-stream ng log: {message}" + }, + "tray": { + "description": "Kontrolin ang icon sa system tray", + "show": "Ipakita ang icon sa tray (kung tumatakbo ang server gamit ang --tray)", + "hide": "Itago ang icon sa tray", + "quit": "Isara ang OmniRoute sa pamamagitan ng tray" + }, + "autostart": { + "description": "Pamahalaan ang awtomatikong pagsisimula ng OmniRoute sa pag-boot (Linux: systemd user service)", + "enable": "Paganahin ang awtomatikong pagsisimula sa pag-boot", + "disable": "Huwag paganahin ang awtomatikong pagsisimula sa pag-boot", + "toggle": "I-toggle ang awtomatikong pagsisimula sa pag-boot", + "status": "Ipakita ang status ng awtomatikong pagsisimula" + }, + "runtime": { + "description": "Pamahalaan ang mga native runtime dependency", + "check": "Suriin ang status ng mga native dependency sa runtime directory", + "repair": "Muling i-install ang mga native dependency sa runtime directory", + "repair_force": "Pilitin ang muling pag-install kahit valid", + "clean": "Alisin ang runtime directory (nagpapalaya ng espasyo sa disk)", + "clean_yes": "Laktawan ang kumpirmasyon" + }, + "repl": { + "description": "Interaktibong multi-turn REPL gamit ang LLM", + "model": "Modelong gagamitin (default: auto)", + "combo": "Pangalan ng combo na gagamitin", + "system": "System prompt", + "resume": "Ipagpatuloy ang naka-save na session ayon sa pangalan" + }, + "plugin": { + "description": "Pamahalaan ang mga CLI plugin (omniroute-cmd-*)", + "list": "Ilista ang mga naka-install na plugin", + "install": "Mag-install ng plugin mula sa npm o lokal na path", + "remove": "Alisin ang naka-install na plugin", + "info": "Ipakita ang mga detalye ng naka-install na plugin", + "search": "Maghanap sa npm registry ng mga available na plugin", + "update": "I-update ang (mga) naka-install na plugin", + "scaffold": "Bumuo ng boilerplate para sa bagong plugin" + }, + "launch": { + "description": "Ilunsad ang Claude Code na nakaturo sa OmniRoute (lokal o remote, gamit ang --profile)", + "token": "Token na dapat ipadala ng Claude client (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "Hindi maabot ang OmniRoute sa {port}. Simulan ito gamit ang 'omniroute serve'.", + "notFound": "Hindi natagpuan sa PATH ang 'claude' CLI." + }, + "run": { + "description": "Maglunsad ng sinusuportahang CLI target sa pamamagitan ng OmniRoute" + }, + "setupClaude": { + "description": "Bumuo ng mga Claude Code profile sa ~/.claude/profiles mula sa catalog ng modelo ng OmniRoute" + }, + "connect": { + "description": "Kumonekta sa isang remote na OmniRoute server at pumasok sa remote mode" + }, + "tokens": { + "description": "Pamahalaan ang mga scoped CLI access token (remote mode)" + }, + "configure": { + "description": "Pumili ng provider+model mula sa aktibong server at i-configure ang isang sinusuportahang lokal na CLI" + }, + "launchCodex": { + "description": "Ilunsad ang Codex CLI na nakaturo sa OmniRoute (lokal o remote VPS)" + }, + "setupCodex": { + "description": "Bumuo ng mga ~/.codex profile file mula sa live na catalog ng modelo ng OmniRoute" + }, + "packs": { + "description": "Pamahalaan ang mga opsyonal na runtime pack (ML / browser automation)", + "listDescription": "Ilista ang mga opsyonal na pack at ang estado ng kanilang pagka-install", + "installDescription": "Mag-install ng opsyonal na pack sa DATA_DIR", + "verifyDescription": "I-verify ang mga naka-install na pack gamit ang kasamang checksum index", + "removeDescription": "Alisin ang isang naka-install na opsyonal na pack", + "sourceOpt": "Directory na naglalaman ng mga payload ng pack at ng pack index", + "warnNoIndex": "Hindi natagpuan ang optional-packs.index.json — hindi available ang pag-install/pag-verify sa checkout na ito (kasama ito sa mga desktop bundle)", + "errUnknown": "hindi kilalang pack: {name}", + "errNoIndex": "hindi natagpuan ang pack index; ipasa ang --source na naglalaman ng pack payload (kasama ito sa mga desktop bundle, katabi ng app)", + "installed": "na-install at na-verify ang pack na \"{name}\" sa {dir}", + "restartHint": "i-restart ang OmniRoute server (o desktop app) upang magamit ng runtime ang pack", + "removed": "inalis ang pack na \"{name}\"", + "notInstalled": "hindi naka-install ang pack na \"{name}\"", + "verifyOk": "na-verify ang lahat ng naka-install na pack", + "verifyFailed": "nabigo sa verification ang {count} (mga) pack", + "noneInstalled": "walang naka-install na opsyonal na pack" } } diff --git a/bin/cli/locales/pl.json b/bin/cli/locales/pl.json index c43a011e8b..6d2c841f50 100644 --- a/bin/cli/locales/pl.json +++ b/bin/cli/locales/pl.json @@ -14,6 +14,812 @@ "jsonOpt": "Wyjście jako JSON", "yesOpt": "Pomiń potwierdzenie" }, + "setup": { + "title": "Konfiguracja OmniRoute", + "passwordPrompt": "Hasło administratora", + "providerPrompt": "Domyślny dostawca (pozostaw puste, aby pominąć)", + "done": "Konfiguracja zakończona", + "passwordSet": "Hasło administratora zostało skonfigurowane", + "providerSet": "Skonfigurowano dostawcę: {name}", + "testingProvider": "Testowanie połączenia z dostawcą: {name}", + "testPassed": "Test dostawcy zakończony pomyślnie", + "testFailed": "Test dostawcy nie powiódł się: {error}", + "loginEnabled": "Logowanie: włączone (hasło zaktualizowane)", + "loginDisabled": "Logowanie: wyłączone", + "providerInfo": "Dostawca: {info}", + "opencode": "Zainstaluj i skonfiguruj dołączoną wtyczkę @omniroute/opencode-plugin dla OpenCode" + }, + "doctor": { + "title": "Diagnostyka OmniRoute", + "dbOk": "Baza danych: OK ({path})", + "dbMissing": "Baza danych: niezainicjowana — uruchom `omniroute setup`", + "portOk": "Port {port}: dostępny", + "portConflict": "Port {port}: używany przez inny proces", + "encryptionOk": "Klucz szyfrowania: skonfigurowany", + "encryptionMissing": "Brak klucza szyfrowania — uruchom `omniroute setup`", + "allGood": "Wszystkie testy zakończone pomyślnie.", + "warnings": "Liczba ostrzeżeń: {count} — zobacz powyżej." + }, + "providers": { + "title": "Dostawcy", + "noProviders": "Nie skonfigurowano żadnych dostawców. Uruchom: omniroute setup", + "testing": "Testowanie dostawcy {name}...", + "available": "Liczba dostępnych dostawców: {count}", + "connected": "Połączono", + "disconnected": "Rozłączono", + "validationFailed": "Walidacja nie powiodła się: {error}", + "metrics": { + "description": "Pokaż wskaźniki wydajności dostawców (opóźnienie, współczynnik powodzenia, koszt)", + "provider": "Filtruj według identyfikatora dostawcy", + "connection_id": "Filtruj według identyfikatora połączenia", + "period": "Okres: 1h|6h|24h|7d|30d (domyślnie: 24h)", + "metric": "Skup się na konkretnym polu wskaźnika", + "sort": "Sortuj według pola (malejąco)", + "limit": "Maksymalna liczba wierszy (domyślnie: 50)", + "watch": "Odświeżaj co 5 s (tryb na żywo)", + "compare": "Oddzielone przecinkami identyfikatory dostawców do porównania obok siebie" + }, + "metric_single": { + "description": "Pobierz pojedynczą wartość wskaźnika dla określonego połączenia" + }, + "rotate": { + "description": "Zmień klucz API usługi nadrzędnej dla połączenia z dostawcą", + "newKeyOpt": "Nowa wartość klucza API (unikaj: preferuj --from-env)", + "fromEnvOpt": "Odczytaj nowy klucz ze zmiennej środowiskowej VAR", + "oauthOpt": "Zamiast tego uruchom ponownie proces uwierzytelniania OAuth", + "skipTestOpt": "Pomiń test połączenia po rotacji", + "dryRunOpt": "Wyświetl, co zostałoby zmienione, bez zapisywania", + "confirmPrompt": "Zastąpić klucz API dla połączenia „{name}” ({id})? [y/N]", + "dryRunResult": "[dry-run] Klucz dla „{name}” ({id}) zostałby zrotowany. Nie wprowadzono żadnych zmian.", + "oauthHint": "Połączenie OAuth — uruchom: omniroute oauth {provider}", + "envVarEmpty": "Zmienna środowiskowa {var} nie jest ustawiona lub jest pusta.", + "success": "Zrotowano klucz dla „{name}”. Uruchom `providers test {id}`, aby go zweryfikować.", + "testPassed": "Test po rotacji zakończył się pomyślnie.", + "testFailed": "Test po rotacji nie powiódł się: {error}" + }, + "status": { + "description": "Pokaż stan kluczy dla wszystkich połączeń z dostawcami (wiek, wygaśnięcie, okres karencji)", + "providerOpt": "Filtruj według nazwy dostawcy", + "header": "ID Dostawca Nazwa Stan wygaśnięcia Stan testu Koniec okresu karencji", + "noData": "Brak dostępnych danych o połączeniach z dostawcami.", + "requiresServer": "Polecenie providers status wymaga uruchomionego serwera OmniRoute." + } + }, + "keys": { + "title": "Klucze API", + "addDescription": "Dodaj lub zaktualizuj klucz API dostawcy", + "listDescription": "Wyświetl wszystkie skonfigurowane klucze API", + "removeDescription": "Usuń klucz API dostawcy", + "regenerateDescription": "Wygeneruj ponownie klucz API OmniRoute", + "revokeDescription": "Unieważnij klucz API OmniRoute", + "revealDescription": "Pokaż niezamaskowaną wartość klucza API", + "usageDescription": "Pokaż ostatnie użycie klucza API", + "usageLimitOpt": "Liczba ostatnich żądań", + "rotateDescription": "Wygeneruj nowy klucz i unieważnij stary", + "graceOpt": "Okres karencji (ms) przed unieważnieniem starego klucza", + "stdinOpt": "Odczytaj klucz API ze standardowego wejścia zamiast z argumentu", + "added": "Dodano klucz dla {provider}.", + "removed": "Usunięto klucz.", + "listed": "Liczba kluczy: {count}.", + "noKeys": "Nie skonfigurowano żadnych kluczy.", + "noUsage": "Nie znaleziono danych o użyciu.", + "confirmRemove": "Usunąć klucz {id}?", + "confirmRegenerate": "Wygenerować ponownie klucz {id}?", + "confirmRevoke": "Unieważnić klucz {id}?", + "confirmRotate": "Zrotować klucz {id}? (stary klucz zostanie unieważniony po okresie karencji)", + "regenerated": "Wygenerowano ponownie. Nowy klucz: {key}", + "revoked": "Klucz {id} został unieważniony.", + "rotated": "Klucz {id} został zmieniony. Identyfikator nowego klucza: {newId}", + "revealWarning": "⚠ Spowoduje to wyświetlenie pełnego, niezamaskowanego klucza. Upewnij się, że nikt nie widzi Twojego ekranu.", + "providerRequired": "Dostawca jest wymagany.", + "keyRequired": "Klucz API jest wymagany.", + "stdinEmpty": "Nie podano klucza API przez stdin.", + "unknownProvider": "Nieznany dostawca: {provider}", + "policy": { + "title": "Zasady klucza", + "showDescription": "Wyświetl zasady limitów i kosztów dla klucza", + "setDescription": "Ustaw zasady limitów i kosztów dla klucza", + "rateLimitOpt": "Maksymalna liczba żądań na minutę", + "maxCostOpt": "Maksymalny koszt dzienny (USD)", + "allowedModelsOpt": "Rozdzielona przecinkami lista dozwolonych modeli", + "nothingToSet": "Nie podano żadnych pól zasad. Użyj --rate-limit, --max-cost lub --allowed-models.", + "updated": "Zasady zostały zaktualizowane." + }, + "expiration": { + "title": "Wygaśnięcie klucza", + "listDescription": "Wyświetl klucze, które wkrótce wygasną", + "daysOpt": "Wyświetl klucze wygasające w ciągu N dni", + "none": "Brak kluczy wygasających w ciągu {days} dni.", + "listTitle": "Klucze wygasające w ciągu {days} dni:" + } + }, + "authExport": { + "description": "Eksportuj ODSZYFROWANE dane uwierzytelniające dostawcy (tylko lokalnie, dane wyjściowe w postaci zwykłego tekstu)", + "idOpt": "Eksportuj tylko połączenie odpowiadające temu identyfikatorowi, nazwie lub dostawcy", + "formatOpt": "Format danych wyjściowych: json lub env", + "outOpt": "Zapisz dane wyjściowe do pliku zamiast do stdout (z uprawnieniami 0600)", + "forceOpt": "Potwierdź, że rozumiesz, iż spowoduje to wyświetlenie lub zapisanie sekretów w postaci zwykłego tekstu", + "warning": "⚠ Spowoduje to wyświetlenie lub zapisanie ODSZYFROWANYCH kluczy API i tokenów OAuth w postaci zwykłego tekstu. Upewnij się, że Twój ekran, historia powłoki i wszelkie pliki wyjściowe pozostają prywatne.", + "confirmHeading": "⚠ OSTRZEŻENIE: spowoduje to wyeksportowanie ODSZYFROWANYCH danych uwierzytelniających dostawcy w postaci zwykłego tekstu", + "confirmBody": "To polecenie odszyfrowuje i wyświetla lub zapisuje apiKey, accessToken, refreshToken oraz\nidToken dla wybranych połączeń. Traktuj dane wyjściowe jako sekret.", + "confirmFooter": "Aby potwierdzić, uruchom:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY jest wymagany do eksportowania danych uwierzytelniających.", + "notFound": "Nie znaleziono połączenia: {id}", + "invalidFormat": "Nieprawidłowy format: {format}. Użyj json lub env." + }, + "stream": { + "description": "Przesyłaj strumieniowo odpowiedź czatu z trybami inspekcji SSE", + "file": "Wczytaj prompt z pliku", + "stdin": "Wczytaj prompt ze stdin", + "model": "Identyfikator modelu (domyślnie: auto)", + "system": "Prompt systemowy", + "combo": "Wymuś określoną kombinację według nazwy", + "max_tokens": "Maksymalna liczba tokenów w odpowiedzi", + "responses_api": "Użyj /v1/responses zamiast /v1/chat/completions", + "raw": "Wyświetlaj nieprzetworzone wiersze SSE w otrzymanej postaci", + "debug": "Wyświetl informacje o czasie przetwarzania poszczególnych fragmentów w stderr", + "save": "Zapisz wszystkie zdarzenia SSE do pliku .jsonl", + "error": { + "empty_prompt": "Błąd: prompt jest wymagany (argument pozycyjny, --file lub --stdin)" + } + }, + "usage": { + "description": "Analityka użycia, budżety, limity i dzienniki", + "analytics": { + "description": "Pokaż zagregowaną analitykę użycia", + "period": "Zakres czasu: 1d|7d|30d|90d|ytd|all (domyślnie: 30d)", + "provider": "Filtruj według identyfikatora dostawcy" + }, + "budget": { + "description": "Zarządzaj budżetami kosztów", + "set": { + "scope": "Zakres budżetu (domyślnie: globalny)", + "period": "Okres budżetowy: daily|weekly|monthly (domyślnie: monthly)" + } + }, + "quota": { + "description": "Pokaż wykorzystanie limitu dostawcy", + "provider": "Filtruj według identyfikatora dostawcy", + "check": "Pokaż, czy limit pozwala na nowe żądanie" + }, + "logs": { + "description": "Pokaż dzienniki wywołań żądań", + "limit": "Liczba zwracanych wpisów dziennika (domyślnie: 100)", + "search": "Zapytanie wyszukiwania do filtrowania dzienników", + "since": "Zwróć dzienniki od tego znacznika czasu", + "follow": "Śledź na bieżąco nowe wpisy dziennika", + "api_key": "Filtruj dzienniki według klucza API" + }, + "utilization": { + "description": "Pokaż wskaźniki wykorzystania kluczy API", + "api_key": "Filtruj według klucza API" + }, + "history": { + "description": "Pokaż historię żądań", + "limit": "Liczba wpisów historii (domyślnie: 100)" + }, + "proxy_logs": { + "description": "Pokaż dzienniki żądań na poziomie proxy", + "limit": "Liczba wpisów dziennika proxy (domyślnie: 100)" + } + }, + "cost": { + "description": "Pokaż raport kosztów z podziałem według dostawcy, modelu, kombinacji lub klucza API", + "period": "Zakres czasu: 1d|7d|30d|90d|ytd|all (domyślnie: 30d)", + "since": "Data początkowa (format ISO, np. 2026-01-01) — zastępuje --period", + "until": "Data końcowa (format ISO)", + "group_by": "Grupuj wyniki według: provider|model|api-key|combo|day (domyślnie: provider)", + "api_key_filter": "Filtruj według określonego klucza API", + "limit": "Maksymalna liczba wyświetlanych wierszy (domyślnie: 100)" + }, + "simulate": { + "description": "Symulacja routingu bez wykonywania żądań — pokaż, którzy dostawcy zostaliby wybrani, bez wywoływania usługi nadrzędnej", + "file": "Wczytaj pełną treść żądania z pliku JSON", + "model": "Identyfikator modelu (domyślnie: auto)", + "combo": "Wymuś określoną kombinację według nazwy", + "reasoning": "Poziom intensywności rozumowania (low|medium|high)", + "thinking": "Budżet tokenów na rozszerzone rozumowanie", + "explain": "Wyświetl drzewo mechanizmów zastępczych i zakres kosztów w stderr", + "noCombo": "Nie znaleziono pasującej kombinacji. Skonfiguruj ją za pomocą: omniroute combo create" + }, + "chat": { + "description": "Wyślij jednorazowy prompt czatu do OmniRoute", + "file": "Wczytaj prompt z pliku", + "stdin": "Wczytaj prompt ze standardowego wejścia", + "system": "Prompt systemowy", + "model": "Identyfikator modelu (domyślnie: auto)", + "max_tokens": "Maksymalna liczba tokenów w odpowiedzi", + "temperature": "Temperatura próbkowania (0–2)", + "top_p": "Próbkowanie jądrowe top-p", + "reasoning_effort": "Poziom intensywności rozumowania (low|medium|high)", + "thinking_budget": "Budżet tokenów rozszerzonego rozumowania", + "combo": "Wymuś określoną kombinację według nazwy", + "responses_api": "Użyj /v1/responses zamiast /v1/chat/completions", + "stream": "Przesyłaj odpowiedź strumieniowo", + "no_history": "Nie zapisuj w ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Błąd: prompt jest wymagany (argument pozycyjny, --file lub --stdin)" + } + }, + "serve": { + "description": "Uruchom serwer OmniRoute (działanie domyślne)", + "starting": "Uruchamianie serwera OmniRoute na porcie {port}...", + "ready": "Dostępny pod adresem http://localhost:{port}", + "stopping": "Zatrzymywanie serwera (PID {pid})...", + "stopped": "Serwer został zatrzymany.", + "notRunning": "Serwer nie jest uruchomiony.", + "port": "Port nasłuchiwania (domyślnie: 20128)", + "no_open": "Nie otwieraj automatycznie przeglądarki", + "daemon": "Uruchom serwer jako demon w tle", + "log": "Wyświetlaj logi serwera bezpośrednio", + "no_recovery": "Wyłącz automatyczne ponowne uruchamianie po awarii (tryb debugowania)", + "max_restarts": "Maksymalna liczba ponownych uruchomień po awarii w ciągu 30 s przed rezygnacją (domyślnie: 2)", + "tray": "Uruchom w zasobniku systemowym (tylko aplikacja komputerowa, opcjonalnie)", + "no_tray": "Wyłącz ikonę w zasobniku systemowym", + "ready_timeout": "Limit czasu sondy gotowości w ms (również OMNIROUTE_READY_TIMEOUT_MS, domyślnie 60000)", + "tls_cert": "Ścieżka do certyfikatu TLS (PEM) do obsługi HTTPS (również OMNIROUTE_TLS_CERT)", + "tls_key": "Ścieżka do klucza prywatnego TLS (PEM) do obsługi HTTPS (również OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Kopia zapasowa", + "description": "Utwórz kopię zapasową danych OmniRoute", + "creating": "Tworzenie kopii zapasowej...", + "done": "Kopia zapasowa została zapisana w {path}", + "noFiles": "Brak plików do utworzenia kopii zapasowej (baza danych nie została zainicjalizowana)", + "failed": "Tworzenie kopii zapasowej nie powiodło się: {error}", + "restoring": "Przywracanie z {path}...", + "restored": "Przywracanie zakończone.", + "restoreDescription": "Przywróć z kopii zapasowej", + "listTitle": "Dostępne kopie zapasowe", + "noBackups": "Nie znaleziono kopii zapasowych.", + "notFound": "Nie znaleziono kopii zapasowej: {name}", + "confirmRestore": "Zastąpić bieżące dane kopią zapasową z {ts}?", + "createDescription": "Utwórz kopię zapasową danych OmniRoute", + "nameOpt": "Niestandardowa nazwa kopii zapasowej", + "cloudOpt": "Prześlij kopię zapasową do magazynu w chmurze", + "encryptOpt": "Zaszyfruj kopię zapasową za pomocą AES-256-GCM", + "keyFileOpt": "Ścieżka do pliku zawierającego hasło szyfrowania", + "excludeOpt": "Wyklucz plik pasujący do wzorca (opcja powtarzalna)", + "retentionOpt": "Zachowaj tylko ostatnie N kopii zapasowych", + "passphrasePrompt": "Hasło szyfrowania:", + "noPassphrase": "Hasło jest wymagane w przypadku zaszyfrowanej kopii zapasowej.", + "cloudFailed": "Ostrzeżenie: przesyłanie do chmury nie powiodło się. Lokalna kopia zapasowa została zapisana.", + "cloudUploaded": "Kopia zapasowa przesłana do chmury: {url}", + "auto": { + "title": "Harmonogram kopii zapasowych", + "enableDescription": "Włącz zaplanowane automatyczne tworzenie kopii zapasowych", + "disableDescription": "Wyłącz zaplanowane automatyczne tworzenie kopii zapasowych", + "statusDescription": "Pokaż bieżący stan harmonogramu kopii zapasowych", + "cronOpt": "Wyrażenie cron harmonogramu (domyślnie: codziennie o 3:00)", + "enabled": "Automatyczne tworzenie kopii zapasowych jest włączone (cron: {cron}).", + "hint": "Harmonogram jest odczytywany przez omniroute serve podczas uruchamiania.", + "disabled": "Automatyczne tworzenie kopii zapasowych jest wyłączone.", + "notConfigured": "Nie skonfigurowano harmonogramu kopii zapasowych." + } + }, + "health": { + "description": "Sprawdź kondycję serwera i stan komponentów", + "noServer": "Serwer nie jest uruchomiony. Uruchom go za pomocą: omniroute serve", + "title": "Kondycja", + "status": "Stan: {status}", + "uptime": "Czas działania: {uptime}", + "requests": "Żądania (24 godz.): {count}", + "cost": "Koszt (24 godz.): ${cost}" + }, + "quota": { + "description": "Pokaż wykorzystanie limitów dostawcy", + "noServer": "Serwer nie jest uruchomiony. Uruchom go za pomocą: omniroute serve", + "noData": "Brak informacji o limitach." + }, + "cache": { + "description": "Zarządzaj pamięcią podręczną odpowiedzi", + "noServer": "Serwer nie jest uruchomiony. Uruchom go za pomocą: omniroute serve", + "cleared": "Pamięć podręczna została wyczyszczona.", + "clearFailed": "Nie udało się wyczyścić pamięci podręcznej." + }, + "redis": { + "description": "Uruchom lokalny kontener Redis jednym kliknięciem (Podman lub Docker) do buforowania i śledzenia limitów OmniRoute" + }, + "test": { + "description": "Przetestuj połączenie z dostawcą", + "noServer": "Serwer nie działa. Uruchom go za pomocą: omniroute serve", + "testing": "Testowanie {provider} / {model}...", + "passed": "Połączenie powiodło się!", + "failed": "Połączenie nie powiodło się: {error}", + "allProvidersOpt": "Przetestuj wszystkich skonfigurowanych dostawców", + "latencyOpt": "Pokaż pomiary opóźnień (średnie/min./maks. ms)", + "repeatOpt": "Powtórz test N razy i zagreguj wyniki", + "compareOpt": "Modele do porównania rozdzielone przecinkami (np. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Zapisz wyniki do pliku JSON", + "saved": "Wyniki zapisano w {path}", + "compareTitle": "Porównanie modeli", + "compareMinTwo": "Opcja --compare wymaga co najmniej dwóch modeli (rozdzielonych przecinkami)", + "noProviders": "Nie skonfigurowano żadnych dostawców. Dodaj dostawcę za pomocą: omniroute keys add" + }, + "update": { + "checking": "Sprawdzanie dostępności aktualizacji...", + "upToDate": "Używasz już najnowszej wersji ({version}).", + "available": "Dostępna aktualizacja: {current} → {latest}", + "installing": "Instalowanie {latest}...", + "done": "Zaktualizowano do wersji {latest}. Uruchom ponownie serwer, aby zastosować zmiany." + }, + "mcp": { + "title": "Serwer MCP", + "running": "Serwer MCP działa ({transport})", + "stopped": "Serwer MCP został zatrzymany.", + "restarted": "Serwer MCP został uruchomiony ponownie.", + "stoppedHint": "Uruchom `omniroute mcp enable`, aby go włączyć.", + "enabled": "Serwer MCP został włączony.", + "disabled": "Serwer MCP został wyłączony.", + "enable": { + "description": "Włącz serwer MCP", + "transport": "Transport do użycia: stdio|sse|streamable-http" + }, + "disable": { + "description": "Wyłącz serwer MCP" + }, + "call": { + "description": "Wywołaj bezpośrednio narzędzie MCP", + "args": "Obiekt argumentów JSON (wpisany bezpośrednio)", + "args_file": "Ścieżka do pliku argumentów JSON", + "stream": "Użyj punktu końcowego przesyłania strumieniowego (/api/mcp/stream)", + "scope": "Wymagany zakres (opcja powtarzalna, np. read:health)" + }, + "scopes": { + "description": "Wyświetl dostępne zakresy MCP", + "tool": "Pokaż zakresy wymagane przez określone narzędzie" + }, + "tools": { + "description": "Sprawdź narzędzia MCP", + "list": { + "description": "Wyświetl wszystkie narzędzia MCP", + "scope": "Filtruj według zakresu" + }, + "info": { + "description": "Pokaż metadane narzędzia MCP" + }, + "schema": { + "description": "Pokaż schemat JSON danych wejściowych/wyjściowych narzędzia MCP", + "io": "Rodzaj schematu: input|output (domyślnie: input)" + } + }, + "audit": { + "description": "Dziennik audytu MCP (alias dla audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Wyświetl dostępne umiejętności A2A z karty agenta" + }, + "invoke": { + "description": "Wywołaj umiejętność A2A i zwróć identyfikator zadania", + "input": "Obiekt wejściowy JSON", + "input_file": "Ścieżka do wejściowego pliku JSON", + "wait": "Przed zwróceniem wyniku poczekaj na ukończenie zadania", + "timeout": "Limit czasu oczekiwania na ukończenie w ms (domyślnie: 60000)" + }, + "tasks": { + "description": "Zarządzaj zadaniami A2A", + "list": { + "status": "Filtruj według statusu", + "skill": "Filtruj według identyfikatora umiejętności" + }, + "watch": { + "description": "Sprawdzaj status zadania aż do ukończenia" + }, + "stream": { + "description": "Przesyłaj strumieniowo zdarzenia wykonania zadania przez SSE" + }, + "logs": { + "description": "Pokaż komunikaty i artefakty zadania" + } + } + }, + "policy": { + "description": "Zarządzaj zasadami autoryzacji OmniRoute", + "list": { + "description": "Wyświetl zasady", + "kind": "Filtruj według rodzaju (allow|deny|rate-limit|cost-cap)", + "scope": "Filtruj według zakresu (global|api-key|provider)" + }, + "get": { + "description": "Pobierz szczegóły zasady według identyfikatora" + }, + "create": { + "description": "Utwórz zasadę z pliku JSON", + "file": "Ścieżka do pliku JSON zasady" + }, + "update": { + "description": "Zaktualizuj zasadę z pliku JSON", + "file": "Ścieżka do pliku JSON zasady" + }, + "delete": { + "description": "Usuń zasadę według identyfikatora", + "yes": "Pomiń monit o potwierdzenie" + }, + "evaluate": { + "description": "Próbna ocena zasady (kod wyjścia 0=dozwolone, 4=odrzucone)", + "api_key": "Klucz API do oceny", + "action": "Akcja do sprawdzenia (np. chat, embed, admin)", + "resource": "Ścieżka lub identyfikator zasobu", + "context": "Dodatkowy kontekst jako obiekt JSON" + }, + "export": { + "description": "Wyeksportuj wszystkie zasady do pliku JSON" + }, + "import": { + "description": "Zaimportuj zasady z pliku JSON", + "overwrite": "Zastąp istniejące zasady o tym samym identyfikatorze" + } + }, + "compression": { + "description": "Skonfiguruj i sprawdź potok kompresji OmniRoute", + "status": { + "description": "Pokaż bieżący stan i ustawienia kompresji" + }, + "configure": { + "description": "Skonfiguruj ustawienia kompresji", + "engine": "Silnik kompresji (caveman|rtk|hybrid|none)", + "caveman_agg": "Poziom agresywności Caveman 0.0–1.0", + "rtk_budget": "Budżet tokenów RTK", + "language_pack": "Pakiet językowy do aktywacji" + }, + "engine": { + "description": "Pobierz lub ustaw aktywny mechanizm kompresji" + }, + "combos": { + "description": "Zarządzaj statystykami kombinacji kompresji" + }, + "rules": { + "description": "Zarządzaj regułami kompresji", + "add": { + "pattern": "Wzorzec do dopasowania (wyrażenie regularne lub pole:wzorzec)", + "action": "Działanie: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Wyświetl dostępne pakiety językowe kompresji" + }, + "preview": { + "description": "Wyświetl podgląd efektu kompresji żądania", + "file": "Ścieżka do pliku JSON żądania" + } + }, + "tunnel": { + "title": "Tunele", + "listDescription": "Wyświetl aktywne tunele", + "createDescription": "Utwórz tunel", + "created": "Utworzono tunel: {url}", + "stopped": "Tunel zatrzymany.", + "confirmStop": "Zatrzymać tunel {id}?", + "stopDescription": "Zatrzymaj tunel", + "statusDescription": "Wyświetl szczegółowy stan tunelu", + "logsDescription": "Wyświetl dzienniki tunelu", + "infoDescription": "Wyświetl szczegóły konfiguracji tunelu", + "rotateDescription": "Wygeneruj nowy adres URL tunelu", + "tailOpt": "Liczba wyświetlanych wierszy dziennika", + "typeRequired": "Typ tunelu jest wymagany.", + "noLogs": "Brak dostępnych dzienników.", + "notAvailable": "Informacje o tunelu są niedostępne.", + "noTunnels": "Brak aktywnych tuneli.", + "infoTitle": "Informacje o tunelu: {type}", + "rotated": "Zmieniono adres URL tunelu: {url}", + "confirmRotate": "Zmienić adres URL tunelu {type}? (zostanie wygenerowany nowy adres URL)" + }, + "stop": { + "description": "Zatrzymaj serwer OmniRoute", + "stopping": "Zatrzymywanie serwera (PID {pid})...", + "stopped": "Serwer zatrzymany.", + "notRunning": "Żaden serwer nie jest uruchomiony.", + "portFallback": "Nie znaleziono pliku PID, próba zatrzymania na podstawie portu..." + }, + "restart": { + "description": "Uruchom ponownie serwer OmniRoute", + "restarting": "Ponowne uruchamianie serwera OmniRoute..." + }, + "dashboard": { + "description": "Otwórz panel OmniRoute w przeglądarce", + "opening": "Otwieranie panelu pod adresem {url}", + "urlOnly": "Wyświetl adres URL panelu bez otwierania przeglądarki", + "tui": "Otwórz interaktywny panel TUI (terminalowy interfejs użytkownika, 7 kart)" + }, + "models": { + "description": "Wyświetl dostępne modele (wymaga serwera)", + "search": "Filtruj modele według identyfikatora, nazwy, dostawcy lub opisu", + "noServer": "Serwer nie działa. Uruchom go za pomocą: omniroute serve", + "noModels": "Nie znaleziono modeli." + }, + "audit": { + "description": "Uzyskaj dostęp do dzienników zgodności i audytu MCP", + "source": "Źródło dziennika: all|compliance|mcp (domyślnie: all)", + "since": "Zwróć wpisy od tego znacznika czasu (ISO 8601)", + "until": "Zwróć wpisy do tego znacznika czasu (ISO 8601)", + "tail": { + "description": "Pokaż ostatnie wpisy dziennika audytu", + "follow": "Stale śledź nowe wpisy (odpytywanie co 2 s)", + "limit": "Maksymalna liczba wyświetlanych wpisów (domyślnie: 100)" + }, + "search": { + "description": "Przeszukaj wpisy dziennika audytu według słowa kluczowego", + "limit": "Maksymalna liczba wyników (domyślnie: 200)", + "actor": "Filtruj według identyfikatora podmiotu", + "action": "Filtruj według nazwy działania" + }, + "export": { + "description": "Eksportuj dziennik audytu do pliku", + "format": "Format wyjściowy: jsonl|csv (domyślnie: jsonl)" + }, + "stats": { + "description": "Pokaż statystyki dziennika audytu", + "period": "Okres: 1d|7d|30d (domyślnie: 7d)" + }, + "get": { + "description": "Pobierz pojedynczy wpis dziennika audytu według identyfikatora" + } + }, + "skills": { + "description": "Zarządzaj umiejętnościami OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Wyświetl zainstalowane umiejętności", + "type": "Filtruj według typu (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Pokaż tylko włączone umiejętności", + "disabled": "Pokaż tylko wyłączone umiejętności", + "api_key": "Filtruj według klucza API" + }, + "get": { + "description": "Pobierz szczegóły umiejętności według identyfikatora" + }, + "install": { + "description": "Zainstaluj umiejętność z pliku lub adresu URL", + "from_file": "Ścieżka do pliku definicji umiejętności w formacie JSON", + "from_url": "Adres URL zdalnej definicji umiejętności", + "type": "Typ umiejętności (sandbox|custom|hybrid)", + "enable": "Włącz umiejętność po instalacji" + }, + "enable": { + "description": "Włącz umiejętność według identyfikatora" + }, + "disable": { + "description": "Wyłącz umiejętność według identyfikatora", + "yes": "Pomiń monit o potwierdzenie" + }, + "delete": { + "description": "Usuń umiejętność według identyfikatora", + "yes": "Pomiń monit o potwierdzenie" + }, + "execute": { + "description": "Uruchom umiejętność według identyfikatora", + "input": "Obiekt wejściowy JSON", + "input_file": "Ścieżka do pliku wejściowego JSON", + "timeout": "Limit czasu wykonania w ms (domyślnie: 30000)" + }, + "executions": { + "description": "Wyświetl historię uruchomień umiejętności", + "skill": "Filtruj według ID umiejętności", + "limit": "Maksymalna liczba wyników (domyślnie: 50)", + "status": "Filtruj według statusu (running|completed|failed)" + }, + "skillssh": { + "description": "Zarządzaj umiejętnościami zainstalowanymi przez SSH" + }, + "marketplace": { + "description": "Przeglądaj i instaluj umiejętności z marketplace" + }, + "mp": { + "search": { + "description": "Wyszukuj pakiety w marketplace", + "category": "Filtruj według kategorii", + "tag": "Filtruj według tagu", + "limit": "Maksymalna liczba wyników (domyślnie: 30)", + "sort": "Sortuj według: downloads|rating|recent" + }, + "info": { + "description": "Pokaż szczegóły pakietu i plik readme" + }, + "install": { + "description": "Zainstaluj pakiet z marketplace", + "version": "Wersja pakietu (domyślnie: latest)", + "enable": "Włącz po instalacji", + "yes": "Pomiń monit o potwierdzenie" + }, + "categories": { + "description": "Wyświetl kategorie marketplace" + }, + "featured": { + "description": "Pokaż polecane pakiety z marketplace" + } + } + }, + "memory": { + "description": "Zarządzaj pamięcią konwersacyjną OmniRoute (FTS5 + wektorową)", + "search": { + "description": "Przeszukuj wpisy pamięci za pomocą zapytania semantycznego", + "type": "Filtruj według typu pamięci (user|feedback|project|reference)", + "limit": "Maksymalna liczba wyników (domyślnie: 20)", + "api_key": "Filtruj według klucza API", + "token_budget": "Ogranicz łączną liczbę tokenów w wynikach" + }, + "add": { + "description": "Dodaj nowy wpis do pamięci", + "content": "Treść tekstowa pamięci", + "file": "Wczytaj zawartość z pliku", + "type": "Typ pamięci (domyślnie: user)", + "metadata": "Obiekt metadanych JSON", + "api_key": "Powiąż z kluczem API" + }, + "clear": { + "description": "Usuń wpisy pamięci pasujące do filtrów", + "type": "Filtruj według typu", + "older": "Usuń wpisy starsze niż podany okres (30d, 6m, 1y)", + "api_key": "Filtruj według klucza API", + "yes": "Pomiń monit o potwierdzenie" + }, + "list": { + "description": "Wyświetl wpisy pamięci bez rankingu wyszukiwania", + "type": "Filtruj według typu", + "limit": "Maksymalna liczba wyników (domyślnie: 100)", + "api_key": "Filtruj według klucza API" + }, + "get": { + "description": "Pobierz pojedynczy wpis pamięci według ID" + }, + "delete": { + "description": "Usuń wpis pamięci według ID", + "yes": "Pomiń monit o potwierdzenie" + }, + "health": { + "description": "Pokaż stan podsystemu pamięci (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Zarządzaj połączeniami z dostawcami OAuth", + "providers": { + "description": "Wyświetl dostawców obsługujących OAuth i typy ich przepływów" + }, + "start": { + "description": "Rozpocznij przepływ autoryzacji OAuth dla dostawcy", + "provider": "Identyfikator dostawcy (gemini, copilot, cursor, …)", + "no_browser": "Wyświetl tylko URL — nie otwieraj przeglądarki", + "import_system": "Automatycznie zaimportuj dane uwierzytelniające z lokalnej konfiguracji systemu", + "social": "Dostawca logowania społecznościowego (google|github) — wymagany dla kiro", + "timeout": "Limit czasu oczekiwania na autoryzację w ms (domyślnie: 300000)" + }, + "status": { + "description": "Wyświetl aktywne połączenia OAuth", + "provider": "Filtruj według identyfikatora dostawcy" + }, + "revoke": { + "description": "Unieważnij połączenie OAuth", + "provider": "Identyfikator dostawcy, którego połączenie ma zostać unieważnione", + "connection_id": "Unieważnij określone połączenie według identyfikatora", + "yes": "Pomiń monit o potwierdzenie" + } + }, + "cloud": { + "description": "Zarządzaj zadaniami agentów AI w chmurze (codex, devin, jules)", + "agents": { + "description": "Wyświetl dostępnych agentów chmurowych" + }, + "agent": { + "description": "Zarządzaj zadaniami agenta chmurowego {agent}", + "auth": { + "description": "Autoryzuj agenta {agent} przez OAuth" + } + }, + "task": { + "description": "Zarządzaj zadaniami agentów chmurowych", + "create": { + "description": "Utwórz nowe zadanie agenta", + "title": "Tytuł zadania (domyślnie pierwsze 80 znaków monitu)", + "prompt": "Treść monitu zadania", + "prompt_file": "Wczytaj monit z pliku", + "repo": "URL repozytorium do sklonowania na potrzeby zadania", + "branch": "Nazwa gałęzi do użycia", + "metadata": "Obiekt metadanych JSON" + }, + "list": { + "description": "Wyświetl zadania agentów", + "status": "Filtruj według stanu (running|completed|failed|cancelled)", + "limit": "Maksymalna liczba wyników (domyślnie: 50)" + }, + "get": { + "description": "Pobierz szczegóły zadania według identyfikatora" + }, + "status": { + "description": "Wyświetl stan zadania (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Anuluj trwające zadanie", + "yes": "Pomiń monit o potwierdzenie" + }, + "approve": { + "description": "Zatwierdź plan agenta, aby rozpocząć wykonywanie" + }, + "message": { + "description": "Wyślij wiadomość do trwającego zadania" + } + }, + "sources": { + "description": "Wyświetl pliki źródłowe utworzone przez zadanie" + } + }, + "eval": { + "description": "Zarządzaj zestawami ewaluacyjnymi i ich uruchomieniami", + "suites": { + "description": "Zarządzaj zestawami ewaluacyjnymi", + "list": { + "description": "Wyświetl zestawy ewaluacyjne" + }, + "get": { + "description": "Pobierz szczegóły zestawu ewaluacyjnego według ID" + }, + "create": { + "description": "Utwórz zestaw ewaluacyjny z pliku JSON", + "file": "Ścieżka do pliku JSON z definicją zestawu" + } + }, + "run": { + "description": "Rozpocznij ewaluację zestawu", + "model": "ID modelu do ewaluacji (domyślnie: auto)", + "combo": "Wymuś określoną kombinację według nazwy", + "concurrency": "Liczba próbek przetwarzanych równolegle (domyślnie: 4)", + "tag": "Oznacz ten przebieg tagiem, aby móc go później filtrować", + "watch": "Monitoruj postęp przebiegu aż do zakończenia" + }, + "list": { + "description": "Wyświetl przebiegi ewaluacji", + "suite": "Filtruj według ID zestawu", + "status": "Filtruj według statusu", + "since": "Zwróć przebiegi od tego znacznika czasu", + "limit": "Maksymalna liczba wyników (domyślnie: 50)" + }, + "get": { + "description": "Pobierz szczegóły przebiegu ewaluacji według ID" + }, + "results": { + "description": "Pokaż wyniki próbek dla przebiegu ewaluacji", + "failed": "Pokaż tylko próbki zakończone niepowodzeniem" + }, + "cancel": { + "description": "Anuluj trwającą ewaluację", + "yes": "Pomiń monit o potwierdzenie" + }, + "scorecard": { + "description": "Pokaż kartę wyników zakończonego przebiegu ewaluacji" + } + }, + "webhooks": { + "description": "Zarządzaj webhookami OmniRoute", + "events": { + "description": "Wyświetl wszystkie dostępne typy zdarzeń webhooków" + }, + "list": { + "description": "Wyświetl skonfigurowane webhooki" + }, + "get": { + "description": "Pobierz szczegóły webhooka według ID" + }, + "add": { + "description": "Zarejestruj nowy webhook", + "url": "Docelowy URL", + "events": "Lista typów zdarzeń rozdzielonych przecinkami", + "secret": "Sekret do podpisu HMAC", + "header": "Dodatkowy nagłówek w formacie key=value (opcja powtarzalna)", + "no_enabled": "Utwórz webhook w stanie wyłączonym" + }, + "update": { + "description": "Zaktualizuj istniejący webhook", + "enabled": "Ustaw stan włączenia (true|false)" + }, + "remove": { + "description": "Usuń webhook", + "yes": "Pomiń monit o potwierdzenie" + }, + "test": { + "description": "Wyślij zdarzenie testowe do webhooka", + "event": "Typ zdarzenia do symulacji (domyślnie: request.completed)" + } + }, "program": { "description": "OmniRoute — Inteligentny router AI z automatycznym fallbackiem", "version": "Wydrukuj wersję i wyjdź", @@ -26,7 +832,509 @@ "context": "Kontekst/profil serwera dla tego polecenia", "lang": "Ustaw język wyświetlania CLI (nadpisuje OMNIROUTE_LANG)" }, - "redis": { - "description": "Uruchom lokalny kontener Redis jednym kliknięciem (Podman lub Docker) do buforowania i śledzenia limitów OmniRoute" + "files": { + "description": "Zarządzaj plikami (przesyłanie, wyświetlanie, pobieranie informacji, pobieranie, usuwanie)", + "list": { + "purpose": "Filtruj według przeznaczenia", + "limit": "Maksymalna liczba wyników" + }, + "get": { + "description": "Pobierz metadane pliku" + }, + "upload": { + "description": "Prześlij plik", + "purpose": "Przeznaczenie pliku (batch, assistants, fine-tune)" + }, + "content": { + "description": "Pobierz zawartość pliku", + "out": "Zapisz w ścieżce (domyślnie: stdout)" + }, + "delete": { + "yes": "Pomiń potwierdzenie" + } + }, + "batches": { + "description": "Zarządzaj zadaniami wsadowymi zgodnymi z OpenAI", + "list": { + "status": "Filtruj według statusu", + "limit": "Maksymalna liczba wyników" + }, + "create": { + "description": "Utwórz zadanie wsadowe", + "inputFile": "Identyfikator pliku wejściowego", + "endpoint": "Docelowy endpoint", + "window": "Okno realizacji", + "metadata": "Dodaj metadane klucz=wartość" + }, + "submit": { + "description": "Prześlij plik JSONL i utwórz zadanie wsadowe", + "jsonl": "Ścieżka do pliku JSONL", + "endpoint": "Docelowy endpoint", + "wait": "Czekaj na zakończenie" + }, + "cancel": { + "yes": "Pomiń potwierdzenie" + }, + "wait": { + "timeout": "Limit czasu w ms" + }, + "output": { + "out": "Zapisz dane wyjściowe w ścieżce" + }, + "errors": { + "out": "Zapisz błędy w ścieżce" + } + }, + "translator": { + "description": "Konwertuj treści żądań między formatami LLM", + "detect": { + "description": "Wykryj format treści" + }, + "translate": { + "description": "Konwertuj treść z jednego formatu na inny" + }, + "send": { + "description": "Przetłumacz i wyślij do usługi nadrzędnej" + }, + "stream": { + "description": "Konwertuj strumieniowo treść żądania" + }, + "from": "Format źródłowy (openai|anthropic|gemini|cohere)", + "to": "Format docelowy (openai|anthropic|gemini|cohere)", + "file": "Ścieżka do pliku JSON z treścią żądania", + "out": "Zapisz dane wyjściowe do pliku", + "model": "Zastąp model", + "history": { + "limit": "Maksymalna liczba wyników" + } + }, + "pricing": { + "description": "Zarządzaj danymi cenowymi modeli", + "sync": { + "description": "Synchronizuj ceny ze źródeł nadrzędnych", + "provider": "Filtruj według dostawcy", + "force": "Wymuś ponowną synchronizację" + }, + "list": { + "provider": "Filtruj według dostawcy", + "model": "Filtruj według modelu", + "limit": "Maksymalna liczba wyników" + }, + "defaults": { + "description": "Zarządzaj domyślnymi cenami", + "input": "Koszt wejścia za 1 mln tokenów (USD)", + "output": "Koszt wyjścia za 1 mln tokenów (USD)", + "cacheRead": "Koszt odczytu z pamięci podręcznej za 1 mln tokenów (USD)", + "cacheWrite": "Koszt zapisu do pamięci podręcznej za 1 mln tokenów (USD)" + }, + "diff": { + "description": "Pokaż rozbieżności względem cen źródłowych", + "model": "Filtruj według modelu" + } + }, + "radar": { + "description": "Sprawdź i zsynchronizuj lokalne źródła katalogu Radar", + "status": "Pokaż lokalne ustawienia Radar i stan pamięci podręcznej źródeł", + "sync": "Zsynchronizuj katalog, polecenia, oferty i Intel za pośrednictwem lokalnego serwera" + }, + "resilience": { + "description": "Sprawdź mechanizmy odporności i zarządzaj nimi", + "status": { + "provider": "Filtruj według dostawcy" + }, + "breakers": { + "provider": "Filtruj według dostawcy" + }, + "cooldowns": { + "provider": "Filtruj według dostawcy", + "connectionId": "Filtruj według identyfikatora połączenia" + }, + "lockouts": { + "provider": "Filtruj według dostawcy", + "model": "Filtruj według modelu" + }, + "reset": { + "description": "Zresetuj stan wyłącznika/czasu odczekania", + "provider": "Dostawca do zresetowania", + "connectionId": "Identyfikator połączenia do zresetowania", + "model": "Model, dla którego zresetować blokadę", + "allCooldowns": "Zresetuj wszystkie czasy odczekania dostawcy", + "yes": "Pomiń potwierdzenie" + }, + "profile": { + "description": "Zarządzaj profilem odporności", + "name": "Nazwa profilu" + }, + "config": { + "description": "Zarządzaj konfiguracją odporności", + "threshold": "Próg błędów", + "resetTimeout": "Limit czasu resetowania w ms", + "baseCooldown": "Bazowy czas odczekania w ms" + } + }, + "nodes": { + "description": "Zarządzaj węzłami dostawcy (punktami końcowymi)", + "list": { + "provider": "Filtruj według dostawcy", + "enabled": "Pokaż tylko włączone węzły" + }, + "add": { + "provider": "Nazwa dostawcy", + "baseUrl": "Bazowy adres URL węzła", + "name": "Nazwa węzła", + "weight": "Waga równoważenia obciążenia", + "region": "Znacznik regionu", + "authHeader": "Niestandardowy nagłówek uwierzytelniania (key=value)" + }, + "update": { + "baseUrl": "Nowy bazowy adres URL", + "name": "Nowa nazwa", + "weight": "Nowa waga", + "region": "Nowy region", + "enabled": "Włącz lub wyłącz (true|false)" + }, + "remove": { + "yes": "Pomiń potwierdzenie" + }, + "validate": { + "baseUrl": "URL do zweryfikowania", + "provider": "Dostawca, względem którego przeprowadzić weryfikację" + }, + "test": { + "description": "Wyślij żądanie testowe do węzła" + }, + "metrics": { + "description": "Pokaż metryki węzła", + "period": "Okres (np. 24h, 7d)" + } + }, + "context": { + "description": "Skonfiguruj potok inżynierii kontekstu (Caveman, RTK)", + "analytics": { + "period": "Okres (np. 7d, 30d)" + }, + "caveman": { + "description": "Zarządzaj kompresorem kontekstu Caveman", + "config": { + "description": "Pokaż lub zaktualizuj konfigurację Caveman", + "aggressiveness": "Poziom agresywności 0.0–1.0", + "maxShrinkPct": "Maksymalny procent kompresji", + "preserveTags": "Tagi do zachowania, rozdzielone przecinkami" + } + }, + "rtk": { + "description": "Zarządzaj optymalizatorem kontekstu RTK", + "config": { + "description": "Pokaż lub zaktualizuj konfigurację RTK", + "tokenBudget": "Budżet tokenów dla RTK", + "reservePct": "Procent rezerwy" + }, + "filters": { + "description": "Zarządzaj filtrami RTK", + "pattern": "Wzorzec filtra (wyrażenie regularne)", + "priority": "Priorytet filtra (domyślnie: 100)", + "action": "Działanie filtra: drop|shrink|replace", + "yes": "Pomiń potwierdzenie" + }, + "test": { + "file": "Ścieżka do pliku JSON żądania" + } + }, + "combos": { + "description": "Zarządzanie kombinacjami z uwzględnieniem kontekstu" + } + }, + "sessions": { + "description": "Przeglądaj aktywne sesje i zarządzaj nimi", + "list": { + "user": "Filtruj według użytkownika", + "kind": "Filtruj według rodzaju (dashboard|api-key|mcp|a2a)", + "active": "Pokaż tylko aktywne sesje", + "limit": "Maksymalna liczba wyników (domyślnie: 100)" + }, + "expire": { + "yes": "Pomiń potwierdzenie" + }, + "expireAll": { + "user": "Użytkownik, którego sesje mają wygasnąć", + "yes": "Pomiń potwierdzenie" + } + }, + "tags": { + "description": "Zarządzaj tagami zasobów", + "add": { + "color": "Kolor tagu (wartość szesnastkowa lub nazwa)", + "description": "Opis tagu" + }, + "remove": { + "yes": "Pomiń potwierdzenie" + }, + "assign": { + "tag": "Nazwa tagu", + "to": "Zasób docelowy w formacie type:id (np. provider:openai)" + }, + "unassign": { + "tag": "Nazwa tagu", + "from": "Zasób źródłowy w formacie type:id" + } + }, + "openapi": { + "description": "Uzyskaj dostęp do specyfikacji OpenAPI OmniRoute i przetestuj ją", + "dump": { + "description": "Wyślij specyfikację OpenAPI na standardowe wyjście lub zapisz ją do pliku", + "format": "Format wyjściowy: yaml|json (domyślnie: yaml)", + "out": "Zapisz w ścieżce pliku" + }, + "validate": { + "description": "Zweryfikuj specyfikację OpenAPI" + }, + "try": { + "description": "Przetestuj endpoint API przy użyciu specyfikacji", + "method": "Metoda HTTP (domyślnie: GET)", + "body": "Ścieżka do pliku JSON z treścią żądania", + "query": "Parametr zapytania w formacie key=value (można powtórzyć)", + "header": "Nagłówek w formacie key=value (można powtórzyć)" + }, + "endpoints": { + "description": "Wyświetl wszystkie endpointy API", + "search": "Filtruj według ścieżki lub podsumowania" + }, + "paths": { + "description": "Wyświetl wszystkie ścieżki API" + } + }, + "combo": { + "title": "Kombinacje", + "switched": "Aktywna kombinacja: {name}", + "created": "Utworzono kombinację: {name}", + "deleted": "Usunięto kombinację: {name}", + "noCombos": "Nie skonfigurowano żadnych kombinacji.", + "confirmDelete": "Usunąć kombinację {name}?", + "suggest": { + "description": "Zaproponuj najlepszą kombinację do zadania, korzystając z oceny AI", + "task": "Opis zadania", + "maxCost": "Maksymalny koszt żądania w USD", + "maxLatencyMs": "Maksymalne opóźnienie w milisekundach", + "weights": "Wagi oceny w formacie JSON, np. {\"latency\":0.7,\"cost\":0.3}", + "top": "Liczba najlepszych kandydatów do wyświetlenia (domyślnie: 5)", + "explain": "Wyświetl uzasadnienie na standardowym wyjściu błędów", + "switch": "Aktywuj najwyżej ocenioną kombinację" + } + }, + "oneproxy": { + "description": "Zarządzaj pulą serwerów nadrzędnych OneProxy", + "stats": { + "provider": "Filtruj według dostawcy", + "period": "Okres (domyślnie: 24h)" + }, + "fetch": { + "description": "Pobierz serwery proxy z puli", + "count": "Liczba serwerów proxy do pobrania (domyślnie: 1)", + "type": "Typ proxy: http|socks5 (domyślnie: http)" + }, + "rotate": { + "description": "Wymuś rotację proxy", + "provider": "Dostawca, dla którego ma zostać wykonana rotacja", + "connectionId": "Identyfikator konkretnego połączenia do rotacji" + }, + "config": { + "description": "Wyświetl lub zaktualizuj konfigurację OneProxy", + "enabled": "Włącz pulę serwerów proxy (true|false)", + "poolSize": "Rozmiar puli", + "providerSource": "URL dostawcy proxy", + "rotationPolicy": "Zasady rotacji: sticky|per-request|periodic" + }, + "pool": { + "description": "Wyświetl bieżącą pulę serwerów proxy wraz z metrykami" + } + }, + "open": { + "description": "Otwórz określoną stronę panelu OmniRoute w przeglądarce", + "url": "Wyświetl tylko URL, nie otwieraj przeglądarki" + }, + "telemetry": { + "description": "Uzyskaj dostęp do zagregowanych danych telemetrycznych", + "summary": { + "description": "Wyświetl podsumowanie zagregowanych danych telemetrycznych", + "period": "Okres: 24h|7d|30d (domyślnie: 24h)", + "compareTo": "Porównaj z poprzednim okresem" + }, + "export": { + "description": "Eksportuj zdarzenia telemetryczne do formatu JSONL", + "out": "Ścieżka pliku wyjściowego (domyślnie: telemetry.jsonl)", + "period": "Okres eksportu (domyślnie: 7d)" + } + }, + "sync": { + "description": "Synchronizuj konfigurację między instancjami OmniRoute", + "push": { + "description": "Wyślij konfigurację do chmury lub instancji zdalnej", + "target": "Cel (cloud lub context:name)", + "bundle": "Elementy pakietu do synchronizacji", + "dryRun": "Wyświetl podgląd bez stosowania zmian" + }, + "pull": { + "description": "Pobierz konfigurację z chmury lub instancji zdalnej", + "source": "Źródło (cloud lub context:name)", + "merge": "Scal z istniejącą konfiguracją", + "replace": "Zastąp istniejącą konfigurację", + "dryRun": "Wyświetl podgląd bez stosowania zmian" + }, + "diff": { + "source": "Kontekst źródłowy", + "target": "Kontekst docelowy" + }, + "bundle": { + "description": "Eksportuj konfigurację jako plik pakietu", + "include": "Elementy do uwzględnienia (oddzielone przecinkami)" + }, + "import": { + "description": "Importuj plik pakietu", + "dryRun": "Sprawdź poprawność bez stosowania zmian" + }, + "initialize": { + "fromCloud": "Zainicjuj z kopii zapasowej w chmurze" + }, + "tokens": { + "description": "Zarządzaj tokenami synchronizacji", + "create": { + "name": "Nazwa tokenu", + "scope": "Zakres tokenu", + "ttl": "Czas ważności tokenu (np. 30d)" + }, + "revoke": { + "yes": "Pomiń potwierdzenie" + } + }, + "resolve": { + "description": "Rozwiąż konflikty synchronizacji interaktywnie" + } + }, + "config": { + "contexts": { + "description": "Zarządzaj kontekstami/profilami serwera (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Zarządzaj językiem interfejsu CLI", + "getDescription": "Wyświetl kod aktualnie aktywnego języka", + "setDescription": "Ustaw język wyświetlania i zapisz go w konfiguracji", + "listDescription": "Wyświetl listę wszystkich dostępnych języków", + "listTitle": "Dostępne języki", + "current": "Język: {code} ({name})", + "saved": "Ustawiono język na {code} ({name}).", + "noCode": "Wymagany jest kod języka. Uruchom „omniroute config lang list”, aby zobaczyć dostępne kody.", + "unknown": "Nieznany kod języka: {code}. Uruchom „omniroute config lang list”, aby zobaczyć dostępne kody.", + "alreadySet": "Język jest już ustawiony na {code}.", + "envHint": "Wskazówka: możesz również ustawić OMNIROUTE_LANG={code} w swoim środowisku." + } + }, + "completion": { + "description": "Generuj lub instaluj skrypty uzupełniania powłoki", + "zsh": "Wyświetl skrypt uzupełniania dla zsh", + "bash": "Wyświetl skrypt uzupełniania dla bash", + "fish": "Wyświetl skrypt uzupełniania dla fish", + "install": "Zainstaluj globalnie skrypt uzupełniania dla wykrytej powłoki", + "refresh": "Odśwież pamięć podręczną kombinacji/dostawców/modeli" + }, + "logs": { + "description": "Przesyłaj strumieniowo lub eksportuj dzienniki żądań", + "follow": "Przesyłaj dzienniki strumieniowo w czasie rzeczywistym", + "filter": "Filtruj według poziomu (error,warn,info) — wartości rozdzielone przecinkami", + "lines": "Liczba wierszy do pobrania", + "timeout": "Limit czasu połączenia w ms", + "baseUrl": "Bazowy adres URL API OmniRoute", + "requestId": "Filtruj według identyfikatora żądania", + "apiKey": "Filtruj według klucza API", + "combo": "Filtruj według nazwy kombinacji", + "status": "Filtruj według kodu stanu HTTP", + "durationMin": "Minimalny czas trwania żądania w ms", + "durationMax": "Maksymalny czas trwania żądania w ms", + "export": "Zapisz dzienniki do pliku (json/jsonl/csv)", + "exported": "Dzienniki zapisano w {path}", + "stopped": "Zatrzymano strumieniowanie dzienników.", + "streamError": "Błąd strumieniowania dzienników: {message}" + }, + "tray": { + "description": "Steruj ikoną w zasobniku systemowym", + "show": "Pokaż ikonę w zasobniku systemowym (jeśli serwer działa z opcją --tray)", + "hide": "Ukryj ikonę w zasobniku systemowym", + "quit": "Zakończ OmniRoute za pomocą ikony w zasobniku systemowym" + }, + "autostart": { + "description": "Zarządzaj automatycznym uruchamianiem OmniRoute podczas rozruchu (Linux: usługa użytkownika systemd)", + "enable": "Włącz automatyczne uruchamianie podczas rozruchu", + "disable": "Wyłącz automatyczne uruchamianie podczas rozruchu", + "toggle": "Przełącz automatyczne uruchamianie podczas rozruchu", + "status": "Pokaż stan automatycznego uruchamiania" + }, + "runtime": { + "description": "Zarządzaj natywnymi zależnościami środowiska uruchomieniowego", + "check": "Sprawdź stan natywnych zależności w katalogu środowiska uruchomieniowego", + "repair": "Zainstaluj ponownie natywne zależności w katalogu środowiska uruchomieniowego", + "repair_force": "Wymuś ponowną instalację, nawet jeśli zależności są prawidłowe", + "clean": "Usuń katalog środowiska uruchomieniowego (zwalnia miejsce na dysku)", + "clean_yes": "Pomiń potwierdzenie" + }, + "repl": { + "description": "Interaktywny, wieloturowy REPL z LLM", + "model": "Model do użycia (domyślnie: auto)", + "combo": "Nazwa kombinacji do użycia", + "system": "Monit systemowy", + "resume": "Wznów zapisaną sesję według nazwy" + }, + "plugin": { + "description": "Zarządzaj wtyczkami CLI (omniroute-cmd-*)", + "list": "Wyświetl zainstalowane wtyczki", + "install": "Zainstaluj wtyczkę z npm lub ścieżki lokalnej", + "remove": "Usuń zainstalowaną wtyczkę", + "info": "Pokaż szczegóły zainstalowanej wtyczki", + "search": "Przeszukaj rejestr npm pod kątem dostępnych wtyczek", + "update": "Zaktualizuj zainstalowane wtyczki", + "scaffold": "Wygeneruj szablon nowej wtyczki" + }, + "launch": { + "description": "Uruchom Claude Code skonfigurowany do pracy z OmniRoute (lokalnym lub zdalnym, z --profile)", + "token": "Token, który klient Claude powinien wysyłać (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute jest nieosiągalny na porcie {port}. Uruchom go poleceniem 'omniroute serve'.", + "notFound": "Nie znaleziono CLI 'claude' w PATH." + }, + "run": { + "description": "Uruchom obsługiwany docelowy interfejs CLI za pośrednictwem OmniRoute" + }, + "setupClaude": { + "description": "Wygeneruj profile Claude Code w ~/.claude/profiles na podstawie katalogu modeli OmniRoute" + }, + "connect": { + "description": "Połącz się ze zdalnym serwerem OmniRoute i przejdź do trybu zdalnego" + }, + "tokens": { + "description": "Zarządzaj tokenami dostępu CLI o ograniczonym zakresie (tryb zdalny)" + }, + "configure": { + "description": "Wybierz dostawcę i model z aktywnego serwera oraz skonfiguruj obsługiwany lokalny interfejs CLI" + }, + "launchCodex": { + "description": "Uruchom Codex CLI skonfigurowany do pracy z OmniRoute (lokalnym lub na zdalnym VPS)" + }, + "setupCodex": { + "description": "Wygeneruj pliki profili w ~/.codex na podstawie aktualnego katalogu modeli OmniRoute" + }, + "packs": { + "description": "Zarządzaj opcjonalnymi pakietami środowiska uruchomieniowego (ML / automatyzacja przeglądarki)", + "listDescription": "Wyświetl opcjonalne pakiety i stan ich instalacji", + "installDescription": "Zainstaluj opcjonalny pakiet w DATA_DIR", + "verifyDescription": "Zweryfikuj zainstalowane pakiety względem dostarczonego indeksu sum kontrolnych", + "removeDescription": "Usuń zainstalowany opcjonalny pakiet", + "sourceOpt": "Katalog zawierający dane pakietów i indeks pakietów", + "warnNoIndex": "Nie znaleziono optional-packs.index.json — instalacja i weryfikacja są niedostępne w tej kopii repozytorium (plik jest dostarczany w pakietach aplikacji desktopowej)", + "errUnknown": "nieznany pakiet: {name}", + "errNoIndex": "nie znaleziono indeksu pakietów; przekaż --source wskazujące katalog zawierający dane pakietu (w pakietach aplikacji desktopowej znajduje się on obok aplikacji)", + "installed": "pakiet \"{name}\" został zainstalowany i zweryfikowany w {dir}", + "restartHint": "uruchom ponownie serwer OmniRoute (lub aplikację komputerową), aby środowisko uruchomieniowe wykryło pakiet", + "removed": "pakiet „{name}” został usunięty", + "notInstalled": "pakiet „{name}” nie był zainstalowany", + "verifyOk": "zweryfikowano wszystkie zainstalowane pakiety", + "verifyFailed": "weryfikacja nie powiodła się dla {count} pakietów", + "noneInstalled": "nie zainstalowano żadnych opcjonalnych pakietów" } } diff --git a/bin/cli/locales/pt-BR.json b/bin/cli/locales/pt-BR.json index eec1b42a0e..bad5b06254 100644 --- a/bin/cli/locales/pt-BR.json +++ b/bin/cli/locales/pt-BR.json @@ -30,7 +30,7 @@ "opencode": "Instala e configura o plugin @omniroute/opencode-plugin incluído para o OpenCode" }, "doctor": { - "title": "OmniRoute Doctor", + "title": "Diagnóstico do OmniRoute", "dbOk": "Banco de dados: OK ({path})", "dbMissing": "Banco de dados: não inicializado — execute `omniroute setup`", "portOk": "Porta {port}: disponível", @@ -256,6 +256,7 @@ "max_restarts": "Máximo de reinícios em 30s antes de desistir (padrão: 2)", "tray": "Mostrar ícone na bandeja do sistema (apenas desktop, opt-in)", "no_tray": "Desabilitar ícone na bandeja do sistema", + "ready_timeout": "Tempo limite da verificação de prontidão em ms (também OMNIROUTE_READY_TIMEOUT_MS, padrão 60000)", "tls_cert": "Caminho para um certificado TLS (PEM) para servir HTTPS (também OMNIROUTE_TLS_CERT)", "tls_key": "Caminho para a chave privada TLS (PEM) para servir HTTPS (também OMNIROUTE_TLS_KEY)" }, @@ -301,7 +302,7 @@ "noServer": "Servidor não está em execução. Inicie com: omniroute serve", "title": "Saúde", "status": "Status: {status}", - "uptime": "Uptime: {uptime}", + "uptime": "Tempo de atividade: {uptime}", "requests": "Requisições (24h): {count}", "cost": "Custo (24h): ${cost}" }, @@ -344,6 +345,19 @@ }, "mcp": { "title": "Servidor MCP", + "running": "Servidor MCP em execução ({transport})", + "stopped": "Servidor MCP parado.", + "restarted": "Servidor MCP reiniciado.", + "stoppedHint": "Execute `omniroute mcp enable` para ativá-lo.", + "enabled": "Servidor MCP ativado.", + "disabled": "Servidor MCP desativado.", + "enable": { + "description": "Ativar o servidor MCP", + "transport": "Transporte a ser usado: stdio|sse|streamable-http" + }, + "disable": { + "description": "Desativar o servidor MCP" + }, "call": { "description": "Invocar uma ferramenta MCP diretamente", "args": "Objeto JSON de argumentos (inline)", @@ -371,10 +385,7 @@ }, "audit": { "description": "Log de auditoria MCP (alias para audit --source mcp)" - }, - "running": "Servidor MCP em execução ({transport})", - "stopped": "Servidor MCP parado.", - "restarted": "Servidor MCP reiniciado." + } }, "a2a": { "skills": { @@ -1093,7 +1104,7 @@ } }, "combo": { - "title": "Combos", + "title": "Combinações", "switched": "Combo ativo: {name}", "created": "Combo criado: {name}", "deleted": "Combo removido: {name}", @@ -1268,7 +1279,7 @@ "description": "REPL interativo multi-turn com LLM", "model": "Modelo a usar (padrão: auto)", "combo": "Nome do combo a usar", - "system": "System prompt", + "system": "Prompt do sistema", "resume": "Retomar sessão salva pelo nome" }, "plugin": { diff --git a/bin/cli/locales/pt.json b/bin/cli/locales/pt.json index 2297c3210d..4de793d0fb 100644 --- a/bin/cli/locales/pt.json +++ b/bin/cli/locales/pt.json @@ -14,6 +14,812 @@ "jsonOpt": "Saída em JSON", "yesOpt": "Ignorar confirmação" }, + "setup": { + "title": "Configuração do OmniRoute", + "passwordPrompt": "Palavra-passe de administrador", + "providerPrompt": "Fornecedor predefinido (deixe em branco para ignorar)", + "done": "Configuração concluída", + "passwordSet": "Palavra-passe de administrador configurada", + "providerSet": "Fornecedor configurado: {name}", + "testingProvider": "A testar a ligação ao fornecedor: {name}", + "testPassed": "Teste do fornecedor bem-sucedido", + "testFailed": "O teste do fornecedor falhou: {error}", + "loginEnabled": "Início de sessão: ativado (palavra-passe atualizada)", + "loginDisabled": "Início de sessão: desativado", + "providerInfo": "Fornecedor: {info}", + "opencode": "Instalar e configurar o @omniroute/opencode-plugin incluído para o OpenCode" + }, + "doctor": { + "title": "Diagnóstico do OmniRoute", + "dbOk": "Base de dados: OK ({path})", + "dbMissing": "Base de dados: não inicializada — execute `omniroute setup`", + "portOk": "Porta {port}: disponível", + "portConflict": "Porta {port}: em utilização por outro processo", + "encryptionOk": "Chave de encriptação: configurada", + "encryptionMissing": "Chave de encriptação em falta — execute `omniroute setup`", + "allGood": "Todas as verificações foram concluídas com êxito.", + "warnings": "{count} aviso(s) — consulte acima." + }, + "providers": { + "title": "Fornecedores", + "noProviders": "Não existem fornecedores configurados. Execute: omniroute setup", + "testing": "A testar {name}...", + "available": "{count} fornecedor(es) disponível(eis)", + "connected": "Ligado", + "disconnected": "Desligado", + "validationFailed": "A validação falhou: {error}", + "metrics": { + "description": "Mostrar métricas de desempenho dos fornecedores (latência, taxa de sucesso, custo)", + "provider": "Filtrar por ID do fornecedor", + "connection_id": "Filtrar por ID da ligação", + "period": "Período: 1h|6h|24h|7d|30d (predefinição: 24h)", + "metric": "Focar num campo de métrica específico", + "sort": "Ordenar por campo (ordem decrescente)", + "limit": "Máximo de linhas (predefinição: 50)", + "watch": "Atualizar a cada 5 s (modo em direto)", + "compare": "IDs de fornecedores separados por vírgulas para comparação lado a lado" + }, + "metric_single": { + "description": "Obter um único valor de métrica para uma ligação específica" + }, + "rotate": { + "description": "Rodar a chave da API upstream de uma ligação de fornecedor", + "newKeyOpt": "Novo valor da chave de API (evite: prefira --from-env)", + "fromEnvOpt": "Ler a nova chave a partir da variável de ambiente VAR", + "oauthOpt": "Iniciar, em alternativa, o fluxo de reautenticação OAuth", + "skipTestOpt": "Ignorar o teste de conectividade após a rotação", + "dryRunOpt": "Mostrar o que seria alterado sem guardar", + "confirmPrompt": "Substituir a chave de API da ligação \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] A chave da ligação \"{name}\" ({id}) seria rodada. Não foram efetuadas alterações.", + "oauthHint": "Ligação OAuth — execute: omniroute oauth {provider}", + "envVarEmpty": "A variável de ambiente {var} não está definida ou está vazia.", + "success": "Chave rodada para \"{name}\". Execute `providers test {id}` para verificar.", + "testPassed": "O teste após a rotação foi concluído com êxito.", + "testFailed": "O teste após a rotação falhou: {error}" + }, + "status": { + "description": "Mostrar o estado das chaves de todas as ligações a fornecedores (idade, validade, período de espera)", + "providerOpt": "Filtrar por nome do fornecedor", + "header": "ID Fornecedor Nome Validade Estado Estado do teste Período de espera até", + "noData": "Não existem dados disponíveis sobre ligações a fornecedores.", + "requiresServer": "providers status requer que o servidor OmniRoute esteja em execução." + } + }, + "keys": { + "title": "Chaves de API", + "addDescription": "Adicionar ou atualizar uma chave de API de um fornecedor", + "listDescription": "Listar todas as chaves de API configuradas", + "removeDescription": "Remover uma chave de API de um fornecedor", + "regenerateDescription": "Gerar novamente uma chave de API do OmniRoute", + "revokeDescription": "Revogar uma chave de API do OmniRoute", + "revealDescription": "Revelar o valor não ocultado da chave de API", + "usageDescription": "Mostrar a utilização recente de uma chave de API", + "usageLimitOpt": "Número de pedidos recentes", + "rotateDescription": "Gerar uma nova chave e invalidar a antiga", + "graceOpt": "Período de tolerância (ms) antes de a chave antiga ser invalidada", + "stdinOpt": "Ler a chave de API a partir de stdin em vez do argumento", + "added": "Chave adicionada para {provider}.", + "removed": "Chave removida.", + "listed": "{count} chave(s).", + "noKeys": "Não existem chaves configuradas.", + "noUsage": "Não foram encontrados dados de utilização.", + "confirmRemove": "Remover a chave {id}?", + "confirmRegenerate": "Gerar novamente a chave {id}?", + "confirmRevoke": "Revogar a chave {id}?", + "confirmRotate": "Rodar a chave {id}? (a chave antiga será invalidada após o período de tolerância)", + "regenerated": "Gerada novamente. Nova chave: {key}", + "revoked": "Chave {id} revogada.", + "rotated": "Chave {id} rodada. Novo ID da chave: {newId}", + "revealWarning": "⚠ Isto apresentará a chave completa sem ocultação. Certifique-se de que o seu ecrã está privado.", + "providerRequired": "O fornecedor é obrigatório.", + "keyRequired": "A chave de API é obrigatória.", + "stdinEmpty": "Não foi fornecida nenhuma chave de API através de stdin.", + "unknownProvider": "Fornecedor desconhecido: {provider}", + "policy": { + "title": "Política da chave", + "showDescription": "Mostrar a política de limites/custos de uma chave", + "setDescription": "Definir a política de limites/custos de uma chave", + "rateLimitOpt": "Máximo de pedidos por minuto", + "maxCostOpt": "Custo máximo por dia (USD)", + "allowedModelsOpt": "Lista de modelos permitidos, separados por vírgulas", + "nothingToSet": "Não foram fornecidos campos da política. Utilize --rate-limit, --max-cost ou --allowed-models.", + "updated": "Política atualizada." + }, + "expiration": { + "title": "Expiração da chave", + "listDescription": "Listar chaves que expiram em breve", + "daysOpt": "Mostrar chaves que expiram dentro de N dias", + "none": "Nenhuma chave expira dentro de {days} dias.", + "listTitle": "Chaves que expiram dentro de {days} dias:" + } + }, + "authExport": { + "description": "Exportar credenciais DESENCRIPTADAS do fornecedor (apenas local, saída em texto simples)", + "idOpt": "Exportar apenas a ligação que corresponde a este ID/nome/fornecedor", + "formatOpt": "Formato de saída: json ou env", + "outOpt": "Escrever a saída num ficheiro em vez de stdout (escrito com permissões 0600)", + "forceOpt": "Confirmar que compreende que isto apresenta/escreve segredos em texto simples", + "warning": "⚠ Isto apresenta/escreve chaves de API e tokens OAuth DESENCRIPTADOS em texto simples. Certifique-se de que o seu ecrã, o histórico da shell e qualquer ficheiro de saída permanecem privados.", + "confirmHeading": "⚠ AVISO: isto exporta credenciais DESENCRIPTADAS do fornecedor em texto simples", + "confirmBody": "Este comando desencripta e apresenta/escreve apiKey, accessToken, refreshToken e\nidToken para as ligações selecionadas. Trate a saída como um segredo.", + "confirmFooter": "Para confirmar, execute:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY é necessária para exportar credenciais.", + "notFound": "Ligação não encontrada: {id}", + "invalidFormat": "Formato inválido: {format}. Utilize json ou env." + }, + "stream": { + "description": "Transmitir uma resposta de chat com modos de inspeção SSE", + "file": "Ler o pedido a partir de um ficheiro", + "stdin": "Ler o pedido a partir de stdin", + "model": "ID do modelo (predefinição: auto)", + "system": "Pedido de sistema", + "combo": "Forçar uma combinação específica pelo nome", + "max_tokens": "Número máximo de tokens na resposta", + "responses_api": "Utilizar /v1/responses em vez de /v1/chat/completions", + "raw": "Apresentar as linhas SSE em bruto à medida que são recebidas", + "debug": "Imprimir informações de tempo por bloco em stderr", + "save": "Guardar todos os eventos SSE num ficheiro .jsonl", + "error": { + "empty_prompt": "Erro: o prompt é obrigatório (argumento posicional, --file ou --stdin)" + } + }, + "usage": { + "description": "Análises de utilização, orçamentos, quotas e registos", + "analytics": { + "description": "Mostrar análises de utilização agregadas", + "period": "Intervalo de tempo: 1d|7d|30d|90d|ytd|all (predefinição: 30d)", + "provider": "Filtrar por ID do fornecedor" + }, + "budget": { + "description": "Gerir orçamentos de custos", + "set": { + "scope": "Âmbito do orçamento (predefinição: global)", + "period": "Período do orçamento: daily|weekly|monthly (predefinição: monthly)" + } + }, + "quota": { + "description": "Mostrar a utilização da quota do fornecedor", + "provider": "Filtrar por ID do fornecedor", + "check": "Mostrar se existe quota disponível para um novo pedido" + }, + "logs": { + "description": "Mostrar registos de chamadas de pedidos", + "limit": "Número de entradas de registo a devolver (predefinição: 100)", + "search": "Consulta de pesquisa para filtrar os registos", + "since": "Devolver registos desde esta data e hora", + "follow": "Acompanhar continuamente novas entradas de registo", + "api_key": "Filtrar registos por chave de API" + }, + "utilization": { + "description": "Mostrar métricas de utilização da chave de API", + "api_key": "Filtrar por chave de API" + }, + "history": { + "description": "Mostrar histórico de pedidos", + "limit": "Número de entradas do histórico (predefinição: 100)" + }, + "proxy_logs": { + "description": "Mostrar registos de pedidos ao nível do proxy", + "limit": "Número de entradas de registo do proxy (predefinição: 100)" + } + }, + "cost": { + "description": "Mostrar relatório de custos com discriminação por fornecedor, modelo, combinação ou chave de API", + "period": "Intervalo de tempo: 1d|7d|30d|90d|ytd|all (predefinição: 30d)", + "since": "Data de início (formato ISO, por exemplo, 2026-01-01) — substitui --period", + "until": "Data de fim (formato ISO)", + "group_by": "Agrupar resultados por: provider|model|api-key|combo|day (predefinição: provider)", + "api_key_filter": "Filtrar por uma chave de API específica", + "limit": "Número máximo de linhas a mostrar (predefinição: 100)" + }, + "simulate": { + "description": "Simulação de encaminhamento sem execução — mostrar quais os fornecedores que seriam selecionados sem contactar o serviço a montante", + "file": "Carregar o corpo completo do pedido a partir de um ficheiro JSON", + "model": "ID do modelo (predefinição: auto)", + "combo": "Forçar uma combinação específica pelo nome", + "reasoning": "Nível de esforço de raciocínio (low|medium|high)", + "thinking": "Orçamento de tokens para raciocínio alargado", + "explain": "Imprimir a árvore de alternativas e o intervalo de custos em stderr", + "noCombo": "Não foi encontrada nenhuma combinação correspondente. Configure uma com: omniroute combo create" + }, + "chat": { + "description": "Enviar um pedido de chat único para o OmniRoute", + "file": "Ler o pedido a partir de um ficheiro", + "stdin": "Ler o pedido a partir da entrada padrão", + "system": "Pedido do sistema", + "model": "ID do modelo (predefinição: auto)", + "max_tokens": "Número máximo de tokens na resposta", + "temperature": "Temperatura de amostragem (0–2)", + "top_p": "Amostragem nuclear top-p", + "reasoning_effort": "Nível de esforço de raciocínio (low|medium|high)", + "thinking_budget": "Orçamento de tokens para raciocínio alargado", + "combo": "Forçar uma combinação específica pelo nome", + "responses_api": "Utilizar /v1/responses em vez de /v1/chat/completions", + "stream": "Transmitir a resposta de forma incremental", + "no_history": "Não guardar em ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Erro: o pedido é obrigatório (argumento posicional, --file ou --stdin)" + } + }, + "serve": { + "description": "Iniciar o servidor OmniRoute (ação predefinida)", + "starting": "A iniciar o servidor OmniRoute na porta {port}...", + "ready": "Disponível em http://localhost:{port}", + "stopping": "A parar o servidor (PID {pid})...", + "stopped": "Servidor parado.", + "notRunning": "O servidor não está em execução.", + "port": "Porta de escuta (predefinição: 20128)", + "no_open": "Não abrir o navegador automaticamente", + "daemon": "Executar o servidor como daemon em segundo plano", + "log": "Mostrar os registos do servidor em linha", + "no_recovery": "Desativar o reinício automático em caso de falha (modo de depuração)", + "max_restarts": "Número máximo de reinícios após falha num período de 30 s antes de desistir (predefinição: 2)", + "tray": "Iniciar na área de notificação do sistema (apenas no ambiente de trabalho, opção facultativa)", + "no_tray": "Desativar o ícone da área de notificação do sistema", + "ready_timeout": "Tempo limite da verificação de disponibilidade em ms (também OMNIROUTE_READY_TIMEOUT_MS, predefinição: 60000)", + "tls_cert": "Caminho para um certificado TLS (PEM) para disponibilizar HTTPS (também OMNIROUTE_TLS_CERT)", + "tls_key": "Caminho para a chave privada TLS (PEM) para disponibilizar HTTPS (também OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Cópia de segurança", + "description": "Criar uma cópia de segurança dos dados do OmniRoute", + "creating": "A criar a cópia de segurança...", + "done": "Cópia de segurança guardada em {path}", + "noFiles": "Não existem ficheiros para incluir na cópia de segurança (base de dados não inicializada)", + "failed": "Falha na cópia de segurança: {error}", + "restoring": "A restaurar a partir de {path}...", + "restored": "Restauro concluído.", + "restoreDescription": "Restaurar a partir de uma cópia de segurança", + "listTitle": "Cópias de segurança disponíveis", + "noBackups": "Não foram encontradas cópias de segurança.", + "notFound": "Cópia de segurança não encontrada: {name}", + "confirmRestore": "Substituir os dados atuais pela cópia de segurança de {ts}?", + "createDescription": "Criar uma cópia de segurança dos dados do OmniRoute", + "nameOpt": "Nome personalizado da cópia de segurança", + "cloudOpt": "Carregar a cópia de segurança para o armazenamento na nuvem", + "encryptOpt": "Encriptar a cópia de segurança com AES-256-GCM", + "keyFileOpt": "Caminho para o ficheiro que contém a frase secreta de encriptação", + "excludeOpt": "Excluir ficheiro que corresponda ao padrão (repetível)", + "retentionOpt": "Manter apenas as últimas N cópias de segurança", + "passphrasePrompt": "Frase secreta de encriptação:", + "noPassphrase": "É necessária uma frase secreta para uma cópia de segurança encriptada.", + "cloudFailed": "Aviso: o carregamento para a nuvem falhou. A cópia de segurança local foi guardada.", + "cloudUploaded": "Cópia de segurança carregada para a nuvem: {url}", + "auto": { + "title": "Agendamento das cópias de segurança", + "enableDescription": "Ativar cópias de segurança automáticas agendadas", + "disableDescription": "Desativar cópias de segurança automáticas agendadas", + "statusDescription": "Mostrar o estado atual do agendamento das cópias de segurança", + "cronOpt": "Expressão cron para o agendamento (predefinição: diariamente às 3:00)", + "enabled": "Cópia de segurança automática ativada (cron: {cron}).", + "hint": "O agendamento é lido pelo omniroute serve ao iniciar.", + "disabled": "Cópia de segurança automática desativada.", + "notConfigured": "Não está configurado nenhum agendamento de cópias de segurança." + } + }, + "health": { + "description": "Verificar o estado do servidor e dos componentes", + "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", + "title": "Estado de funcionamento", + "status": "Estado: {status}", + "uptime": "Tempo de atividade: {uptime}", + "requests": "Pedidos (24 h): {count}", + "cost": "Custo (24 h): ${cost}" + }, + "quota": { + "description": "Mostrar a utilização da quota do fornecedor", + "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", + "noData": "Não estão disponíveis informações sobre a quota." + }, + "cache": { + "description": "Gerir a cache de respostas", + "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", + "cleared": "Cache limpa.", + "clearFailed": "Não foi possível limpar a cache." + }, + "redis": { + "description": "Iniciar um contentor Redis local com um clique (Podman ou Docker) para cache e rastreio de quotas do OmniRoute" + }, + "test": { + "description": "Testar a ligação a um fornecedor", + "noServer": "O servidor não está em execução. Inicie-o com: omniroute serve", + "testing": "A testar {provider} / {model}...", + "passed": "Ligação bem-sucedida!", + "failed": "A ligação falhou: {error}", + "allProvidersOpt": "Testar todos os fornecedores configurados", + "latencyOpt": "Mostrar medições de latência (média/mín./máx. em ms)", + "repeatOpt": "Repetir o teste N vezes e agregar os resultados", + "compareOpt": "Modelos separados por vírgulas para comparar (por exemplo, gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Guardar os resultados num ficheiro JSON", + "saved": "Resultados guardados em {path}", + "compareTitle": "Comparação de modelos", + "compareMinTwo": "São necessários pelo menos dois modelos para --compare (separados por vírgulas)", + "noProviders": "Não existem fornecedores configurados. Adicione um com: omniroute keys add" + }, + "update": { + "checking": "A procurar atualizações...", + "upToDate": "Já está atualizado ({version}).", + "available": "Atualização disponível: {current} → {latest}", + "installing": "A instalar {latest}...", + "done": "Atualizado para {latest}. Reinicie o servidor para aplicar a atualização." + }, + "mcp": { + "title": "Servidor MCP", + "running": "Servidor MCP em execução ({transport})", + "stopped": "Servidor MCP parado.", + "restarted": "Servidor MCP reiniciado.", + "stoppedHint": "Execute `omniroute mcp enable` para o ativar.", + "enabled": "Servidor MCP ativado.", + "disabled": "Servidor MCP desativado.", + "enable": { + "description": "Ativar o servidor MCP", + "transport": "Transporte a utilizar: stdio|sse|streamable-http" + }, + "disable": { + "description": "Desativar o servidor MCP" + }, + "call": { + "description": "Invocar diretamente uma ferramenta MCP", + "args": "Objeto de argumentos JSON (em linha)", + "args_file": "Caminho para o ficheiro de argumentos JSON", + "stream": "Utilizar o endpoint de streaming (/api/mcp/stream)", + "scope": "Âmbito necessário (repetível, por exemplo, read:health)" + }, + "scopes": { + "description": "Listar os âmbitos MCP disponíveis", + "tool": "Mostrar os âmbitos necessários para uma ferramenta específica" + }, + "tools": { + "description": "Inspecionar ferramentas MCP", + "list": { + "description": "Listar todas as ferramentas MCP", + "scope": "Filtrar por âmbito" + }, + "info": { + "description": "Mostrar metadados de uma ferramenta MCP" + }, + "schema": { + "description": "Mostrar o esquema JSON de entrada/saída de uma ferramenta MCP", + "io": "Tipo de esquema: input|output (predefinição: input)" + } + }, + "audit": { + "description": "Registo de auditoria MCP (alias de audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Listar as competências A2A disponíveis no cartão do agente" + }, + "invoke": { + "description": "Invocar uma competência A2A e devolver o ID da tarefa", + "input": "Objeto de entrada JSON", + "input_file": "Caminho para o ficheiro de entrada JSON", + "wait": "Aguardar pela conclusão da tarefa antes de devolver", + "timeout": "Tempo limite de espera pela conclusão em ms (predefinição: 60000)" + }, + "tasks": { + "description": "Gerir tarefas A2A", + "list": { + "status": "Filtrar por estado", + "skill": "Filtrar por ID da competência" + }, + "watch": { + "description": "Consultar periodicamente o estado da tarefa até à conclusão" + }, + "stream": { + "description": "Transmitir eventos de execução da tarefa via SSE" + }, + "logs": { + "description": "Mostrar mensagens e artefactos da tarefa" + } + } + }, + "policy": { + "description": "Gerir políticas de autorização do OmniRoute", + "list": { + "description": "Listar políticas", + "kind": "Filtrar por tipo (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrar por âmbito (global|api-key|provider)" + }, + "get": { + "description": "Obter detalhes da política por ID" + }, + "create": { + "description": "Criar uma política a partir de um ficheiro JSON", + "file": "Caminho para o ficheiro JSON da política" + }, + "update": { + "description": "Atualizar uma política a partir de um ficheiro JSON", + "file": "Caminho para o ficheiro JSON da política" + }, + "delete": { + "description": "Eliminar uma política por ID", + "yes": "Ignorar o pedido de confirmação" + }, + "evaluate": { + "description": "Avaliação da política em modo de simulação (código de saída 0=permitido, 4=negado)", + "api_key": "Chave de API a avaliar", + "action": "Ação a verificar (por exemplo, chat, embed, admin)", + "resource": "Caminho ou identificador do recurso", + "context": "Contexto adicional como objeto JSON" + }, + "export": { + "description": "Exportar todas as políticas para um ficheiro JSON" + }, + "import": { + "description": "Importar políticas a partir de um ficheiro JSON", + "overwrite": "Substituir políticas existentes com o mesmo ID" + } + }, + "compression": { + "description": "Configurar e inspecionar o pipeline de compressão do OmniRoute", + "status": { + "description": "Mostrar o estado e as definições atuais da compressão" + }, + "configure": { + "description": "Configurar as definições de compressão", + "engine": "Motor de compressão (caveman|rtk|hybrid|none)", + "caveman_agg": "Agressividade do Caveman 0.0–1.0", + "rtk_budget": "Orçamento de tokens do RTK", + "language_pack": "Pacote de idioma a ativar" + }, + "engine": { + "description": "Obter ou definir o motor de compressão ativo" + }, + "combos": { + "description": "Gerir estatísticas das combinações de compressão" + }, + "rules": { + "description": "Gerir regras de compressão", + "add": { + "pattern": "Padrão a corresponder (regex ou campo:padrão)", + "action": "Ação: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Listar pacotes de idiomas de compressão disponíveis" + }, + "preview": { + "description": "Pré-visualizar o efeito da compressão num pedido", + "file": "Caminho para o ficheiro JSON do pedido" + } + }, + "tunnel": { + "title": "Túneis", + "listDescription": "Listar túneis ativos", + "createDescription": "Criar um túnel", + "created": "Túnel criado: {url}", + "stopped": "Túnel parado.", + "confirmStop": "Parar o túnel {id}?", + "stopDescription": "Parar um túnel", + "statusDescription": "Mostrar o estado detalhado de um túnel", + "logsDescription": "Mostrar os registos de um túnel", + "infoDescription": "Mostrar os detalhes de configuração de um túnel", + "rotateDescription": "Gerar um novo URL de túnel", + "tailOpt": "Número de linhas de registo a mostrar", + "typeRequired": "O tipo de túnel é obrigatório.", + "noLogs": "Não existem registos disponíveis.", + "notAvailable": "As informações do túnel não estão disponíveis.", + "noTunnels": "Não existem túneis ativos.", + "infoTitle": "Informações do túnel: {type}", + "rotated": "URL do túnel alterado: {url}", + "confirmRotate": "Alterar o URL do túnel {type}? (será gerado um novo URL)" + }, + "stop": { + "description": "Parar o servidor OmniRoute", + "stopping": "A parar o servidor (PID {pid})...", + "stopped": "Servidor parado.", + "notRunning": "Não está nenhum servidor em execução.", + "portFallback": "Não foi encontrado nenhum ficheiro PID; a tentar parar com base na porta..." + }, + "restart": { + "description": "Reiniciar o servidor OmniRoute", + "restarting": "A reiniciar o servidor OmniRoute..." + }, + "dashboard": { + "description": "Abrir o painel do OmniRoute num navegador", + "opening": "A abrir o painel em {url}", + "urlOnly": "Apresentar o URL do painel sem abrir o navegador", + "tui": "Abrir o painel TUI interativo (interface de terminal, 7 separadores)" + }, + "models": { + "description": "Listar modelos disponíveis (requer o servidor)", + "search": "Filtrar modelos por ID, nome, fornecedor ou descrição", + "noServer": "Servidor não está em execução. Inicie com: omniroute serve", + "noModels": "Nenhum modelo encontrado." + }, + "audit": { + "description": "Aceder aos registos de auditoria de conformidade e do MCP", + "source": "Origem do registo: all|compliance|mcp (predefinição: all)", + "since": "Devolver entradas desde esta data e hora (ISO 8601)", + "until": "Devolver entradas até esta data e hora (ISO 8601)", + "tail": { + "description": "Mostrar entradas recentes do registo de auditoria", + "follow": "Acompanhar continuamente novas entradas (consulta a cada 2 s)", + "limit": "Número máximo de entradas a mostrar (predefinição: 100)" + }, + "search": { + "description": "Pesquisar entradas do registo de auditoria por palavra-chave", + "limit": "Número máximo de resultados (predefinição: 200)", + "actor": "Filtrar por ID do interveniente", + "action": "Filtrar por nome da ação" + }, + "export": { + "description": "Exportar o registo de auditoria para um ficheiro", + "format": "Formato de saída: jsonl|csv (predefinição: jsonl)" + }, + "stats": { + "description": "Mostrar estatísticas do registo de auditoria", + "period": "Período: 1d|7d|30d (predefinição: 7d)" + }, + "get": { + "description": "Obter uma única entrada do registo de auditoria por ID" + } + }, + "skills": { + "description": "Gerir competências do OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Listar competências instaladas", + "type": "Filtrar por tipo (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Mostrar apenas competências ativadas", + "disabled": "Mostrar apenas competências desativadas", + "api_key": "Filtrar por chave de API" + }, + "get": { + "description": "Obter detalhes de uma competência por ID" + }, + "install": { + "description": "Instalar uma competência a partir de um ficheiro ou URL", + "from_file": "Caminho para o ficheiro de definição JSON da competência", + "from_url": "URL da definição remota da competência", + "type": "Tipo de competência (sandbox|custom|hybrid)", + "enable": "Ativar a competência após a instalação" + }, + "enable": { + "description": "Ativar uma competência por ID" + }, + "disable": { + "description": "Desativar uma competência por ID", + "yes": "Ignorar o pedido de confirmação" + }, + "delete": { + "description": "Eliminar uma competência por ID", + "yes": "Ignorar o pedido de confirmação" + }, + "execute": { + "description": "Executar uma competência por ID", + "input": "Objeto de entrada JSON", + "input_file": "Caminho para o ficheiro de entrada JSON", + "timeout": "Tempo limite de execução em ms (predefinição: 30000)" + }, + "executions": { + "description": "Listar o histórico de execução de competências", + "skill": "Filtrar por ID da competência", + "limit": "Máximo de resultados (predefinição: 50)", + "status": "Filtrar por estado (running|completed|failed)" + }, + "skillssh": { + "description": "Gerir competências instaladas através de SSH" + }, + "marketplace": { + "description": "Explorar e instalar competências do marketplace" + }, + "mp": { + "search": { + "description": "Pesquisar pacotes no marketplace", + "category": "Filtrar por categoria", + "tag": "Filtrar por etiqueta", + "limit": "Máximo de resultados (predefinição: 30)", + "sort": "Ordenar por: downloads|rating|recent" + }, + "info": { + "description": "Mostrar os detalhes e o readme do pacote" + }, + "install": { + "description": "Instalar um pacote do marketplace", + "version": "Versão do pacote (predefinição: latest)", + "enable": "Ativar após a instalação", + "yes": "Ignorar o pedido de confirmação" + }, + "categories": { + "description": "Listar categorias do marketplace" + }, + "featured": { + "description": "Mostrar pacotes em destaque no marketplace" + } + } + }, + "memory": { + "description": "Gerir a memória de conversação do OmniRoute (FTS5 + vetorial)", + "search": { + "description": "Pesquisar entradas de memória através de uma consulta semântica", + "type": "Filtrar por tipo de memória (user|feedback|project|reference)", + "limit": "Máximo de resultados (predefinição: 20)", + "api_key": "Filtrar por chave de API", + "token_budget": "Limitar o total de tokens nos resultados" + }, + "add": { + "description": "Adicionar uma nova entrada de memória", + "content": "Conteúdo textual da memória", + "file": "Ler conteúdo de um ficheiro", + "type": "Tipo de memória (predefinição: user)", + "metadata": "Objeto de metadados JSON", + "api_key": "Associar a uma chave de API" + }, + "clear": { + "description": "Eliminar entradas de memória que correspondam aos filtros", + "type": "Filtrar por tipo", + "older": "Eliminar entradas anteriores à duração especificada (30d, 6m, 1y)", + "api_key": "Filtrar por chave de API", + "yes": "Ignorar o pedido de confirmação" + }, + "list": { + "description": "Listar entradas de memória sem ordenação por relevância da pesquisa", + "type": "Filtrar por tipo", + "limit": "Máximo de resultados (predefinição: 100)", + "api_key": "Filtrar por chave de API" + }, + "get": { + "description": "Obter uma única entrada de memória por ID" + }, + "delete": { + "description": "Eliminar uma entrada de memória por ID", + "yes": "Ignorar pedido de confirmação" + }, + "health": { + "description": "Mostrar o estado de funcionamento do subsistema de memória (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Gerir ligações de fornecedores OAuth", + "providers": { + "description": "Listar fornecedores compatíveis com OAuth e os respetivos tipos de fluxo" + }, + "start": { + "description": "Iniciar o fluxo de autorização OAuth para um fornecedor", + "provider": "ID do fornecedor (gemini, copilot, cursor, …)", + "no_browser": "Mostrar apenas o URL — não abrir o navegador", + "import_system": "Importar automaticamente credenciais da configuração do sistema local", + "social": "Fornecedor de início de sessão com rede social (google|github) — obrigatório para kiro", + "timeout": "Tempo limite de espera pela autorização em ms (predefinição: 300000)" + }, + "status": { + "description": "Listar ligações OAuth ativas", + "provider": "Filtrar por ID do fornecedor" + }, + "revoke": { + "description": "Revogar uma ligação OAuth", + "provider": "ID do fornecedor a revogar", + "connection_id": "Revogar uma ligação específica por ID", + "yes": "Ignorar pedido de confirmação" + } + }, + "cloud": { + "description": "Gerir tarefas de agentes de IA na cloud (codex, devin, jules)", + "agents": { + "description": "Listar agentes disponíveis na cloud" + }, + "agent": { + "description": "Gerir tarefas do agente {agent} na cloud", + "auth": { + "description": "Autorizar {agent} através de OAuth" + } + }, + "task": { + "description": "Gerir tarefas de agentes na cloud", + "create": { + "description": "Criar uma nova tarefa de agente", + "title": "Título da tarefa (por predefinição, os primeiros 80 carateres do pedido)", + "prompt": "Texto do pedido da tarefa", + "prompt_file": "Ler o pedido a partir de um ficheiro", + "repo": "URL do repositório a clonar para a tarefa", + "branch": "Nome do ramo a utilizar", + "metadata": "Objeto de metadados JSON" + }, + "list": { + "description": "Listar tarefas de agentes", + "status": "Filtrar por estado (running|completed|failed|cancelled)", + "limit": "Número máximo de resultados (predefinição: 50)" + }, + "get": { + "description": "Obter detalhes da tarefa por ID" + }, + "status": { + "description": "Mostrar o estado da tarefa (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Cancelar uma tarefa em execução", + "yes": "Ignorar pedido de confirmação" + }, + "approve": { + "description": "Aprovar o plano do agente para iniciar a execução" + }, + "message": { + "description": "Enviar uma mensagem para uma tarefa em execução" + } + }, + "sources": { + "description": "Listar ficheiros de origem produzidos por uma tarefa" + } + }, + "eval": { + "description": "Gerir conjuntos e execuções de avaliação", + "suites": { + "description": "Gerir conjuntos de avaliação", + "list": { + "description": "Listar conjuntos de avaliação" + }, + "get": { + "description": "Obter detalhes do conjunto de avaliação por ID" + }, + "create": { + "description": "Criar um conjunto de avaliação a partir de um ficheiro JSON", + "file": "Caminho para o ficheiro JSON de definição do conjunto" + } + }, + "run": { + "description": "Iniciar uma execução de avaliação para um conjunto", + "model": "ID do modelo a avaliar (predefinição: auto)", + "combo": "Forçar uma combinação específica pelo nome", + "concurrency": "Número de amostras simultâneas (predefinição: 4)", + "tag": "Adicionar uma etiqueta a esta execução para filtragem posterior", + "watch": "Acompanhar o progresso da execução até à conclusão" + }, + "list": { + "description": "Listar execuções de avaliação", + "suite": "Filtrar por ID do conjunto", + "status": "Filtrar por estado", + "since": "Devolver execuções desde esta data e hora", + "limit": "Número máximo de resultados (predefinição: 50)" + }, + "get": { + "description": "Obter detalhes da execução de avaliação por ID" + }, + "results": { + "description": "Mostrar resultados das amostras de uma execução de avaliação", + "failed": "Mostrar apenas amostras com falha" + }, + "cancel": { + "description": "Cancelar uma avaliação em execução", + "yes": "Ignorar pedido de confirmação" + }, + "scorecard": { + "description": "Mostrar o quadro de pontuações de uma execução de avaliação concluída" + } + }, + "webhooks": { + "description": "Gerir webhooks do OmniRoute", + "events": { + "description": "Listar todos os tipos de eventos de webhook disponíveis" + }, + "list": { + "description": "Listar webhooks configurados" + }, + "get": { + "description": "Obter detalhes do webhook por ID" + }, + "add": { + "description": "Registar um novo webhook", + "url": "URL de destino", + "events": "Lista de tipos de eventos separados por vírgulas", + "secret": "Segredo de assinatura HMAC", + "header": "Cabeçalho adicional no formato key=value (repetível)", + "no_enabled": "Criar webhook no estado desativado" + }, + "update": { + "description": "Atualizar um webhook existente", + "enabled": "Definir o estado de ativação (true|false)" + }, + "remove": { + "description": "Eliminar um webhook", + "yes": "Ignorar pedido de confirmação" + }, + "test": { + "description": "Enviar um evento de teste para um webhook", + "event": "Tipo de evento a simular (predefinição: request.completed)" + } + }, "program": { "description": "OmniRoute — Router de IA inteligente com fallback automático", "version": "Mostrar versão e sair", @@ -26,7 +832,509 @@ "context": "Contexto/perfil do servidor para este comando", "lang": "Definir idioma de apresentação do CLI (substitui OMNIROUTE_LANG)" }, - "redis": { - "description": "Iniciar um contentor Redis local com um clique (Podman ou Docker) para cache e rastreio de quotas do OmniRoute" + "files": { + "description": "Gerir ficheiros (carregar, listar, obter, transferir, eliminar)", + "list": { + "purpose": "Filtrar por finalidade", + "limit": "Número máximo de resultados" + }, + "get": { + "description": "Obter metadados do ficheiro" + }, + "upload": { + "description": "Carregar um ficheiro", + "purpose": "Finalidade do ficheiro (batch, assistants, fine-tune)" + }, + "content": { + "description": "Descarregar o conteúdo do ficheiro", + "out": "Guardar no caminho (predefinição: stdout)" + }, + "delete": { + "yes": "Ignorar confirmação" + } + }, + "batches": { + "description": "Gerir tarefas em lote compatíveis com OpenAI", + "list": { + "status": "Filtrar por estado", + "limit": "Máximo de resultados" + }, + "create": { + "description": "Criar uma tarefa em lote", + "inputFile": "ID do ficheiro de entrada", + "endpoint": "Endpoint de destino", + "window": "Janela de conclusão", + "metadata": "Adicionar metadados chave=valor" + }, + "submit": { + "description": "Carregar ficheiro JSONL e criar lote", + "jsonl": "Caminho para o ficheiro JSONL", + "endpoint": "Endpoint de destino", + "wait": "Aguardar pela conclusão" + }, + "cancel": { + "yes": "Ignorar confirmação" + }, + "wait": { + "timeout": "Tempo limite em ms" + }, + "output": { + "out": "Guardar a saída no caminho" + }, + "errors": { + "out": "Guardar os erros no caminho" + } + }, + "translator": { + "description": "Traduzir corpos de pedidos entre formatos de LLM", + "detect": { + "description": "Detetar o formato do corpo" + }, + "translate": { + "description": "Converter o corpo de um formato para outro" + }, + "send": { + "description": "Traduzir e encaminhar para o upstream" + }, + "stream": { + "description": "Traduzir em fluxo contínuo um corpo de pedido" + }, + "from": "Formato de origem (openai|anthropic|gemini|cohere)", + "to": "Formato de destino (openai|anthropic|gemini|cohere)", + "file": "Caminho para o ficheiro JSON do corpo do pedido", + "out": "Guardar a saída num ficheiro", + "model": "Substituir o modelo", + "history": { + "limit": "Máximo de resultados" + } + }, + "pricing": { + "description": "Gerir dados de preços dos modelos", + "sync": { + "description": "Sincronizar preços a partir de fontes upstream", + "provider": "Filtrar por fornecedor", + "force": "Forçar nova sincronização" + }, + "list": { + "provider": "Filtrar por fornecedor", + "model": "Filtrar por modelo", + "limit": "Máximo de resultados" + }, + "defaults": { + "description": "Gerir preços predefinidos", + "input": "Custo de entrada por 1 milhão de tokens (USD)", + "output": "Custo de saída por 1 milhão de tokens (USD)", + "cacheRead": "Custo de leitura da cache por 1 milhão de tokens (USD)", + "cacheWrite": "Custo de escrita na cache por 1 milhão de tokens (USD)" + }, + "diff": { + "description": "Mostrar divergência em relação aos preços de origem", + "model": "Filtrar por modelo" + } + }, + "radar": { + "description": "Inspecionar e sincronizar os feeds do catálogo Radar local", + "status": "Mostrar as definições locais do Radar e o estado da cache dos feeds", + "sync": "Sincronizar catálogo, referências, ofertas e Intel através do servidor local" + }, + "resilience": { + "description": "Inspecionar e gerir mecanismos de resiliência", + "status": { + "provider": "Filtrar por fornecedor" + }, + "breakers": { + "provider": "Filtrar por fornecedor" + }, + "cooldowns": { + "provider": "Filtrar por fornecedor", + "connectionId": "Filtrar por ID de ligação" + }, + "lockouts": { + "provider": "Filtrar por fornecedor", + "model": "Filtrar por modelo" + }, + "reset": { + "description": "Repor o estado do disjuntor/período de espera", + "provider": "Fornecedor a repor", + "connectionId": "ID de ligação a repor", + "model": "Modelo cujo bloqueio será reposto", + "allCooldowns": "Repor todos os períodos de espera do fornecedor", + "yes": "Ignorar confirmação" + }, + "profile": { + "description": "Gerir perfil de resiliência", + "name": "Nome do perfil" + }, + "config": { + "description": "Gerir configuração de resiliência", + "threshold": "Limite de falhas", + "resetTimeout": "Tempo limite de reposição em ms", + "baseCooldown": "Período de espera base em ms" + } + }, + "nodes": { + "description": "Gerir nós (endpoints) dos fornecedores", + "list": { + "provider": "Filtrar por fornecedor", + "enabled": "Mostrar apenas nós ativados" + }, + "add": { + "provider": "Nome do fornecedor", + "baseUrl": "URL base do nó", + "name": "Nome do nó", + "weight": "Peso do balanceamento de carga", + "region": "Etiqueta da região", + "authHeader": "Cabeçalho de autenticação personalizado (key=value)" + }, + "update": { + "baseUrl": "Novo URL base", + "name": "Novo nome", + "weight": "Novo peso", + "region": "Nova região", + "enabled": "Ativar ou desativar (true|false)" + }, + "remove": { + "yes": "Ignorar confirmação" + }, + "validate": { + "baseUrl": "URL a validar", + "provider": "Fornecedor usado na validação" + }, + "test": { + "description": "Enviar pedido de teste para o nó" + }, + "metrics": { + "description": "Mostrar métricas do nó", + "period": "Período de tempo (por exemplo, 24h, 7d)" + } + }, + "context": { + "description": "Configurar o pipeline de engenharia de contexto (Caveman, RTK)", + "analytics": { + "period": "Período de tempo (por exemplo, 7d, 30d)" + }, + "caveman": { + "description": "Gerir o compressor de contexto Caveman", + "config": { + "description": "Mostrar ou atualizar a configuração do Caveman", + "aggressiveness": "Agressividade 0,0–1,0", + "maxShrinkPct": "Percentagem máxima de redução", + "preserveTags": "Etiquetas separadas por vírgulas a preservar" + } + }, + "rtk": { + "description": "Gerir o otimizador de contexto RTK", + "config": { + "description": "Mostrar ou atualizar a configuração do RTK", + "tokenBudget": "Orçamento de tokens para o RTK", + "reservePct": "Percentagem de reserva" + }, + "filters": { + "description": "Gerir filtros do RTK", + "pattern": "Padrão do filtro (regex)", + "priority": "Prioridade do filtro (predefinição: 100)", + "action": "Ação do filtro: drop|shrink|replace", + "yes": "Ignorar confirmação" + }, + "test": { + "file": "Caminho para o ficheiro JSON do pedido" + } + }, + "combos": { + "description": "Gestão de combinações sensível ao contexto" + } + }, + "sessions": { + "description": "Inspecionar e gerir sessões ativas", + "list": { + "user": "Filtrar por utilizador", + "kind": "Filtrar por tipo (dashboard|api-key|mcp|a2a)", + "active": "Mostrar apenas sessões ativas", + "limit": "Máximo de resultados (predefinição: 100)" + }, + "expire": { + "yes": "Ignorar confirmação" + }, + "expireAll": { + "user": "Utilizador cujas sessões devem expirar", + "yes": "Ignorar confirmação" + } + }, + "tags": { + "description": "Gerir etiquetas de recursos", + "add": { + "color": "Cor da etiqueta (hexadecimal ou nome)", + "description": "Descrição da etiqueta" + }, + "remove": { + "yes": "Ignorar confirmação" + }, + "assign": { + "tag": "Nome da etiqueta", + "to": "Recurso de destino como tipo:id (por exemplo, provider:openai)" + }, + "unassign": { + "tag": "Nome da etiqueta", + "from": "Recurso de origem como tipo:id" + } + }, + "openapi": { + "description": "Aceder e testar a especificação OpenAPI do OmniRoute", + "dump": { + "description": "Exportar a especificação OpenAPI para stdout ou para um ficheiro", + "format": "Formato de saída: yaml|json (predefinição: yaml)", + "out": "Guardar no caminho do ficheiro" + }, + "validate": { + "description": "Validar a especificação OpenAPI" + }, + "try": { + "description": "Testar um endpoint da API através da especificação", + "method": "Método HTTP (predefinição: GET)", + "body": "Caminho para o ficheiro JSON do corpo do pedido", + "query": "Parâmetro de consulta como key=value (repetível)", + "header": "Cabeçalho como key=value (repetível)" + }, + "endpoints": { + "description": "Listar todos os endpoints da API", + "search": "Filtrar por caminho ou resumo" + }, + "paths": { + "description": "Listar todos os caminhos da API" + } + }, + "combo": { + "title": "Combinações", + "switched": "Combinação ativa: {name}", + "created": "Combinação criada: {name}", + "deleted": "Combinação eliminada: {name}", + "noCombos": "Não existem combinações configuradas.", + "confirmDelete": "Eliminar a combinação {name}?", + "suggest": { + "description": "Sugerir a melhor combinação para uma tarefa utilizando uma classificação por IA", + "task": "Descrição da tarefa", + "maxCost": "Custo máximo por pedido em USD", + "maxLatencyMs": "Latência máxima em milissegundos", + "weights": "Ponderações de classificação em JSON, por exemplo, {\"latency\":0.7,\"cost\":0.3}", + "top": "Número de melhores candidatos a apresentar (predefinição: 5)", + "explain": "Imprimir a justificação em stderr", + "switch": "Ativar a combinação mais bem classificada" + } + }, + "oneproxy": { + "description": "Gerir o conjunto de servidores upstream do OneProxy", + "stats": { + "provider": "Filtrar por fornecedor", + "period": "Período de tempo (predefinição: 24h)" + }, + "fetch": { + "description": "Obter proxies do conjunto", + "count": "Número de proxies a obter (predefinição: 1)", + "type": "Tipo de proxy: http|socks5 (predefinição: http)" + }, + "rotate": { + "description": "Forçar a rotação do proxy", + "provider": "Fornecedor para o qual efetuar a rotação", + "connectionId": "ID de ligação específico a rodar" + }, + "config": { + "description": "Mostrar ou atualizar a configuração do OneProxy", + "enabled": "Ativar o conjunto de proxies (true|false)", + "poolSize": "Tamanho do conjunto", + "providerSource": "URL do fornecedor de proxies", + "rotationPolicy": "Política de rotação: sticky|per-request|periodic" + }, + "pool": { + "description": "Listar o conjunto de proxies atual com métricas" + } + }, + "open": { + "description": "Abrir uma página específica do painel do OmniRoute no navegador", + "url": "Apresentar apenas o URL, não abrir o navegador" + }, + "telemetry": { + "description": "Aceder aos dados de telemetria agregados", + "summary": { + "description": "Mostrar o resumo da telemetria agregada", + "period": "Período: 24h|7d|30d (predefinição: 24h)", + "compareTo": "Comparar com o período anterior" + }, + "export": { + "description": "Exportar eventos de telemetria para JSONL", + "out": "Caminho do ficheiro de saída (predefinição: telemetry.jsonl)", + "period": "Período para exportação (predefinição: 7d)" + } + }, + "sync": { + "description": "Sincronizar a configuração entre instâncias do OmniRoute", + "push": { + "description": "Enviar a configuração para a cloud ou para uma instância remota", + "target": "Destino (cloud ou context:name)", + "bundle": "Componentes do pacote a sincronizar", + "dryRun": "Pré-visualizar sem aplicar" + }, + "pull": { + "description": "Obter a configuração a partir da cloud ou de uma instância remota", + "source": "Origem (cloud ou context:name)", + "merge": "Intercalar com a configuração existente", + "replace": "Substituir a configuração existente", + "dryRun": "Pré-visualizar sem aplicar" + }, + "diff": { + "source": "Contexto de origem", + "target": "Contexto de destino" + }, + "bundle": { + "description": "Exportar a configuração como ficheiro de pacote", + "include": "Componentes a incluir (separados por vírgulas)" + }, + "import": { + "description": "Importar um ficheiro de pacote", + "dryRun": "Validar sem aplicar" + }, + "initialize": { + "fromCloud": "Inicializar a partir de uma cópia de segurança na cloud" + }, + "tokens": { + "description": "Gerir tokens de sincronização", + "create": { + "name": "Nome do token", + "scope": "Âmbito do token", + "ttl": "TTL do token (por exemplo, 30d)" + }, + "revoke": { + "yes": "Ignorar confirmação" + } + }, + "resolve": { + "description": "Resolver conflitos de sincronização interativamente" + } + }, + "config": { + "contexts": { + "description": "Gerir contextos/perfis do servidor (adicionar, utilizar, listar, mostrar, remover, mudar o nome, exportar, importar)" + }, + "lang": { + "description": "Gerir o idioma de apresentação da CLI", + "getDescription": "Mostrar o código do idioma atualmente ativo", + "setDescription": "Definir o idioma de apresentação e guardá-lo na configuração", + "listDescription": "Listar todos os idiomas disponíveis", + "listTitle": "Idiomas disponíveis", + "current": "Idioma: {code} ({name})", + "saved": "Idioma definido como {code} ({name}).", + "noCode": "É necessário indicar o código do idioma. Execute 'omniroute config lang list' para ver os códigos disponíveis.", + "unknown": "Código de idioma desconhecido: {code}. Execute 'omniroute config lang list' para ver os códigos disponíveis.", + "alreadySet": "O idioma já está definido como {code}.", + "envHint": "Dica: também pode definir OMNIROUTE_LANG={code} no seu ambiente." + } + }, + "completion": { + "description": "Gerar ou instalar scripts de conclusão da shell", + "zsh": "Apresentar o script de conclusão para zsh", + "bash": "Apresentar o script de conclusão para bash", + "fish": "Apresentar o script de conclusão para fish", + "install": "Instalar globalmente o script de conclusão para a shell detetada", + "refresh": "Atualizar a cache de combinações/fornecedores/modelos" + }, + "logs": { + "description": "Transmitir ou exportar registos de pedidos", + "follow": "Transmitir registos em tempo real", + "filter": "Filtrar por nível (error,warn,info) — separado por vírgulas", + "lines": "Número de linhas a obter", + "timeout": "Tempo limite da ligação em ms", + "baseUrl": "URL base da API do OmniRoute", + "requestId": "Filtrar por ID do pedido", + "apiKey": "Filtrar por chave de API", + "combo": "Filtrar por nome da combinação", + "status": "Filtrar por código de estado HTTP", + "durationMin": "Duração mínima do pedido em ms", + "durationMax": "Duração máxima do pedido em ms", + "export": "Guardar registos num ficheiro (json/jsonl/csv)", + "exported": "Registos guardados em {path}", + "stopped": "Transmissão de registos interrompida.", + "streamError": "Erro na transmissão de registos: {message}" + }, + "tray": { + "description": "Controlar o ícone da área de notificação", + "show": "Mostrar o ícone da área de notificação (se o servidor estiver a ser executado com --tray)", + "hide": "Ocultar o ícone da área de notificação", + "quit": "Sair do OmniRoute através da área de notificação" + }, + "autostart": { + "description": "Gerir o arranque automático do OmniRoute no início da sessão (Linux: serviço de utilizador systemd)", + "enable": "Ativar o arranque automático no início da sessão", + "disable": "Desativar o arranque automático no início da sessão", + "toggle": "Alternar o arranque automático no início da sessão", + "status": "Mostrar o estado do arranque automático" + }, + "runtime": { + "description": "Gerir dependências nativas do runtime", + "check": "Verificar o estado das dependências nativas no diretório do runtime", + "repair": "Reinstalar as dependências nativas no diretório do runtime", + "repair_force": "Forçar a reinstalação mesmo que sejam válidas", + "clean": "Remover o diretório do runtime (liberta espaço em disco)", + "clean_yes": "Ignorar confirmação" + }, + "repl": { + "description": "REPL interativo com múltiplas interações e LLM", + "model": "Modelo a utilizar (predefinição: auto)", + "combo": "Nome da combinação a utilizar", + "system": "Prompt de sistema", + "resume": "Retomar uma sessão guardada pelo nome" + }, + "plugin": { + "description": "Gerir plugins da CLI (omniroute-cmd-*)", + "list": "Listar plugins instalados", + "install": "Instalar um plugin a partir do npm ou de um caminho local", + "remove": "Remover um plugin instalado", + "info": "Mostrar detalhes de um plugin instalado", + "search": "Pesquisar plugins disponíveis no registo do npm", + "update": "Atualizar plugins instalados", + "scaffold": "Gerar a estrutura base de um novo plugin" + }, + "launch": { + "description": "Iniciar o Claude Code configurado para o OmniRoute (local ou remoto, com --profile)", + "token": "Token que o cliente Claude deve enviar (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "O OmniRoute não está acessível em {port}. Inicie-o com 'omniroute serve'.", + "notFound": "A CLI 'claude' não foi encontrada em PATH." + }, + "run": { + "description": "Iniciar um destino de CLI suportado através do OmniRoute" + }, + "setupClaude": { + "description": "Gerar perfis do Claude Code em ~/.claude/profiles a partir do catálogo de modelos do OmniRoute" + }, + "connect": { + "description": "Ligar a um servidor OmniRoute remoto e entrar no modo remoto" + }, + "tokens": { + "description": "Gerir tokens de acesso à CLI com âmbito definido (modo remoto)" + }, + "configure": { + "description": "Selecionar um fornecedor+modelo no servidor ativo e configurar uma CLI local suportada" + }, + "launchCodex": { + "description": "Iniciar a Codex CLI configurada para o OmniRoute (local ou VPS remoto)" + }, + "setupCodex": { + "description": "Gerar ficheiros de perfil em ~/.codex a partir do catálogo de modelos em tempo real do OmniRoute" + }, + "packs": { + "description": "Gerir pacotes opcionais do runtime (ML / automatização do navegador)", + "listDescription": "Listar pacotes opcionais e o respetivo estado de instalação", + "installDescription": "Instalar um pacote opcional em DATA_DIR", + "verifyDescription": "Verificar os pacotes instalados com base no índice de somas de verificação fornecido", + "removeDescription": "Remover um pacote opcional instalado", + "sourceOpt": "Diretório que contém os conteúdos dos pacotes e o índice de pacotes", + "warnNoIndex": "optional-packs.index.json não encontrado — a instalação/verificação não está disponível nesta cópia local (os pacotes para ambiente de trabalho incluem-no)", + "errUnknown": "pacote desconhecido: {name}", + "errNoIndex": "índice de pacotes não encontrado; indique --source contendo o conteúdo do pacote (os pacotes para ambiente de trabalho incluem-no junto da aplicação)", + "installed": "pacote \"{name}\" instalado e verificado em {dir}", + "restartHint": "reinicie o servidor OmniRoute (ou a aplicação para computador) para que o ambiente de execução detete o pacote", + "removed": "pacote \"{name}\" removido", + "notInstalled": "o pacote \"{name}\" não estava instalado", + "verifyOk": "todos os pacotes instalados foram verificados", + "verifyFailed": "{count} pacote(s) falharam a verificação", + "noneInstalled": "não estão instalados pacotes opcionais" } } diff --git a/bin/cli/locales/ro.json b/bin/cli/locales/ro.json index 05111db636..4e91ec04a6 100644 --- a/bin/cli/locales/ro.json +++ b/bin/cli/locales/ro.json @@ -14,6 +14,812 @@ "jsonOpt": "Ieșire ca JSON", "yesOpt": "Omite confirmarea" }, + "setup": { + "title": "Configurare OmniRoute", + "passwordPrompt": "Parolă de administrator", + "providerPrompt": "Furnizor implicit (lăsați necompletat pentru a omite)", + "done": "Configurare finalizată", + "passwordSet": "Parola de administrator a fost configurată", + "providerSet": "Furnizor configurat: {name}", + "testingProvider": "Se testează conexiunea la furnizor: {name}", + "testPassed": "Testul furnizorului a reușit", + "testFailed": "Testul furnizorului a eșuat: {error}", + "loginEnabled": "Autentificare: activată (parolă actualizată)", + "loginDisabled": "Autentificare: dezactivată", + "providerInfo": "Furnizor: {info}", + "opencode": "Instalați și configurați pachetul @omniroute/opencode-plugin inclus pentru OpenCode" + }, + "doctor": { + "title": "Diagnosticare OmniRoute", + "dbOk": "Bază de date: OK ({path})", + "dbMissing": "Bază de date: neinițializată — rulați `omniroute setup`", + "portOk": "Portul {port}: disponibil", + "portConflict": "Portul {port}: utilizat de un alt proces", + "encryptionOk": "Cheie de criptare: configurată", + "encryptionMissing": "Cheia de criptare lipsește — rulați `omniroute setup`", + "allGood": "Toate verificările au trecut.", + "warnings": "{count} avertisment(e) — consultați informațiile de mai sus." + }, + "providers": { + "title": "Furnizori", + "noProviders": "Nu este configurat niciun furnizor. Rulați: omniroute setup", + "testing": "Se testează {name}...", + "available": "{count} furnizor(i) disponibil(i)", + "connected": "Conectat", + "disconnected": "Deconectat", + "validationFailed": "Validarea a eșuat: {error}", + "metrics": { + "description": "Afișați indicatorii de performanță ai furnizorului (latență, rată de succes, cost)", + "provider": "Filtrați după ID-ul furnizorului", + "connection_id": "Filtrați după ID-ul conexiunii", + "period": "Perioadă: 1h|6h|24h|7d|30d (implicit: 24h)", + "metric": "Concentrați-vă asupra unui anumit câmp de indicatori", + "sort": "Sortați după câmp (descrescător)", + "limit": "Număr maxim de rânduri (implicit: 50)", + "watch": "Reîmprospătați la fiecare 5 s (mod live)", + "compare": "ID-uri de furnizori separate prin virgulă pentru comparare alăturată" + }, + "metric_single": { + "description": "Obțineți valoarea unui singur indicator pentru o anumită conexiune" + }, + "rotate": { + "description": "Rotiți cheia API upstream pentru o conexiune la furnizor", + "newKeyOpt": "Noua valoare a cheii API (de evitat: preferați --from-env)", + "fromEnvOpt": "Citiți cheia nouă din variabila de mediu VAR", + "oauthOpt": "Declanșați în schimb fluxul de reautentificare OAuth", + "skipTestOpt": "Omiteți testul de conectivitate de după rotație", + "dryRunOpt": "Afișați ce s-ar modifica fără a scrie", + "confirmPrompt": "Înlocuiți cheia API pentru conexiunea „{name}” ({id})? [y/N]", + "dryRunResult": "[dry-run] Cheia pentru „{name}” ({id}) ar fi rotită. Nu s-a efectuat nicio modificare.", + "oauthHint": "Conexiune OAuth — rulați: omniroute oauth {provider}", + "envVarEmpty": "Variabila de mediu {var} nu este setată sau este goală.", + "success": "Cheia pentru „{name}” a fost rotită. Rulați `providers test {id}` pentru verificare.", + "testPassed": "Testul de după rotație a reușit.", + "testFailed": "Testul de după rotație a eșuat: {error}" + }, + "status": { + "description": "Afișați starea cheilor pentru toate conexiunile furnizorilor (vechime, expirare, perioadă de așteptare)", + "providerOpt": "Filtrați după numele furnizorului", + "header": "ID Furnizor Nume Stare expirare Stare test Perioadă de așteptare până la", + "noData": "Nu sunt disponibile date despre conexiunile furnizorilor.", + "requiresServer": "Pentru `providers status`, serverul OmniRoute trebuie să ruleze." + } + }, + "keys": { + "title": "Chei API", + "addDescription": "Adăugați sau actualizați o cheie API pentru un furnizor", + "listDescription": "Listați toate cheile API configurate", + "removeDescription": "Eliminați cheia API a unui furnizor", + "regenerateDescription": "Regenerați o cheie API OmniRoute", + "revokeDescription": "Revocați o cheie API OmniRoute", + "revealDescription": "Dezvăluiți valoarea nemascată a cheii API", + "usageDescription": "Afișați utilizarea recentă a unei chei API", + "usageLimitOpt": "Numărul solicitărilor recente", + "rotateDescription": "Generați o cheie nouă și invalidați-o pe cea veche", + "graceOpt": "Perioada de grație (ms) înainte de invalidarea cheii vechi", + "stdinOpt": "Citiți cheia API din stdin în locul argumentului", + "added": "Cheia pentru {provider} a fost adăugată.", + "removed": "Cheia a fost eliminată.", + "listed": "{count} cheie/chei.", + "noKeys": "Nu este configurată nicio cheie.", + "noUsage": "Nu s-au găsit date de utilizare.", + "confirmRemove": "Eliminați cheia {id}?", + "confirmRegenerate": "Regenerați cheia {id}?", + "confirmRevoke": "Revocați cheia {id}?", + "confirmRotate": "Rotiți cheia {id}? (cheia veche va fi invalidată după perioada de grație)", + "regenerated": "Regenerată. Cheie nouă: {key}", + "revoked": "Cheia {id} a fost revocată.", + "rotated": "Cheia {id} a fost rotită. Noul ID al cheii: {newId}", + "revealWarning": "⚠ Aceasta va afișa cheia completă, nemascată. Asigurați-vă că ecranul este privat.", + "providerRequired": "Furnizorul este obligatoriu.", + "keyRequired": "Cheia API este obligatorie.", + "stdinEmpty": "Nu a fost furnizată nicio cheie API prin stdin.", + "unknownProvider": "Furnizor necunoscut: {provider}", + "policy": { + "title": "Politica cheii", + "showDescription": "Afișează politica privind rata/costul pentru o cheie", + "setDescription": "Setează politica privind rata/costul pentru o cheie", + "rateLimitOpt": "Numărul maxim de solicitări pe minut", + "maxCostOpt": "Costul maxim pe zi (USD)", + "allowedModelsOpt": "Listă de modele permise, separate prin virgulă", + "nothingToSet": "Nu au fost furnizate câmpuri pentru politică. Utilizați --rate-limit, --max-cost sau --allowed-models.", + "updated": "Politica a fost actualizată." + }, + "expiration": { + "title": "Expirarea cheii", + "listDescription": "Listează cheile care expiră în curând", + "daysOpt": "Afișează cheile care expiră în decurs de N zile", + "none": "Nicio cheie nu expiră în decurs de {days} zile.", + "listTitle": "Chei care expiră în decurs de {days} zile:" + } + }, + "authExport": { + "description": "Exportă credențialele DECRIPTATE ale furnizorului (doar local, rezultat în text simplu)", + "idOpt": "Exportă numai conexiunea care corespunde acestui ID/nume/furnizor", + "formatOpt": "Format de ieșire: json sau env", + "outOpt": "Scrie rezultatul într-un fișier în loc de stdout (scris cu permisiuni 0600)", + "forceOpt": "Confirmați că înțelegeți că această acțiune afișează/scrie secrete în text simplu", + "warning": "⚠ Această acțiune afișează/scrie chei API și tokenuri OAuth DECRIPTATE, în text simplu. Asigurați-vă că ecranul, istoricul shell-ului și orice fișier de ieșire rămân private.", + "confirmHeading": "⚠ AVERTISMENT: această acțiune exportă credențialele DECRIPTATE ale furnizorului în text simplu", + "confirmBody": "Această comandă decriptează și afișează/scrie apiKey, accessToken, refreshToken și\nidToken pentru conexiunile selectate. Tratați rezultatul ca pe un secret.", + "confirmFooter": "Pentru confirmare, rulați:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY este necesară pentru exportarea credențialelor.", + "notFound": "Conexiunea nu a fost găsită: {id}", + "invalidFormat": "Format nevalid: {format}. Utilizați json sau env." + }, + "stream": { + "description": "Transmite în flux un răspuns de chat cu moduri de inspectare SSE", + "file": "Citește mesajul din fișier", + "stdin": "Citește mesajul din stdin", + "model": "ID-ul modelului (implicit: auto)", + "system": "Mesaj de sistem", + "combo": "Forțează o anumită combinație după nume", + "max_tokens": "Numărul maxim de tokenuri din răspuns", + "responses_api": "Utilizează /v1/responses în loc de /v1/chat/completions", + "raw": "Afișează liniile SSE brute pe măsură ce sunt primite", + "debug": "Afișează în stderr informații despre durata fiecărui fragment", + "save": "Salvează toate evenimentele SSE într-un fișier .jsonl", + "error": { + "empty_prompt": "Eroare: promptul este obligatoriu (argument pozițional, --file sau --stdin)" + } + }, + "usage": { + "description": "Analize de utilizare, bugete, cote și jurnale", + "analytics": { + "description": "Afișează analizele agregate de utilizare", + "period": "Interval de timp: 1d|7d|30d|90d|ytd|all (implicit: 30d)", + "provider": "Filtrează după ID-ul furnizorului" + }, + "budget": { + "description": "Gestionează bugetele de costuri", + "set": { + "scope": "Domeniul bugetului (implicit: global)", + "period": "Perioada bugetului: daily|weekly|monthly (implicit: monthly)" + } + }, + "quota": { + "description": "Afișează utilizarea cotei furnizorului", + "provider": "Filtrează după ID-ul furnizorului", + "check": "Afișează dacă există cotă disponibilă pentru o solicitare nouă" + }, + "logs": { + "description": "Afișează jurnalele apelurilor de solicitare", + "limit": "Numărul de intrări de jurnal returnate (implicit: 100)", + "search": "Interogare de căutare pentru filtrarea jurnalelor", + "since": "Returnează jurnalele începând de la acest marcaj temporal", + "follow": "Urmărește continuu noile intrări de jurnal", + "api_key": "Filtrează jurnalele după cheia API" + }, + "utilization": { + "description": "Afișează indicatorii de utilizare a cheii API", + "api_key": "Filtrează după cheia API" + }, + "history": { + "description": "Afișează istoricul solicitărilor", + "limit": "Numărul de intrări din istoric (implicit: 100)" + }, + "proxy_logs": { + "description": "Afișează jurnalele solicitărilor la nivel de proxy", + "limit": "Numărul de intrări din jurnalul proxy (implicit: 100)" + } + }, + "cost": { + "description": "Afișează raportul de costuri cu defalcare după furnizor, model, combinație sau cheie API", + "period": "Interval de timp: 1d|7d|30d|90d|ytd|all (implicit: 30d)", + "since": "Data de început (format ISO, de ex. 2026-01-01) — suprascrie --period", + "until": "Data de sfârșit (format ISO)", + "group_by": "Grupează rezultatele după: provider|model|api-key|combo|day (implicit: provider)", + "api_key_filter": "Filtrează după o anumită cheie API", + "limit": "Numărul maxim de rânduri afișate (implicit: 100)" + }, + "simulate": { + "description": "Simulare de rutare fără execuție — afișează ce furnizori ar fi selectați fără a apela serviciul din amonte", + "file": "Încarcă întregul corp al solicitării dintr-un fișier JSON", + "model": "ID-ul modelului (implicit: auto)", + "combo": "Forțează o anumită combinație după nume", + "reasoning": "Nivelul efortului de raționare (low|medium|high)", + "thinking": "Bugetul de tokenuri pentru raționare extinsă", + "explain": "Afișează în stderr arborele de rezervă și intervalul de costuri", + "noCombo": "Nu s-a găsit nicio combinație corespunzătoare. Configurează una cu: omniroute combo create" + }, + "chat": { + "description": "Trimite o solicitare unică de chat către OmniRoute", + "file": "Citește solicitarea din fișier", + "stdin": "Citește solicitarea de la stdin", + "system": "Solicitare de sistem", + "model": "ID-ul modelului (implicit: auto)", + "max_tokens": "Numărul maxim de tokenuri din răspuns", + "temperature": "Temperatura de eșantionare (0–2)", + "top_p": "Eșantionare nucleus top-p", + "reasoning_effort": "Nivelul efortului de raționament (low|medium|high)", + "thinking_budget": "Bugetul de tokenuri pentru gândire extinsă", + "combo": "Forțează o anumită combinație după nume", + "responses_api": "Folosește /v1/responses în loc de /v1/chat/completions", + "stream": "Transmite răspunsul în flux, în mod incremental", + "no_history": "Nu salva în ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Eroare: solicitarea este obligatorie (argument pozițional, --file sau --stdin)" + } + }, + "serve": { + "description": "Pornește serverul OmniRoute (acțiune implicită)", + "starting": "Se pornește serverul OmniRoute pe portul {port}...", + "ready": "Disponibil la http://localhost:{port}", + "stopping": "Se oprește serverul (PID {pid})...", + "stopped": "Serverul a fost oprit.", + "notRunning": "Serverul nu rulează.", + "port": "Portul de ascultare (implicit: 20128)", + "no_open": "Nu deschide automat browserul", + "daemon": "Rulează serverul ca daemon în fundal", + "log": "Afișează jurnalele serverului în linie", + "no_recovery": "Dezactivează repornirea automată în caz de eroare (mod de depanare)", + "max_restarts": "Numărul maxim de reporniri după erori în interval de 30 s înainte de abandonare (implicit: 2)", + "tray": "Pornește în bara de sistem (doar pe desktop, opțional)", + "no_tray": "Dezactivează pictograma din bara de sistem", + "ready_timeout": "Timpul de expirare al verificării disponibilității, în ms (și OMNIROUTE_READY_TIMEOUT_MS, implicit 60000)", + "tls_cert": "Calea către un certificat TLS (PEM) pentru furnizarea HTTPS (și OMNIROUTE_TLS_CERT)", + "tls_key": "Calea către cheia privată TLS (PEM) pentru furnizarea HTTPS (și OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Copie de rezervă", + "description": "Creează o copie de rezervă a datelor OmniRoute", + "creating": "Se creează copia de rezervă...", + "done": "Copia de rezervă a fost salvată în {path}", + "noFiles": "Nu există fișiere pentru copia de rezervă (baza de date nu este inițializată)", + "failed": "Crearea copiei de rezervă a eșuat: {error}", + "restoring": "Se restaurează din {path}...", + "restored": "Restaurarea s-a finalizat.", + "restoreDescription": "Restaurează dintr-o copie de rezervă", + "listTitle": "Copii de rezervă disponibile", + "noBackups": "Nu s-au găsit copii de rezervă.", + "notFound": "Copia de rezervă nu a fost găsită: {name}", + "confirmRestore": "Suprascrieți datele curente cu copia de rezervă din {ts}?", + "createDescription": "Creează o copie de rezervă a datelor OmniRoute", + "nameOpt": "Nume personalizat pentru copia de rezervă", + "cloudOpt": "Încarcă copia de rezervă în spațiul de stocare în cloud", + "encryptOpt": "Criptează copia de rezervă cu AES-256-GCM", + "keyFileOpt": "Calea către fișierul care conține fraza de acces pentru criptare", + "excludeOpt": "Exclude fișierul care corespunde modelului (opțiune repetabilă)", + "retentionOpt": "Păstrează doar ultimele N copii de rezervă", + "passphrasePrompt": "Fraza de acces pentru criptare:", + "noPassphrase": "Fraza de acces este obligatorie pentru copia de rezervă criptată.", + "cloudFailed": "Avertisment: încărcarea în cloud a eșuat. Copia de rezervă locală a fost salvată.", + "cloudUploaded": "Copia de rezervă a fost încărcată în cloud: {url}", + "auto": { + "title": "Programarea copiilor de rezervă", + "enableDescription": "Activează copiile de rezervă automate programate", + "disableDescription": "Dezactivează copiile de rezervă automate programate", + "statusDescription": "Afișează starea curentă a programării copiilor de rezervă", + "cronOpt": "Expresie cron pentru programare (implicit: zilnic la ora 3:00)", + "enabled": "Copierea de rezervă automată este activată (cron: {cron}).", + "hint": "Programarea este citită de omniroute serve la pornire.", + "disabled": "Copierea de rezervă automată este dezactivată.", + "notConfigured": "Nu este configurată nicio programare pentru copiile de rezervă." + } + }, + "health": { + "description": "Verifică starea de funcționare a serverului și starea componentelor", + "noServer": "Serverul nu rulează. Porniți-l cu: omniroute serve", + "title": "Stare de funcționare", + "status": "Stare: {status}", + "uptime": "Timp de funcționare: {uptime}", + "requests": "Solicitări (24 h): {count}", + "cost": "Cost (24 h): ${cost}" + }, + "quota": { + "description": "Afișează utilizarea cotei furnizorului", + "noServer": "Serverul nu rulează. Porniți-l cu: omniroute serve", + "noData": "Nu sunt disponibile informații despre cotă." + }, + "cache": { + "description": "Gestionează memoria cache pentru răspunsuri", + "noServer": "Serverul nu rulează. Porniți-l cu: omniroute serve", + "cleared": "Memoria cache a fost golită.", + "clearFailed": "Golirea memoriei cache a eșuat." + }, + "redis": { + "description": "Lansează un container Redis local cu un singur clic (Podman sau Docker) pentru cache și urmărirea cotelor OmniRoute" + }, + "test": { + "description": "Testează conexiunea cu un furnizor", + "noServer": "Serverul nu rulează. Porniți-l cu: omniroute serve", + "testing": "Se testează {provider} / {model}...", + "passed": "Conexiune reușită!", + "failed": "Conexiunea a eșuat: {error}", + "allProvidersOpt": "Testează toți furnizorii configurați", + "latencyOpt": "Afișează măsurătorile latenței (medie/min./max. ms)", + "repeatOpt": "Repetă testul de N ori și agregă rezultatele", + "compareOpt": "Modele separate prin virgulă pentru comparare (de ex. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Salvează rezultatele într-un fișier JSON", + "saved": "Rezultatele au fost salvate în {path}", + "compareTitle": "Compararea modelelor", + "compareMinTwo": "Sunt necesare cel puțin două modele pentru --compare (separate prin virgulă)", + "noProviders": "Nu este configurat niciun furnizor. Adaugă unul cu: omniroute keys add" + }, + "update": { + "checking": "Se verifică dacă există actualizări...", + "upToDate": "Versiunea este deja actualizată ({version}).", + "available": "Actualizare disponibilă: {current} → {latest}", + "installing": "Se instalează {latest}...", + "done": "S-a actualizat la {latest}. Repornește serverul pentru a aplica actualizarea." + }, + "mcp": { + "title": "Server MCP", + "running": "Serverul MCP rulează ({transport})", + "stopped": "Serverul MCP s-a oprit.", + "restarted": "Serverul MCP a fost repornit.", + "stoppedHint": "Rulează `omniroute mcp enable` pentru a-l activa.", + "enabled": "Serverul MCP a fost activat.", + "disabled": "Serverul MCP a fost dezactivat.", + "enable": { + "description": "Activează serverul MCP", + "transport": "Transport de utilizat: stdio|sse|streamable-http" + }, + "disable": { + "description": "Dezactivează serverul MCP" + }, + "call": { + "description": "Invocă direct un instrument MCP", + "args": "Obiect JSON cu argumente (în linie)", + "args_file": "Calea către fișierul JSON cu argumente", + "stream": "Utilizează endpointul de streaming (/api/mcp/stream)", + "scope": "Domeniu de acces necesar (repetabil, de ex. read:health)" + }, + "scopes": { + "description": "Listează domeniile de acces MCP disponibile", + "tool": "Afișează domeniile de acces necesare unui anumit instrument" + }, + "tools": { + "description": "Inspectează instrumentele MCP", + "list": { + "description": "Listează toate instrumentele MCP", + "scope": "Filtrează după domeniul de acces" + }, + "info": { + "description": "Afișează metadatele unui instrument MCP" + }, + "schema": { + "description": "Afișează schema JSON de intrare/ieșire pentru un instrument MCP", + "io": "Tip schemă: input|output (implicit: input)" + } + }, + "audit": { + "description": "Jurnal de audit MCP (alias pentru audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Listează abilitățile A2A disponibile din cardul agentului" + }, + "invoke": { + "description": "Invocă o abilitate A2A și returnează ID-ul sarcinii", + "input": "Obiect JSON de intrare", + "input_file": "Calea către fișierul JSON de intrare", + "wait": "Așteaptă finalizarea sarcinii înainte de returnare", + "timeout": "Timp maxim de așteptare pentru finalizare, în ms (implicit: 60000)" + }, + "tasks": { + "description": "Gestionează sarcinile A2A", + "list": { + "status": "Filtrează după stare", + "skill": "Filtrează după ID-ul abilității" + }, + "watch": { + "description": "Verifică periodic starea sarcinii până la finalizare" + }, + "stream": { + "description": "Transmite în flux evenimentele de execuție a sarcinii prin SSE" + }, + "logs": { + "description": "Afișează mesajele și artefactele sarcinii" + } + } + }, + "policy": { + "description": "Gestionează politicile de autorizare OmniRoute", + "list": { + "description": "Listează politicile", + "kind": "Filtrează după tip (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrează după domeniu (global|api-key|provider)" + }, + "get": { + "description": "Obține detaliile politicii după ID" + }, + "create": { + "description": "Creează o politică dintr-un fișier JSON", + "file": "Calea către fișierul JSON al politicii" + }, + "update": { + "description": "Actualizează o politică dintr-un fișier JSON", + "file": "Calea către fișierul JSON al politicii" + }, + "delete": { + "description": "Șterge o politică după ID", + "yes": "Omite solicitarea de confirmare" + }, + "evaluate": { + "description": "Evaluare simulată a politicii (cod de ieșire 0=permis, 4=respins)", + "api_key": "Cheia API de evaluat", + "action": "Acțiunea de verificat (de ex., chat, embed, admin)", + "resource": "Calea sau identificatorul resursei", + "context": "Context suplimentar ca obiect JSON" + }, + "export": { + "description": "Exportă toate politicile într-un fișier JSON" + }, + "import": { + "description": "Importă politicile dintr-un fișier JSON", + "overwrite": "Suprascrie politicile existente cu același ID" + } + }, + "compression": { + "description": "Configurează și inspectează pipeline-ul de compresie OmniRoute", + "status": { + "description": "Afișează starea și setările actuale ale compresiei" + }, + "configure": { + "description": "Configurează setările de compresie", + "engine": "Motor de compresie (caveman|rtk|hybrid|none)", + "caveman_agg": "Nivelul de agresivitate Caveman 0.0–1.0", + "rtk_budget": "Bugetul de tokenuri RTK", + "language_pack": "Pachetul lingvistic de activat" + }, + "engine": { + "description": "Obține sau setează motorul de compresie activ" + }, + "combos": { + "description": "Gestionează statisticile combinațiilor de compresie" + }, + "rules": { + "description": "Gestionează regulile de compresie", + "add": { + "pattern": "Model de potrivire (regex sau câmp:model)", + "action": "Acțiune: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Listează pachetele lingvistice de compresie disponibile" + }, + "preview": { + "description": "Previzualizează efectul compresiei asupra unei solicitări", + "file": "Calea către fișierul JSON al solicitării" + } + }, + "tunnel": { + "title": "Tuneluri", + "listDescription": "Listează tunelurile active", + "createDescription": "Creează un tunel", + "created": "Tunel creat: {url}", + "stopped": "Tunel oprit.", + "confirmStop": "Oprești tunelul {id}?", + "stopDescription": "Oprește un tunel", + "statusDescription": "Afișează starea detaliată a unui tunel", + "logsDescription": "Afișează jurnalele unui tunel", + "infoDescription": "Afișează detaliile de configurare ale unui tunel", + "rotateDescription": "Generează un URL nou pentru tunel", + "tailOpt": "Numărul de linii de jurnal de afișat", + "typeRequired": "Tipul tunelului este obligatoriu.", + "noLogs": "Nu sunt disponibile jurnale.", + "notAvailable": "Informațiile despre tunel nu sunt disponibile.", + "noTunnels": "Nu există tuneluri active.", + "infoTitle": "Informații despre tunel: {type}", + "rotated": "URL-ul tunelului a fost schimbat: {url}", + "confirmRotate": "Schimbi URL-ul tunelului {type}? (va fi generat un URL nou)" + }, + "stop": { + "description": "Oprește serverul OmniRoute", + "stopping": "Se oprește serverul (PID {pid})...", + "stopped": "Server oprit.", + "notRunning": "Nu rulează niciun server.", + "portFallback": "Nu s-a găsit niciun fișier PID, se încearcă oprirea pe baza portului..." + }, + "restart": { + "description": "Repornește serverul OmniRoute", + "restarting": "Se repornește serverul OmniRoute..." + }, + "dashboard": { + "description": "Deschide panoul de control OmniRoute într-un browser", + "opening": "Se deschide panoul de control la {url}", + "urlOnly": "Afișează URL-ul panoului de control fără a deschide browserul", + "tui": "Deschide panoul de control TUI interactiv (interfață în terminal, 7 file)" + }, + "models": { + "description": "Listează modelele disponibile (necesită serverul)", + "search": "Filtrează modelele după ID, nume, furnizor sau descriere", + "noServer": "Serverul nu rulează. Porniți-l cu: omniroute serve", + "noModels": "Nu s-au găsit modele." + }, + "audit": { + "description": "Accesați jurnalele de conformitate și de audit MCP", + "source": "Sursa jurnalului: all|compliance|mcp (implicit: all)", + "since": "Returnează intrările începând de la acest marcaj temporal (ISO 8601)", + "until": "Returnează intrările până la acest marcaj temporal (ISO 8601)", + "tail": { + "description": "Afișează intrările recente din jurnalul de audit", + "follow": "Urmărește continuu intrările noi (interogare la 2s)", + "limit": "Numărul maxim de intrări de afișat (implicit: 100)" + }, + "search": { + "description": "Caută în intrările jurnalului de audit după cuvânt-cheie", + "limit": "Numărul maxim de rezultate (implicit: 200)", + "actor": "Filtrează după ID-ul actorului", + "action": "Filtrează după numele acțiunii" + }, + "export": { + "description": "Exportă jurnalul de audit într-un fișier", + "format": "Format de ieșire: jsonl|csv (implicit: jsonl)" + }, + "stats": { + "description": "Afișează statisticile jurnalului de audit", + "period": "Perioada de timp: 1d|7d|30d (implicit: 7d)" + }, + "get": { + "description": "Obține o singură intrare din jurnalul de audit după ID" + } + }, + "skills": { + "description": "Gestionează abilitățile OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Listează abilitățile instalate", + "type": "Filtrează după tip (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Afișează numai abilitățile activate", + "disabled": "Afișează numai abilitățile dezactivate", + "api_key": "Filtrează după cheia API" + }, + "get": { + "description": "Obține detalii despre o abilitate după ID" + }, + "install": { + "description": "Instalează o abilitate dintr-un fișier sau URL", + "from_file": "Calea către fișierul cu definiția JSON a abilității", + "from_url": "URL-ul definiției abilității la distanță", + "type": "Tipul abilității (sandbox|custom|hybrid)", + "enable": "Activează abilitatea după instalare" + }, + "enable": { + "description": "Activează o abilitate după ID" + }, + "disable": { + "description": "Dezactivează o abilitate după ID", + "yes": "Omite solicitarea de confirmare" + }, + "delete": { + "description": "Șterge o abilitate după ID", + "yes": "Omite solicitarea de confirmare" + }, + "execute": { + "description": "Execută o abilitate după ID", + "input": "Obiect de intrare JSON", + "input_file": "Calea către fișierul JSON de intrare", + "timeout": "Timpul-limită de execuție în ms (implicit: 30000)" + }, + "executions": { + "description": "Listează istoricul execuțiilor abilităților", + "skill": "Filtrează după ID-ul abilității", + "limit": "Numărul maxim de rezultate (implicit: 50)", + "status": "Filtrează după stare (running|completed|failed)" + }, + "skillssh": { + "description": "Gestionează abilitățile instalate prin SSH" + }, + "marketplace": { + "description": "Explorează și instalează abilități din marketplace" + }, + "mp": { + "search": { + "description": "Caută pachete în marketplace", + "category": "Filtrează după categorie", + "tag": "Filtrează după etichetă", + "limit": "Numărul maxim de rezultate (implicit: 30)", + "sort": "Sortează după: downloads|rating|recent" + }, + "info": { + "description": "Afișează detaliile pachetului și fișierul readme" + }, + "install": { + "description": "Instalează un pachet din marketplace", + "version": "Versiunea pachetului (implicit: latest)", + "enable": "Activează după instalare", + "yes": "Omite solicitarea de confirmare" + }, + "categories": { + "description": "Listează categoriile din marketplace" + }, + "featured": { + "description": "Afișează pachetele recomandate din marketplace" + } + } + }, + "memory": { + "description": "Gestionează memoria conversațională OmniRoute (FTS5 + vectorială)", + "search": { + "description": "Caută intrări în memorie prin interogare semantică", + "type": "Filtrează după tipul memoriei (user|feedback|project|reference)", + "limit": "Numărul maxim de rezultate (implicit: 20)", + "api_key": "Filtrează după cheia API", + "token_budget": "Limitează numărul total de tokenuri din rezultate" + }, + "add": { + "description": "Adaugă o intrare nouă în memorie", + "content": "Conținutul text al memoriei", + "file": "Citește conținutul din fișier", + "type": "Tipul memoriei (implicit: user)", + "metadata": "Obiect de metadate JSON", + "api_key": "Asociază cu cheia API" + }, + "clear": { + "description": "Șterge intrările din memorie care corespund filtrelor", + "type": "Filtrează după tip", + "older": "Șterge intrările mai vechi decât durata specificată (30d, 6m, 1y)", + "api_key": "Filtrează după cheia API", + "yes": "Omite solicitarea de confirmare" + }, + "list": { + "description": "Listează intrările din memorie fără clasificare după relevanța căutării", + "type": "Filtrează după tip", + "limit": "Numărul maxim de rezultate (implicit: 100)", + "api_key": "Filtrează după cheia API" + }, + "get": { + "description": "Obține o singură intrare din memorie după ID" + }, + "delete": { + "description": "Șterge o intrare din memorie după ID", + "yes": "Omite solicitarea de confirmare" + }, + "health": { + "description": "Afișează starea subsistemului de memorie (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Gestionează conexiunile furnizorilor OAuth", + "providers": { + "description": "Listează furnizorii compatibili cu OAuth și tipurile lor de fluxuri" + }, + "start": { + "description": "Pornește fluxul de autorizare OAuth pentru un furnizor", + "provider": "ID-ul furnizorului (gemini, copilot, cursor, …)", + "no_browser": "Afișează doar URL-ul — nu deschide browserul", + "import_system": "Importă automat datele de autentificare din configurația sistemului local", + "social": "Furnizor de autentificare socială (google|github) — obligatoriu pentru kiro", + "timeout": "Timp de așteptare pentru autorizare, în ms (implicit: 300000)" + }, + "status": { + "description": "Listează conexiunile OAuth active", + "provider": "Filtrează după ID-ul furnizorului" + }, + "revoke": { + "description": "Revocă o conexiune OAuth", + "provider": "ID-ul furnizorului pentru revocare", + "connection_id": "Revocă o anumită conexiune după ID", + "yes": "Omite solicitarea de confirmare" + } + }, + "cloud": { + "description": "Gestionează sarcinile agenților AI din cloud (codex, devin, jules)", + "agents": { + "description": "Listează agenții din cloud disponibili" + }, + "agent": { + "description": "Gestionează sarcinile agentului {agent} din cloud", + "auth": { + "description": "Autorizează {agent} prin OAuth" + } + }, + "task": { + "description": "Gestionează sarcinile agenților din cloud", + "create": { + "description": "Creează o sarcină nouă pentru agent", + "title": "Titlul sarcinii (implicit, primele 80 de caractere ale solicitării)", + "prompt": "Textul solicitării pentru sarcină", + "prompt_file": "Citește solicitarea din fișier", + "repo": "URL-ul depozitului de clonat pentru sarcină", + "branch": "Numele ramurii de utilizat", + "metadata": "Obiect JSON cu metadate" + }, + "list": { + "description": "Listează sarcinile agentului", + "status": "Filtrează după stare (running|completed|failed|cancelled)", + "limit": "Numărul maxim de rezultate (implicit: 50)" + }, + "get": { + "description": "Obține detaliile sarcinii după ID" + }, + "status": { + "description": "Afișează starea sarcinii (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Anulează o sarcină în curs de executare", + "yes": "Omite solicitarea de confirmare" + }, + "approve": { + "description": "Aprobă planul agentului pentru a începe executarea" + }, + "message": { + "description": "Trimite un mesaj unei sarcini în curs de executare" + } + }, + "sources": { + "description": "Listează fișierele sursă produse de o sarcină" + } + }, + "eval": { + "description": "Gestionează suitele și rulările de evaluare", + "suites": { + "description": "Gestionează suitele de evaluare", + "list": { + "description": "Listează suitele de evaluare" + }, + "get": { + "description": "Obține detaliile suitei de evaluare după ID" + }, + "create": { + "description": "Creează o suită de evaluare dintr-un fișier JSON", + "file": "Calea către fișierul JSON cu definiția suitei" + } + }, + "run": { + "description": "Pornește o rulare de evaluare pentru o suită", + "model": "ID-ul modelului de evaluat (implicit: auto)", + "combo": "Forțează o anumită combinație după nume", + "concurrency": "Numărul de eșantioane procesate simultan (implicit: 4)", + "tag": "Etichetează această rulare pentru filtrare ulterioară", + "watch": "Urmărește progresul rulării până la finalizare" + }, + "list": { + "description": "Listează rulările de evaluare", + "suite": "Filtrează după ID-ul suitei", + "status": "Filtrează după stare", + "since": "Returnează rulările începând de la această marcă temporală", + "limit": "Numărul maxim de rezultate (implicit: 50)" + }, + "get": { + "description": "Obține detaliile rulării de evaluare după ID" + }, + "results": { + "description": "Afișează rezultatele eșantioanelor pentru o rulare de evaluare", + "failed": "Afișează numai eșantioanele nereușite" + }, + "cancel": { + "description": "Anulează o evaluare în curs de rulare", + "yes": "Omite solicitarea de confirmare" + }, + "scorecard": { + "description": "Afișează fișa de evaluare pentru o rulare de evaluare finalizată" + } + }, + "webhooks": { + "description": "Gestionează webhook-urile OmniRoute", + "events": { + "description": "Listează toate tipurile disponibile de evenimente webhook" + }, + "list": { + "description": "Listează webhook-urile configurate" + }, + "get": { + "description": "Obține detaliile webhook-ului după ID" + }, + "add": { + "description": "Înregistrează un webhook nou", + "url": "URL-ul de destinație", + "events": "Lista tipurilor de evenimente, separate prin virgulă", + "secret": "Secretul de semnare HMAC", + "header": "Antet suplimentar în formatul key=value (poate fi repetat)", + "no_enabled": "Creează webhook-ul în stare dezactivată" + }, + "update": { + "description": "Actualizează un webhook existent", + "enabled": "Setează starea de activare (true|false)" + }, + "remove": { + "description": "Șterge un webhook", + "yes": "Omite solicitarea de confirmare" + }, + "test": { + "description": "Trimite un eveniment de test către un webhook", + "event": "Tipul de eveniment de simulat (implicit: request.completed)" + } + }, "program": { "description": "OmniRoute — Router AI inteligent cu fallback automat", "version": "Afișează versiunea și ieși", @@ -26,7 +832,509 @@ "context": "Contextul/profilul serverului pentru această comandă", "lang": "Setează limba de afișare CLI (suprascrie OMNIROUTE_LANG)" }, - "redis": { - "description": "Lansează un container Redis local cu un singur clic (Podman sau Docker) pentru cache și urmărirea cotelor OmniRoute" + "files": { + "description": "Gestionează fișierele (încărcare, listare, obținere, descărcare, ștergere)", + "list": { + "purpose": "Filtrează după scop", + "limit": "Numărul maxim de rezultate" + }, + "get": { + "description": "Obține metadatele fișierului" + }, + "upload": { + "description": "Încarcă un fișier", + "purpose": "Scopul fișierului (batch, assistants, fine-tune)" + }, + "content": { + "description": "Descarcă conținutul fișierului", + "out": "Salvează în calea specificată (implicit: stdout)" + }, + "delete": { + "yes": "Omite confirmarea" + } + }, + "batches": { + "description": "Gestionează joburile batch compatibile cu OpenAI", + "list": { + "status": "Filtrează după stare", + "limit": "Număr maxim de rezultate" + }, + "create": { + "description": "Creează un job batch", + "inputFile": "ID-ul fișierului de intrare", + "endpoint": "Endpoint țintă", + "window": "Fereastra de finalizare", + "metadata": "Adaugă metadate cheie=valoare" + }, + "submit": { + "description": "Încarcă fișierul JSONL și creează un job batch", + "jsonl": "Calea către fișierul JSONL", + "endpoint": "Endpoint țintă", + "wait": "Așteaptă finalizarea" + }, + "cancel": { + "yes": "Omite confirmarea" + }, + "wait": { + "timeout": "Timp-limită în ms" + }, + "output": { + "out": "Salvează rezultatul în calea specificată" + }, + "errors": { + "out": "Salvează erorile în calea specificată" + } + }, + "translator": { + "description": "Tradu corpurile cererilor între formatele LLM", + "detect": { + "description": "Detectează formatul corpului" + }, + "translate": { + "description": "Convertește corpul dintr-un format în altul" + }, + "send": { + "description": "Tradu și trimite către upstream" + }, + "stream": { + "description": "Tradu în flux corpul unei cereri" + }, + "from": "Format sursă (openai|anthropic|gemini|cohere)", + "to": "Format țintă (openai|anthropic|gemini|cohere)", + "file": "Calea către fișierul JSON cu corpul cererii", + "out": "Salvează rezultatul într-un fișier", + "model": "Suprascrie modelul", + "history": { + "limit": "Număr maxim de rezultate" + } + }, + "pricing": { + "description": "Gestionează datele de preț pentru modele", + "sync": { + "description": "Sincronizează prețurile din sursele upstream", + "provider": "Filtrează după furnizor", + "force": "Forțează resincronizarea" + }, + "list": { + "provider": "Filtrează după furnizor", + "model": "Filtrează după model", + "limit": "Număr maxim de rezultate" + }, + "defaults": { + "description": "Gestionează prețurile implicite", + "input": "Cost de intrare per 1 milion de tokenuri (USD)", + "output": "Cost de ieșire per 1 milion de tokenuri (USD)", + "cacheRead": "Cost de citire din cache per 1 milion de tokenuri (USD)", + "cacheWrite": "Cost de scriere în cache per 1 milion de tokenuri (USD)" + }, + "diff": { + "description": "Afișează abaterea față de prețurile sursei", + "model": "Filtrează după model" + } + }, + "radar": { + "description": "Inspectează și sincronizează fluxurile catalogului Radar local", + "status": "Afișează setările Radar locale și starea cache-ului fluxurilor", + "sync": "Sincronizează catalogul, recomandările, ofertele și Intel prin serverul local" + }, + "resilience": { + "description": "Inspectează și gestionează mecanismele de reziliență", + "status": { + "provider": "Filtrează după furnizor" + }, + "breakers": { + "provider": "Filtrează după furnizor" + }, + "cooldowns": { + "provider": "Filtrează după furnizor", + "connectionId": "Filtrează după ID-ul conexiunii" + }, + "lockouts": { + "provider": "Filtrează după furnizor", + "model": "Filtrează după model" + }, + "reset": { + "description": "Resetează starea întrerupătorului/perioadei de așteptare", + "provider": "Furnizor de resetat", + "connectionId": "ID-ul conexiunii de resetat", + "model": "Model pentru resetarea blocării", + "allCooldowns": "Resetează toate perioadele de așteptare pentru furnizor", + "yes": "Omite confirmarea" + }, + "profile": { + "description": "Gestionează profilul de reziliență", + "name": "Numele profilului" + }, + "config": { + "description": "Gestionează configurația de reziliență", + "threshold": "Pragul de eșecuri", + "resetTimeout": "Timp de resetare în ms", + "baseCooldown": "Perioada de așteptare de bază în ms" + } + }, + "nodes": { + "description": "Gestionează nodurile furnizorilor (punctele finale)", + "list": { + "provider": "Filtrează după furnizor", + "enabled": "Afișează numai nodurile activate" + }, + "add": { + "provider": "Numele furnizorului", + "baseUrl": "URL-ul de bază al nodului", + "name": "Numele nodului", + "weight": "Ponderea pentru echilibrarea încărcării", + "region": "Eticheta regiunii", + "authHeader": "Antet de autentificare personalizat (key=value)" + }, + "update": { + "baseUrl": "Noul URL de bază", + "name": "Noul nume", + "weight": "Pondere nouă", + "region": "Regiune nouă", + "enabled": "Activați sau dezactivați (true|false)" + }, + "remove": { + "yes": "Omiteți confirmarea" + }, + "validate": { + "baseUrl": "URL de validat", + "provider": "Furnizorul față de care se face validarea" + }, + "test": { + "description": "Trimiteți o cerere de test către nod" + }, + "metrics": { + "description": "Afișați metricile nodului", + "period": "Perioadă de timp (de ex. 24h, 7d)" + } + }, + "context": { + "description": "Configurați fluxul de inginerie a contextului (Caveman, RTK)", + "analytics": { + "period": "Perioadă de timp (de ex. 7d, 30d)" + }, + "caveman": { + "description": "Gestionați compresorul de context Caveman", + "config": { + "description": "Afișați sau actualizați configurația Caveman", + "aggressiveness": "Agresivitate 0.0–1.0", + "maxShrinkPct": "Procentaj maxim de reducere", + "preserveTags": "Etichete separate prin virgulă care trebuie păstrate" + } + }, + "rtk": { + "description": "Gestionați optimizatorul de context RTK", + "config": { + "description": "Afișați sau actualizați configurația RTK", + "tokenBudget": "Buget de tokenuri pentru RTK", + "reservePct": "Procentaj de rezervă" + }, + "filters": { + "description": "Gestionați filtrele RTK", + "pattern": "Model de filtru (expresie regulată)", + "priority": "Prioritatea filtrului (implicit: 100)", + "action": "Acțiunea filtrului: drop|shrink|replace", + "yes": "Omiteți confirmarea" + }, + "test": { + "file": "Calea către fișierul JSON al cererii" + } + }, + "combos": { + "description": "Gestionarea combinațiilor în funcție de context" + } + }, + "sessions": { + "description": "Inspectați și gestionați sesiunile active", + "list": { + "user": "Filtrați după utilizator", + "kind": "Filtrați după tip (dashboard|api-key|mcp|a2a)", + "active": "Afișați numai sesiunile active", + "limit": "Număr maxim de rezultate (implicit: 100)" + }, + "expire": { + "yes": "Omiteți confirmarea" + }, + "expireAll": { + "user": "Utilizatorul ale cărui sesiuni trebuie să expire", + "yes": "Omiteți confirmarea" + } + }, + "tags": { + "description": "Gestionați etichetele resurselor", + "add": { + "color": "Culoarea etichetei (hexazecimal sau nume)", + "description": "Descrierea etichetei" + }, + "remove": { + "yes": "Omiteți confirmarea" + }, + "assign": { + "tag": "Numele etichetei", + "to": "Resursă țintă în format tip:id (de ex. provider:openai)" + }, + "unassign": { + "tag": "Numele etichetei", + "from": "Resursă sursă în format tip:id" + } + }, + "openapi": { + "description": "Accesează și testează specificația OpenAPI OmniRoute", + "dump": { + "description": "Exportă specificația OpenAPI în stdout sau într-un fișier", + "format": "Format de ieșire: yaml|json (implicit: yaml)", + "out": "Salvează la calea fișierului" + }, + "validate": { + "description": "Validează specificația OpenAPI" + }, + "try": { + "description": "Testează un endpoint API prin intermediul specificației", + "method": "Metodă HTTP (implicit: GET)", + "body": "Calea către fișierul JSON cu corpul cererii", + "query": "Parametru de interogare în format cheie=valoare (repetabil)", + "header": "Antet în format cheie=valoare (repetabil)" + }, + "endpoints": { + "description": "Listează toate endpointurile API", + "search": "Filtrează după cale sau rezumat" + }, + "paths": { + "description": "Listează toate căile API" + } + }, + "combo": { + "title": "Combinații", + "switched": "Combinație activă: {name}", + "created": "Combinație creată: {name}", + "deleted": "Combinație ștearsă: {name}", + "noCombos": "Nu există combinații configurate.", + "confirmDelete": "Ștergi combinația {name}?", + "suggest": { + "description": "Sugerează cea mai bună combinație pentru o sarcină folosind evaluarea AI", + "task": "Descrierea sarcinii", + "maxCost": "Cost maxim per cerere în USD", + "maxLatencyMs": "Latență maximă în milisecunde", + "weights": "Ponderi de evaluare JSON, de ex. {\"latency\":0.7,\"cost\":0.3}", + "top": "Numărul de candidați de top de afișat (implicit: 5)", + "explain": "Afișează justificarea în stderr", + "switch": "Activează combinația clasată pe primul loc" + } + }, + "oneproxy": { + "description": "Gestionează grupul de servere upstream OneProxy", + "stats": { + "provider": "Filtrează după furnizor", + "period": "Perioadă de timp (implicit: 24h)" + }, + "fetch": { + "description": "Preia proxy-uri din grup", + "count": "Numărul de proxy-uri de preluat (implicit: 1)", + "type": "Tip de proxy: http|socks5 (implicit: http)" + }, + "rotate": { + "description": "Forțează rotația proxy-ului", + "provider": "Furnizorul pentru care se efectuează rotația", + "connectionId": "ID-ul specific al conexiunii pentru care se efectuează rotația" + }, + "config": { + "description": "Afișează sau actualizează configurația OneProxy", + "enabled": "Activează grupul de proxy-uri (true|false)", + "poolSize": "Dimensiunea grupului", + "providerSource": "URL pentru furnizorul de proxy", + "rotationPolicy": "Politica de rotație: sticky|per-request|periodic" + }, + "pool": { + "description": "Listează grupul curent de proxy-uri cu metrici" + } + }, + "open": { + "description": "Deschide o anumită pagină a panoului de control OmniRoute în browser", + "url": "Afișează doar URL-ul, fără a deschide browserul" + }, + "telemetry": { + "description": "Accesează datele de telemetrie agregate", + "summary": { + "description": "Afișează rezumatul telemetriei agregate", + "period": "Perioada de timp: 24h|7d|30d (implicit: 24h)", + "compareTo": "Compară cu perioada anterioară" + }, + "export": { + "description": "Exportă evenimentele de telemetrie în JSONL", + "out": "Calea fișierului de ieșire (implicit: telemetry.jsonl)", + "period": "Perioada de timp pentru export (implicit: 7d)" + } + }, + "sync": { + "description": "Sincronizează configurația între instanțele OmniRoute", + "push": { + "description": "Trimite configurația în cloud sau către instanța la distanță", + "target": "Ținta (cloud sau context:name)", + "bundle": "Componentele pachetului de sincronizat", + "dryRun": "Previzualizează fără aplicare" + }, + "pull": { + "description": "Preia configurația din cloud sau de la distanță", + "source": "Sursa (cloud sau context:name)", + "merge": "Îmbină cu configurația existentă", + "replace": "Înlocuiește configurația existentă", + "dryRun": "Previzualizează fără aplicare" + }, + "diff": { + "source": "Contextul sursă", + "target": "Contextul țintă" + }, + "bundle": { + "description": "Exportă configurația ca fișier-pachet", + "include": "Componente de inclus (separate prin virgulă)" + }, + "import": { + "description": "Importă un fișier-pachet", + "dryRun": "Validează fără aplicare" + }, + "initialize": { + "fromCloud": "Inițializează din copia de siguranță din cloud" + }, + "tokens": { + "description": "Gestionează tokenurile de sincronizare", + "create": { + "name": "Numele tokenului", + "scope": "Domeniul de aplicare al tokenului", + "ttl": "TTL-ul tokenului (de ex. 30d)" + }, + "revoke": { + "yes": "Omite confirmarea" + } + }, + "resolve": { + "description": "Rezolvă interactiv conflictele de sincronizare" + } + }, + "config": { + "contexts": { + "description": "Gestionează contextele/profilurile serverului (adaugă, utilizează, listează, afișează, elimină, redenumește, exportă, importă)" + }, + "lang": { + "description": "Gestionează limba de afișare a CLI-ului", + "getDescription": "Afișează codul limbii active în prezent", + "setDescription": "Setează limba de afișare și salveaz-o în configurație", + "listDescription": "Listează toate limbile disponibile", + "listTitle": "Limbi disponibile", + "current": "Limbă: {code} ({name})", + "saved": "Limba a fost setată la {code} ({name}).", + "noCode": "Codul limbii este obligatoriu. Rulează „omniroute config lang list” pentru a vedea codurile disponibile.", + "unknown": "Cod de limbă necunoscut: {code}. Rulează „omniroute config lang list” pentru a vedea codurile disponibile.", + "alreadySet": "Limba este deja setată la {code}.", + "envHint": "Sfat: poți seta și OMNIROUTE_LANG={code} în mediul tău." + } + }, + "completion": { + "description": "Generează sau instalează scripturi de completare pentru shell", + "zsh": "Afișează scriptul de completare pentru zsh", + "bash": "Afișează scriptul de completare pentru bash", + "fish": "Afișează scriptul de completare pentru fish", + "install": "Instalează global scriptul de completare pentru shell-ul detectat", + "refresh": "Reîmprospătează memoria cache pentru combinații/furnizori/modele" + }, + "logs": { + "description": "Transmite în timp real sau exportă jurnalele de solicitări", + "follow": "Transmite jurnalele în timp real", + "filter": "Filtrează după nivel (error,warn,info) — valori separate prin virgulă", + "lines": "Numărul de linii de preluat", + "timeout": "Timpul de expirare al conexiunii în ms", + "baseUrl": "URL-ul de bază al API-ului OmniRoute", + "requestId": "Filtrează după ID-ul solicitării", + "apiKey": "Filtrează după cheia API", + "combo": "Filtrează după numele combinației", + "status": "Filtrează după codul de stare HTTP", + "durationMin": "Durata minimă a solicitării în ms", + "durationMax": "Durata maximă a solicitării în ms", + "export": "Salvează jurnalele într-un fișier (json/jsonl/csv)", + "exported": "Jurnalele au fost salvate în {path}", + "stopped": "Transmiterea jurnalelor a fost oprită.", + "streamError": "Eroare la transmiterea jurnalelor: {message}" + }, + "tray": { + "description": "Controlează pictograma din zona de notificare", + "show": "Afișează pictograma din zona de notificare (dacă serverul rulează cu --tray)", + "hide": "Ascunde pictograma din zona de notificare", + "quit": "Închide OmniRoute din zona de notificare" + }, + "autostart": { + "description": "Gestionează pornirea automată a OmniRoute la inițializarea sistemului (Linux: serviciu systemd al utilizatorului)", + "enable": "Activează pornirea automată la inițializarea sistemului", + "disable": "Dezactivează pornirea automată la inițializarea sistemului", + "toggle": "Comută pornirea automată la inițializarea sistemului", + "status": "Afișează starea pornirii automate" + }, + "runtime": { + "description": "Gestionează dependențele native de execuție", + "check": "Verifică starea dependențelor native din directorul de execuție", + "repair": "Reinstalează dependențele native în directorul de execuție", + "repair_force": "Forțează reinstalarea chiar dacă sunt valide", + "clean": "Elimină directorul de execuție (eliberează spațiu pe disc)", + "clean_yes": "Omite confirmarea" + }, + "repl": { + "description": "REPL interactiv cu LLM, în mai multe etape", + "model": "Modelul de utilizat (implicit: automat)", + "combo": "Numele combinației de utilizat", + "system": "Prompt de sistem", + "resume": "Reia o sesiune salvată după nume" + }, + "plugin": { + "description": "Gestionează pluginurile CLI (omniroute-cmd-*)", + "list": "Listează pluginurile instalate", + "install": "Instalează un plugin din npm sau dintr-o cale locală", + "remove": "Elimină un plugin instalat", + "info": "Afișează detalii despre un plugin instalat", + "search": "Caută pluginuri disponibile în registrul npm", + "update": "Actualizează pluginurile instalate", + "scaffold": "Generează structura de bază pentru un plugin nou" + }, + "launch": { + "description": "Lansează Claude Code configurat pentru OmniRoute (local sau la distanță, cu --profile)", + "token": "Tokenul pe care clientul Claude trebuie să îl trimită (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute nu este accesibil la {port}. Pornește-l cu 'omniroute serve'.", + "notFound": "CLI-ul 'claude' nu a fost găsit în PATH." + }, + "run": { + "description": "Lansează o țintă CLI acceptată prin OmniRoute" + }, + "setupClaude": { + "description": "Generează profiluri Claude Code în ~/.claude/profiles din catalogul de modele OmniRoute" + }, + "connect": { + "description": "Conectează-te la un server OmniRoute la distanță și intră în modul la distanță" + }, + "tokens": { + "description": "Gestionează tokenurile de acces CLI cu domeniu de aplicare (mod la distanță)" + }, + "configure": { + "description": "Alege un furnizor și un model de pe serverul activ și configurează un CLI local acceptat" + }, + "launchCodex": { + "description": "Lansează Codex CLI configurat pentru OmniRoute (local sau pe un VPS la distanță)" + }, + "setupCodex": { + "description": "Generează fișiere de profil în ~/.codex din catalogul live de modele OmniRoute" + }, + "packs": { + "description": "Gestionează pachetele opționale de execuție (ML / automatizarea browserului)", + "listDescription": "Listează pachetele opționale și starea instalării acestora", + "installDescription": "Instalează un pachet opțional în DATA_DIR", + "verifyDescription": "Verifică pachetele instalate folosind indexul de sume de control inclus", + "removeDescription": "Elimină un pachet opțional instalat", + "sourceOpt": "Directorul care conține datele pachetelor și indexul de pachete", + "warnNoIndex": "optional-packs.index.json nu a fost găsit — instalarea/verificarea nu sunt disponibile în această copie de lucru (pachetele desktop îl includ)", + "errUnknown": "pachet necunoscut: {name}", + "errNoIndex": "indexul de pachete nu a fost găsit; specifică --source care conține datele pachetului (pachetele desktop îl includ lângă aplicație)", + "installed": "pachetul „{name}” a fost instalat și verificat în {dir}", + "restartHint": "reporniți serverul OmniRoute (sau aplicația desktop) pentru ca mediul de execuție să încarce pachetul", + "removed": "pachetul „{name}” a fost eliminat", + "notInstalled": "pachetul „{name}” nu a fost instalat", + "verifyOk": "toate pachetele instalate au fost verificate", + "verifyFailed": "{count} pachet(e) nu au trecut verificarea", + "noneInstalled": "nu este instalat niciun pachet opțional" } } diff --git a/bin/cli/locales/ru.json b/bin/cli/locales/ru.json index da8e5eedef..9f5bb94708 100644 --- a/bin/cli/locales/ru.json +++ b/bin/cli/locales/ru.json @@ -14,6 +14,812 @@ "jsonOpt": "Вывод в формате JSON", "yesOpt": "Пропустить подтверждение" }, + "setup": { + "title": "Настройка OmniRoute", + "passwordPrompt": "Пароль администратора", + "providerPrompt": "Провайдер по умолчанию (оставьте пустым, чтобы пропустить)", + "done": "Настройка завершена", + "passwordSet": "Пароль администратора настроен", + "providerSet": "Провайдер настроен: {name}", + "testingProvider": "Проверка подключения к провайдеру: {name}", + "testPassed": "Проверка провайдера пройдена", + "testFailed": "Проверка провайдера не пройдена: {error}", + "loginEnabled": "Вход: включён (пароль обновлён)", + "loginDisabled": "Вход: отключён", + "providerInfo": "Провайдер: {info}", + "opencode": "Установить и настроить встроенный плагин @omniroute/opencode-plugin для OpenCode" + }, + "doctor": { + "title": "Диагностика OmniRoute", + "dbOk": "База данных: ОК ({path})", + "dbMissing": "База данных: не инициализирована — выполните `omniroute setup`", + "portOk": "Порт {port}: доступен", + "portConflict": "Порт {port}: используется другим процессом", + "encryptionOk": "Ключ шифрования: настроен", + "encryptionMissing": "Ключ шифрования отсутствует — выполните `omniroute setup`", + "allGood": "Все проверки пройдены.", + "warnings": "Предупреждений: {count} — см. выше." + }, + "providers": { + "title": "Провайдеры", + "noProviders": "Провайдеры не настроены. Выполните: omniroute setup", + "testing": "Проверка {name}...", + "available": "Доступно провайдеров: {count}", + "connected": "Подключено", + "disconnected": "Отключено", + "validationFailed": "Ошибка проверки: {error}", + "metrics": { + "description": "Показать показатели производительности провайдеров (задержка, доля успешных запросов, стоимость)", + "provider": "Фильтровать по ID провайдера", + "connection_id": "Фильтровать по ID подключения", + "period": "Период времени: 1h|6h|24h|7d|30d (по умолчанию: 24h)", + "metric": "Выбрать конкретный показатель", + "sort": "Сортировать по полю (по убыванию)", + "limit": "Максимальное количество строк (по умолчанию: 50)", + "watch": "Обновлять каждые 5 с (режим реального времени)", + "compare": "ID провайдеров через запятую для параллельного сравнения" + }, + "metric_single": { + "description": "Получить одно значение показателя для конкретного подключения" + }, + "rotate": { + "description": "Обновить вышестоящий API-ключ для подключения к провайдеру", + "newKeyOpt": "Новое значение API-ключа (не рекомендуется: используйте --from-env)", + "fromEnvOpt": "Прочитать новый ключ из переменной окружения VAR", + "oauthOpt": "Вместо этого запустить повторную OAuth-аутентификацию", + "skipTestOpt": "Пропустить проверку подключения после ротации", + "dryRunOpt": "Показать изменения без их применения", + "confirmPrompt": "Заменить API-ключ для подключения «{name}» ({id})? [y/N]", + "dryRunResult": "[dry-run] Будет выполнена ротация ключа для «{name}» ({id}). Изменения не внесены.", + "oauthHint": "OAuth-подключение — выполните: omniroute oauth {provider}", + "envVarEmpty": "Переменная окружения {var} не задана или пуста.", + "success": "Ключ для «{name}» ротирован. Выполните `providers test {id}` для проверки.", + "testPassed": "Проверка после ротации успешно пройдена.", + "testFailed": "Проверка после ротации завершилась ошибкой: {error}" + }, + "status": { + "description": "Показать состояние ключей для всех подключений к провайдерам (возраст, срок действия, период ожидания)", + "providerOpt": "Фильтровать по имени провайдера", + "header": "ID Провайдер Имя Срок действия Статус Статус проверки Ожидание до", + "noData": "Данные о подключениях к провайдерам отсутствуют.", + "requiresServer": "Для выполнения providers status сервер OmniRoute должен быть запущен." + } + }, + "keys": { + "title": "API-ключи", + "addDescription": "Добавить или обновить API-ключ провайдера", + "listDescription": "Показать все настроенные API-ключи", + "removeDescription": "Удалить API-ключ провайдера", + "regenerateDescription": "Создать новый API-ключ OmniRoute", + "revokeDescription": "Отозвать API-ключ OmniRoute", + "revealDescription": "Показать незамаскированное значение API-ключа", + "usageDescription": "Показать недавнее использование API-ключа", + "usageLimitOpt": "Количество недавних запросов", + "rotateDescription": "Создать новый ключ и сделать старый недействительным", + "graceOpt": "Льготный период (мс) до аннулирования старого ключа", + "stdinOpt": "Прочитать API-ключ из stdin вместо аргумента", + "added": "Ключ для {provider} добавлен.", + "removed": "Ключ удалён.", + "listed": "Ключей: {count}.", + "noKeys": "Нет настроенных ключей.", + "noUsage": "Данные об использовании не найдены.", + "confirmRemove": "Удалить ключ {id}?", + "confirmRegenerate": "Создать заново ключ {id}?", + "confirmRevoke": "Отозвать ключ {id}?", + "confirmRotate": "Ротировать ключ {id}? (старый ключ будет аннулирован после льготного периода)", + "regenerated": "Ключ создан заново. Новый ключ: {key}", + "revoked": "Ключ {id} отозван.", + "rotated": "Ключ {id} ротирован. Новый ID ключа: {newId}", + "revealWarning": "⚠ Будет показан полный ключ без маскировки. Убедитесь, что посторонние не видят ваш экран.", + "providerRequired": "Необходимо указать провайдера.", + "keyRequired": "Необходимо указать API-ключ.", + "stdinEmpty": "API-ключ не передан через stdin.", + "unknownProvider": "Неизвестный провайдер: {provider}", + "policy": { + "title": "Политика ключа", + "showDescription": "Показать ограничения по частоте запросов и стоимости для ключа", + "setDescription": "Установить ограничения по частоте запросов и стоимости для ключа", + "rateLimitOpt": "Максимум запросов в минуту", + "maxCostOpt": "Максимальная стоимость в день (USD)", + "allowedModelsOpt": "Список разрешённых моделей через запятую", + "nothingToSet": "Поля политики не указаны. Используйте --rate-limit, --max-cost или --allowed-models.", + "updated": "Политика обновлена." + }, + "expiration": { + "title": "Срок действия ключа", + "listDescription": "Показать ключи, срок действия которых скоро истекает", + "daysOpt": "Показать ключи, срок действия которых истекает в течение N дней", + "none": "Нет ключей, срок действия которых истекает в течение {days} дней.", + "listTitle": "Ключи, срок действия которых истекает в течение {days} дней:" + } + }, + "authExport": { + "description": "Экспортировать РАСШИФРОВАННЫЕ учётные данные провайдера (только локально, вывод открытым текстом)", + "idOpt": "Экспортировать только подключение, соответствующее этому ID, имени или провайдеру", + "formatOpt": "Формат вывода: json или env", + "outOpt": "Записать вывод в файл вместо stdout (с правами доступа 0600)", + "forceOpt": "Подтвердить, что вы понимаете: секретные данные будут выведены или записаны открытым текстом", + "warning": "⚠ Команда выводит или записывает РАСШИФРОВАННЫЕ API-ключи и OAuth-токены открытым текстом. Убедитесь, что ваш экран, история команд оболочки и любой выходной файл недоступны посторонним.", + "confirmHeading": "⚠ ПРЕДУПРЕЖДЕНИЕ: эта команда экспортирует РАСШИФРОВАННЫЕ учётные данные провайдера открытым текстом", + "confirmBody": "Эта команда расшифровывает и выводит или записывает apiKey, accessToken, refreshToken и\nidToken для выбранных подключений. Обращайтесь с выводом как с секретными данными.", + "confirmFooter": "Для подтверждения выполните:\n omniroute auth export --force", + "missingKey": "Для экспорта учётных данных требуется STORAGE_ENCRYPTION_KEY.", + "notFound": "Подключение не найдено: {id}", + "invalidFormat": "Недопустимый формат: {format}. Используйте json или env." + }, + "stream": { + "description": "Потоковый вывод ответа чата с режимами проверки SSE", + "file": "Прочитать запрос из файла", + "stdin": "Прочитать запрос из stdin", + "model": "ID модели (по умолчанию: auto)", + "system": "Системный запрос", + "combo": "Принудительно использовать конкретную комбинацию по имени", + "max_tokens": "Максимальное количество токенов в ответе", + "responses_api": "Использовать /v1/responses вместо /v1/chat/completions", + "raw": "Выводить необработанные строки SSE по мере получения", + "debug": "Выводить сведения о времени обработки каждого фрагмента в stderr", + "save": "Сохранять все события SSE в файл .jsonl", + "error": { + "empty_prompt": "Ошибка: требуется промпт (позиционный аргумент, --file или --stdin)" + } + }, + "usage": { + "description": "Аналитика использования, бюджеты, квоты и журналы", + "analytics": { + "description": "Показать агрегированную аналитику использования", + "period": "Период: 1d|7d|30d|90d|ytd|all (по умолчанию: 30d)", + "provider": "Фильтровать по ID провайдера" + }, + "budget": { + "description": "Управлять бюджетами расходов", + "set": { + "scope": "Область действия бюджета (по умолчанию: global)", + "period": "Период бюджета: daily|weekly|monthly (по умолчанию: monthly)" + } + }, + "quota": { + "description": "Показать использование квоты провайдера", + "provider": "Фильтровать по ID провайдера", + "check": "Показать, доступна ли квота для нового запроса" + }, + "logs": { + "description": "Показать журналы вызовов запросов", + "limit": "Количество возвращаемых записей журнала (по умолчанию: 100)", + "search": "Поисковый запрос для фильтрации журналов", + "since": "Вернуть записи журнала начиная с этой временной метки", + "follow": "Непрерывно отслеживать новые записи журнала", + "api_key": "Фильтровать журналы по ключу API" + }, + "utilization": { + "description": "Показать метрики использования ключей API", + "api_key": "Фильтровать по ключу API" + }, + "history": { + "description": "Показать историю запросов", + "limit": "Количество записей истории (по умолчанию: 100)" + }, + "proxy_logs": { + "description": "Показать журналы запросов на уровне прокси", + "limit": "Количество записей журнала прокси (по умолчанию: 100)" + } + }, + "cost": { + "description": "Показать отчёт о расходах с разбивкой по провайдеру, модели, комбинации или ключу API", + "period": "Период: 1d|7d|30d|90d|ytd|all (по умолчанию: 30d)", + "since": "Дата начала (формат ISO, например 2026-01-01) — переопределяет --period", + "until": "Дата окончания (формат ISO)", + "group_by": "Группировать результаты по: provider|model|api-key|combo|day (по умолчанию: provider)", + "api_key_filter": "Фильтровать по определённому ключу API", + "limit": "Максимальное количество отображаемых строк (по умолчанию: 100)" + }, + "simulate": { + "description": "Пробная симуляция маршрутизации — показать, какие провайдеры были бы выбраны, без обращения к вышестоящему сервису", + "file": "Загрузить полное тело запроса из файла JSON", + "model": "ID модели (по умолчанию: auto)", + "combo": "Принудительно использовать определённую комбинацию по имени", + "reasoning": "Уровень глубины рассуждений (low|medium|high)", + "thinking": "Бюджет токенов для расширенного мышления", + "explain": "Вывести дерево резервных вариантов и диапазон стоимости в stderr", + "noCombo": "Подходящая комбинация не найдена. Настройте её с помощью команды: omniroute combo create" + }, + "chat": { + "description": "Отправить одноразовый запрос чата в OmniRoute", + "file": "Прочитать запрос из файла", + "stdin": "Прочитать запрос из stdin", + "system": "Системный промпт", + "model": "ID модели (по умолчанию: auto)", + "max_tokens": "Максимальное количество токенов в ответе", + "temperature": "Температура сэмплирования (0–2)", + "top_p": "Ядерное сэмплирование Top-p", + "reasoning_effort": "Уровень глубины рассуждений (low|medium|high)", + "thinking_budget": "Бюджет токенов для расширенного рассуждения", + "combo": "Принудительно использовать определённую комбинацию по имени", + "responses_api": "Использовать /v1/responses вместо /v1/chat/completions", + "stream": "Передавать ответ по частям", + "no_history": "Не сохранять в ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Ошибка: требуется запрос (позиционный аргумент, --file или --stdin)" + } + }, + "serve": { + "description": "Запустить сервер OmniRoute (действие по умолчанию)", + "starting": "Запуск сервера OmniRoute на порту {port}...", + "ready": "Доступен по адресу http://localhost:{port}", + "stopping": "Остановка сервера (PID {pid})...", + "stopped": "Сервер остановлен.", + "notRunning": "Сервер не запущен.", + "port": "Порт для прослушивания (по умолчанию: 20128)", + "no_open": "Не открывать браузер автоматически", + "daemon": "Запустить сервер как фоновый демон", + "log": "Показывать журналы сервера непосредственно в консоли", + "no_recovery": "Отключить автоматический перезапуск при сбое (режим отладки)", + "max_restarts": "Максимальное количество перезапусков после сбоев в течение 30 с (по умолчанию: 2)", + "tray": "Запустить в системном трее (только для настольных систем, по явному согласию)", + "no_tray": "Отключить значок в системном трее", + "ready_timeout": "Тайм-аут проверки готовности в мс (также OMNIROUTE_READY_TIMEOUT_MS, по умолчанию: 60000)", + "tls_cert": "Путь к TLS-сертификату (PEM) для обслуживания HTTPS (также OMNIROUTE_TLS_CERT)", + "tls_key": "Путь к закрытому ключу TLS (PEM) для обслуживания HTTPS (также OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Резервная копия", + "description": "Создать резервную копию данных OmniRoute", + "creating": "Создание резервной копии...", + "done": "Резервная копия сохранена в {path}", + "noFiles": "Нет файлов для резервного копирования (база данных не инициализирована)", + "failed": "Не удалось создать резервную копию: {error}", + "restoring": "Восстановление из {path}...", + "restored": "Восстановление завершено.", + "restoreDescription": "Восстановить из резервной копии", + "listTitle": "Доступные резервные копии", + "noBackups": "Резервные копии не найдены.", + "notFound": "Резервная копия не найдена: {name}", + "confirmRestore": "Перезаписать текущие данные резервной копией от {ts}?", + "createDescription": "Создать резервную копию данных OmniRoute", + "nameOpt": "Пользовательское имя резервной копии", + "cloudOpt": "Загрузить резервную копию в облачное хранилище", + "encryptOpt": "Зашифровать резервную копию с помощью AES-256-GCM", + "keyFileOpt": "Путь к файлу, содержащему парольную фразу для шифрования", + "excludeOpt": "Исключить файлы, соответствующие шаблону (можно указать несколько раз)", + "retentionOpt": "Сохранять только последние N резервных копий", + "passphrasePrompt": "Парольная фраза для шифрования:", + "noPassphrase": "Для зашифрованной резервной копии требуется парольная фраза.", + "cloudFailed": "Предупреждение: не удалось загрузить резервную копию в облако. Локальная резервная копия сохранена.", + "cloudUploaded": "Резервная копия загружена в облако: {url}", + "auto": { + "title": "Расписание резервного копирования", + "enableDescription": "Включить автоматическое резервное копирование по расписанию", + "disableDescription": "Отключить автоматическое резервное копирование по расписанию", + "statusDescription": "Показать текущее состояние расписания резервного копирования", + "cronOpt": "Cron-выражение для расписания (по умолчанию: ежедневно в 3:00)", + "enabled": "Автоматическое резервное копирование включено (cron: {cron}).", + "hint": "Расписание считывается командой omniroute serve при запуске.", + "disabled": "Автоматическое резервное копирование отключено.", + "notConfigured": "Расписание резервного копирования не настроено." + } + }, + "health": { + "description": "Проверить работоспособность сервера и состояние компонентов", + "noServer": "Сервер не запущен. Запустите его командой: omniroute serve", + "title": "Работоспособность", + "status": "Состояние: {status}", + "uptime": "Время работы: {uptime}", + "requests": "Запросы (24 ч): {count}", + "cost": "Стоимость (24 ч): ${cost}" + }, + "quota": { + "description": "Показать использование квоты провайдера", + "noServer": "Сервер не запущен. Запустите его командой: omniroute serve", + "noData": "Информация о квоте недоступна." + }, + "cache": { + "description": "Управление кешем ответов", + "noServer": "Сервер не запущен. Запустите его командой: omniroute serve", + "cleared": "Кеш очищен.", + "clearFailed": "Не удалось очистить кеш." + }, + "redis": { + "description": "Запустить локальный контейнер Redis одним нажатием (Podman или Docker) для кэширования и отслеживания квот OmniRoute" + }, + "test": { + "description": "Проверить подключение к провайдеру", + "noServer": "Сервер не запущен. Запустите его командой: omniroute serve", + "testing": "Тестирование {provider} / {model}...", + "passed": "Подключение успешно!", + "failed": "Не удалось подключиться: {error}", + "allProvidersOpt": "Протестировать всех настроенных провайдеров", + "latencyOpt": "Показывать измерения задержки (среднее/минимум/максимум, мс)", + "repeatOpt": "Повторить тест N раз и агрегировать результаты", + "compareOpt": "Модели для сравнения через запятую (например, gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Сохранить результаты в JSON-файл", + "saved": "Результаты сохранены в {path}", + "compareTitle": "Сравнение моделей", + "compareMinTwo": "Для --compare требуется не менее двух моделей (через запятую)", + "noProviders": "Нет настроенных провайдеров. Добавьте провайдера командой: omniroute keys add" + }, + "update": { + "checking": "Проверка обновлений...", + "upToDate": "Уже установлена актуальная версия ({version}).", + "available": "Доступно обновление: {current} → {latest}", + "installing": "Установка {latest}...", + "done": "Обновлено до версии {latest}. Перезапустите сервер, чтобы применить изменения." + }, + "mcp": { + "title": "Сервер MCP", + "running": "Сервер MCP запущен ({transport})", + "stopped": "Сервер MCP остановлен.", + "restarted": "Сервер MCP перезапущен.", + "stoppedHint": "Выполните `omniroute mcp enable`, чтобы включить его.", + "enabled": "Сервер MCP включён.", + "disabled": "Сервер MCP отключён.", + "enable": { + "description": "Включить сервер MCP", + "transport": "Используемый транспорт: stdio|sse|streamable-http" + }, + "disable": { + "description": "Отключить сервер MCP" + }, + "call": { + "description": "Вызвать инструмент MCP напрямую", + "args": "Объект аргументов JSON (встроенный)", + "args_file": "Путь к файлу аргументов JSON", + "stream": "Использовать потоковую конечную точку (/api/mcp/stream)", + "scope": "Требуемая область доступа (можно указать несколько раз, например read:health)" + }, + "scopes": { + "description": "Показать доступные области доступа MCP", + "tool": "Показать области доступа, необходимые конкретному инструменту" + }, + "tools": { + "description": "Просмотреть инструменты MCP", + "list": { + "description": "Показать все инструменты MCP", + "scope": "Фильтровать по области доступа" + }, + "info": { + "description": "Показать метаданные инструмента MCP" + }, + "schema": { + "description": "Показать JSON-схему входных и выходных данных инструмента MCP", + "io": "Тип схемы: input|output (по умолчанию: input)" + } + }, + "audit": { + "description": "Журнал аудита MCP (псевдоним для audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Показать доступные навыки A2A из карточки агента" + }, + "invoke": { + "description": "Вызвать навык A2A и вернуть идентификатор задачи", + "input": "Входной объект JSON", + "input_file": "Путь к входному файлу JSON", + "wait": "Ожидать завершения задачи перед возвратом", + "timeout": "Тайм-аут ожидания завершения в мс (по умолчанию: 60000)" + }, + "tasks": { + "description": "Управление задачами A2A", + "list": { + "status": "Фильтровать по статусу", + "skill": "Фильтровать по идентификатору навыка" + }, + "watch": { + "description": "Опрашивать статус задачи до её завершения" + }, + "stream": { + "description": "Передавать события выполнения задачи в потоковом режиме через SSE" + }, + "logs": { + "description": "Показать сообщения и артефакты задачи" + } + } + }, + "policy": { + "description": "Управление политиками авторизации OmniRoute", + "list": { + "description": "Показать список политик", + "kind": "Фильтровать по типу (allow|deny|rate-limit|cost-cap)", + "scope": "Фильтровать по области действия (global|api-key|provider)" + }, + "get": { + "description": "Получить сведения о политике по идентификатору" + }, + "create": { + "description": "Создать политику из файла JSON", + "file": "Путь к файлу JSON политики" + }, + "update": { + "description": "Обновить политику из файла JSON", + "file": "Путь к файлу JSON политики" + }, + "delete": { + "description": "Удалить политику по идентификатору", + "yes": "Пропустить запрос подтверждения" + }, + "evaluate": { + "description": "Пробная оценка политики (код выхода 0 — разрешено, 4 — запрещено)", + "api_key": "Ключ API для оценки", + "action": "Проверяемое действие (например, chat, embed, admin)", + "resource": "Путь к ресурсу или идентификатор", + "context": "Дополнительный контекст в виде объекта JSON" + }, + "export": { + "description": "Экспортировать все политики в файл JSON" + }, + "import": { + "description": "Импортировать политики из файла JSON", + "overwrite": "Перезаписать существующие политики с тем же идентификатором" + } + }, + "compression": { + "description": "Настройка и проверка конвейера сжатия OmniRoute", + "status": { + "description": "Показать текущий статус и настройки сжатия" + }, + "configure": { + "description": "Настроить параметры сжатия", + "engine": "Механизм сжатия (caveman|rtk|hybrid|none)", + "caveman_agg": "Степень агрессивности Caveman: 0.0–1.0", + "rtk_budget": "Бюджет токенов RTK", + "language_pack": "Языковой пакет для активации" + }, + "engine": { + "description": "Получить или задать активный механизм сжатия" + }, + "combos": { + "description": "Управление статистикой комбинаций сжатия" + }, + "rules": { + "description": "Управление правилами сжатия", + "add": { + "pattern": "Шаблон для сопоставления (регулярное выражение или поле:шаблон)", + "action": "Действие: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Показать доступные языковые пакеты сжатия" + }, + "preview": { + "description": "Предварительно оценить эффект сжатия для запроса", + "file": "Путь к JSON-файлу запроса" + } + }, + "tunnel": { + "title": "Туннели", + "listDescription": "Показать активные туннели", + "createDescription": "Создать туннель", + "created": "Туннель создан: {url}", + "stopped": "Туннель остановлен.", + "confirmStop": "Остановить туннель {id}?", + "stopDescription": "Остановить туннель", + "statusDescription": "Показать подробное состояние туннеля", + "logsDescription": "Показать журналы туннеля", + "infoDescription": "Показать сведения о конфигурации туннеля", + "rotateDescription": "Создать новый URL туннеля", + "tailOpt": "Количество отображаемых строк журнала", + "typeRequired": "Необходимо указать тип туннеля.", + "noLogs": "Журналы недоступны.", + "notAvailable": "Информация о туннеле недоступна.", + "noTunnels": "Нет активных туннелей.", + "infoTitle": "Информация о туннеле: {type}", + "rotated": "URL туннеля обновлён: {url}", + "confirmRotate": "Обновить URL туннеля {type}? (будет создан новый URL)" + }, + "stop": { + "description": "Остановить сервер OmniRoute", + "stopping": "Остановка сервера (PID {pid})...", + "stopped": "Сервер остановлен.", + "notRunning": "Сервер не запущен.", + "portFallback": "PID-файл не найден, выполняется попытка остановки по порту..." + }, + "restart": { + "description": "Перезапустить сервер OmniRoute", + "restarting": "Перезапуск сервера OmniRoute..." + }, + "dashboard": { + "description": "Открыть панель управления OmniRoute в браузере", + "opening": "Открытие панели управления по адресу {url}", + "urlOnly": "Вывести URL панели управления, не открывая браузер", + "tui": "Открыть интерактивную TUI-панель управления (терминальный интерфейс, 7 вкладок)" + }, + "models": { + "description": "Показать доступные модели (требуется сервер)", + "search": "Фильтровать модели по идентификатору, названию, провайдеру или описанию", + "noServer": "Сервер не запущен. Запустите его командой: omniroute serve", + "noModels": "Модели не найдены." + }, + "audit": { + "description": "Доступ к журналам аудита соответствия требованиям и MCP", + "source": "Источник журнала: all|compliance|mcp (по умолчанию: all)", + "since": "Вернуть записи, начиная с этой временной метки (ISO 8601)", + "until": "Вернуть записи до этой временной метки (ISO 8601)", + "tail": { + "description": "Показать последние записи журнала аудита", + "follow": "Непрерывно отслеживать новые записи (опрос каждые 2 с)", + "limit": "Максимальное количество отображаемых записей (по умолчанию: 100)" + }, + "search": { + "description": "Поиск записей журнала аудита по ключевому слову", + "limit": "Максимальное количество результатов (по умолчанию: 200)", + "actor": "Фильтровать по ID субъекта", + "action": "Фильтровать по названию действия" + }, + "export": { + "description": "Экспортировать журнал аудита в файл", + "format": "Формат вывода: jsonl|csv (по умолчанию: jsonl)" + }, + "stats": { + "description": "Показать статистику журнала аудита", + "period": "Период времени: 1d|7d|30d (по умолчанию: 7d)" + }, + "get": { + "description": "Получить отдельную запись журнала аудита по ID" + } + }, + "skills": { + "description": "Управление навыками OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Показать список установленных навыков", + "type": "Фильтровать по типу (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Показать только включённые навыки", + "disabled": "Показать только отключённые навыки", + "api_key": "Фильтровать по API-ключу" + }, + "get": { + "description": "Получить сведения о навыке по ID" + }, + "install": { + "description": "Установить навык из файла или по URL", + "from_file": "Путь к JSON-файлу определения навыка", + "from_url": "URL удалённого определения навыка", + "type": "Тип навыка (sandbox|custom|hybrid)", + "enable": "Включить навык после установки" + }, + "enable": { + "description": "Включить навык по ID" + }, + "disable": { + "description": "Отключить навык по ID", + "yes": "Пропустить запрос подтверждения" + }, + "delete": { + "description": "Удалить навык по ID", + "yes": "Пропустить запрос подтверждения" + }, + "execute": { + "description": "Выполнить навык по ID", + "input": "Входной JSON-объект", + "input_file": "Путь к файлу входных данных JSON", + "timeout": "Тайм-аут выполнения в мс (по умолчанию: 30000)" + }, + "executions": { + "description": "Показать историю выполнения навыков", + "skill": "Фильтр по ID навыка", + "limit": "Максимальное количество результатов (по умолчанию: 50)", + "status": "Фильтр по статусу (running|completed|failed)" + }, + "skillssh": { + "description": "Управление навыками, установленными через SSH" + }, + "marketplace": { + "description": "Просмотр и установка навыков из маркетплейса" + }, + "mp": { + "search": { + "description": "Поиск пакетов в маркетплейсе", + "category": "Фильтр по категории", + "tag": "Фильтр по тегу", + "limit": "Максимальное количество результатов (по умолчанию: 30)", + "sort": "Сортировка по: downloads|rating|recent" + }, + "info": { + "description": "Показать сведения о пакете и файл readme" + }, + "install": { + "description": "Установить пакет из маркетплейса", + "version": "Версия пакета (по умолчанию: latest)", + "enable": "Включить после установки", + "yes": "Пропустить запрос подтверждения" + }, + "categories": { + "description": "Показать категории маркетплейса" + }, + "featured": { + "description": "Показать рекомендуемые пакеты маркетплейса" + } + } + }, + "memory": { + "description": "Управление памятью диалогов OmniRoute (FTS5 + vector)", + "search": { + "description": "Поиск записей в памяти по семантическому запросу", + "type": "Фильтр по типу памяти (user|feedback|project|reference)", + "limit": "Максимальное количество результатов (по умолчанию: 20)", + "api_key": "Фильтр по ключу API", + "token_budget": "Ограничить общее количество токенов в результатах" + }, + "add": { + "description": "Добавить новую запись в память", + "content": "Текстовое содержимое записи в памяти", + "file": "Прочитать содержимое из файла", + "type": "Тип памяти (по умолчанию: user)", + "metadata": "Объект метаданных JSON", + "api_key": "Связать с ключом API" + }, + "clear": { + "description": "Удалить записи из памяти, соответствующие фильтрам", + "type": "Фильтр по типу", + "older": "Удалить записи старше указанного срока (30d, 6m, 1y)", + "api_key": "Фильтр по ключу API", + "yes": "Пропустить запрос подтверждения" + }, + "list": { + "description": "Показать записи в памяти без поискового ранжирования", + "type": "Фильтр по типу", + "limit": "Максимальное количество результатов (по умолчанию: 100)", + "api_key": "Фильтр по ключу API" + }, + "get": { + "description": "Получить одну запись из памяти по ID" + }, + "delete": { + "description": "Удалить запись из памяти по ID", + "yes": "Пропустить запрос подтверждения" + }, + "health": { + "description": "Показать состояние подсистемы памяти (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Управлять подключениями OAuth-провайдеров", + "providers": { + "description": "Показать список провайдеров с поддержкой OAuth и типы их потоков" + }, + "start": { + "description": "Запустить поток OAuth-авторизации для провайдера", + "provider": "Идентификатор провайдера (gemini, copilot, cursor, …)", + "no_browser": "Вывести только URL — не открывать браузер", + "import_system": "Автоматически импортировать учётные данные из локальной конфигурации системы", + "social": "Провайдер входа через социальную сеть (google|github) — обязателен для kiro", + "timeout": "Время ожидания авторизации в мс (по умолчанию: 300000)" + }, + "status": { + "description": "Показать список активных OAuth-подключений", + "provider": "Фильтровать по идентификатору провайдера" + }, + "revoke": { + "description": "Отозвать OAuth-подключение", + "provider": "Идентификатор провайдера, подключение которого нужно отозвать", + "connection_id": "Отозвать конкретное подключение по идентификатору", + "yes": "Пропустить запрос подтверждения" + } + }, + "cloud": { + "description": "Управлять задачами облачных ИИ-агентов (codex, devin, jules)", + "agents": { + "description": "Показать список доступных облачных агентов" + }, + "agent": { + "description": "Управлять задачами облачного агента {agent}", + "auth": { + "description": "Авторизовать {agent} через OAuth" + } + }, + "task": { + "description": "Управлять задачами облачных агентов", + "create": { + "description": "Создать новую задачу агента", + "title": "Название задачи (по умолчанию — первые 80 символов запроса)", + "prompt": "Текст запроса задачи", + "prompt_file": "Прочитать запрос из файла", + "repo": "URL репозитория для клонирования в рамках задачи", + "branch": "Имя используемой ветки", + "metadata": "Объект метаданных JSON" + }, + "list": { + "description": "Показать список задач агента", + "status": "Фильтровать по статусу (running|completed|failed|cancelled)", + "limit": "Максимальное количество результатов (по умолчанию: 50)" + }, + "get": { + "description": "Получить сведения о задаче по идентификатору" + }, + "status": { + "description": "Вывести статус задачи (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Отменить выполняемую задачу", + "yes": "Пропустить запрос подтверждения" + }, + "approve": { + "description": "Утвердить план агента для запуска выполнения" + }, + "message": { + "description": "Отправить сообщение выполняемой задаче" + } + }, + "sources": { + "description": "Показать список исходных файлов, созданных задачей" + } + }, + "eval": { + "description": "Управлять наборами и запусками оценок", + "suites": { + "description": "Управлять наборами оценок", + "list": { + "description": "Список наборов оценивания" + }, + "get": { + "description": "Получить сведения о наборе оценивания по ID" + }, + "create": { + "description": "Создать набор оценивания из JSON-файла", + "file": "Путь к JSON-файлу с определением набора" + } + }, + "run": { + "description": "Запустить оценивание для набора", + "model": "ID модели для оценивания (по умолчанию: auto)", + "combo": "Принудительно использовать конкретную комбинацию по имени", + "concurrency": "Количество параллельных примеров (по умолчанию: 4)", + "tag": "Добавить тег к этому запуску для последующей фильтрации", + "watch": "Отслеживать ход выполнения до завершения" + }, + "list": { + "description": "Список запусков оценивания", + "suite": "Фильтровать по ID набора", + "status": "Фильтровать по статусу", + "since": "Вернуть запуски, выполненные после этой временной метки", + "limit": "Максимальное количество результатов (по умолчанию: 50)" + }, + "get": { + "description": "Получить сведения о запуске оценивания по ID" + }, + "results": { + "description": "Показать результаты примеров для запуска оценивания", + "failed": "Показать только неуспешные примеры" + }, + "cancel": { + "description": "Отменить выполняющееся оценивание", + "yes": "Пропустить запрос подтверждения" + }, + "scorecard": { + "description": "Показать сводную таблицу результатов завершённого оценивания" + } + }, + "webhooks": { + "description": "Управление вебхуками OmniRoute", + "events": { + "description": "Показать все доступные типы событий вебхуков" + }, + "list": { + "description": "Показать настроенные вебхуки" + }, + "get": { + "description": "Получить сведения о вебхуке по ID" + }, + "add": { + "description": "Зарегистрировать новый вебхук", + "url": "URL назначения", + "events": "Список типов событий через запятую", + "secret": "Секрет для подписи HMAC", + "header": "Дополнительный заголовок в формате key=value (можно указать несколько раз)", + "no_enabled": "Создать вебхук в отключённом состоянии" + }, + "update": { + "description": "Обновить существующий вебхук", + "enabled": "Установить состояние активности (true|false)" + }, + "remove": { + "description": "Удалить вебхук", + "yes": "Пропустить запрос подтверждения" + }, + "test": { + "description": "Отправить тестовое событие вебхуку", + "event": "Тип имитируемого события (по умолчанию: request.completed)" + } + }, "program": { "description": "OmniRoute — Умный AI-маршрутизатор с автоматическим переключением", "version": "Вывести версию и выйти", @@ -26,7 +832,509 @@ "context": "Контекст/профиль сервера для этой команды", "lang": "Установить язык отображения CLI (переопределяет OMNIROUTE_LANG)" }, - "redis": { - "description": "Запустить локальный контейнер Redis одним нажатием (Podman или Docker) для кэширования и отслеживания квот OmniRoute" + "files": { + "description": "Управление файлами (загрузка, просмотр списка, получение, скачивание, удаление)", + "list": { + "purpose": "Фильтровать по назначению", + "limit": "Максимальное количество результатов" + }, + "get": { + "description": "Получить метаданные файла" + }, + "upload": { + "description": "Загрузить файл", + "purpose": "Назначение файла (batch, assistants, fine-tune)" + }, + "content": { + "description": "Скачать содержимое файла", + "out": "Сохранить по указанному пути (по умолчанию: stdout)" + }, + "delete": { + "yes": "Пропустить подтверждение" + } + }, + "batches": { + "description": "Управление пакетными заданиями, совместимыми с OpenAI", + "list": { + "status": "Фильтр по статусу", + "limit": "Максимальное количество результатов" + }, + "create": { + "description": "Создать пакетное задание", + "inputFile": "ID входного файла", + "endpoint": "Целевая конечная точка", + "window": "Окно выполнения", + "metadata": "Добавить метаданные key=value" + }, + "submit": { + "description": "Загрузить файл JSONL и создать пакетное задание", + "jsonl": "Путь к файлу JSONL", + "endpoint": "Целевая конечная точка", + "wait": "Дождаться завершения" + }, + "cancel": { + "yes": "Пропустить подтверждение" + }, + "wait": { + "timeout": "Тайм-аут в мс" + }, + "output": { + "out": "Сохранить результат по указанному пути" + }, + "errors": { + "out": "Сохранить ошибки по указанному пути" + } + }, + "translator": { + "description": "Преобразование тел запросов между форматами LLM", + "detect": { + "description": "Определить формат тела запроса" + }, + "translate": { + "description": "Преобразовать тело запроса из одного формата в другой" + }, + "send": { + "description": "Преобразовать и отправить вышестоящему сервису" + }, + "stream": { + "description": "Потоковое преобразование тела запроса" + }, + "from": "Исходный формат (openai|anthropic|gemini|cohere)", + "to": "Целевой формат (openai|anthropic|gemini|cohere)", + "file": "Путь к JSON-файлу с телом запроса", + "out": "Сохранить результат в файл", + "model": "Переопределить модель", + "history": { + "limit": "Максимальное количество результатов" + } + }, + "pricing": { + "description": "Управление данными о ценах на модели", + "sync": { + "description": "Синхронизировать цены с вышестоящими источниками", + "provider": "Фильтр по провайдеру", + "force": "Принудительная повторная синхронизация" + }, + "list": { + "provider": "Фильтр по провайдеру", + "model": "Фильтр по модели", + "limit": "Максимальное количество результатов" + }, + "defaults": { + "description": "Управление ценами по умолчанию", + "input": "Стоимость входных токенов за 1 млн (USD)", + "output": "Стоимость выходных токенов за 1 млн (USD)", + "cacheRead": "Стоимость чтения из кэша за 1 млн токенов (USD)", + "cacheWrite": "Стоимость записи в кэш за 1 млн токенов (USD)" + }, + "diff": { + "description": "Показывать расхождения с ценами вышестоящего источника", + "model": "Фильтр по модели" + } + }, + "radar": { + "description": "Просмотр и синхронизация локальных каналов каталога Radar", + "status": "Показать локальные настройки Radar и состояние кэша каналов", + "sync": "Синхронизировать каталог, реферальные данные, предложения и Intel через локальный сервер" + }, + "resilience": { + "description": "Просмотр и управление механизмами отказоустойчивости", + "status": { + "provider": "Фильтр по провайдеру" + }, + "breakers": { + "provider": "Фильтр по провайдеру" + }, + "cooldowns": { + "provider": "Фильтр по провайдеру", + "connectionId": "Фильтр по ID подключения" + }, + "lockouts": { + "provider": "Фильтр по провайдеру", + "model": "Фильтр по модели" + }, + "reset": { + "description": "Сбросить состояние предохранителя/периода ожидания", + "provider": "Провайдер для сброса", + "connectionId": "ID подключения для сброса", + "model": "Модель для сброса блокировки", + "allCooldowns": "Сбросить все периоды ожидания для провайдера", + "yes": "Пропустить подтверждение" + }, + "profile": { + "description": "Управление профилем отказоустойчивости", + "name": "Название профиля" + }, + "config": { + "description": "Управление конфигурацией отказоустойчивости", + "threshold": "Порог сбоев", + "resetTimeout": "Время ожидания перед сбросом в мс", + "baseCooldown": "Базовый период ожидания в мс" + } + }, + "nodes": { + "description": "Управление узлами (конечными точками) провайдера", + "list": { + "provider": "Фильтр по провайдеру", + "enabled": "Показывать только включённые узлы" + }, + "add": { + "provider": "Название провайдера", + "baseUrl": "Базовый URL узла", + "name": "Название узла", + "weight": "Вес балансировки нагрузки", + "region": "Тег региона", + "authHeader": "Пользовательский заголовок авторизации (key=value)" + }, + "update": { + "baseUrl": "Новый базовый URL", + "name": "Новое название", + "weight": "Новый вес", + "region": "Новый регион", + "enabled": "Включить или отключить (true|false)" + }, + "remove": { + "yes": "Пропустить подтверждение" + }, + "validate": { + "baseUrl": "URL для проверки", + "provider": "Провайдер, с которым нужно сверить" + }, + "test": { + "description": "Отправить тестовый запрос узлу" + }, + "metrics": { + "description": "Показать метрики узла", + "period": "Период времени (например, 24h, 7d)" + } + }, + "context": { + "description": "Настроить конвейер обработки контекста (Caveman, RTK)", + "analytics": { + "period": "Период времени (например, 7d, 30d)" + }, + "caveman": { + "description": "Управление компрессором контекста Caveman", + "config": { + "description": "Показать или обновить конфигурацию Caveman", + "aggressiveness": "Интенсивность 0.0–1.0", + "maxShrinkPct": "Максимальный процент сокращения", + "preserveTags": "Теги для сохранения, разделённые запятыми" + } + }, + "rtk": { + "description": "Управление оптимизатором контекста RTK", + "config": { + "description": "Показать или обновить конфигурацию RTK", + "tokenBudget": "Бюджет токенов для RTK", + "reservePct": "Процент резерва" + }, + "filters": { + "description": "Управление фильтрами RTK", + "pattern": "Шаблон фильтра (регулярное выражение)", + "priority": "Приоритет фильтра (по умолчанию: 100)", + "action": "Действие фильтра: drop|shrink|replace", + "yes": "Пропустить подтверждение" + }, + "test": { + "file": "Путь к JSON-файлу запроса" + } + }, + "combos": { + "description": "Управление комбинациями с учётом контекста" + } + }, + "sessions": { + "description": "Просмотр активных сеансов и управление ими", + "list": { + "user": "Фильтровать по пользователю", + "kind": "Фильтровать по типу (dashboard|api-key|mcp|a2a)", + "active": "Показывать только активные сеансы", + "limit": "Максимальное количество результатов (по умолчанию: 100)" + }, + "expire": { + "yes": "Пропустить подтверждение" + }, + "expireAll": { + "user": "Пользователь, чьи сеансы нужно завершить", + "yes": "Пропустить подтверждение" + } + }, + "tags": { + "description": "Управление тегами ресурсов", + "add": { + "color": "Цвет тега (шестнадцатеричный код или название)", + "description": "Описание тега" + }, + "remove": { + "yes": "Пропустить подтверждение" + }, + "assign": { + "tag": "Название тега", + "to": "Целевой ресурс в формате type:id (например, provider:openai)" + }, + "unassign": { + "tag": "Имя тега", + "from": "Исходный ресурс в формате type:id" + } + }, + "openapi": { + "description": "Доступ к спецификации OmniRoute OpenAPI и её тестирование", + "dump": { + "description": "Вывести спецификацию OpenAPI в stdout или файл", + "format": "Формат вывода: yaml|json (по умолчанию: yaml)", + "out": "Сохранить по указанному пути к файлу" + }, + "validate": { + "description": "Проверить спецификацию OpenAPI" + }, + "try": { + "description": "Протестировать конечную точку API через спецификацию", + "method": "Метод HTTP (по умолчанию: GET)", + "body": "Путь к JSON-файлу с телом запроса", + "query": "Параметр запроса в формате key=value (можно указывать несколько раз)", + "header": "Заголовок в формате key=value (можно указывать несколько раз)" + }, + "endpoints": { + "description": "Показать все конечные точки API", + "search": "Фильтровать по пути или описанию" + }, + "paths": { + "description": "Показать все пути API" + } + }, + "combo": { + "title": "Комбинации", + "switched": "Активная комбинация: {name}", + "created": "Комбинация создана: {name}", + "deleted": "Комбинация удалена: {name}", + "noCombos": "Комбинации не настроены.", + "confirmDelete": "Удалить комбинацию {name}?", + "suggest": { + "description": "Подобрать лучшую комбинацию для задачи с помощью оценки ИИ", + "task": "Описание задачи", + "maxCost": "Максимальная стоимость запроса в долларах США", + "maxLatencyMs": "Максимальная задержка в миллисекундах", + "weights": "Веса оценки в формате JSON, например {\"latency\":0.7,\"cost\":0.3}", + "top": "Количество лучших кандидатов для отображения (по умолчанию: 5)", + "explain": "Вывести обоснование в stderr", + "switch": "Активировать комбинацию с наивысшим рейтингом" + } + }, + "oneproxy": { + "description": "Управление пулом вышестоящих прокси-серверов OneProxy", + "stats": { + "provider": "Фильтровать по провайдеру", + "period": "Период времени (по умолчанию: 24h)" + }, + "fetch": { + "description": "Получить прокси-серверы из пула", + "count": "Количество прокси-серверов для получения (по умолчанию: 1)", + "type": "Тип прокси: http|socks5 (по умолчанию: http)" + }, + "rotate": { + "description": "Принудительно сменить прокси", + "provider": "Провайдер, для которого нужно сменить прокси", + "connectionId": "Идентификатор конкретного подключения для смены прокси" + }, + "config": { + "description": "Показать или обновить конфигурацию OneProxy", + "enabled": "Включить пул прокси (true|false)", + "poolSize": "Размер пула", + "providerSource": "URL провайдера прокси", + "rotationPolicy": "Политика ротации: sticky|per-request|periodic" + }, + "pool": { + "description": "Показать текущий пул прокси с метриками" + } + }, + "open": { + "description": "Открыть указанную страницу панели управления OmniRoute в браузере", + "url": "Только вывести URL, не открывая браузер" + }, + "telemetry": { + "description": "Получить доступ к агрегированным данным телеметрии", + "summary": { + "description": "Показать сводку агрегированной телеметрии", + "period": "Период времени: 24h|7d|30d (по умолчанию: 24h)", + "compareTo": "Сравнить с предыдущим периодом" + }, + "export": { + "description": "Экспортировать события телеметрии в JSONL", + "out": "Путь к выходному файлу (по умолчанию: telemetry.jsonl)", + "period": "Период времени для экспорта (по умолчанию: 7d)" + } + }, + "sync": { + "description": "Синхронизировать конфигурацию между экземплярами OmniRoute", + "push": { + "description": "Отправить конфигурацию в облако или удалённый экземпляр", + "target": "Цель (cloud или context:name)", + "bundle": "Компоненты пакета для синхронизации", + "dryRun": "Предварительный просмотр без применения" + }, + "pull": { + "description": "Получить конфигурацию из облака или удалённого экземпляра", + "source": "Источник (cloud или context:name)", + "merge": "Объединить с существующей конфигурацией", + "replace": "Заменить существующую конфигурацию", + "dryRun": "Предварительный просмотр без применения" + }, + "diff": { + "source": "Исходный контекст", + "target": "Целевой контекст" + }, + "bundle": { + "description": "Экспортировать конфигурацию в файл пакета", + "include": "Включаемые компоненты (через запятую)" + }, + "import": { + "description": "Импортировать файл пакета", + "dryRun": "Проверить без применения" + }, + "initialize": { + "fromCloud": "Инициализировать из облачной резервной копии" + }, + "tokens": { + "description": "Управлять токенами синхронизации", + "create": { + "name": "Имя токена", + "scope": "Область действия токена", + "ttl": "Срок действия токена (например, 30d)" + }, + "revoke": { + "yes": "Пропустить подтверждение" + } + }, + "resolve": { + "description": "Разрешить конфликты синхронизации в интерактивном режиме" + } + }, + "config": { + "contexts": { + "description": "Управлять контекстами/профилями сервера (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Управлять языком интерфейса CLI", + "getDescription": "Показать код текущего активного языка", + "setDescription": "Установить язык интерфейса и сохранить его в конфигурации", + "listDescription": "Показать все доступные языки", + "listTitle": "Доступные языки", + "current": "Язык: {code} ({name})", + "saved": "Установлен язык {code} ({name}).", + "noCode": "Необходимо указать код языка. Выполните «omniroute config lang list», чтобы просмотреть доступные коды.", + "unknown": "Неизвестный код языка: {code}. Выполните «omniroute config lang list», чтобы просмотреть доступные коды.", + "alreadySet": "Язык уже установлен на {code}.", + "envHint": "Совет: вы также можете задать OMNIROUTE_LANG={code} в переменных окружения." + } + }, + "completion": { + "description": "Создать или установить сценарии автодополнения для командной оболочки", + "zsh": "Вывести сценарий автодополнения для zsh", + "bash": "Вывести сценарий автодополнения для bash", + "fish": "Вывести сценарий автодополнения для fish", + "install": "Глобально установить сценарий автодополнения для обнаруженной командной оболочки", + "refresh": "Обновить кеш комбинаций, провайдеров и моделей" + }, + "logs": { + "description": "Транслировать или экспортировать журналы запросов", + "follow": "Транслировать журналы в реальном времени", + "filter": "Фильтр по уровню (error,warn,info), значения разделяются запятыми", + "lines": "Количество строк для получения", + "timeout": "Время ожидания подключения в мс", + "baseUrl": "Базовый URL API OmniRoute", + "requestId": "Фильтр по идентификатору запроса", + "apiKey": "Фильтр по ключу API", + "combo": "Фильтр по названию комбинации", + "status": "Фильтр по коду состояния HTTP", + "durationMin": "Минимальная длительность запроса в мс", + "durationMax": "Максимальная длительность запроса в мс", + "export": "Сохранить журналы в файл (json/jsonl/csv)", + "exported": "Журналы сохранены в {path}", + "stopped": "Трансляция журналов остановлена.", + "streamError": "Ошибка трансляции журналов: {message}" + }, + "tray": { + "description": "Управление значком в системном трее", + "show": "Показать значок в трее (если сервер запущен с параметром --tray)", + "hide": "Скрыть значок в трее", + "quit": "Завершить работу OmniRoute через трей" + }, + "autostart": { + "description": "Управление автозапуском OmniRoute при загрузке системы (Linux: пользовательская служба systemd)", + "enable": "Включить автозапуск при загрузке системы", + "disable": "Отключить автозапуск при загрузке системы", + "toggle": "Переключить автозапуск при загрузке системы", + "status": "Показать состояние автозапуска" + }, + "runtime": { + "description": "Управление нативными зависимостями среды выполнения", + "check": "Проверить состояние нативных зависимостей в каталоге среды выполнения", + "repair": "Переустановить нативные зависимости в каталоге среды выполнения", + "repair_force": "Принудительно переустановить, даже если зависимости исправны", + "clean": "Удалить каталог среды выполнения (освободить место на диске)", + "clean_yes": "Пропустить подтверждение" + }, + "repl": { + "description": "Интерактивный многошаговый REPL с LLM", + "model": "Используемая модель (по умолчанию: auto)", + "combo": "Название используемой комбинации", + "system": "Системный промпт", + "resume": "Возобновить сохранённый сеанс по имени" + }, + "plugin": { + "description": "Управление плагинами CLI (omniroute-cmd-*)", + "list": "Показать установленные плагины", + "install": "Установить плагин из npm или по локальному пути", + "remove": "Удалить установленный плагин", + "info": "Показать сведения об установленном плагине", + "search": "Найти доступные плагины в реестре npm", + "update": "Обновить установленные плагины", + "scaffold": "Создать шаблон нового плагина" + }, + "launch": { + "description": "Запустить Claude Code с подключением к OmniRoute (локально или удалённо, с --profile)", + "token": "Токен, который должен отправлять клиент Claude (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute недоступен на порте {port}. Запустите его командой 'omniroute serve'.", + "notFound": "CLI 'claude' не найден в PATH." + }, + "run": { + "description": "Запустить поддерживаемый целевой CLI через OmniRoute" + }, + "setupClaude": { + "description": "Создать профили Claude Code в ~/.claude/profiles на основе каталога моделей OmniRoute" + }, + "connect": { + "description": "Подключиться к удалённому серверу OmniRoute и перейти в удалённый режим" + }, + "tokens": { + "description": "Управление токенами доступа CLI с ограниченной областью действия (удалённый режим)" + }, + "configure": { + "description": "Выбрать провайдера и модель на активном сервере и настроить поддерживаемый локальный CLI" + }, + "launchCodex": { + "description": "Запустить Codex CLI с подключением к OmniRoute (локально или на удалённом VPS)" + }, + "setupCodex": { + "description": "Создать файлы профилей в ~/.codex на основе актуального каталога моделей OmniRoute" + }, + "packs": { + "description": "Управление дополнительными пакетами среды выполнения (ML / автоматизация браузера)", + "listDescription": "Показать дополнительные пакеты и состояние их установки", + "installDescription": "Установить дополнительный пакет в DATA_DIR", + "verifyDescription": "Проверить установленные пакеты по поставляемому индексу контрольных сумм", + "removeDescription": "Удалить установленный дополнительный пакет", + "sourceOpt": "Каталог, содержащий данные пакетов и индекс пакетов", + "warnNoIndex": "optional-packs.index.json не найден — установка и проверка недоступны в этой рабочей копии (он входит в поставку настольных сборок)", + "errUnknown": "неизвестный пакет: {name}", + "errNoIndex": "индекс пакетов не найден; укажите --source , содержащий данные пакета (в настольных сборках он поставляется рядом с приложением)", + "installed": "пакет \"{name}\" установлен и проверен в {dir}", + "restartHint": "перезапустите сервер OmniRoute (или настольное приложение), чтобы среда выполнения подхватила пакет", + "removed": "пакет «{name}» удалён", + "notInstalled": "пакет «{name}» не был установлен", + "verifyOk": "все установленные пакеты проверены", + "verifyFailed": "не удалось проверить пакеты: {count}", + "noneInstalled": "дополнительные пакеты не установлены" } } diff --git a/bin/cli/locales/si.json b/bin/cli/locales/si.json index f22e5cfa1a..ee00dfd44d 100644 --- a/bin/cli/locales/si.json +++ b/bin/cli/locales/si.json @@ -256,6 +256,7 @@ "max_restarts": "අත්හැරීමට පෙර තත්පර 30ක් තුළ සිදු කළ හැකි උපරිම බිඳවැටීම්-පසු නැවත ආරම්භ කිරීම් ගණන (පෙරනිමිය: 2)", "tray": "පද්ධති ට්රේ තුළ ආරම්භ කරන්න (ඩෙස්ක්ටොප් සඳහා පමණි, කැමැත්තෙන් සක්රිය කළ යුතුය)", "no_tray": "පද්ධති ට්රේ නිරූපකය අක්රිය කරන්න", + "ready_timeout": "සූදානම්දැයි පරීක්ෂා කිරීමේ කල් ඉකුත්වීම ms වලින් (OMNIROUTE_READY_TIMEOUT_MS ද අදාළ වේ, පෙරනිමිය 60000)", "tls_cert": "HTTPS සේවය සැපයීම සඳහා TLS සහතිකයකට (PEM) ඇති මාර්ගය (OMNIROUTE_TLS_CERT ද අදාළ වේ)", "tls_key": "HTTPS සේවය සැපයීම සඳහා TLS පුද්ගලික යතුරට (PEM) ඇති මාර්ගය (OMNIROUTE_TLS_KEY ද අදාළ වේ)" }, @@ -347,6 +348,16 @@ "running": "MCP සේවාදායකය ක්රියාත්මකයි ({transport})", "stopped": "MCP සේවාදායකය නවතා ඇත.", "restarted": "MCP සේවාදායකය නැවත ආරම්භ කරන ලදී.", + "stoppedHint": "එය සක්රීය කිරීමට `omniroute mcp enable` ධාවනය කරන්න.", + "enabled": "MCP සේවාදායකය සක්රීය කර ඇත.", + "disabled": "MCP සේවාදායකය අක්රීය කර ඇත.", + "enable": { + "description": "MCP සේවාදායකය සක්රීය කරන්න", + "transport": "භාවිත කළ යුතු ප්රවාහන ක්රමය: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP සේවාදායකය අක්රීය කරන්න" + }, "call": { "description": "MCP මෙවලමක් සෘජුවම කැඳවන්න", "args": "JSON තර්ක වස්තුව (පේළිය තුළ)", @@ -1093,7 +1104,7 @@ } }, "combo": { - "title": "Combos", + "title": "සංයෝජන", "switched": "සක්රිය combo එක: {name}", "created": "Combo එක සාදන ලදී: {name}", "deleted": "Combo එක මකා දමන ලදී: {name}", diff --git a/bin/cli/locales/sk.json b/bin/cli/locales/sk.json index 598add489e..7697274fa8 100644 --- a/bin/cli/locales/sk.json +++ b/bin/cli/locales/sk.json @@ -14,6 +14,812 @@ "jsonOpt": "Výstup ako JSON", "yesOpt": "Preskočiť potvrdenie" }, + "setup": { + "title": "Nastavenie OmniRoute", + "passwordPrompt": "Heslo správcu", + "providerPrompt": "Predvolený poskytovateľ (ak chcete preskočiť, nechajte prázdne)", + "done": "Nastavenie dokončené", + "passwordSet": "Heslo správcu nakonfigurované", + "providerSet": "Poskytovateľ nakonfigurovaný: {name}", + "testingProvider": "Testuje sa pripojenie k poskytovateľovi: {name}", + "testPassed": "Test poskytovateľa bol úspešný", + "testFailed": "Test poskytovateľa zlyhal: {error}", + "loginEnabled": "Prihlásenie: povolené (heslo aktualizované)", + "loginDisabled": "Prihlásenie: zakázané", + "providerInfo": "Poskytovateľ: {info}", + "opencode": "Nainštalovať a nakonfigurovať pribalený doplnok @omniroute/opencode-plugin pre OpenCode" + }, + "doctor": { + "title": "Diagnostika OmniRoute", + "dbOk": "Databáza: OK ({path})", + "dbMissing": "Databáza: nie je inicializovaná — spustite `omniroute setup`", + "portOk": "Port {port}: dostupný", + "portConflict": "Port {port}: používa ho iný proces", + "encryptionOk": "Šifrovací kľúč: nakonfigurovaný", + "encryptionMissing": "Chýba šifrovací kľúč — spustite `omniroute setup`", + "allGood": "Všetky kontroly prešli úspešne.", + "warnings": "Počet upozornení: {count} — pozrite vyššie." + }, + "providers": { + "title": "Poskytovatelia", + "noProviders": "Nie sú nakonfigurovaní žiadni poskytovatelia. Spustite: omniroute setup", + "testing": "Testuje sa {name}...", + "available": "Počet dostupných poskytovateľov: {count}", + "connected": "Pripojené", + "disconnected": "Odpojené", + "validationFailed": "Overenie zlyhalo: {error}", + "metrics": { + "description": "Zobraziť metriky výkonnosti poskytovateľa (latencia, miera úspešnosti, náklady)", + "provider": "Filtrovať podľa ID poskytovateľa", + "connection_id": "Filtrovať podľa ID pripojenia", + "period": "Časové obdobie: 1h|6h|24h|7d|30d (predvolené: 24h)", + "metric": "Zamerať sa na konkrétne pole metriky", + "sort": "Zoradiť podľa poľa (zostupne)", + "limit": "Maximálny počet riadkov (predvolené: 50)", + "watch": "Obnovovať každých 5 s (živý režim)", + "compare": "ID poskytovateľov oddelené čiarkami na porovnanie vedľa seba" + }, + "metric_single": { + "description": "Získať jednu hodnotu metriky pre konkrétne pripojenie" + }, + "rotate": { + "description": "Obmeniť upstreamový API kľúč pre pripojenie poskytovateľa", + "newKeyOpt": "Nová hodnota API kľúča (neodporúča sa: uprednostnite --from-env)", + "fromEnvOpt": "Načítať nový kľúč z premennej prostredia VAR", + "oauthOpt": "Namiesto toho spustiť proces opätovného overenia OAuth", + "skipTestOpt": "Vynechať test pripojenia po rotácii", + "dryRunOpt": "Zobraziť, čo by sa zmenilo, bez vykonania zápisu", + "confirmPrompt": "Nahradiť API kľúč pre pripojenie „{name}“ ({id})? [y/N]", + "dryRunResult": "[dry-run] Kľúč pre „{name}“ ({id}) by sa rotoval. Neboli vykonané žiadne zmeny.", + "oauthHint": "Pripojenie OAuth — spustite: omniroute oauth {provider}", + "envVarEmpty": "Premenná prostredia {var} nie je nastavená alebo je prázdna.", + "success": "Kľúč pre „{name}“ bol rotovaný. Overte ho spustením príkazu `providers test {id}`.", + "testPassed": "Test po rotácii bol úspešný.", + "testFailed": "Test po rotácii zlyhal: {error}" + }, + "status": { + "description": "Zobraziť stav kľúčov pre všetky pripojenia poskytovateľov (vek, platnosť, dočasné pozastavenie)", + "providerOpt": "Filtrovať podľa názvu poskytovateľa", + "header": "ID Poskytovateľ Názov Stav platnosti Stav testu Pozastavené do", + "noData": "Nie sú k dispozícii žiadne údaje o pripojeniach poskytovateľov.", + "requiresServer": "Príkaz providers status vyžaduje, aby bol server OmniRoute spustený." + } + }, + "keys": { + "title": "API kľúče", + "addDescription": "Pridať alebo aktualizovať API kľúč pre poskytovateľa", + "listDescription": "Zobraziť všetky nakonfigurované API kľúče", + "removeDescription": "Odstrániť API kľúč poskytovateľa", + "regenerateDescription": "Opätovne vygenerovať API kľúč OmniRoute", + "revokeDescription": "Zrušiť API kľúč OmniRoute", + "revealDescription": "Odkryť nezamaskovanú hodnotu API kľúča", + "usageDescription": "Zobraziť nedávne použitie API kľúča", + "usageLimitOpt": "Počet nedávnych požiadaviek", + "rotateDescription": "Vygenerovať nový kľúč a zneplatniť starý", + "graceOpt": "Doba odkladu (ms) pred zneplatnením starého kľúča", + "stdinOpt": "Načítať API kľúč zo stdin namiesto argumentu", + "added": "Kľúč pre {provider} bol pridaný.", + "removed": "Kľúč bol odstránený.", + "listed": "Počet kľúčov: {count}.", + "noKeys": "Nie sú nakonfigurované žiadne kľúče.", + "noUsage": "Nenašli sa žiadne údaje o používaní.", + "confirmRemove": "Odstrániť kľúč {id}?", + "confirmRegenerate": "Opätovne vygenerovať kľúč {id}?", + "confirmRevoke": "Zrušiť kľúč {id}?", + "confirmRotate": "Rotovať kľúč {id}? (starý kľúč bude zneplatnený po uplynutí doby odkladu)", + "regenerated": "Kľúč bol opätovne vygenerovaný. Nový kľúč: {key}", + "revoked": "Kľúč {id} bol zrušený.", + "rotated": "Kľúč {id} bol rotovaný. ID nového kľúča: {newId}", + "revealWarning": "⚠ Zobrazí sa celý nezamaskovaný kľúč. Uistite sa, že vašu obrazovku nikto nevidí.", + "providerRequired": "Poskytovateľ je povinný.", + "keyRequired": "Kľúč API je povinný.", + "stdinEmpty": "Prostredníctvom stdin nebol poskytnutý žiadny kľúč API.", + "unknownProvider": "Neznámy poskytovateľ: {provider}", + "policy": { + "title": "Zásady kľúča", + "showDescription": "Zobraziť zásady limitov a nákladov pre kľúč", + "setDescription": "Nastaviť zásady limitov a nákladov pre kľúč", + "rateLimitOpt": "Maximálny počet požiadaviek za minútu", + "maxCostOpt": "Maximálne náklady za deň (USD)", + "allowedModelsOpt": "Zoznam povolených modelov oddelených čiarkami", + "nothingToSet": "Neboli zadané žiadne polia zásad. Použite --rate-limit, --max-cost alebo --allowed-models.", + "updated": "Zásady boli aktualizované." + }, + "expiration": { + "title": "Vypršanie platnosti kľúča", + "listDescription": "Zobraziť zoznam kľúčov, ktorých platnosť čoskoro vyprší", + "daysOpt": "Zobraziť kľúče, ktorých platnosť vyprší do N dní", + "none": "Žiadnym kľúčom nevyprší platnosť do {days} dní.", + "listTitle": "Kľúče, ktorých platnosť vyprší do {days} dní:" + } + }, + "authExport": { + "description": "Exportovať DEŠIFROVANÉ prihlasovacie údaje poskytovateľa (iba lokálne, výstup v obyčajnom texte)", + "idOpt": "Exportovať iba pripojenie zodpovedajúce tomuto ID/názvu/poskytovateľovi", + "formatOpt": "Formát výstupu: json alebo env", + "outOpt": "Zapísať výstup do súboru namiesto stdout (s oprávneniami 0600)", + "forceOpt": "Potvrďte, že rozumiete tomu, že sa tým vypíšu/zapíšu tajné údaje v obyčajnom texte", + "warning": "⚠ Týmto sa vypíšu/zapíšu DEŠIFROVANÉ kľúče API a tokeny OAuth v obyčajnom texte. Uistite sa, že vaša obrazovka, história shellu a všetky výstupné súbory zostanú súkromné.", + "confirmHeading": "⚠ VAROVANIE: týmto sa exportujú DEŠIFROVANÉ prihlasovacie údaje poskytovateľa v obyčajnom texte", + "confirmBody": "Tento príkaz dešifruje a vypíše/zapíše apiKey, accessToken, refreshToken a\nidToken pre vybrané pripojenia. S výstupom zaobchádzajte ako s tajným údajom.", + "confirmFooter": "Na potvrdenie spustite:\n omniroute auth export --force", + "missingKey": "Na export prihlasovacích údajov sa vyžaduje STORAGE_ENCRYPTION_KEY.", + "notFound": "Pripojenie sa nenašlo: {id}", + "invalidFormat": "Neplatný formát: {format}. Použite json alebo env." + }, + "stream": { + "description": "Streamovať odpoveď chatu s režimami kontroly SSE", + "file": "Načítať prompt zo súboru", + "stdin": "Načítať prompt zo stdin", + "model": "ID modelu (predvolené: auto)", + "system": "Systémový prompt", + "combo": "Vynútiť konkrétnu kombináciu podľa názvu", + "max_tokens": "Maximálny počet tokenov v odpovedi", + "responses_api": "Použiť /v1/responses namiesto /v1/chat/completions", + "raw": "Vypisovať nespracované riadky SSE tak, ako boli prijaté", + "debug": "Vypísať informácie o časovaní jednotlivých častí do stderr", + "save": "Uložiť všetky udalosti SSE do súboru .jsonl", + "error": { + "empty_prompt": "Chyba: prompt je povinný (pozičný argument, --file alebo --stdin)" + } + }, + "usage": { + "description": "Analytika využitia, rozpočty, kvóty a protokoly", + "analytics": { + "description": "Zobraziť agregovanú analytiku využitia", + "period": "Časový rozsah: 1d|7d|30d|90d|ytd|all (predvolené: 30d)", + "provider": "Filtrovať podľa ID poskytovateľa" + }, + "budget": { + "description": "Spravovať rozpočty nákladov", + "set": { + "scope": "Rozsah rozpočtu (predvolené: global)", + "period": "Obdobie rozpočtu: daily|weekly|monthly (predvolené: monthly)" + } + }, + "quota": { + "description": "Zobraziť využitie kvóty poskytovateľa", + "provider": "Filtrovať podľa ID poskytovateľa", + "check": "Zobraziť, či je kvóta dostupná pre novú požiadavku" + }, + "logs": { + "description": "Zobraziť protokoly volaní požiadaviek", + "limit": "Počet položiek protokolu, ktoré sa majú vrátiť (predvolené: 100)", + "search": "Vyhľadávací dopyt na filtrovanie protokolov", + "since": "Vrátiť protokoly od tejto časovej pečiatky", + "follow": "Priebežne sledovať nové položky protokolu", + "api_key": "Filtrovať protokoly podľa kľúča API" + }, + "utilization": { + "description": "Zobraziť metriky využitia kľúča API", + "api_key": "Filtrovať podľa kľúča API" + }, + "history": { + "description": "Zobraziť históriu požiadaviek", + "limit": "Počet položiek histórie (predvolené: 100)" + }, + "proxy_logs": { + "description": "Zobraziť protokoly požiadaviek na úrovni proxy", + "limit": "Počet položiek protokolu proxy (predvolené: 100)" + } + }, + "cost": { + "description": "Zobraziť prehľad nákladov s rozpisom podľa poskytovateľa, modelu, kombinácie alebo kľúča API", + "period": "Časový rozsah: 1d|7d|30d|90d|ytd|all (predvolené: 30d)", + "since": "Dátum začiatku (formát ISO, napr. 2026-01-01) — prepíše --period", + "until": "Dátum konca (formát ISO)", + "group_by": "Zoskupiť výsledky podľa: provider|model|api-key|combo|day (predvolené: provider)", + "api_key_filter": "Filtrovať podľa konkrétneho kľúča API", + "limit": "Maximálny počet riadkov na zobrazenie (predvolené: 100)" + }, + "simulate": { + "description": "Simulácia smerovania nanečisto — zobraziť, ktorí poskytovatelia by boli vybraní bez volania nadradenej služby", + "file": "Načítať celé telo požiadavky zo súboru JSON", + "model": "ID modelu (predvolené: auto)", + "combo": "Vynútiť konkrétnu kombináciu podľa názvu", + "reasoning": "Úroveň úsilia pri uvažovaní (low|medium|high)", + "thinking": "Rozpočet tokenov na rozšírené uvažovanie", + "explain": "Vypísať strom záložných možností a rozsah nákladov do stderr", + "noCombo": "Nenašla sa žiadna zodpovedajúca kombinácia. Nakonfigurujte ju pomocou: omniroute combo create" + }, + "chat": { + "description": "Odoslať jednorazovú chatovú výzvu do OmniRoute", + "file": "Načítať výzvu zo súboru", + "stdin": "Načítať výzvu zo štandardného vstupu", + "system": "Systémová výzva", + "model": "ID modelu (predvolené: auto)", + "max_tokens": "Maximálny počet tokenov v odpovedi", + "temperature": "Teplota vzorkovania (0–2)", + "top_p": "Jadrové vzorkovanie top-p", + "reasoning_effort": "Úroveň intenzity uvažovania (low|medium|high)", + "thinking_budget": "Rozpočet tokenov na rozšírené uvažovanie", + "combo": "Vynútiť konkrétnu kombináciu podľa názvu", + "responses_api": "Použiť /v1/responses namiesto /v1/chat/completions", + "stream": "Streamovať odpoveď priebežne", + "no_history": "Neukladať do ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Chyba: výzva je povinná (pozičný argument, --file alebo --stdin)" + } + }, + "serve": { + "description": "Spustiť server OmniRoute (predvolená akcia)", + "starting": "Spúšťa sa server OmniRoute na porte {port}...", + "ready": "Pripravené na http://localhost:{port}", + "stopping": "Zastavuje sa server (PID {pid})...", + "stopped": "Server bol zastavený.", + "notRunning": "Server nie je spustený.", + "port": "Port na počúvanie (predvolené: 20128)", + "no_open": "Neotvárať prehliadač automaticky", + "daemon": "Spustiť server ako démona na pozadí", + "log": "Zobrazovať protokoly servera priamo", + "no_recovery": "Zakázať automatické reštartovanie pri zlyhaní (režim ladenia)", + "max_restarts": "Maximálny počet reštartov po zlyhaní v priebehu 30 s pred ukončením pokusov (predvolené: 2)", + "tray": "Spustiť v systémovej lište (iba počítačová verzia, voliteľné)", + "no_tray": "Zakázať ikonu v systémovej lište", + "ready_timeout": "Časový limit sondy pripravenosti v ms (tiež OMNIROUTE_READY_TIMEOUT_MS, predvolené: 60000)", + "tls_cert": "Cesta k certifikátu TLS (PEM) na poskytovanie HTTPS (tiež OMNIROUTE_TLS_CERT)", + "tls_key": "Cesta k súkromnému kľúču TLS (PEM) na poskytovanie HTTPS (tiež OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Záloha", + "description": "Vytvoriť zálohu údajov OmniRoute", + "creating": "Vytvára sa záloha...", + "done": "Záloha bola uložená do {path}", + "noFiles": "Žiadne súbory na zálohovanie (databáza nebola inicializovaná)", + "failed": "Zálohovanie zlyhalo: {error}", + "restoring": "Obnovuje sa z {path}...", + "restored": "Obnova bola dokončená.", + "restoreDescription": "Obnoviť zo zálohy", + "listTitle": "Dostupné zálohy", + "noBackups": "Nenašli sa žiadne zálohy.", + "notFound": "Záloha sa nenašla: {name}", + "confirmRestore": "Prepísať aktuálne údaje zálohou z {ts}?", + "createDescription": "Vytvoriť zálohu údajov OmniRoute", + "nameOpt": "Vlastný názov zálohy", + "cloudOpt": "Nahrať zálohu do cloudového úložiska", + "encryptOpt": "Zašifrovať zálohu pomocou AES-256-GCM", + "keyFileOpt": "Cesta k súboru obsahujúcemu šifrovacie heslo", + "excludeOpt": "Vylúčiť súbor zodpovedajúci vzoru (možno opakovať)", + "retentionOpt": "Ponechať iba posledných N záloh", + "passphrasePrompt": "Šifrovacie heslo:", + "noPassphrase": "Pre šifrovanú zálohu sa vyžaduje heslo.", + "cloudFailed": "Upozornenie: nahrávanie do cloudu zlyhalo. Lokálna záloha bola uložená.", + "cloudUploaded": "Cloudová záloha bola nahraná: {url}", + "auto": { + "title": "Plán zálohovania", + "enableDescription": "Povoliť plánované automatické zálohovanie", + "disableDescription": "Zakázať plánované automatické zálohovanie", + "statusDescription": "Zobraziť aktuálny stav plánu zálohovania", + "cronOpt": "Výraz cron pre plán (predvolene: denne o 3:00)", + "enabled": "Automatické zálohovanie je povolené (cron: {cron}).", + "hint": "Plán načíta omniroute serve pri spustení.", + "disabled": "Automatické zálohovanie je zakázané.", + "notConfigured": "Nie je nakonfigurovaný žiadny plán zálohovania." + } + }, + "health": { + "description": "Skontrolovať stav servera a komponentov", + "noServer": "Server nie je spustený. Spustite ho pomocou: omniroute serve", + "title": "Stav", + "status": "Stav: {status}", + "uptime": "Doba prevádzky: {uptime}", + "requests": "Požiadavky (24 h): {count}", + "cost": "Náklady (24 h): ${cost}" + }, + "quota": { + "description": "Zobraziť využitie kvót poskytovateľov", + "noServer": "Server nie je spustený. Spustite ho pomocou: omniroute serve", + "noData": "Nie sú k dispozícii žiadne informácie o kvótach." + }, + "cache": { + "description": "Spravovať vyrovnávaciu pamäť odpovedí", + "noServer": "Server nie je spustený. Spustite ho pomocou: omniroute serve", + "cleared": "Vyrovnávacia pamäť bola vymazaná.", + "clearFailed": "Vymazanie vyrovnávacej pamäte zlyhalo." + }, + "redis": { + "description": "Spustiť miestny kontajner Redis jedným kliknutím (Podman alebo Docker) na ukladanie do vyrovnávacej pamäte a sledovanie kvót OmniRoute" + }, + "test": { + "description": "Otestovať pripojenie k poskytovateľovi", + "noServer": "Server nie je spustený. Spustite ho pomocou: omniroute serve", + "testing": "Testuje sa {provider} / {model}...", + "passed": "Pripojenie bolo úspešné!", + "failed": "Pripojenie zlyhalo: {error}", + "allProvidersOpt": "Otestovať všetkých nakonfigurovaných poskytovateľov", + "latencyOpt": "Zobraziť merania latencie (priem./min./max. ms)", + "repeatOpt": "Zopakovať test N-krát a agregovať výsledky", + "compareOpt": "Modely na porovnanie oddelené čiarkami (napr. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Uložiť výsledky do súboru JSON", + "saved": "Výsledky boli uložené do {path}", + "compareTitle": "Porovnanie modelov", + "compareMinTwo": "Pre --compare sú potrebné aspoň dva modely (oddelené čiarkami)", + "noProviders": "Nie sú nakonfigurovaní žiadni poskytovatelia. Pridajte jedného pomocou: omniroute keys add" + }, + "update": { + "checking": "Kontrolujú sa aktualizácie...", + "upToDate": "Už používate najnovšiu verziu ({version}).", + "available": "Je dostupná aktualizácia: {current} → {latest}", + "installing": "Inštaluje sa {latest}...", + "done": "Aktualizované na {latest}. Reštartujte server, aby sa zmeny prejavili." + }, + "mcp": { + "title": "Server MCP", + "running": "Server MCP je spustený ({transport})", + "stopped": "Server MCP bol zastavený.", + "restarted": "Server MCP bol reštartovaný.", + "stoppedHint": "Zapnite ho spustením príkazu `omniroute mcp enable`.", + "enabled": "Server MCP bol povolený.", + "disabled": "Server MCP bol zakázaný.", + "enable": { + "description": "Povoliť server MCP", + "transport": "Použitý transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "Zakázať server MCP" + }, + "call": { + "description": "Priamo vyvolať nástroj MCP", + "args": "Objekt argumentov JSON (vložený)", + "args_file": "Cesta k súboru s argumentmi JSON", + "stream": "Použiť koncový bod streamovania (/api/mcp/stream)", + "scope": "Požadovaný rozsah (možno opakovať, napr. read:health)" + }, + "scopes": { + "description": "Zobraziť dostupné rozsahy MCP", + "tool": "Zobraziť rozsahy požadované konkrétnym nástrojom" + }, + "tools": { + "description": "Preskúmať nástroje MCP", + "list": { + "description": "Zobraziť všetky nástroje MCP", + "scope": "Filtrovať podľa rozsahu" + }, + "info": { + "description": "Zobraziť metadáta nástroja MCP" + }, + "schema": { + "description": "Zobraziť vstupnú/výstupnú schému JSON nástroja MCP", + "io": "Typ schémy: vstup|výstup (predvolené: vstup)" + } + }, + "audit": { + "description": "Protokol auditu MCP (alias pre audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Zobraziť zoznam dostupných zručností A2A z karty agenta" + }, + "invoke": { + "description": "Vyvolať zručnosť A2A a vrátiť ID úlohy", + "input": "Vstupný objekt JSON", + "input_file": "Cesta k vstupnému súboru JSON", + "wait": "Pred návratom počkať na dokončenie úlohy", + "timeout": "Časový limit čakania na dokončenie v ms (predvolené: 60000)" + }, + "tasks": { + "description": "Spravovať úlohy A2A", + "list": { + "status": "Filtrovať podľa stavu", + "skill": "Filtrovať podľa ID zručnosti" + }, + "watch": { + "description": "Opakovane kontrolovať stav úlohy až do dokončenia" + }, + "stream": { + "description": "Streamovať udalosti vykonávania úlohy prostredníctvom SSE" + }, + "logs": { + "description": "Zobraziť správy a artefakty úlohy" + } + } + }, + "policy": { + "description": "Spravovať autorizačné politiky OmniRoute", + "list": { + "description": "Zobraziť zoznam politík", + "kind": "Filtrovať podľa typu (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrovať podľa rozsahu (global|api-key|provider)" + }, + "get": { + "description": "Získať podrobnosti politiky podľa ID" + }, + "create": { + "description": "Vytvoriť politiku zo súboru JSON", + "file": "Cesta k súboru JSON s politikou" + }, + "update": { + "description": "Aktualizovať politiku zo súboru JSON", + "file": "Cesta k súboru JSON s politikou" + }, + "delete": { + "description": "Odstrániť politiku podľa ID", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "evaluate": { + "description": "Skúšobné vyhodnotenie politiky (ukončovací kód 0=povolené, 4=zamietnuté)", + "api_key": "Kľúč API na vyhodnotenie", + "action": "Akcia na kontrolu (napr. chat, embed, admin)", + "resource": "Cesta k prostriedku alebo identifikátor", + "context": "Dodatočný kontext ako objekt JSON" + }, + "export": { + "description": "Exportovať všetky politiky do súboru JSON" + }, + "import": { + "description": "Importovať politiky zo súboru JSON", + "overwrite": "Prepísať existujúce politiky s rovnakým ID" + } + }, + "compression": { + "description": "Konfigurovať a kontrolovať kompresný proces OmniRoute", + "status": { + "description": "Zobraziť aktuálny stav a nastavenia kompresie" + }, + "configure": { + "description": "Konfigurovať nastavenia kompresie", + "engine": "Kompresný mechanizmus (caveman|rtk|hybrid|none)", + "caveman_agg": "Agresivita Caveman 0.0–1.0", + "rtk_budget": "Rozpočet tokenov RTK", + "language_pack": "Jazykový balík, ktorý sa má aktivovať" + }, + "engine": { + "description": "Získať alebo nastaviť aktívny kompresný mechanizmus" + }, + "combos": { + "description": "Spravovať štatistiky kombinácií kompresie" + }, + "rules": { + "description": "Spravovať pravidlá kompresie", + "add": { + "pattern": "Vzor na porovnávanie (regex alebo field:pattern)", + "action": "Akcia: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Zobraziť dostupné jazykové balíky kompresie" + }, + "preview": { + "description": "Zobraziť náhľad účinku kompresie na požiadavku", + "file": "Cesta k súboru JSON s požiadavkou" + } + }, + "tunnel": { + "title": "Tunely", + "listDescription": "Zobraziť aktívne tunely", + "createDescription": "Vytvoriť tunel", + "created": "Tunel bol vytvorený: {url}", + "stopped": "Tunel bol zastavený.", + "confirmStop": "Zastaviť tunel {id}?", + "stopDescription": "Zastaviť tunel", + "statusDescription": "Zobraziť podrobný stav tunela", + "logsDescription": "Zobraziť protokoly tunela", + "infoDescription": "Zobraziť podrobnosti konfigurácie tunela", + "rotateDescription": "Vygenerovať novú adresu URL tunela", + "tailOpt": "Počet riadkov protokolu, ktoré sa majú zobraziť", + "typeRequired": "Typ tunela je povinný.", + "noLogs": "Nie sú k dispozícii žiadne protokoly.", + "notAvailable": "Informácie o tuneli nie sú k dispozícii.", + "noTunnels": "Žiadne aktívne tunely.", + "infoTitle": "Informácie o tuneli: {type}", + "rotated": "Adresa URL tunela bola zmenená: {url}", + "confirmRotate": "Zmeniť adresu URL tunela {type}? (vygeneruje sa nová adresa URL)" + }, + "stop": { + "description": "Zastaviť server OmniRoute", + "stopping": "Server sa zastavuje (PID {pid})...", + "stopped": "Server bol zastavený.", + "notRunning": "Nie je spustený žiadny server.", + "portFallback": "Nenašiel sa žiadny súbor PID, skúša sa zastavenie podľa portu..." + }, + "restart": { + "description": "Reštartovať server OmniRoute", + "restarting": "Server OmniRoute sa reštartuje..." + }, + "dashboard": { + "description": "Otvoriť ovládací panel OmniRoute v prehliadači", + "opening": "Otvára sa ovládací panel na adrese {url}", + "urlOnly": "Vypísať adresu URL ovládacieho panela bez otvorenia prehliadača", + "tui": "Otvoriť interaktívny ovládací panel TUI (terminálové používateľské rozhranie, 7 kariet)" + }, + "models": { + "description": "Zobraziť dostupné modely (vyžaduje server)", + "search": "Filtrovať modely podľa ID, názvu, poskytovateľa alebo opisu", + "noServer": "Server nie je spustený. Spustite ho pomocou: omniroute serve", + "noModels": "Nenašli sa žiadne modely." + }, + "audit": { + "description": "Prístup k protokolom súladu a auditu MCP", + "source": "Zdroj protokolu: all|compliance|mcp (predvolené: all)", + "since": "Vrátiť záznamy od tejto časovej pečiatky (ISO 8601)", + "until": "Vrátiť záznamy do tejto časovej pečiatky (ISO 8601)", + "tail": { + "description": "Zobraziť nedávne položky auditného protokolu", + "follow": "Priebežne sledovať nové položky (kontrola každé 2 s)", + "limit": "Maximálny počet položiek na zobrazenie (predvolené: 100)" + }, + "search": { + "description": "Vyhľadať položky auditného protokolu podľa kľúčového slova", + "limit": "Maximálny počet výsledkov (predvolené: 200)", + "actor": "Filtrovať podľa ID aktéra", + "action": "Filtrovať podľa názvu akcie" + }, + "export": { + "description": "Exportovať auditný protokol do súboru", + "format": "Výstupný formát: jsonl|csv (predvolené: jsonl)" + }, + "stats": { + "description": "Zobraziť štatistiky auditného protokolu", + "period": "Časové obdobie: 1d|7d|30d (predvolené: 7d)" + }, + "get": { + "description": "Získať jednu položku auditného protokolu podľa ID" + } + }, + "skills": { + "description": "Spravovať zručnosti OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Zobraziť zoznam nainštalovaných zručností", + "type": "Filtrovať podľa typu (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Zobraziť iba povolené zručnosti", + "disabled": "Zobraziť iba zakázané zručnosti", + "api_key": "Filtrovať podľa kľúča API" + }, + "get": { + "description": "Získať podrobnosti o zručnosti podľa ID" + }, + "install": { + "description": "Nainštalovať zručnosť zo súboru alebo URL", + "from_file": "Cesta k súboru s definíciou zručnosti vo formáte JSON", + "from_url": "URL vzdialenej definície zručnosti", + "type": "Typ zručnosti (sandbox|custom|hybrid)", + "enable": "Povoliť zručnosť po inštalácii" + }, + "enable": { + "description": "Povoliť zručnosť podľa ID" + }, + "disable": { + "description": "Zakázať zručnosť podľa ID", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "delete": { + "description": "Odstrániť zručnosť podľa ID", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "execute": { + "description": "Spustiť zručnosť podľa ID", + "input": "Vstupný objekt JSON", + "input_file": "Cesta k vstupnému súboru JSON", + "timeout": "Časový limit vykonania v ms (predvolené: 30000)" + }, + "executions": { + "description": "Zobraziť históriu spustení zručností", + "skill": "Filtrovať podľa ID zručnosti", + "limit": "Maximálny počet výsledkov (predvolené: 50)", + "status": "Filtrovať podľa stavu (running|completed|failed)" + }, + "skillssh": { + "description": "Spravovať zručnosti nainštalované cez SSH" + }, + "marketplace": { + "description": "Prehliadať a inštalovať zručnosti z marketplace" + }, + "mp": { + "search": { + "description": "Vyhľadávať balíky na marketplace", + "category": "Filtrovať podľa kategórie", + "tag": "Filtrovať podľa značky", + "limit": "Maximálny počet výsledkov (predvolené: 30)", + "sort": "Zoradiť podľa: downloads|rating|recent" + }, + "info": { + "description": "Zobraziť podrobnosti o balíku a súbor readme" + }, + "install": { + "description": "Nainštalovať balík z marketplace", + "version": "Verzia balíka (predvolené: latest)", + "enable": "Povoliť po inštalácii", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "categories": { + "description": "Zobraziť zoznam kategórií marketplace" + }, + "featured": { + "description": "Zobraziť odporúčané balíky na marketplace" + } + } + }, + "memory": { + "description": "Spravovať konverzačnú pamäť OmniRoute (FTS5 + vector)", + "search": { + "description": "Vyhľadávať záznamy v pamäti pomocou sémantického dopytu", + "type": "Filtrovať podľa typu pamäte (user|feedback|project|reference)", + "limit": "Maximálny počet výsledkov (predvolené: 20)", + "api_key": "Filtrovať podľa API kľúča", + "token_budget": "Obmedziť celkový počet tokenov vo výsledkoch" + }, + "add": { + "description": "Pridať nový záznam do pamäte", + "content": "Textový obsah pamäte", + "file": "Načítať obsah zo súboru", + "type": "Typ pamäte (predvolené: user)", + "metadata": "Objekt metadát JSON", + "api_key": "Priradiť k API kľúču" + }, + "clear": { + "description": "Odstrániť záznamy pamäte zodpovedajúce filtrom", + "type": "Filtrovať podľa typu", + "older": "Odstrániť záznamy staršie než zadané trvanie (30d, 6m, 1y)", + "api_key": "Filtrovať podľa API kľúča", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "list": { + "description": "Zobraziť zoznam záznamov pamäte bez zoradenia podľa relevancie vyhľadávania", + "type": "Filtrovať podľa typu", + "limit": "Maximálny počet výsledkov (predvolené: 100)", + "api_key": "Filtrovať podľa API kľúča" + }, + "get": { + "description": "Získať jeden záznam pamäte podľa ID" + }, + "delete": { + "description": "Odstrániť záznam pamäte podľa ID", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "health": { + "description": "Zobraziť stav pamäťového subsystému (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Spravovať pripojenia poskytovateľov OAuth", + "providers": { + "description": "Zobraziť zoznam poskytovateľov podporujúcich OAuth a typov ich tokov" + }, + "start": { + "description": "Spustiť autorizačný tok OAuth pre poskytovateľa", + "provider": "ID poskytovateľa (gemini, copilot, cursor, …)", + "no_browser": "Vypísať iba URL — neotvárať prehliadač", + "import_system": "Automaticky importovať prihlasovacie údaje z lokálnej konfigurácie systému", + "social": "Poskytovateľ sociálneho prihlásenia (google|github) — povinné pre kiro", + "timeout": "Časový limit čakania na autorizáciu v ms (predvolené: 300000)" + }, + "status": { + "description": "Zobraziť zoznam aktívnych pripojení OAuth", + "provider": "Filtrovať podľa ID poskytovateľa" + }, + "revoke": { + "description": "Zrušiť pripojenie OAuth", + "provider": "ID poskytovateľa, ktorého pripojenie sa má zrušiť", + "connection_id": "Zrušiť konkrétne pripojenie podľa ID", + "yes": "Preskočiť výzvu na potvrdenie" + } + }, + "cloud": { + "description": "Spravovať úlohy cloudových agentov AI (codex, devin, jules)", + "agents": { + "description": "Zobraziť zoznam dostupných cloudových agentov" + }, + "agent": { + "description": "Spravovať úlohy cloudového agenta {agent}", + "auth": { + "description": "Autorizovať agenta {agent} prostredníctvom OAuth" + } + }, + "task": { + "description": "Spravovať úlohy cloudových agentov", + "create": { + "description": "Vytvoriť novú úlohu agenta", + "title": "Názov úlohy (predvolene prvých 80 znakov zadania)", + "prompt": "Text zadania úlohy", + "prompt_file": "Načítať zadanie zo súboru", + "repo": "URL repozitára, ktorý sa má naklonovať pre úlohu", + "branch": "Názov vetvy, ktorá sa má použiť", + "metadata": "Objekt metadát JSON" + }, + "list": { + "description": "Zobraziť zoznam úloh agenta", + "status": "Filtrovať podľa stavu (running|completed|failed|cancelled)", + "limit": "Maximálny počet výsledkov (predvolené: 50)" + }, + "get": { + "description": "Získať podrobnosti úlohy podľa ID" + }, + "status": { + "description": "Vypísať stav úlohy (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Zrušiť spustenú úlohu", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "approve": { + "description": "Schváliť plán agenta a spustiť vykonávanie" + }, + "message": { + "description": "Odoslať správu spustenej úlohe" + } + }, + "sources": { + "description": "Zobraziť zoznam zdrojových súborov vytvorených úlohou" + } + }, + "eval": { + "description": "Spravovať sady a spustenia vyhodnotení", + "suites": { + "description": "Spravovať sady vyhodnotení", + "list": { + "description": "Zobraziť zoznam evaluačných súprav" + }, + "get": { + "description": "Získať podrobnosti evaluačnej súpravy podľa ID" + }, + "create": { + "description": "Vytvoriť evaluačnú súpravu zo súboru JSON", + "file": "Cesta k súboru JSON s definíciou súpravy" + } + }, + "run": { + "description": "Spustiť evaluačný beh pre súpravu", + "model": "ID modelu na vyhodnotenie (predvolené: auto)", + "combo": "Vynútiť konkrétnu kombináciu podľa názvu", + "concurrency": "Počet súbežných vzoriek (predvolené: 4)", + "tag": "Označiť tento beh značkou na neskoršie filtrovanie", + "watch": "Sledovať priebeh behu až do dokončenia" + }, + "list": { + "description": "Zobraziť zoznam evaluačných behov", + "suite": "Filtrovať podľa ID súpravy", + "status": "Filtrovať podľa stavu", + "since": "Vrátiť behy od tejto časovej pečiatky", + "limit": "Maximálny počet výsledkov (predvolené: 50)" + }, + "get": { + "description": "Získať podrobnosti evaluačného behu podľa ID" + }, + "results": { + "description": "Zobraziť výsledky vzoriek evaluačného behu", + "failed": "Zobraziť iba neúspešné vzorky" + }, + "cancel": { + "description": "Zrušiť prebiehajúci evaluačný beh", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "scorecard": { + "description": "Zobraziť kartu skóre dokončeného evaluačného behu" + } + }, + "webhooks": { + "description": "Spravovať webhooky OmniRoute", + "events": { + "description": "Zobraziť zoznam všetkých dostupných typov udalostí webhookov" + }, + "list": { + "description": "Zobraziť zoznam nakonfigurovaných webhookov" + }, + "get": { + "description": "Získať podrobnosti webhooku podľa ID" + }, + "add": { + "description": "Zaregistrovať nový webhook", + "url": "Cieľová URL", + "events": "Čiarkami oddelený zoznam typov udalostí", + "secret": "Tajný kľúč na podpisovanie HMAC", + "header": "Dodatočná hlavička vo formáte key=value (možno opakovať)", + "no_enabled": "Vytvoriť webhook v zakázanom stave" + }, + "update": { + "description": "Aktualizovať existujúci webhook", + "enabled": "Nastaviť stav povolenia (true|false)" + }, + "remove": { + "description": "Odstrániť webhook", + "yes": "Preskočiť výzvu na potvrdenie" + }, + "test": { + "description": "Odoslať testovaciu udalosť do webhooku", + "event": "Typ udalosti na simuláciu (predvolené: request.completed)" + } + }, "program": { "description": "OmniRoute — Inteligentný AI router s automatickým prepínaním", "version": "Vypísať verziu a skončiť", @@ -26,7 +832,509 @@ "context": "Kontext/profil servera pre tento príkaz", "lang": "Nastaviť jazyk zobrazenia CLI (prepíše OMNIROUTE_LANG)" }, - "redis": { - "description": "Spustiť miestny kontajner Redis jedným kliknutím (Podman alebo Docker) na ukladanie do vyrovnávacej pamäte a sledovanie kvót OmniRoute" + "files": { + "description": "Spravovať súbory (nahrať, zobraziť zoznam, získať, stiahnuť, odstrániť)", + "list": { + "purpose": "Filtrovať podľa účelu", + "limit": "Maximálny počet výsledkov" + }, + "get": { + "description": "Získať metadáta súboru" + }, + "upload": { + "description": "Nahrať súbor", + "purpose": "Účel súboru (batch, assistants, fine-tune)" + }, + "content": { + "description": "Stiahnuť obsah súboru", + "out": "Uložiť do cesty (predvolené: stdout)" + }, + "delete": { + "yes": "Preskočiť potvrdenie" + } + }, + "batches": { + "description": "Spravovať dávkové úlohy kompatibilné s OpenAI", + "list": { + "status": "Filtrovať podľa stavu", + "limit": "Maximálny počet výsledkov" + }, + "create": { + "description": "Vytvoriť dávkovú úlohu", + "inputFile": "ID vstupného súboru", + "endpoint": "Cieľový koncový bod", + "window": "Časové okno dokončenia", + "metadata": "Pridať metadáta kľúč=hodnota" + }, + "submit": { + "description": "Nahrať súbor JSONL a vytvoriť dávku", + "jsonl": "Cesta k súboru JSONL", + "endpoint": "Cieľový koncový bod", + "wait": "Počkať na dokončenie" + }, + "cancel": { + "yes": "Preskočiť potvrdenie" + }, + "wait": { + "timeout": "Časový limit v ms" + }, + "output": { + "out": "Uložiť výstup do cesty" + }, + "errors": { + "out": "Uložiť chyby do cesty" + } + }, + "translator": { + "description": "Prekladať telá požiadaviek medzi formátmi LLM", + "detect": { + "description": "Zistiť formát tela" + }, + "translate": { + "description": "Konvertovať telo z jedného formátu do druhého" + }, + "send": { + "description": "Preložiť a odoslať nadradenému serveru" + }, + "stream": { + "description": "Prúdovo prekladať telo požiadavky" + }, + "from": "Zdrojový formát (openai|anthropic|gemini|cohere)", + "to": "Cieľový formát (openai|anthropic|gemini|cohere)", + "file": "Cesta k súboru JSON s telom požiadavky", + "out": "Uložiť výstup do súboru", + "model": "Prepísať model", + "history": { + "limit": "Maximálny počet výsledkov" + } + }, + "pricing": { + "description": "Spravovať cenové údaje modelov", + "sync": { + "description": "Synchronizovať ceny zo zdrojov upstreamu", + "provider": "Filtrovať podľa poskytovateľa", + "force": "Vynútiť opätovnú synchronizáciu" + }, + "list": { + "provider": "Filtrovať podľa poskytovateľa", + "model": "Filtrovať podľa modelu", + "limit": "Maximálny počet výsledkov" + }, + "defaults": { + "description": "Spravovať predvolené ceny", + "input": "Náklady na vstup na 1 mil. tokenov (USD)", + "output": "Náklady na výstup na 1 mil. tokenov (USD)", + "cacheRead": "Náklady na čítanie z vyrovnávacej pamäte na 1 mil. tokenov (USD)", + "cacheWrite": "Náklady na zápis do vyrovnávacej pamäte na 1 mil. tokenov (USD)" + }, + "diff": { + "description": "Zobraziť odchýlku od upstream cien", + "model": "Filtrovať podľa modelu" + } + }, + "radar": { + "description": "Skontrolovať a synchronizovať lokálne kanály katalógu Radar", + "status": "Zobraziť lokálne nastavenia Radar a stav vyrovnávacej pamäte kanálov", + "sync": "Synchronizovať katalóg, odporúčania, ponuky a Intel prostredníctvom lokálneho servera" + }, + "resilience": { + "description": "Skontrolovať a spravovať mechanizmy odolnosti", + "status": { + "provider": "Filtrovať podľa poskytovateľa" + }, + "breakers": { + "provider": "Filtrovať podľa poskytovateľa" + }, + "cooldowns": { + "provider": "Filtrovať podľa poskytovateľa", + "connectionId": "Filtrovať podľa ID pripojenia" + }, + "lockouts": { + "provider": "Filtrovať podľa poskytovateľa", + "model": "Filtrovať podľa modelu" + }, + "reset": { + "description": "Resetovať stav ističa/čakacej lehoty", + "provider": "Poskytovateľ na resetovanie", + "connectionId": "ID pripojenia na resetovanie", + "model": "Model, ktorému sa má resetovať blokovanie", + "allCooldowns": "Resetovať všetky čakacie lehoty poskytovateľa", + "yes": "Preskočiť potvrdenie" + }, + "profile": { + "description": "Spravovať profil odolnosti", + "name": "Názov profilu" + }, + "config": { + "description": "Spravovať konfiguráciu odolnosti", + "threshold": "Prah zlyhaní", + "resetTimeout": "Časový limit resetovania v ms", + "baseCooldown": "Základná čakacia lehota v ms" + } + }, + "nodes": { + "description": "Spravovať uzly poskytovateľov (koncové body)", + "list": { + "provider": "Filtrovať podľa poskytovateľa", + "enabled": "Zobraziť iba povolené uzly" + }, + "add": { + "provider": "Názov poskytovateľa", + "baseUrl": "Základná URL adresa uzla", + "name": "Názov uzla", + "weight": "Váha vyvažovania záťaže", + "region": "Značka regiónu", + "authHeader": "Vlastná autorizačná hlavička (key=value)" + }, + "update": { + "baseUrl": "Nová základná URL adresa", + "name": "Nový názov", + "weight": "Nová váha", + "region": "Nový región", + "enabled": "Povoliť alebo zakázať (true|false)" + }, + "remove": { + "yes": "Preskočiť potvrdenie" + }, + "validate": { + "baseUrl": "URL na overenie", + "provider": "Poskytovateľ, voči ktorému sa má vykonať overenie" + }, + "test": { + "description": "Odoslať testovaciu požiadavku uzlu" + }, + "metrics": { + "description": "Zobraziť metriky uzla", + "period": "Časové obdobie (napr. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurovať kanál kontextového inžinierstva (Caveman, RTK)", + "analytics": { + "period": "Časové obdobie (napr. 7d, 30d)" + }, + "caveman": { + "description": "Spravovať kompresor kontextu Caveman", + "config": { + "description": "Zobraziť alebo aktualizovať konfiguráciu Caveman", + "aggressiveness": "Agresivita 0.0–1.0", + "maxShrinkPct": "Maximálne percento zmenšenia", + "preserveTags": "Značky oddelené čiarkami, ktoré sa majú zachovať" + } + }, + "rtk": { + "description": "Spravovať optimalizátor kontextu RTK", + "config": { + "description": "Zobraziť alebo aktualizovať konfiguráciu RTK", + "tokenBudget": "Rozpočet tokenov pre RTK", + "reservePct": "Percento rezervy" + }, + "filters": { + "description": "Spravovať filtre RTK", + "pattern": "Vzor filtra (regulárny výraz)", + "priority": "Priorita filtra (predvolené: 100)", + "action": "Akcia filtra: drop|shrink|replace", + "yes": "Preskočiť potvrdenie" + }, + "test": { + "file": "Cesta k súboru JSON s požiadavkou" + } + }, + "combos": { + "description": "Správa kombinácií zohľadňujúca kontext" + } + }, + "sessions": { + "description": "Kontrolovať a spravovať aktívne relácie", + "list": { + "user": "Filtrovať podľa používateľa", + "kind": "Filtrovať podľa typu (dashboard|api-key|mcp|a2a)", + "active": "Zobraziť iba aktívne relácie", + "limit": "Maximálny počet výsledkov (predvolené: 100)" + }, + "expire": { + "yes": "Preskočiť potvrdenie" + }, + "expireAll": { + "user": "Používateľ, ktorého relácie sa majú ukončiť", + "yes": "Preskočiť potvrdenie" + } + }, + "tags": { + "description": "Spravovať značky zdrojov", + "add": { + "color": "Farba značky (hexadecimálny kód alebo názov)", + "description": "Popis značky" + }, + "remove": { + "yes": "Preskočiť potvrdenie" + }, + "assign": { + "tag": "Názov značky", + "to": "Cieľový zdroj vo formáte typ:id (napr. provider:openai)" + }, + "unassign": { + "tag": "Názov značky", + "from": "Zdrojový zdroj vo formáte typ:id" + } + }, + "openapi": { + "description": "Prístup k špecifikácii OmniRoute OpenAPI a jej testovanie", + "dump": { + "description": "Vypísať špecifikáciu OpenAPI na štandardný výstup alebo do súboru", + "format": "Výstupný formát: yaml|json (predvolené: yaml)", + "out": "Uložiť do cesty k súboru" + }, + "validate": { + "description": "Overiť špecifikáciu OpenAPI" + }, + "try": { + "description": "Otestovať koncový bod API prostredníctvom špecifikácie", + "method": "Metóda HTTP (predvolené: GET)", + "body": "Cesta k súboru JSON s telom požiadavky", + "query": "Parameter dopytu vo formáte kľúč=hodnota (možno opakovať)", + "header": "Hlavička vo formáte kľúč=hodnota (možno opakovať)" + }, + "endpoints": { + "description": "Zobraziť všetky koncové body API", + "search": "Filtrovať podľa cesty alebo súhrnu" + }, + "paths": { + "description": "Zobraziť všetky cesty API" + } + }, + "combo": { + "title": "Kombinácie", + "switched": "Aktívna kombinácia: {name}", + "created": "Kombinácia bola vytvorená: {name}", + "deleted": "Kombinácia bola odstránená: {name}", + "noCombos": "Nie sú nakonfigurované žiadne kombinácie.", + "confirmDelete": "Odstrániť kombináciu {name}?", + "suggest": { + "description": "Navrhnúť najlepšiu kombináciu pre úlohu pomocou hodnotenia AI", + "task": "Opis úlohy", + "maxCost": "Maximálne náklady na požiadavku v USD", + "maxLatencyMs": "Maximálna latencia v milisekundách", + "weights": "Váhy hodnotenia vo formáte JSON, napr. {\"latency\":0.7,\"cost\":0.3}", + "top": "Počet najlepších kandidátov na zobrazenie (predvolené: 5)", + "explain": "Vypísať odôvodnenie na štandardný chybový výstup", + "switch": "Aktivovať najvyššie hodnotenú kombináciu" + } + }, + "oneproxy": { + "description": "Spravovať nadradený fond OneProxy", + "stats": { + "provider": "Filtrovať podľa poskytovateľa", + "period": "Časové obdobie (predvolené: 24h)" + }, + "fetch": { + "description": "Načítať proxy servery z fondu", + "count": "Počet proxy serverov na načítanie (predvolené: 1)", + "type": "Typ proxy servera: http|socks5 (predvolené: http)" + }, + "rotate": { + "description": "Vynútiť rotáciu proxy servera", + "provider": "Poskytovateľ, pre ktorého sa má vykonať rotácia", + "connectionId": "Konkrétne ID pripojenia na rotáciu" + }, + "config": { + "description": "Zobraziť alebo aktualizovať konfiguráciu OneProxy", + "enabled": "Povoliť fond proxy serverov (true|false)", + "poolSize": "Veľkosť fondu", + "providerSource": "URL poskytovateľa proxy", + "rotationPolicy": "Politika rotácie: sticky|per-request|periodic" + }, + "pool": { + "description": "Zobraziť aktuálny fond proxy serverov s metrikami" + } + }, + "open": { + "description": "Otvoriť konkrétnu stránku ovládacieho panela OmniRoute v prehliadači", + "url": "Vypísať iba URL, neotvárať prehliadač" + }, + "telemetry": { + "description": "Prístup k agregovaným telemetrickým údajom", + "summary": { + "description": "Zobraziť súhrn agregovanej telemetrie", + "period": "Časové obdobie: 24h|7d|30d (predvolené: 24h)", + "compareTo": "Porovnať s predchádzajúcim obdobím" + }, + "export": { + "description": "Exportovať telemetrické udalosti do JSONL", + "out": "Cesta k výstupnému súboru (predvolené: telemetry.jsonl)", + "period": "Časové obdobie exportu (predvolené: 7d)" + } + }, + "sync": { + "description": "Synchronizovať konfiguráciu medzi inštanciami OmniRoute", + "push": { + "description": "Odoslať konfiguráciu do cloudu alebo vzdialenej inštancie", + "target": "Cieľ (cloud alebo context:name)", + "bundle": "Časti balíka na synchronizáciu", + "dryRun": "Zobraziť náhľad bez použitia zmien" + }, + "pull": { + "description": "Načítať konfiguráciu z cloudu alebo vzdialenej inštancie", + "source": "Zdroj (cloud alebo context:name)", + "merge": "Zlúčiť s existujúcou konfiguráciou", + "replace": "Nahradiť existujúcu konfiguráciu", + "dryRun": "Zobraziť náhľad bez použitia zmien" + }, + "diff": { + "source": "Zdrojový kontext", + "target": "Cieľový kontext" + }, + "bundle": { + "description": "Exportovať konfiguráciu ako súbor balíka", + "include": "Časti, ktoré sa majú zahrnúť (oddelené čiarkami)" + }, + "import": { + "description": "Importovať súbor balíka", + "dryRun": "Overiť bez použitia zmien" + }, + "initialize": { + "fromCloud": "Inicializovať z cloudovej zálohy" + }, + "tokens": { + "description": "Spravovať synchronizačné tokeny", + "create": { + "name": "Názov tokenu", + "scope": "Rozsah tokenu", + "ttl": "TTL tokenu (napr. 30d)" + }, + "revoke": { + "yes": "Preskočiť potvrdenie" + } + }, + "resolve": { + "description": "Interaktívne vyriešiť konflikty synchronizácie" + } + }, + "config": { + "contexts": { + "description": "Spravovať kontexty/profily servera (pridať, použiť, zobraziť zoznam, zobraziť, odstrániť, premenovať, exportovať, importovať)" + }, + "lang": { + "description": "Spravovať jazyk zobrazenia CLI", + "getDescription": "Zobraziť kód aktuálne aktívneho jazyka", + "setDescription": "Nastaviť jazyk zobrazenia a uložiť ho do konfigurácie", + "listDescription": "Zobraziť zoznam všetkých dostupných jazykov", + "listTitle": "Dostupné jazyky", + "current": "Jazyk: {code} ({name})", + "saved": "Jazyk bol nastavený na {code} ({name}).", + "noCode": "Vyžaduje sa kód jazyka. Dostupné kódy zobrazíte spustením príkazu 'omniroute config lang list'.", + "unknown": "Neznámy kód jazyka: {code}. Dostupné kódy zobrazíte spustením príkazu 'omniroute config lang list'.", + "alreadySet": "Jazyk je už nastavený na {code}.", + "envHint": "Tip: vo svojom prostredí môžete nastaviť aj OMNIROUTE_LANG={code}." + } + }, + "completion": { + "description": "Vygenerovať alebo nainštalovať skripty automatického dopĺňania pre shell", + "zsh": "Vypísať skript automatického dopĺňania pre zsh", + "bash": "Vypísať skript automatického dopĺňania pre bash", + "fish": "Vypísať skript automatického dopĺňania pre fish", + "install": "Globálne nainštalovať skript automatického dopĺňania pre rozpoznaný shell", + "refresh": "Obnoviť vyrovnávaciu pamäť kombinácií, poskytovateľov a modelov" + }, + "logs": { + "description": "Streamovať alebo exportovať záznamy požiadaviek", + "follow": "Streamovať záznamy v reálnom čase", + "filter": "Filtrovať podľa úrovne (error,warn,info) — hodnoty oddelené čiarkami", + "lines": "Počet riadkov na načítanie", + "timeout": "Časový limit pripojenia v ms", + "baseUrl": "Základná URL adresa API OmniRoute", + "requestId": "Filtrovať podľa ID požiadavky", + "apiKey": "Filtrovať podľa kľúča API", + "combo": "Filtrovať podľa názvu kombinácie", + "status": "Filtrovať podľa stavového kódu HTTP", + "durationMin": "Minimálne trvanie požiadavky v ms", + "durationMax": "Maximálne trvanie požiadavky v ms", + "export": "Uložiť záznamy do súboru (json/jsonl/csv)", + "exported": "Záznamy boli uložené do {path}", + "stopped": "Streamovanie záznamov bolo zastavené.", + "streamError": "Chyba streamovania záznamov: {message}" + }, + "tray": { + "description": "Ovládať ikonu v systémovej lište", + "show": "Zobraziť ikonu v systémovej lište (ak je server spustený s --tray)", + "hide": "Skryť ikonu v systémovej lište", + "quit": "Ukončiť OmniRoute prostredníctvom systémovej lišty" + }, + "autostart": { + "description": "Spravovať automatické spustenie OmniRoute pri štarte systému (Linux: používateľská služba systemd)", + "enable": "Povoliť automatické spustenie pri štarte systému", + "disable": "Zakázať automatické spustenie pri štarte systému", + "toggle": "Prepnúť automatické spustenie pri štarte systému", + "status": "Zobraziť stav automatického spustenia" + }, + "runtime": { + "description": "Spravovať natívne závislosti behového prostredia", + "check": "Skontrolovať stav natívnych závislostí v adresári behového prostredia", + "repair": "Preinštalovať natívne závislosti v adresári behového prostredia", + "repair_force": "Vynútiť preinštalovanie, aj keď sú platné", + "clean": "Odstrániť adresár behového prostredia (uvoľní miesto na disku)", + "clean_yes": "Preskočiť potvrdenie" + }, + "repl": { + "description": "Interaktívny viackolový REPL s LLM", + "model": "Model, ktorý sa má použiť (predvolené: automaticky)", + "combo": "Názov kombinácie, ktorá sa má použiť", + "system": "Systémová výzva", + "resume": "Pokračovať v uloženej relácii podľa názvu" + }, + "plugin": { + "description": "Spravovať doplnky CLI (omniroute-cmd-*)", + "list": "Zobraziť nainštalované doplnky", + "install": "Nainštalovať doplnok z npm alebo lokálnej cesty", + "remove": "Odstrániť nainštalovaný doplnok", + "info": "Zobraziť podrobnosti o nainštalovanom doplnku", + "search": "Vyhľadať dostupné doplnky v registri npm", + "update": "Aktualizovať nainštalované doplnky", + "scaffold": "Vytvoriť základnú štruktúru nového doplnku" + }, + "launch": { + "description": "Spustiť Claude Code nasmerovaný na OmniRoute (lokálne alebo vzdialene, s --profile)", + "token": "Token, ktorý má klient Claude odosielať (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute nie je dostupný na porte {port}. Spustite ho pomocou príkazu 'omniroute serve'.", + "notFound": "CLI 'claude' sa nenašlo v PATH." + }, + "run": { + "description": "Spustiť podporovaný cieľ CLI prostredníctvom OmniRoute" + }, + "setupClaude": { + "description": "Vygenerovať profily Claude Code v ~/.claude/profiles z katalógu modelov OmniRoute" + }, + "connect": { + "description": "Pripojiť sa k vzdialenému serveru OmniRoute a prejsť do vzdialeného režimu" + }, + "tokens": { + "description": "Spravovať tokeny prístupu CLI s obmedzeným rozsahom (vzdialený režim)" + }, + "configure": { + "description": "Vybrať poskytovateľa a model z aktívneho servera a nakonfigurovať podporované lokálne CLI" + }, + "launchCodex": { + "description": "Spustiť Codex CLI nasmerovaný na OmniRoute (lokálne alebo na vzdialenom VPS)" + }, + "setupCodex": { + "description": "Vygenerovať súbory profilov v ~/.codex zo živého katalógu modelov OmniRoute" + }, + "packs": { + "description": "Spravovať voliteľné balíky behového prostredia (ML / automatizácia prehliadača)", + "listDescription": "Zobraziť voliteľné balíky a stav ich inštalácie", + "installDescription": "Nainštalovať voliteľný balík do DATA_DIR", + "verifyDescription": "Overiť nainštalované balíky podľa dodaného indexu kontrolných súčtov", + "removeDescription": "Odstrániť nainštalovaný voliteľný balík", + "sourceOpt": "Adresár obsahujúci dáta balíkov a index balíkov", + "warnNoIndex": "optional-packs.index.json sa nenašiel — inštalácia ani overenie nie sú v tejto pracovnej kópii dostupné (balíky pre desktop ho obsahujú)", + "errUnknown": "neznámy balík: {name}", + "errNoIndex": "index balíkov sa nenašiel; zadajte --source odkazujúci na adresár s dátami balíka (balíky pre desktop ho obsahujú vedľa aplikácie)", + "installed": "balík „{name}“ bol nainštalovaný a overený v adresári {dir}", + "restartHint": "reštartujte server OmniRoute (alebo desktopovú aplikáciu), aby modul runtime načítal balík", + "removed": "balík „{name}“ bol odstránený", + "notInstalled": "balík „{name}“ nebol nainštalovaný", + "verifyOk": "všetky nainštalované balíky boli overené", + "verifyFailed": "overenie zlyhalo pri tomto počte balíkov: {count}", + "noneInstalled": "nie sú nainštalované žiadne voliteľné balíky" } } diff --git a/bin/cli/locales/sl.json b/bin/cli/locales/sl.json index d103058bb3..8f1ce83d84 100644 --- a/bin/cli/locales/sl.json +++ b/bin/cli/locales/sl.json @@ -256,6 +256,7 @@ "max_restarts": "Največje število ponovnih zagonov po sesutju v 30 s, preden se poskušanje opusti (privzeto: 2)", "tray": "Zaženi v sistemski vrstici (samo za namizne sisteme, po izbiri)", "no_tray": "Onemogoči ikono sistemske vrstice", + "ready_timeout": "Časovna omejitev preverjanja pripravljenosti v ms (tudi OMNIROUTE_READY_TIMEOUT_MS, privzeto 60000)", "tls_cert": "Pot do potrdila TLS (PEM) za streženje prek HTTPS (tudi OMNIROUTE_TLS_CERT)", "tls_key": "Pot do zasebnega ključa TLS (PEM) za streženje prek HTTPS (tudi OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Strežnik MCP deluje ({transport})", "stopped": "Strežnik MCP je ustavljen.", "restarted": "Strežnik MCP je znova zagnan.", + "stoppedHint": "Za vklop zaženite `omniroute mcp enable`.", + "enabled": "Strežnik MCP je omogočen.", + "disabled": "Strežnik MCP je onemogočen.", + "enable": { + "description": "Omogoči strežnik MCP", + "transport": "Prenos, ki naj se uporabi: stdio|sse|streamable-http" + }, + "disable": { + "description": "Onemogoči strežnik MCP" + }, "call": { "description": "Neposredno prikliči orodje MCP", "args": "Objekt argumentov JSON (v vrstici)", diff --git a/bin/cli/locales/sr.json b/bin/cli/locales/sr.json index 7fb09efc35..f1eecde4de 100644 --- a/bin/cli/locales/sr.json +++ b/bin/cli/locales/sr.json @@ -256,6 +256,7 @@ "max_restarts": "Maksimalan broj ponovnih pokretanja pri padu u toku 30s pre odustajanja (podrazumevano: 2)", "tray": "Покретање у системској траци (само десктоп, опционо)", "no_tray": "Онемогући икону у системској траци", + "ready_timeout": "Временско ограничење провере спремности у ms (такође OMNIROUTE_READY_TIMEOUT_MS, подразумевано 60000)", "tls_cert": "Путања до TLS сертификата (PEM) за HTTPS (такође OMNIROUTE_TLS_CERT)", "tls_key": "Путања до TLS приватног кључа (PEM) за HTTPS (такође OMNIROUTE_TLS_KEY)" }, @@ -300,7 +301,7 @@ "description": "Провери здравље сервера и статус компоненти", "noServer": "Сервер није покренут. Покрените са: omniroute serve", "title": "Здравље", - "status": "Status: {status}", + "status": "Статус: {status}", "uptime": "Vreme rada: {uptime}", "requests": "Zahtevi (24h): {count}", "cost": "Trošak (24h): ${cost}" @@ -347,6 +348,16 @@ "running": "MCP server je pokrenut ({transport})", "stopped": "MCP server je zaustavljen.", "restarted": "MCP server je ponovo pokrenut.", + "stoppedHint": "Покрените `omniroute mcp enable` да бисте га укључили.", + "enabled": "MCP сервер је омогућен.", + "disabled": "MCP сервер је онемогућен.", + "enable": { + "description": "Омогући MCP сервер", + "transport": "Протокол за пренос: stdio|sse|streamable-http" + }, + "disable": { + "description": "Онемогући MCP сервер" + }, "call": { "description": "Direktno pozovi MCP alat", "args": "JSON objekat argumenata (inline)", @@ -810,7 +821,7 @@ } }, "program": { - "description": "OmniRoute — Smart AI Router with Auto Fallback", + "description": "OmniRoute — паметни AI рутер са аутоматским пребацивањем на резервну опцију", "version": "Прикажи верзију и изађи", "output": "Формат излаза (table, json, jsonl, csv)", "quiet": "Сакрий небитан излаз", diff --git a/bin/cli/locales/sv.json b/bin/cli/locales/sv.json index 68097eb946..b5e445520e 100644 --- a/bin/cli/locales/sv.json +++ b/bin/cli/locales/sv.json @@ -14,6 +14,812 @@ "jsonOpt": "Utdata som JSON", "yesOpt": "Hoppa över bekräftelse" }, + "setup": { + "title": "OmniRoute-konfiguration", + "passwordPrompt": "Administratörslösenord", + "providerPrompt": "Standardleverantör (lämna tomt för att hoppa över)", + "done": "Konfigurationen är klar", + "passwordSet": "Administratörslösenordet har konfigurerats", + "providerSet": "Leverantör konfigurerad: {name}", + "testingProvider": "Testar anslutningen till leverantören: {name}", + "testPassed": "Leverantörstestet lyckades", + "testFailed": "Leverantörstestet misslyckades: {error}", + "loginEnabled": "Inloggning: aktiverad (lösenordet har uppdaterats)", + "loginDisabled": "Inloggning: inaktiverad", + "providerInfo": "Leverantör: {info}", + "opencode": "Installera och konfigurera det medföljande @omniroute/opencode-plugin för OpenCode" + }, + "doctor": { + "title": "OmniRoute-diagnostik", + "dbOk": "Databas: OK ({path})", + "dbMissing": "Databas: inte initierad – kör `omniroute setup`", + "portOk": "Port {port}: tillgänglig", + "portConflict": "Port {port}: används av en annan process", + "encryptionOk": "Krypteringsnyckel: konfigurerad", + "encryptionMissing": "Krypteringsnyckel saknas – kör `omniroute setup`", + "allGood": "Alla kontroller godkändes.", + "warnings": "{count} varning(ar) – se ovan." + }, + "providers": { + "title": "Leverantörer", + "noProviders": "Inga leverantörer har konfigurerats. Kör: omniroute setup", + "testing": "Testar {name}...", + "available": "{count} leverantör(er) tillgänglig(a)", + "connected": "Ansluten", + "disconnected": "Frånkopplad", + "validationFailed": "Valideringen misslyckades: {error}", + "metrics": { + "description": "Visa prestandamått för leverantörer (svarstid, lyckandefrekvens, kostnad)", + "provider": "Filtrera efter leverantörs-ID", + "connection_id": "Filtrera efter anslutnings-ID", + "period": "Tidsperiod: 1h|6h|24h|7d|30d (standard: 24h)", + "metric": "Fokusera på ett specifikt mätvärdesfält", + "sort": "Sortera efter fält (fallande)", + "limit": "Maximalt antal rader (standard: 50)", + "watch": "Uppdatera var 5:e sekund (liveläge)", + "compare": "Kommaseparerade leverantörs-ID:n för jämförelse sida vid sida" + }, + "metric_single": { + "description": "Hämta ett enskilt mätvärde för en specifik anslutning" + }, + "rotate": { + "description": "Rotera den överordnade API-nyckeln för en leverantörsanslutning", + "newKeyOpt": "Nytt API-nyckelvärde (undvik: använd helst --from-env)", + "fromEnvOpt": "Läs ny nyckel från miljövariabeln VAR", + "oauthOpt": "Starta OAuth-flödet för återautentisering i stället", + "skipTestOpt": "Hoppa över anslutningstestet efter rotationen", + "dryRunOpt": "Visa vad som skulle ändras utan att skriva något", + "confirmPrompt": "Ersätt API-nyckeln för anslutningen \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Skulle rotera nyckeln för \"{name}\" ({id}). Inga ändringar gjordes.", + "oauthHint": "OAuth-anslutning — kör: omniroute oauth {provider}", + "envVarEmpty": "Miljövariabeln {var} är inte angiven eller är tom.", + "success": "Nyckeln har roterats för \"{name}\". Kör `providers test {id}` för att verifiera.", + "testPassed": "Testet efter rotationen lyckades.", + "testFailed": "Testet efter rotationen misslyckades: {error}" + }, + "status": { + "description": "Visa nyckelstatus för alla leverantörsanslutningar (ålder, utgångstid, vänteperiod)", + "providerOpt": "Filtrera efter leverantörsnamn", + "header": "ID Leverantör Namn Utgång Status Teststatus Vänteperiod till", + "noData": "Det finns inga data om leverantörsanslutningar.", + "requiresServer": "providers status kräver att OmniRoute-servern körs." + } + }, + "keys": { + "title": "API-nycklar", + "addDescription": "Lägg till eller uppdatera en API-nyckel för en leverantör", + "listDescription": "Lista alla konfigurerade API-nycklar", + "removeDescription": "Ta bort en API-nyckel för en leverantör", + "regenerateDescription": "Generera en ny OmniRoute API-nyckel", + "revokeDescription": "Återkalla en OmniRoute API-nyckel", + "revealDescription": "Visa det omaskerade API-nyckelvärdet", + "usageDescription": "Visa senaste användningen av en API-nyckel", + "usageLimitOpt": "Antal senaste förfrågningar", + "rotateDescription": "Generera en ny nyckel och ogiltigförklara den gamla", + "graceOpt": "Respittid (ms) innan den gamla nyckeln ogiltigförklaras", + "stdinOpt": "Läs API-nyckeln från stdin i stället för från argumentet", + "added": "Nyckeln har lagts till för {provider}.", + "removed": "Nyckeln har tagits bort.", + "listed": "{count} nyckel/nycklar.", + "noKeys": "Inga nycklar har konfigurerats.", + "noUsage": "Inga användningsdata hittades.", + "confirmRemove": "Ta bort nyckeln {id}?", + "confirmRegenerate": "Generera om nyckeln {id}?", + "confirmRevoke": "Återkalla nyckeln {id}?", + "confirmRotate": "Rotera nyckeln {id}? (den gamla nyckeln ogiltigförklaras efter respittiden)", + "regenerated": "Ny nyckel har genererats. Ny nyckel: {key}", + "revoked": "Nyckeln {id} har återkallats.", + "rotated": "Nyckeln {id} har roterats. Nytt nyckel-ID: {newId}", + "revealWarning": "⚠ Detta visar hela den omaskerade nyckeln. Se till att ingen annan kan se din skärm.", + "providerRequired": "Leverantör krävs.", + "keyRequired": "API-nyckel krävs.", + "stdinEmpty": "Ingen API-nyckel angavs via stdin.", + "unknownProvider": "Okänd leverantör: {provider}", + "policy": { + "title": "Nyckelpolicy", + "showDescription": "Visa frekvens-/kostnadspolicy för en nyckel", + "setDescription": "Ange frekvens-/kostnadspolicy för en nyckel", + "rateLimitOpt": "Maximalt antal begäranden per minut", + "maxCostOpt": "Maximal kostnad per dag (USD)", + "allowedModelsOpt": "Kommaseparerad lista över tillåtna modeller", + "nothingToSet": "Inga policyfält har angetts. Använd --rate-limit, --max-cost eller --allowed-models.", + "updated": "Policyn har uppdaterats." + }, + "expiration": { + "title": "Nyckelns utgångsdatum", + "listDescription": "Lista nycklar som snart upphör att gälla", + "daysOpt": "Visa nycklar som upphör att gälla inom N dagar", + "none": "Inga nycklar upphör att gälla inom {days} dagar.", + "listTitle": "Nycklar som upphör att gälla inom {days} dagar:" + } + }, + "authExport": { + "description": "Exportera DEKRYPTERADE leverantörsuppgifter (endast lokalt, utdata i klartext)", + "idOpt": "Exportera endast anslutningen som matchar detta id/namn/denna leverantör", + "formatOpt": "Utdataformat: json eller env", + "outOpt": "Skriv utdata till en fil i stället för stdout (skrivs med behörigheten 0600)", + "forceOpt": "Bekräfta att du förstår att detta skriver ut/sparar hemligheter i klartext", + "warning": "⚠ Detta skriver ut/sparar DEKRYPTERADE API-nycklar och OAuth-token i klartext. Se till att din skärm, skikhistorik och eventuella utdatafiler förblir privata.", + "confirmHeading": "⚠ VARNING: detta exporterar DEKRYPTERADE leverantörsuppgifter i klartext", + "confirmBody": "Detta kommando dekrypterar och skriver ut/sparar apiKey, accessToken, refreshToken och\nidToken för de valda anslutningarna. Behandla dessa utdata som en hemlighet.", + "confirmFooter": "Bekräfta genom att köra:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY krävs för att exportera autentiseringsuppgifter.", + "notFound": "Anslutningen hittades inte: {id}", + "invalidFormat": "Ogiltigt format: {format}. Använd json eller env." + }, + "stream": { + "description": "Strömma ett chattsvar med SSE-inspektionslägen", + "file": "Läs prompt från fil", + "stdin": "Läs prompt från stdin", + "model": "Modell-ID (standard: auto)", + "system": "Systemprompt", + "combo": "Tvinga en specifik kombination efter namn", + "max_tokens": "Maximalt antal token i svaret", + "responses_api": "Använd /v1/responses i stället för /v1/chat/completions", + "raw": "Skriv ut råa SSE-rader när de tas emot", + "debug": "Skriv tidsinformation per chunk till stderr", + "save": "Spara alla SSE-händelser i en .jsonl-fil", + "error": { + "empty_prompt": "Fel: prompt krävs (positionsargument, --file eller --stdin)" + } + }, + "usage": { + "description": "Användningsanalys, budgetar, kvoter och loggar", + "analytics": { + "description": "Visa aggregerad användningsanalys", + "period": "Tidsintervall: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "provider": "Filtrera efter leverantörs-ID" + }, + "budget": { + "description": "Hantera kostnadsbudgetar", + "set": { + "scope": "Budgetomfattning (standard: global)", + "period": "Budgetperiod: daily|weekly|monthly (standard: monthly)" + } + }, + "quota": { + "description": "Visa användning av leverantörskvot", + "provider": "Filtrera efter leverantörs-ID", + "check": "Visa om kvoten är tillgänglig för en ny begäran" + }, + "logs": { + "description": "Visa anropsloggar för begäranden", + "limit": "Antal loggposter som ska returneras (standard: 100)", + "search": "Sökfråga för att filtrera loggar", + "since": "Returnera loggar sedan denna tidsstämpel", + "follow": "Följ kontinuerligt nya loggposter", + "api_key": "Filtrera loggar efter API-nyckel" + }, + "utilization": { + "description": "Visa användningsmått för API-nycklar", + "api_key": "Filtrera efter API-nyckel" + }, + "history": { + "description": "Visa begärandehistorik", + "limit": "Antal historikposter (standard: 100)" + }, + "proxy_logs": { + "description": "Visa begärandeloggar på proxynivå", + "limit": "Antal proxyloggposter (standard: 100)" + } + }, + "cost": { + "description": "Visa kostnadsrapport med uppdelning efter leverantör, modell, kombination eller API-nyckel", + "period": "Tidsintervall: 1d|7d|30d|90d|ytd|all (standard: 30d)", + "since": "Startdatum (ISO-format, t.ex. 2026-01-01) — åsidosätter --period", + "until": "Slutdatum (ISO-format)", + "group_by": "Gruppera resultat efter: provider|model|api-key|combo|day (standard: provider)", + "api_key_filter": "Filtrera efter en specifik API-nyckel", + "limit": "Maximalt antal rader som ska visas (standard: 100)" + }, + "simulate": { + "description": "Routing-simulering utan körning — visa vilka leverantörer som skulle väljas utan att anropa uppströmstjänsten", + "file": "Läs in hela begärandetexten från en JSON-fil", + "model": "Modell-ID (standard: auto)", + "combo": "Tvinga fram en specifik kombination efter namn", + "reasoning": "Nivå för resonemangsansträngning (low|medium|high)", + "thinking": "Tokenbudget för utökat tänkande", + "explain": "Skriv reservträdet och kostnadsintervallet till stderr", + "noCombo": "Ingen matchande kombination hittades. Konfigurera en med: omniroute combo create" + }, + "chat": { + "description": "Skicka en enstaka chattprompt till OmniRoute", + "file": "Läs prompt från fil", + "stdin": "Läs prompt från standardindata", + "system": "Systemprompt", + "model": "Modell-ID (standard: auto)", + "max_tokens": "Maximalt antal token i svaret", + "temperature": "Samplingstemperatur (0–2)", + "top_p": "Top-p-kärnsampling", + "reasoning_effort": "Nivå för resonemangsinsats (low|medium|high)", + "thinking_budget": "Tokenbudget för utökat tänkande", + "combo": "Framtvinga en specifik kombination efter namn", + "responses_api": "Använd /v1/responses i stället för /v1/chat/completions", + "stream": "Strömma svaret stegvis", + "no_history": "Spara inte i ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Fel: prompt krävs (positionsargument, --file eller --stdin)" + } + }, + "serve": { + "description": "Starta OmniRoute-servern (standardåtgärd)", + "starting": "Startar OmniRoute-servern på port {port}...", + "ready": "Redo på http://localhost:{port}", + "stopping": "Stoppar servern (PID {pid})...", + "stopped": "Servern har stoppats.", + "notRunning": "Servern körs inte.", + "port": "Port att lyssna på (standard: 20128)", + "no_open": "Öppna inte webbläsaren automatiskt", + "daemon": "Kör servern som en bakgrundsdemon", + "log": "Visa serverloggar direkt", + "no_recovery": "Inaktivera automatisk omstart vid krasch (felsökningsläge)", + "max_restarts": "Maximalt antal omstarter efter krascher inom 30 s innan försöken avbryts (standard: 2)", + "tray": "Starta i systemfältet (endast skrivbord, måste aktiveras)", + "no_tray": "Inaktivera ikonen i systemfältet", + "ready_timeout": "Tidsgräns för beredskapskontroll i ms (även OMNIROUTE_READY_TIMEOUT_MS, standard 60000)", + "tls_cert": "Sökväg till ett TLS-certifikat (PEM) för att tillhandahålla HTTPS (även OMNIROUTE_TLS_CERT)", + "tls_key": "Sökväg till den privata TLS-nyckeln (PEM) för att tillhandahålla HTTPS (även OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Säkerhetskopiering", + "description": "Skapa en säkerhetskopia av OmniRoute-data", + "creating": "Skapar säkerhetskopia...", + "done": "Säkerhetskopian sparades i {path}", + "noFiles": "Inga filer att säkerhetskopiera (databasen har inte initierats)", + "failed": "Säkerhetskopieringen misslyckades: {error}", + "restoring": "Återställer från {path}...", + "restored": "Återställningen är klar.", + "restoreDescription": "Återställ från en säkerhetskopia", + "listTitle": "Tillgängliga säkerhetskopior", + "noBackups": "Inga säkerhetskopior hittades.", + "notFound": "Säkerhetskopian hittades inte: {name}", + "confirmRestore": "Skriv över aktuella data med säkerhetskopian från {ts}?", + "createDescription": "Skapa en säkerhetskopia av OmniRoute-data", + "nameOpt": "Anpassat namn på säkerhetskopian", + "cloudOpt": "Ladda upp säkerhetskopian till molnlagring", + "encryptOpt": "Kryptera säkerhetskopian med AES-256-GCM", + "keyFileOpt": "Sökväg till filen som innehåller lösenfrasen för kryptering", + "excludeOpt": "Exkludera filer som matchar mönstret (kan upprepas)", + "retentionOpt": "Behåll endast de senaste N säkerhetskopiorna", + "passphrasePrompt": "Lösenfras för kryptering:", + "noPassphrase": "En lösenfras krävs för en krypterad säkerhetskopia.", + "cloudFailed": "Varning: uppladdningen till molnet misslyckades. Den lokala säkerhetskopian sparades.", + "cloudUploaded": "Säkerhetskopian har laddats upp till molnet: {url}", + "auto": { + "title": "Schema för säkerhetskopiering", + "enableDescription": "Aktivera schemalagda automatiska säkerhetskopieringar", + "disableDescription": "Inaktivera schemalagda automatiska säkerhetskopieringar", + "statusDescription": "Visa aktuell status för säkerhetskopieringsschemat", + "cronOpt": "Cron-uttryck för schemat (standard: dagligen kl. 03.00)", + "enabled": "Automatisk säkerhetskopiering aktiverad (cron: {cron}).", + "hint": "Schemat läses av omniroute serve vid start.", + "disabled": "Automatisk säkerhetskopiering inaktiverad.", + "notConfigured": "Inget schema för säkerhetskopiering har konfigurerats." + } + }, + "health": { + "description": "Kontrollera serverns hälsa och komponentstatus", + "noServer": "Servern körs inte. Starta med: omniroute serve", + "title": "Hälsa", + "status": "Status: {status}", + "uptime": "Drifttid: {uptime}", + "requests": "Förfrågningar (24 h): {count}", + "cost": "Kostnad (24 h): ${cost}" + }, + "quota": { + "description": "Visa användning av leverantörskvot", + "noServer": "Servern körs inte. Starta med: omniroute serve", + "noData": "Ingen kvotinformation är tillgänglig." + }, + "cache": { + "description": "Hantera svarscache", + "noServer": "Servern körs inte. Starta med: omniroute serve", + "cleared": "Cachen har rensats.", + "clearFailed": "Det gick inte att rensa cachen." + }, + "redis": { + "description": "Starta en lokal Redis-container med ett klick (Podman eller Docker) för OmniRoute-cachning och kvotspårning" + }, + "test": { + "description": "Testa en leverantörsanslutning", + "noServer": "Servern körs inte. Starta med: omniroute serve", + "testing": "Testar {provider} / {model}...", + "passed": "Anslutningen lyckades!", + "failed": "Anslutningen misslyckades: {error}", + "allProvidersOpt": "Testa alla konfigurerade leverantörer", + "latencyOpt": "Visa latensmätningar (genomsnitt/min/max ms)", + "repeatOpt": "Upprepa testet N gånger och sammanställ resultaten", + "compareOpt": "Kommaseparerade modeller att jämföra (t.ex. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Spara resultaten i en JSON-fil", + "saved": "Resultaten har sparats i {path}", + "compareTitle": "Modelljämförelse", + "compareMinTwo": "Minst två modeller krävs för --compare (kommaseparerade)", + "noProviders": "Inga leverantörer har konfigurerats. Lägg till en med: omniroute keys add" + }, + "update": { + "checking": "Söker efter uppdateringar...", + "upToDate": "Redan uppdaterad till den senaste versionen ({version}).", + "available": "Uppdatering tillgänglig: {current} → {latest}", + "installing": "Installerar {latest}...", + "done": "Uppdaterad till {latest}. Starta om servern för att tillämpa uppdateringen." + }, + "mcp": { + "title": "MCP-server", + "running": "MCP-servern körs ({transport})", + "stopped": "MCP-servern har stoppats.", + "restarted": "MCP-servern har startats om.", + "stoppedHint": "Kör `omniroute mcp enable` för att aktivera den.", + "enabled": "MCP-servern har aktiverats.", + "disabled": "MCP-servern har inaktiverats.", + "enable": { + "description": "Aktivera MCP-servern", + "transport": "Transport som ska användas: stdio|sse|streamable-http" + }, + "disable": { + "description": "Inaktivera MCP-servern" + }, + "call": { + "description": "Anropa ett MCP-verktyg direkt", + "args": "JSON-argumentobjekt (infogat)", + "args_file": "Sökväg till filen med JSON-argument", + "stream": "Använd slutpunkten för direktuppspelning (/api/mcp/stream)", + "scope": "Obligatorisk omfattning (kan upprepas, t.ex. read:health)" + }, + "scopes": { + "description": "Lista tillgängliga MCP-omfattningar", + "tool": "Visa omfattningar som krävs av ett specifikt verktyg" + }, + "tools": { + "description": "Inspektera MCP-verktyg", + "list": { + "description": "Lista alla MCP-verktyg", + "scope": "Filtrera efter omfattning" + }, + "info": { + "description": "Visa metadata för ett MCP-verktyg" + }, + "schema": { + "description": "Visa JSON-schema för indata/utdata för ett MCP-verktyg", + "io": "Schematyp: input|output (standard: input)" + } + }, + "audit": { + "description": "MCP-granskningslogg (alias för audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Lista tillgängliga A2A-färdigheter från agentkortet" + }, + "invoke": { + "description": "Anropa en A2A-färdighet och returnera uppgifts-ID:t", + "input": "JSON-indataobjekt", + "input_file": "Sökväg till JSON-indatafil", + "wait": "Vänta tills uppgiften har slutförts innan retur", + "timeout": "Tidsgräns för väntan på slutförande i ms (standard: 60000)" + }, + "tasks": { + "description": "Hantera A2A-uppgifter", + "list": { + "status": "Filtrera efter status", + "skill": "Filtrera efter färdighets-ID" + }, + "watch": { + "description": "Kontrollera uppgiftsstatusen regelbundet tills uppgiften har slutförts" + }, + "stream": { + "description": "Strömma händelser från uppgiftskörningen via SSE" + }, + "logs": { + "description": "Visa uppgiftsmeddelanden och artefakter" + } + } + }, + "policy": { + "description": "Hantera OmniRoute-auktoriseringspolicyer", + "list": { + "description": "Lista policyer", + "kind": "Filtrera efter typ (allow|deny|rate-limit|cost-cap)", + "scope": "Filtrera efter omfång (global|api-key|provider)" + }, + "get": { + "description": "Hämta policyinformation efter ID" + }, + "create": { + "description": "Skapa en policy från en JSON-fil", + "file": "Sökväg till policy-JSON-fil" + }, + "update": { + "description": "Uppdatera en policy från en JSON-fil", + "file": "Sökväg till policy-JSON-fil" + }, + "delete": { + "description": "Ta bort en policy efter ID", + "yes": "Hoppa över bekräftelseprompten" + }, + "evaluate": { + "description": "Torrkör policyutvärdering (avslutningskod 0=tillåten, 4=nekad)", + "api_key": "API-nyckel att utvärdera", + "action": "Åtgärd att kontrollera (t.ex. chat, embed, admin)", + "resource": "Resurssökväg eller identifierare", + "context": "Ytterligare kontext som JSON-objekt" + }, + "export": { + "description": "Exportera alla policyer till en JSON-fil" + }, + "import": { + "description": "Importera policyer från en JSON-fil", + "overwrite": "Skriv över befintliga policyer med samma ID" + } + }, + "compression": { + "description": "Konfigurera och inspektera OmniRoutes komprimeringspipeline", + "status": { + "description": "Visa aktuell komprimeringsstatus och aktuella inställningar" + }, + "configure": { + "description": "Konfigurera komprimeringsinställningar", + "engine": "Komprimeringsmotor (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman-aggressivitet 0,0–1,0", + "rtk_budget": "RTK-tokenbudget", + "language_pack": "Språkpaket att aktivera" + }, + "engine": { + "description": "Hämta eller ange den aktiva komprimeringsmotorn" + }, + "combos": { + "description": "Hantera statistik för komprimeringskombinationer" + }, + "rules": { + "description": "Hantera komprimeringsregler", + "add": { + "pattern": "Mönster att matcha (regex eller fält:mönster)", + "action": "Åtgärd: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Lista tillgängliga språkpaket för komprimering" + }, + "preview": { + "description": "Förhandsgranska komprimeringseffekten på en begäran", + "file": "Sökväg till JSON-fil med begäran" + } + }, + "tunnel": { + "title": "Tunnlar", + "listDescription": "Lista aktiva tunnlar", + "createDescription": "Skapa en tunnel", + "created": "Tunnel skapad: {url}", + "stopped": "Tunneln stoppades.", + "confirmStop": "Stoppa tunnel {id}?", + "stopDescription": "Stoppa en tunnel", + "statusDescription": "Visa detaljerad status för en tunnel", + "logsDescription": "Visa loggar för en tunnel", + "infoDescription": "Visa konfigurationsinformation för en tunnel", + "rotateDescription": "Generera en ny tunnel-URL", + "tailOpt": "Antal loggrader att visa", + "typeRequired": "Tunneltyp krävs.", + "noLogs": "Inga loggar tillgängliga.", + "notAvailable": "Tunnelinformation är inte tillgänglig.", + "noTunnels": "Inga aktiva tunnlar.", + "infoTitle": "Tunnelinformation: {type}", + "rotated": "Tunnel-URL roterad: {url}", + "confirmRotate": "Rotera tunnel {type}? (en ny URL kommer att genereras)" + }, + "stop": { + "description": "Stoppa OmniRoute-servern", + "stopping": "Stoppar servern (PID {pid})...", + "stopped": "Servern stoppades.", + "notRunning": "Ingen server körs.", + "portFallback": "Ingen PID-fil hittades, försöker stoppa baserat på port..." + }, + "restart": { + "description": "Starta om OmniRoute-servern", + "restarting": "Startar om OmniRoute-servern..." + }, + "dashboard": { + "description": "Öppna OmniRoute-instrumentpanelen i en webbläsare", + "opening": "Öppnar instrumentpanelen på {url}", + "urlOnly": "Skriv ut instrumentpanelens URL utan att öppna webbläsaren", + "tui": "Öppna en interaktiv TUI-instrumentpanel (terminalgränssnitt, 7 flikar)" + }, + "models": { + "description": "Lista tillgängliga modeller (kräver server)", + "search": "Filtrera modeller efter id, namn, leverantör eller beskrivning", + "noServer": "Servern körs inte. Starta med: omniroute serve", + "noModels": "Inga modeller hittades." + }, + "audit": { + "description": "Få åtkomst till loggar för regelefterlevnad och MCP-granskning", + "source": "Loggkälla: all|compliance|mcp (standard: all)", + "since": "Returnera poster sedan denna tidsstämpel (ISO 8601)", + "until": "Returnera poster fram till denna tidsstämpel (ISO 8601)", + "tail": { + "description": "Visa senaste granskningsloggposter", + "follow": "Följ kontinuerligt nya poster (kontroll var 2s)", + "limit": "Maximalt antal poster att visa (standard: 100)" + }, + "search": { + "description": "Sök efter granskningsloggposter med nyckelord", + "limit": "Maximalt antal resultat (standard: 200)", + "actor": "Filtrera efter aktörs-ID", + "action": "Filtrera efter åtgärdsnamn" + }, + "export": { + "description": "Exportera granskningsloggen till en fil", + "format": "Utdataformat: jsonl|csv (standard: jsonl)" + }, + "stats": { + "description": "Visa statistik för granskningsloggen", + "period": "Tidsperiod: 1d|7d|30d (standard: 7d)" + }, + "get": { + "description": "Hämta en enskild granskningsloggpost efter ID" + } + }, + "skills": { + "description": "Hantera OmniRoute-färdigheter (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Lista installerade färdigheter", + "type": "Filtrera efter typ (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Visa endast aktiverade färdigheter", + "disabled": "Visa endast inaktiverade färdigheter", + "api_key": "Filtrera efter API-nyckel" + }, + "get": { + "description": "Hämta information om en färdighet efter ID" + }, + "install": { + "description": "Installera en färdighet från en fil eller URL", + "from_file": "Sökväg till JSON-definitionsfilen för färdigheten", + "from_url": "URL till fjärrdefinitionen av färdigheten", + "type": "Färdighetstyp (sandbox|custom|hybrid)", + "enable": "Aktivera färdigheten efter installation" + }, + "enable": { + "description": "Aktivera en färdighet efter ID" + }, + "disable": { + "description": "Inaktivera en färdighet efter ID", + "yes": "Hoppa över bekräftelseprompten" + }, + "delete": { + "description": "Ta bort en färdighet efter ID", + "yes": "Hoppa över bekräftelseprompten" + }, + "execute": { + "description": "Kör en färdighet efter ID", + "input": "JSON-indataobjekt", + "input_file": "Sökväg till JSON-indatafilen", + "timeout": "Tidsgräns för körning i ms (standard: 30000)" + }, + "executions": { + "description": "Lista körningshistorik för färdigheter", + "skill": "Filtrera efter färdighets-ID", + "limit": "Maximalt antal resultat (standard: 50)", + "status": "Filtrera efter status (running|completed|failed)" + }, + "skillssh": { + "description": "Hantera färdigheter installerade via SSH" + }, + "marketplace": { + "description": "Bläddra bland och installera färdigheter från marknadsplatsen" + }, + "mp": { + "search": { + "description": "Sök efter paket på marknadsplatsen", + "category": "Filtrera efter kategori", + "tag": "Filtrera efter tagg", + "limit": "Maximalt antal resultat (standard: 30)", + "sort": "Sortera efter: downloads|rating|recent" + }, + "info": { + "description": "Visa paketinformation och README" + }, + "install": { + "description": "Installera ett paket från marknadsplatsen", + "version": "Paketversion (standard: latest)", + "enable": "Aktivera efter installation", + "yes": "Hoppa över bekräftelsefrågan" + }, + "categories": { + "description": "Lista kategorier på marknadsplatsen" + }, + "featured": { + "description": "Visa utvalda paket på marknadsplatsen" + } + } + }, + "memory": { + "description": "Hantera OmniRoutes konversationsminne (FTS5 + vektor)", + "search": { + "description": "Sök efter minnesposter med en semantisk fråga", + "type": "Filtrera efter minnestyp (user|feedback|project|reference)", + "limit": "Maximalt antal resultat (standard: 20)", + "api_key": "Filtrera efter API-nyckel", + "token_budget": "Begränsa det totala antalet token i resultaten" + }, + "add": { + "description": "Lägg till en ny minnespost", + "content": "Minnets textinnehåll", + "file": "Läs innehåll från fil", + "type": "Minnestyp (standard: user)", + "metadata": "JSON-metadataobjekt", + "api_key": "Koppla till API-nyckel" + }, + "clear": { + "description": "Ta bort minnesposter som matchar filtren", + "type": "Filtrera efter typ", + "older": "Ta bort poster som är äldre än angiven tidsperiod (30d, 6m, 1y)", + "api_key": "Filtrera efter API-nyckel", + "yes": "Hoppa över bekräftelsefrågan" + }, + "list": { + "description": "Lista minnesposter utan sökrankning", + "type": "Filtrera efter typ", + "limit": "Maximalt antal resultat (standard: 100)", + "api_key": "Filtrera efter API-nyckel" + }, + "get": { + "description": "Hämta en enskild minnespost efter ID" + }, + "delete": { + "description": "Ta bort en minnespost efter ID", + "yes": "Hoppa över bekräftelsefrågan" + }, + "health": { + "description": "Visa hälsostatus för minnesundersystemet (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Hantera anslutningar till OAuth-leverantörer", + "providers": { + "description": "Lista OAuth-kompatibla leverantörer och deras flödestyper" + }, + "start": { + "description": "Starta OAuth-auktoriseringsflödet för en leverantör", + "provider": "Leverantörs-ID (gemini, copilot, cursor, …)", + "no_browser": "Skriv endast ut URL:en – öppna inte webbläsaren", + "import_system": "Importera automatiskt autentiseringsuppgifter från den lokala systemkonfigurationen", + "social": "Leverantör för social inloggning (google|github) – krävs för kiro", + "timeout": "Tidsgräns för väntan på auktorisering i ms (standard: 300000)" + }, + "status": { + "description": "Lista aktiva OAuth-anslutningar", + "provider": "Filtrera efter leverantörs-ID" + }, + "revoke": { + "description": "Återkalla en OAuth-anslutning", + "provider": "Leverantörs-ID att återkalla", + "connection_id": "Återkalla en specifik anslutning efter ID", + "yes": "Hoppa över bekräftelsefrågan" + } + }, + "cloud": { + "description": "Hantera molnbaserade AI-agentuppgifter (codex, devin, jules)", + "agents": { + "description": "Lista tillgängliga molnagenter" + }, + "agent": { + "description": "Hantera molnagentuppgifter för {agent}", + "auth": { + "description": "Auktorisera {agent} via OAuth" + } + }, + "task": { + "description": "Hantera molnagentuppgifter", + "create": { + "description": "Skapa en ny agentuppgift", + "title": "Uppgiftens titel (som standard de första 80 tecknen i prompten)", + "prompt": "Text för uppgiftsprompt", + "prompt_file": "Läs prompt från fil", + "repo": "URL till kodarkiv att klona för uppgiften", + "branch": "Grennamn att använda", + "metadata": "JSON-metadataobjekt" + }, + "list": { + "description": "Lista agentuppgifter", + "status": "Filtrera efter status (running|completed|failed|cancelled)", + "limit": "Maximalt antal resultat (standard: 50)" + }, + "get": { + "description": "Hämta uppgiftsinformation efter ID" + }, + "status": { + "description": "Skriv ut uppgiftsstatus (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Avbryt en pågående uppgift", + "yes": "Hoppa över bekräftelsefrågan" + }, + "approve": { + "description": "Godkänn agentplanen för att starta körningen" + }, + "message": { + "description": "Skicka ett meddelande till en pågående uppgift" + } + }, + "sources": { + "description": "Lista källfiler som skapats av en uppgift" + } + }, + "eval": { + "description": "Hantera utvärderingssviter och körningar", + "suites": { + "description": "Hantera utvärderingssviter", + "list": { + "description": "Lista evalueringssviter" + }, + "get": { + "description": "Hämta information om evalueringssvit via ID" + }, + "create": { + "description": "Skapa en evalueringssvit från en JSON-fil", + "file": "Sökväg till JSON-filen med svitdefinitionen" + } + }, + "run": { + "description": "Starta en evalueringskörning för en svit", + "model": "Modell-ID att utvärdera (standard: auto)", + "combo": "Framtvinga en specifik kombination via namn", + "concurrency": "Antal samtidiga testfall (standard: 4)", + "tag": "Tagga körningen för senare filtrering", + "watch": "Övervaka körningsförloppet tills det är slutfört" + }, + "list": { + "description": "Lista evalueringskörningar", + "suite": "Filtrera efter svit-ID", + "status": "Filtrera efter status", + "since": "Returnera körningar sedan denna tidsstämpel", + "limit": "Maximalt antal resultat (standard: 50)" + }, + "get": { + "description": "Hämta information om evalueringskörning via ID" + }, + "results": { + "description": "Visa testfallsresultat för en evalueringskörning", + "failed": "Visa endast misslyckade testfall" + }, + "cancel": { + "description": "Avbryt en pågående evaluering", + "yes": "Hoppa över bekräftelsefrågan" + }, + "scorecard": { + "description": "Visa resultatkortet för en slutförd evalueringskörning" + } + }, + "webhooks": { + "description": "Hantera OmniRoute-webhooks", + "events": { + "description": "Lista alla tillgängliga händelsetyper för webhooks" + }, + "list": { + "description": "Lista konfigurerade webhooks" + }, + "get": { + "description": "Hämta information om webhook via ID" + }, + "add": { + "description": "Registrera en ny webhook", + "url": "Mål-URL", + "events": "Kommaseparerad lista över händelsetyper", + "secret": "HMAC-signeringshemlighet", + "header": "Extra rubrik i formatet key=value (kan upprepas)", + "no_enabled": "Skapa webhook i inaktiverat tillstånd" + }, + "update": { + "description": "Uppdatera en befintlig webhook", + "enabled": "Ange aktiverat tillstånd (true|false)" + }, + "remove": { + "description": "Ta bort en webhook", + "yes": "Hoppa över bekräftelsefrågan" + }, + "test": { + "description": "Skicka en testhändelse till en webhook", + "event": "Händelsetyp att simulera (standard: request.completed)" + } + }, "program": { "description": "OmniRoute — Smart AI-router med automatisk fallback", "version": "Skriv ut version och avsluta", @@ -26,7 +832,509 @@ "context": "Serverkontext/profil för det här kommandot", "lang": "Ange CLI-visningsspråk (åsidosätter OMNIROUTE_LANG)" }, - "redis": { - "description": "Starta en lokal Redis-container med ett klick (Podman eller Docker) för OmniRoute-cachning och kvotspårning" + "files": { + "description": "Hantera filer (ladda upp, lista, hämta, ladda ner, ta bort)", + "list": { + "purpose": "Filtrera efter syfte", + "limit": "Maximalt antal resultat" + }, + "get": { + "description": "Hämta filmetadata" + }, + "upload": { + "description": "Ladda upp en fil", + "purpose": "Filens syfte (batch, assistants, fine-tune)" + }, + "content": { + "description": "Ladda ned filinnehåll", + "out": "Spara till sökväg (standard: stdout)" + }, + "delete": { + "yes": "Hoppa över bekräftelse" + } + }, + "batches": { + "description": "Hantera OpenAI-kompatibla batchjobb", + "list": { + "status": "Filtrera efter status", + "limit": "Maximalt antal resultat" + }, + "create": { + "description": "Skapa ett batchjobb", + "inputFile": "ID för indatafil", + "endpoint": "Målslutpunkt", + "window": "Tidsfönster för slutförande", + "metadata": "Lägg till metadata key=value" + }, + "submit": { + "description": "Ladda upp JSONL-fil och skapa batch", + "jsonl": "Sökväg till JSONL-fil", + "endpoint": "Målslutpunkt", + "wait": "Vänta på slutförande" + }, + "cancel": { + "yes": "Hoppa över bekräftelse" + }, + "wait": { + "timeout": "Tidsgräns i ms" + }, + "output": { + "out": "Spara utdata till sökväg" + }, + "errors": { + "out": "Spara fel till sökväg" + } + }, + "translator": { + "description": "Översätt begärandetexter mellan LLM-format", + "detect": { + "description": "Identifiera brödtextformat" + }, + "translate": { + "description": "Konvertera brödtext från ett format till ett annat" + }, + "send": { + "description": "Översätt och skicka vidare uppströms" + }, + "stream": { + "description": "Strömöversätt en begärandetext" + }, + "from": "Källformat (openai|anthropic|gemini|cohere)", + "to": "Målformat (openai|anthropic|gemini|cohere)", + "file": "Sökväg till JSON-fil med begärandetext", + "out": "Spara utdata till fil", + "model": "Åsidosätt modell", + "history": { + "limit": "Maximalt antal resultat" + } + }, + "pricing": { + "description": "Hantera prisdata för modeller", + "sync": { + "description": "Synkronisera priser från uppströmskällor", + "provider": "Filtrera efter leverantör", + "force": "Tvinga omsynkronisering" + }, + "list": { + "provider": "Filtrera efter leverantör", + "model": "Filtrera efter modell", + "limit": "Maximalt antal resultat" + }, + "defaults": { + "description": "Hantera standardprissättning", + "input": "Kostnad för indata per 1 miljon token (USD)", + "output": "Kostnad för utdata per 1 miljon token (USD)", + "cacheRead": "Kostnad för cacheläsning per 1 miljon token (USD)", + "cacheWrite": "Kostnad för cacheskrivning per 1 miljon token (USD)" + }, + "diff": { + "description": "Visa avvikelse från uppströmspriser", + "model": "Filtrera efter modell" + } + }, + "radar": { + "description": "Inspektera och synkronisera de lokala Radar-katalogflödena", + "status": "Visa lokala Radar-inställningar och status för flödescachen", + "sync": "Synkronisera katalog, hänvisningar, erbjudanden och Intel via den lokala servern" + }, + "resilience": { + "description": "Inspektera och hantera resiliensmekanismer", + "status": { + "provider": "Filtrera efter leverantör" + }, + "breakers": { + "provider": "Filtrera efter leverantör" + }, + "cooldowns": { + "provider": "Filtrera efter leverantör", + "connectionId": "Filtrera efter anslutnings-ID" + }, + "lockouts": { + "provider": "Filtrera efter leverantör", + "model": "Filtrera efter modell" + }, + "reset": { + "description": "Återställ status för kretsbrytare/nedkylning", + "provider": "Leverantör att återställa", + "connectionId": "Anslutnings-ID att återställa", + "model": "Modell vars spärr ska återställas", + "allCooldowns": "Återställ alla nedkylningar för leverantören", + "yes": "Hoppa över bekräftelse" + }, + "profile": { + "description": "Hantera resiliensprofil", + "name": "Profilnamn" + }, + "config": { + "description": "Hantera resilienskonfiguration", + "threshold": "Feltröskel", + "resetTimeout": "Tidsgräns för återställning i ms", + "baseCooldown": "Grundläggande nedkylningstid i ms" + } + }, + "nodes": { + "description": "Hantera leverantörsnoder (slutpunkter)", + "list": { + "provider": "Filtrera efter leverantör", + "enabled": "Visa endast aktiverade noder" + }, + "add": { + "provider": "Leverantörsnamn", + "baseUrl": "Bas-URL för noden", + "name": "Nodnamn", + "weight": "Vikt för lastbalansering", + "region": "Regionstagg", + "authHeader": "Anpassat autentiseringshuvud (key=value)" + }, + "update": { + "baseUrl": "Ny bas-URL", + "name": "Nytt namn", + "weight": "Ny vikt", + "region": "Ny region", + "enabled": "Aktivera eller inaktivera (true|false)" + }, + "remove": { + "yes": "Hoppa över bekräftelse" + }, + "validate": { + "baseUrl": "URL att validera", + "provider": "Provider att validera mot" + }, + "test": { + "description": "Skicka testbegäran till nod" + }, + "metrics": { + "description": "Visa nodmätvärden", + "period": "Tidsperiod (t.ex. 24h, 7d)" + } + }, + "context": { + "description": "Konfigurera pipeline för kontextbearbetning (Caveman, RTK)", + "analytics": { + "period": "Tidsperiod (t.ex. 7d, 30d)" + }, + "caveman": { + "description": "Hantera Caveman-kontextkomprimerare", + "config": { + "description": "Visa eller uppdatera Caveman-konfiguration", + "aggressiveness": "Aggressivitet 0.0–1.0", + "maxShrinkPct": "Maximal komprimeringsprocent", + "preserveTags": "Kommaseparerade taggar som ska bevaras" + } + }, + "rtk": { + "description": "Hantera RTK-kontextoptimerare", + "config": { + "description": "Visa eller uppdatera RTK-konfiguration", + "tokenBudget": "Tokenbudget för RTK", + "reservePct": "Reservprocent" + }, + "filters": { + "description": "Hantera RTK-filter", + "pattern": "Filtermönster (regex)", + "priority": "Filterprioritet (standard: 100)", + "action": "Filteråtgärd: drop|shrink|replace", + "yes": "Hoppa över bekräftelse" + }, + "test": { + "file": "Sökväg till JSON-fil med begäran" + } + }, + "combos": { + "description": "Kontextmedveten kombinationshantering" + } + }, + "sessions": { + "description": "Inspektera och hantera aktiva sessioner", + "list": { + "user": "Filtrera efter användare", + "kind": "Filtrera efter typ (dashboard|api-key|mcp|a2a)", + "active": "Visa endast aktiva sessioner", + "limit": "Maximalt antal resultat (standard: 100)" + }, + "expire": { + "yes": "Hoppa över bekräftelse" + }, + "expireAll": { + "user": "Användare vars sessioner ska upphöra", + "yes": "Hoppa över bekräftelse" + } + }, + "tags": { + "description": "Hantera resurstaggar", + "add": { + "color": "Taggfärg (hex eller namn)", + "description": "Taggbeskrivning" + }, + "remove": { + "yes": "Hoppa över bekräftelse" + }, + "assign": { + "tag": "Taggnamn", + "to": "Målresurs som type:id (t.ex. provider:openai)" + }, + "unassign": { + "tag": "Taggnamn", + "from": "Källresurs som type:id" + } + }, + "openapi": { + "description": "Öppna och testa OmniRoute OpenAPI-specifikationen", + "dump": { + "description": "Skriv OpenAPI-specifikationen till stdout eller en fil", + "format": "Utdataformat: yaml|json (standard: yaml)", + "out": "Spara till filsökväg" + }, + "validate": { + "description": "Validera OpenAPI-specifikationen" + }, + "try": { + "description": "Testa en API-slutpunkt via specifikationen", + "method": "HTTP-metod (standard: GET)", + "body": "Sökväg till JSON-fil med begärandetext", + "query": "Frågeparameter som key=value (kan upprepas)", + "header": "Header som key=value (kan upprepas)" + }, + "endpoints": { + "description": "Lista alla API-slutpunkter", + "search": "Filtrera efter sökväg eller sammanfattning" + }, + "paths": { + "description": "Lista alla API-sökvägar" + } + }, + "combo": { + "title": "Kombinationer", + "switched": "Aktiv kombination: {name}", + "created": "Kombination skapad: {name}", + "deleted": "Kombination borttagen: {name}", + "noCombos": "Inga kombinationer har konfigurerats.", + "confirmDelete": "Ta bort kombinationen {name}?", + "suggest": { + "description": "Föreslå den bästa kombinationen för en uppgift med hjälp av AI-poängsättning", + "task": "Uppgiftsbeskrivning", + "maxCost": "Maximal kostnad per begäran i USD", + "maxLatencyMs": "Maximal latens i millisekunder", + "weights": "JSON-vikter för poängsättning, t.ex. {\"latency\":0.7,\"cost\":0.3}", + "top": "Antal toppkandidater att visa (standard: 5)", + "explain": "Skriv motivering till stderr", + "switch": "Aktivera den högst rankade kombinationen" + } + }, + "oneproxy": { + "description": "Hantera OneProxys uppströmspool", + "stats": { + "provider": "Filtrera efter leverantör", + "period": "Tidsperiod (standard: 24h)" + }, + "fetch": { + "description": "Hämta proxyservrar från poolen", + "count": "Antal proxyservrar att hämta (standard: 1)", + "type": "Proxytyp: http|socks5 (standard: http)" + }, + "rotate": { + "description": "Framtvinga proxyrotation", + "provider": "Leverantör att rotera för", + "connectionId": "Specifikt anslutnings-ID att rotera" + }, + "config": { + "description": "Visa eller uppdatera OneProxy-konfigurationen", + "enabled": "Aktivera proxypool (true|false)", + "poolSize": "Poolstorlek", + "providerSource": "URL för proxyleverantör", + "rotationPolicy": "Rotationspolicy: sticky|per-request|periodic" + }, + "pool": { + "description": "Lista aktuell proxypool med mätvärden" + } + }, + "open": { + "description": "Öppna en specifik OmniRoute-instrumentpanelsida i webbläsaren", + "url": "Skriv endast ut URL:en, öppna inte webbläsaren" + }, + "telemetry": { + "description": "Få åtkomst till aggregerade telemetridata", + "summary": { + "description": "Visa aggregerad telemetrisammanfattning", + "period": "Tidsperiod: 24h|7d|30d (standard: 24h)", + "compareTo": "Jämför med föregående period" + }, + "export": { + "description": "Exportera telemetrihändelser till JSONL", + "out": "Sökväg till utdatafil (standard: telemetry.jsonl)", + "period": "Tidsperiod för export (standard: 7d)" + } + }, + "sync": { + "description": "Synkronisera konfiguration mellan OmniRoute-instanser", + "push": { + "description": "Skicka konfiguration till molnet eller en fjärrinstans", + "target": "Mål (cloud eller context:name)", + "bundle": "Paketdelar att synkronisera", + "dryRun": "Förhandsgranska utan att tillämpa" + }, + "pull": { + "description": "Hämta konfiguration från molnet eller en fjärrinstans", + "source": "Källa (cloud eller context:name)", + "merge": "Slå samman med befintlig konfiguration", + "replace": "Ersätt befintlig konfiguration", + "dryRun": "Förhandsgranska utan att tillämpa" + }, + "diff": { + "source": "Källkontext", + "target": "Målkontext" + }, + "bundle": { + "description": "Exportera konfiguration som en paketfil", + "include": "Delar som ska inkluderas (kommaseparerade)" + }, + "import": { + "description": "Importera en paketfil", + "dryRun": "Validera utan att tillämpa" + }, + "initialize": { + "fromCloud": "Initiera från molnsäkerhetskopia" + }, + "tokens": { + "description": "Hantera synkroniseringstoken", + "create": { + "name": "Tokennamn", + "scope": "Tokenomfång", + "ttl": "Tokens TTL (t.ex. 30d)" + }, + "revoke": { + "yes": "Hoppa över bekräftelse" + } + }, + "resolve": { + "description": "Lös synkroniseringskonflikter interaktivt" + } + }, + "config": { + "contexts": { + "description": "Hantera serverkontexter/profiler (lägg till, använd, lista, visa, ta bort, byt namn, exportera, importera)" + }, + "lang": { + "description": "Hantera CLI-visningsspråk", + "getDescription": "Visa koden för det språk som är aktivt för närvarande", + "setDescription": "Ställ in visningsspråket och spara det i konfigurationen", + "listDescription": "Lista alla tillgängliga språk", + "listTitle": "Tillgängliga språk", + "current": "Språk: {code} ({name})", + "saved": "Språket har ställts in på {code} ({name}).", + "noCode": "Språkkod krävs. Kör 'omniroute config lang list' för att visa tillgängliga koder.", + "unknown": "Okänd språkkod: {code}. Kör 'omniroute config lang list' för att visa tillgängliga koder.", + "alreadySet": "Språket är redan inställt på {code}.", + "envHint": "Tips: du kan även ställa in OMNIROUTE_LANG={code} i din miljö." + } + }, + "completion": { + "description": "Generera eller installera skript för skalkomplettering", + "zsh": "Skriv ut kompletteringsskript för zsh", + "bash": "Skriv ut kompletteringsskript för bash", + "fish": "Skriv ut kompletteringsskript för fish", + "install": "Installera kompletteringsskriptet globalt för det identifierade skalet", + "refresh": "Uppdatera cacheminnet för kombinationer/leverantörer/modeller" + }, + "logs": { + "description": "Strömma eller exportera begärandeloggar", + "follow": "Strömma loggar i realtid", + "filter": "Filtrera efter nivå (error,warn,info) — kommaseparerat", + "lines": "Antal rader att hämta", + "timeout": "Tidsgräns för anslutning i ms", + "baseUrl": "Bas-URL för OmniRoute API", + "requestId": "Filtrera efter begärande-ID", + "apiKey": "Filtrera efter API-nyckel", + "combo": "Filtrera efter kombinationsnamn", + "status": "Filtrera efter HTTP-statuskod", + "durationMin": "Minsta varaktighet för begäran i ms", + "durationMax": "Högsta varaktighet för begäran i ms", + "export": "Spara loggar till fil (json/jsonl/csv)", + "exported": "Loggarna har sparats till {path}", + "stopped": "Loggströmmen har stoppats.", + "streamError": "Fel i loggströmmen: {message}" + }, + "tray": { + "description": "Styr ikonen i systemfältet", + "show": "Visa ikonen i systemfältet (om servern körs med --tray)", + "hide": "Dölj ikonen i systemfältet", + "quit": "Avsluta OmniRoute via systemfältet" + }, + "autostart": { + "description": "Hantera automatisk start av OmniRoute vid systemstart (Linux: systemd-användartjänst)", + "enable": "Aktivera automatisk start vid systemstart", + "disable": "Inaktivera automatisk start vid systemstart", + "toggle": "Växla automatisk start vid systemstart", + "status": "Visa status för automatisk start" + }, + "runtime": { + "description": "Hantera inbyggda körningsberoenden", + "check": "Kontrollera status för inbyggda beroenden i körningskatalogen", + "repair": "Installera om inbyggda beroenden i körningskatalogen", + "repair_force": "Tvinga ominstallation även om de är giltiga", + "clean": "Ta bort körningskatalogen (frigör diskutrymme)", + "clean_yes": "Hoppa över bekräftelse" + }, + "repl": { + "description": "Interaktiv REPL med flera turer och LLM", + "model": "Modell som ska användas (standard: auto)", + "combo": "Kombinationsnamn som ska användas", + "system": "Systemprompt", + "resume": "Återuppta en sparad session efter namn" + }, + "plugin": { + "description": "Hantera CLI-insticksprogram (omniroute-cmd-*)", + "list": "Lista installerade insticksprogram", + "install": "Installera ett insticksprogram från npm eller en lokal sökväg", + "remove": "Ta bort ett installerat insticksprogram", + "info": "Visa information om ett installerat insticksprogram", + "search": "Sök i npm-registret efter tillgängliga insticksprogram", + "update": "Uppdatera installerade insticksprogram", + "scaffold": "Skapa en grundstruktur för ett nytt insticksprogram" + }, + "launch": { + "description": "Starta Claude Code ansluten till OmniRoute (lokalt eller på distans, med --profile)", + "token": "Token som Claude-klienten ska skicka (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute kan inte nås på {port}. Starta det med 'omniroute serve'.", + "notFound": "CLI-verktyget 'claude' hittades inte i PATH." + }, + "run": { + "description": "Starta ett CLI-mål som stöds via OmniRoute" + }, + "setupClaude": { + "description": "Generera Claude Code-profiler i ~/.claude/profiles från OmniRoutes modellkatalog" + }, + "connect": { + "description": "Anslut till en fjärrserver för OmniRoute och aktivera fjärrläge" + }, + "tokens": { + "description": "Hantera omfångsbegränsade CLI-åtkomsttoken (fjärrläge)" + }, + "configure": { + "description": "Välj en leverantör och modell från den aktiva servern och konfigurera ett lokalt CLI-verktyg som stöds" + }, + "launchCodex": { + "description": "Starta Codex CLI anslutet till OmniRoute (lokalt eller på en fjärr-VPS)" + }, + "setupCodex": { + "description": "Generera profilfiler i ~/.codex från OmniRoutes aktuella modellkatalog" + }, + "packs": { + "description": "Hantera valfria körningspaket (ML/webbläsarautomatisering)", + "listDescription": "Lista valfria paket och deras installationsstatus", + "installDescription": "Installera ett valfritt paket i DATA_DIR", + "verifyDescription": "Verifiera installerade paket mot det medföljande kontrollsummeindexet", + "removeDescription": "Ta bort ett installerat valfritt paket", + "sourceOpt": "Katalog som innehåller paketdata och paketindexet", + "warnNoIndex": "optional-packs.index.json hittades inte – installation/verifiering är inte tillgänglig i denna utcheckning (det ingår i skrivbordspaketen)", + "errUnknown": "okänt paket: {name}", + "errNoIndex": "paketindexet hittades inte; ange --source som innehåller paketdata (i skrivbordspaketen finns det bredvid appen)", + "installed": "paketet \"{name}\" har installerats och verifierats i {dir}", + "restartHint": "starta om OmniRoute-servern (eller skrivbordsappen) så att körmiljön registrerar paketet", + "removed": "paketet \"{name}\" har tagits bort", + "notInstalled": "paketet \"{name}\" var inte installerat", + "verifyOk": "alla installerade paket har verifierats", + "verifyFailed": "{count} paket kunde inte verifieras", + "noneInstalled": "inga valfria paket är installerade" } } diff --git a/bin/cli/locales/sw.json b/bin/cli/locales/sw.json index 030437f92f..d12e0c86a6 100644 --- a/bin/cli/locales/sw.json +++ b/bin/cli/locales/sw.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "Hitilafu: {message}", + "serverOffline": "Seva ya OmniRoute haiko mtandaoni. Ianzishe kwa: omniroute serve", + "authRequired": "Uthibitishaji unahitajika. Weka OMNIROUTE_API_KEY au endesha: omniroute setup", + "rateLimited": "Kikomo cha maombi kimezidi. Jaribu tena baada ya sekunde {seconds}.", + "timeout": "Muda wa ombi uliisha baada ya ms {ms}.", + "success": "Imekamilika.", + "yes": "ndiyo", + "no": "hapana", + "confirm": "Una uhakika? (ndiyo/hapana)", + "dryRun": "[dry-run] ingefanya {action}", + "cancelled": "Imeghairiwa.", + "jsonOpt": "Toa matokeo kama JSON", + "yesOpt": "Ruka kidokezo cha uthibitishaji" + }, + "setup": { + "title": "Usanidi wa OmniRoute", + "passwordPrompt": "Nenosiri la msimamizi", + "providerPrompt": "Mtoa huduma chaguo-msingi (acha wazi ili kuruka)", + "done": "Usanidi umekamilika", + "passwordSet": "Nenosiri la msimamizi limesanidiwa", + "providerSet": "Mtoa huduma amesanidiwa: {name}", + "testingProvider": "Inajaribu muunganisho wa mtoa huduma: {name}", + "testPassed": "Jaribio la mtoa huduma limefaulu", + "testFailed": "Jaribio la mtoa huduma limeshindwa: {error}", + "loginEnabled": "Kuingia: kumewashwa (nenosiri limesasishwa)", + "loginDisabled": "Kuingia: kumezimwa", + "providerInfo": "Mtoa huduma: {info}", + "opencode": "Sakinisha na usanidi @omniroute/opencode-plugin iliyojumuishwa kwa OpenCode" + }, + "doctor": { + "title": "Uchunguzi wa OmniRoute", + "dbOk": "Hifadhidata: SAWA ({path})", + "dbMissing": "Hifadhidata: haijaanzishwa — endesha `omniroute setup`", + "portOk": "Mlango {port}: unapatikana", + "portConflict": "Mlango {port}: unatumiwa na mchakato mwingine", + "encryptionOk": "Ufunguo wa usimbaji fiche: umesanidiwa", + "encryptionMissing": "Ufunguo wa usimbaji fiche haupo — endesha `omniroute setup`", + "allGood": "Ukaguzi wote umefaulu.", + "warnings": "Maonyo {count} — tazama hapo juu." + }, + "providers": { + "title": "Watoa huduma", + "noProviders": "Hakuna watoa huduma waliosanidiwa. Endesha: omniroute setup", + "testing": "Inajaribu {name}...", + "available": "Watoa huduma {count} wanapatikana", + "connected": "Imeunganishwa", + "disconnected": "Imetenganishwa", + "validationFailed": "Uthibitishaji umeshindwa: {error}", + "metrics": { + "description": "Onyesha vipimo vya utendaji wa mtoa huduma (ucheleweshaji, kiwango cha mafanikio, gharama)", + "provider": "Chuja kwa ID ya mtoa huduma", + "connection_id": "Chuja kwa ID ya muunganisho", + "period": "Kipindi cha muda: 1h|6h|24h|7d|30d (chaguo-msingi: 24h)", + "metric": "Lenga sehemu mahususi ya kipimo", + "sort": "Panga kwa sehemu (kwa mpangilio wa kushuka)", + "limit": "Idadi ya juu zaidi ya safu mlalo (chaguo-msingi: 50)", + "watch": "Onyesha upya kila sekunde 5 (hali ya moja kwa moja)", + "compare": "ID za watoa huduma zilizotenganishwa kwa koma ili kulinganishwa sambamba" + }, + "metric_single": { + "description": "Pata thamani moja ya kipimo kwa muunganisho mahususi" + }, + "rotate": { + "description": "Badilisha ufunguo wa upstream API kwa muunganisho wa mtoa huduma", + "newKeyOpt": "Thamani mpya ya ufunguo wa API (epuka: pendelea --from-env)", + "fromEnvOpt": "Soma ufunguo mpya kutoka kwenye kigezo cha mazingira VAR", + "oauthOpt": "Anzisha mtiririko wa uthibitishaji upya wa OAuth badala yake", + "skipTestOpt": "Ruka jaribio la muunganisho baada ya kubadilisha ufunguo", + "dryRunOpt": "Chapisha kile ambacho kingebadilika bila kuandika", + "confirmPrompt": "Ungependa kubadilisha ufunguo wa API wa muunganisho \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Ufunguo wa \"{name}\" ({id}) ungebadilishwa. Hakuna mabadiliko yaliyofanywa.", + "oauthHint": "Muunganisho wa OAuth — endesha: omniroute oauth {provider}", + "envVarEmpty": "Kigezo cha mazingira {var} hakijawekwa au ni tupu.", + "success": "Ufunguo wa \"{name}\" umebadilishwa. Endesha `providers test {id}` ili kuthibitisha.", + "testPassed": "Jaribio la baada ya kubadilisha ufunguo limefaulu.", + "testFailed": "Jaribio la baada ya kubadilisha ufunguo limeshindwa: {error}" + }, + "status": { + "description": "Onyesha hali ya funguo za miunganisho yote ya watoa huduma (umri, muda wa kuisha, kipindi cha kusubiri)", + "providerOpt": "Chuja kwa jina la mtoa huduma", + "header": "ID Mtoa huduma Jina Hali ya Kuisha Hali ya Jaribio Kusubiri Hadi", + "noData": "Hakuna data ya muunganisho wa mtoa huduma inayopatikana.", + "requiresServer": "providers status inahitaji seva ya OmniRoute iwe inaendeshwa." + } + }, + "keys": { + "title": "Funguo za API", + "addDescription": "Ongeza au sasisha ufunguo wa API wa mtoa huduma", + "listDescription": "Orodhesha funguo zote za API zilizosanidiwa", + "removeDescription": "Ondoa ufunguo wa API wa mtoa huduma", + "regenerateDescription": "Zalisha upya ufunguo wa API wa OmniRoute", + "revokeDescription": "Batilisha ufunguo wa API wa OmniRoute", + "revealDescription": "Onyesha thamani kamili ya ufunguo wa API iliyofichwa", + "usageDescription": "Onyesha matumizi ya hivi karibuni ya ufunguo wa API", + "usageLimitOpt": "Idadi ya maombi ya hivi karibuni", + "rotateDescription": "Zalisha ufunguo mpya na ubatilishe wa zamani", + "graceOpt": "Kipindi cha neema (ms) kabla ufunguo wa zamani haujabatilishwa", + "stdinOpt": "Soma ufunguo wa API kutoka stdin badala ya hoja", + "added": "Ufunguo umeongezwa kwa {provider}.", + "removed": "Ufunguo umeondolewa.", + "listed": "Funguo {count}.", + "noKeys": "Hakuna funguo zilizosanidiwa.", + "noUsage": "Hakuna data ya matumizi iliyopatikana.", + "confirmRemove": "Uondoe ufunguo {id}?", + "confirmRegenerate": "Uzalishe upya ufunguo {id}?", + "confirmRevoke": "Ubatilishe ufunguo {id}?", + "confirmRotate": "Uzungushe ufunguo {id}? (ufunguo wa zamani utabatilishwa baada ya kipindi cha neema)", + "regenerated": "Umezalishwa upya. Ufunguo mpya: {key}", + "revoked": "Ufunguo {id} umebatilishwa.", + "rotated": "Ufunguo {id} umezungushwa. Kitambulisho cha ufunguo mpya: {newId}", + "revealWarning": "⚠ Hii itaonyesha ufunguo kamili bila kufichwa. Hakikisha skrini yako ni ya faragha.", + "providerRequired": "Mtoa huduma anahitajika.", + "keyRequired": "Ufunguo wa API unahitajika.", + "stdinEmpty": "Hakuna ufunguo wa API uliotolewa kupitia stdin.", + "unknownProvider": "Mtoa huduma asiyejulikana: {provider}", + "policy": { + "title": "Sera ya Ufunguo", + "showDescription": "Onyesha sera ya kiwango/gharama ya ufunguo", + "setDescription": "Weka sera ya kiwango/gharama ya ufunguo", + "rateLimitOpt": "Kiwango cha juu cha maombi kwa dakika", + "maxCostOpt": "Gharama ya juu kwa siku (USD)", + "allowedModelsOpt": "Orodha ya miundo inayoruhusiwa iliyotenganishwa kwa koma", + "nothingToSet": "Hakuna sehemu za sera zilizotolewa. Tumia --rate-limit, --max-cost, au --allowed-models.", + "updated": "Sera imesasishwa." + }, + "expiration": { + "title": "Kuisha kwa Muda wa Ufunguo", + "listDescription": "Orodhesha funguo zinazokaribia kuisha muda", + "daysOpt": "Onyesha funguo zinazoisha muda ndani ya siku N", + "none": "Hakuna funguo zinazoisha muda ndani ya siku {days}.", + "listTitle": "Funguo zinazoisha muda ndani ya siku {days}:" + } + }, + "authExport": { + "description": "Hamisha vitambulisho vya mtoa huduma VILIVYOSIMBULIWA (ndani ya kifaa pekee, matokeo ya maandishi wazi)", + "idOpt": "Hamisha muunganisho unaolingana na id/jina/mtoa huduma huyu pekee", + "formatOpt": "Muundo wa matokeo: json au env", + "outOpt": "Andika matokeo kwenye faili badala ya stdout (itaandikwa kwa ruhusa za 0600)", + "forceOpt": "Thibitisha kuwa unaelewa kuwa hii huchapisha/huandika siri kwa maandishi wazi", + "warning": "⚠ Hii huchapisha/huandika funguo za API na tokeni za OAuth ZILIZOSIMBULIWA kwa maandishi wazi. Hakikisha skrini yako, historia ya shell, na faili yoyote ya matokeo vinabaki vya faragha.", + "confirmHeading": "⚠ ONYO: hii huhamisha vitambulisho vya mtoa huduma VILIVYOSIMBULIWA kwa maandishi wazi", + "confirmBody": "Amri hii husimbua na kuchapisha/huandika apiKey, accessToken, refreshToken, na\nidToken kwa miunganisho iliyochaguliwa. Chukulia matokeo hayo kuwa siri.", + "confirmFooter": "Ili kuthibitisha, endesha:\n omniroute auth export --force", + "missingKey": "STORAGE_ENCRYPTION_KEY inahitajika ili kuhamisha vitambulisho.", + "notFound": "Muunganisho haujapatikana: {id}", + "invalidFormat": "Muundo si sahihi: {format}. Tumia json au env." + }, + "stream": { + "description": "Tiririsha jibu la gumzo kwa hali za ukaguzi wa SSE", + "file": "Soma kidokezo kutoka kwenye faili", + "stdin": "Soma kidokezo kutoka stdin", + "model": "Kitambulisho cha modeli (chaguo-msingi: auto)", + "system": "Kidokezo cha mfumo", + "combo": "Lazimisha mseto mahususi kwa jina", + "max_tokens": "Idadi ya juu zaidi ya tokeni katika jibu", + "responses_api": "Tumia /v1/responses badala ya /v1/chat/completions", + "raw": "Chapisha mistari ghafi ya SSE jinsi inavyopokelewa", + "debug": "Chapisha maelezo ya muda kwa kila kipande kwenye stderr", + "save": "Hifadhi matukio yote ya SSE kwenye faili ya .jsonl", + "error": { + "empty_prompt": "Hitilafu: kidokezo kinahitajika (hoja ya nafasi, --file, au --stdin)" + } + }, + "usage": { + "description": "Uchanganuzi wa matumizi, bajeti, viwango vya matumizi, na kumbukumbu", + "analytics": { + "description": "Onyesha uchanganuzi wa matumizi uliojumlishwa", + "period": "Kipindi: 1d|7d|30d|90d|ytd|all (chaguo-msingi: 30d)", + "provider": "Chuja kwa kitambulisho cha mtoa huduma" + }, + "budget": { + "description": "Dhibiti bajeti za gharama", + "set": { + "scope": "Upeo wa bajeti (chaguo-msingi: global)", + "period": "Kipindi cha bajeti: daily|weekly|monthly (chaguo-msingi: monthly)" + } + }, + "quota": { + "description": "Onyesha matumizi ya kiwango cha mtoa huduma", + "provider": "Chuja kwa kitambulisho cha mtoa huduma", + "check": "Onyesha ikiwa kiwango kinapatikana kwa ombi jipya" + }, + "logs": { + "description": "Onyesha kumbukumbu za miito ya maombi", + "limit": "Idadi ya maingizo ya kumbukumbu ya kurejesha (chaguo-msingi: 100)", + "search": "Hoja ya utafutaji ya kuchuja kumbukumbu", + "since": "Rejesha kumbukumbu tangu muhuri huu wa muda", + "follow": "Endelea kufuatilia maingizo mapya ya kumbukumbu", + "api_key": "Chuja kumbukumbu kwa ufunguo wa API" + }, + "utilization": { + "description": "Onyesha vipimo vya matumizi ya ufunguo wa API", + "api_key": "Chuja kwa ufunguo wa API" + }, + "history": { + "description": "Onyesha historia ya maombi", + "limit": "Idadi ya maingizo ya historia (chaguo-msingi: 100)" + }, + "proxy_logs": { + "description": "Onyesha kumbukumbu za maombi katika kiwango cha proksi", + "limit": "Idadi ya maingizo ya kumbukumbu ya proksi (chaguo-msingi: 100)" + } + }, + "cost": { + "description": "Onyesha ripoti ya gharama ikiwa na uchanganuzi kwa mtoa huduma, modeli, mseto, au ufunguo wa API", + "period": "Kipindi: 1d|7d|30d|90d|ytd|all (chaguo-msingi: 30d)", + "since": "Tarehe ya kuanza (muundo wa ISO, k.m. 2026-01-01) — inabatilisha --period", + "until": "Tarehe ya mwisho (muundo wa ISO)", + "group_by": "Panga matokeo kwa: provider|model|api-key|combo|day (chaguo-msingi: provider)", + "api_key_filter": "Chuja kwa ufunguo mahususi wa API", + "limit": "Idadi ya juu ya safu mlalo za kuonyesha (chaguo-msingi: 100)" + }, + "simulate": { + "description": "Uigaji wa uelekezaji wa majaribio — onyesha watoa huduma ambao wangechaguliwa bila kupiga simu kwa upstream", + "file": "Pakia mwili kamili wa ombi kutoka faili ya JSON", + "model": "Kitambulisho cha modeli (chaguo-msingi: auto)", + "combo": "Lazimisha combo mahususi kwa jina", + "reasoning": "Kiwango cha juhudi za kufikiri (low|medium|high)", + "thinking": "Bajeti ya tokeni za kufikiri kwa kina", + "explain": "Chapisha mti wa chaguo mbadala na masafa ya gharama kwenye stderr", + "noCombo": "Hakuna combo inayolingana iliyopatikana. Sanidi moja kwa: omniroute combo create" + }, + "chat": { + "description": "Tuma kidokezo cha gumzo cha mara moja kwa OmniRoute", + "file": "Soma kidokezo kutoka faili", + "stdin": "Soma kidokezo kutoka stdin", + "system": "Kidokezo cha mfumo", + "model": "Kitambulisho cha modeli (chaguo-msingi: auto)", + "max_tokens": "Idadi ya juu ya tokeni kwenye jibu", + "temperature": "Halijoto ya sampuli (0–2)", + "top_p": "Usampulishaji wa kiini cha Top-p", + "reasoning_effort": "Kiwango cha juhudi za kufikiri (low|medium|high)", + "thinking_budget": "Bajeti ya tokeni za kufikiri kwa kina", + "combo": "Lazimisha combo mahususi kwa jina", + "responses_api": "Tumia /v1/responses badala ya /v1/chat/completions", + "stream": "Tiririsha jibu hatua kwa hatua", + "no_history": "Usihifadhi kwenye ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Hitilafu: kidokezo kinahitajika (hoja ya nafasi, --file, au --stdin)" + } + }, + "serve": { + "description": "Anzisha seva ya OmniRoute (kitendo chaguo-msingi)", + "starting": "Inaanzisha seva ya OmniRoute kwenye porti {port}...", + "ready": "Tayari kwenye http://localhost:{port}", + "stopping": "Inasimamisha seva (PID {pid})...", + "stopped": "Seva imesimamishwa.", + "notRunning": "Seva haifanyi kazi.", + "port": "Porti ya kusikilizia (chaguo-msingi: 20128)", + "no_open": "Usifungue kivinjari kiotomatiki", + "daemon": "Endesha seva kama daemoni ya chinichini", + "log": "Onyesha kumbukumbu za seva ndani ya mstari", + "no_recovery": "Zima uanzishaji upya kiotomatiki inapoharibika (hali ya utatuzi)", + "max_restarts": "Idadi ya juu ya uanzishaji upya baada ya kuharibika ndani ya sekunde 30 kabla ya kukata tamaa (chaguo-msingi: 2)", + "tray": "Anza katika trei ya mfumo (kompyuta pekee, kwa hiari)", + "no_tray": "Zima ikoni ya trei ya mfumo", + "ready_timeout": "Muda wa mwisho wa ukaguzi wa utayari kwa ms (pia OMNIROUTE_READY_TIMEOUT_MS, chaguo-msingi 60000)", + "tls_cert": "Njia ya cheti cha TLS (PEM) cha kutoa HTTPS (pia OMNIROUTE_TLS_CERT)", + "tls_key": "Njia ya ufunguo binafsi wa TLS (PEM) wa kutoa HTTPS (pia OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Nakala rudufu", + "description": "Unda nakala rudufu ya data ya OmniRoute", + "creating": "Inaunda nakala rudufu...", + "done": "Nakala rudufu imehifadhiwa kwenye {path}", + "noFiles": "Hakuna faili za kuhifadhi katika nakala rudufu (hifadhidata haijaanzishwa)", + "failed": "Uundaji wa nakala rudufu umeshindikana: {error}", + "restoring": "Inarejesha kutoka {path}...", + "restored": "Urejeshaji umekamilika.", + "restoreDescription": "Rejesha kutoka nakala rudufu", + "listTitle": "Nakala Rudufu Zinazopatikana", + "noBackups": "Hakuna nakala rudufu zilizopatikana.", + "notFound": "Nakala rudufu haijapatikana: {name}", + "confirmRestore": "Ungependa kubatilisha data ya sasa kwa nakala rudufu ya {ts}?", + "createDescription": "Unda nakala rudufu ya data ya OmniRoute", + "nameOpt": "Jina maalum la nakala rudufu", + "cloudOpt": "Pakia nakala rudufu kwenye hifadhi ya wingu", + "encryptOpt": "Simba nakala rudufu kwa AES-256-GCM", + "keyFileOpt": "Njia ya faili iliyo na kaulisiri ya usimbaji fiche", + "excludeOpt": "Ondoa faili inayolingana na ruwaza (inaweza kurudiwa)", + "retentionOpt": "Hifadhi nakala rudufu N za mwisho pekee", + "passphrasePrompt": "Kaulisiri ya usimbaji fiche:", + "noPassphrase": "Kaulisiri inahitajika kwa nakala rudufu iliyosimbwa kwa njia fiche.", + "cloudFailed": "Onyo: upakiaji kwenye wingu umeshindikana. Nakala rudufu ya ndani imehifadhiwa.", + "cloudUploaded": "Nakala rudufu ya wingu imepakiwa: {url}", + "auto": { + "title": "Ratiba ya Nakala Rudufu", + "enableDescription": "Washa nakala rudufu za kiotomatiki zilizoratibiwa", + "disableDescription": "Zima nakala rudufu za kiotomatiki zilizoratibiwa", + "statusDescription": "Onyesha hali ya sasa ya ratiba ya nakala rudufu", + "cronOpt": "Kielezi cha Cron cha ratiba (chaguo-msingi: kila siku saa 9 alfajiri)", + "enabled": "Nakala rudufu ya kiotomatiki imewashwa (cron: {cron}).", + "hint": "Ratiba husomwa na omniroute serve wakati wa kuanza.", + "disabled": "Nakala rudufu ya kiotomatiki imezimwa.", + "notConfigured": "Hakuna ratiba ya nakala rudufu iliyosanidiwa." + } + }, + "health": { + "description": "Kagua afya ya seva na hali ya vipengele", + "noServer": "Seva haifanyi kazi. Iwashe kwa: omniroute serve", + "title": "Afya", + "status": "Hali: {status}", + "uptime": "Muda wa kufanya kazi: {uptime}", + "requests": "Maombi (saa 24): {count}", + "cost": "Gharama (saa 24): ${cost}" + }, + "quota": { + "description": "Onyesha matumizi ya kiwango cha mtoa huduma", + "noServer": "Seva haifanyi kazi. Iwashe kwa: omniroute serve", + "noData": "Hakuna taarifa za kiwango zinazopatikana." + }, + "cache": { + "description": "Dhibiti akiba ya majibu", + "noServer": "Seva haifanyi kazi. Iwashe kwa: omniroute serve", + "cleared": "Akiba imefutwa.", + "clearFailed": "Imeshindwa kufuta akiba." + }, "redis": { "description": "Anzisha kontena la Redis la ndani kwa kubofya mara moja (Podman au Docker) kwa ajili ya kuhifadhi ya OmniRoute na ufuatiliaji wa mgao" + }, + "test": { + "description": "Jaribu muunganisho wa mtoa huduma", + "noServer": "Seva haifanyi kazi. Iwashe kwa: omniroute serve", + "testing": "Inajaribu {provider} / {model}...", + "passed": "Muunganisho umefanikiwa!", + "failed": "Muunganisho umeshindwa: {error}", + "allProvidersOpt": "Jaribu watoa huduma wote waliosanidiwa", + "latencyOpt": "Onyesha vipimo vya muda wa kusubiri (wastani/chini/juu kwa ms)", + "repeatOpt": "Rudia jaribio mara N na ujumlishe matokeo", + "compareOpt": "Miundo ya kulinganisha iliyotenganishwa kwa koma (mf. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Hifadhi matokeo kwenye faili ya JSON", + "saved": "Matokeo yamehifadhiwa kwenye {path}", + "compareTitle": "Ulinganisho wa Miundo", + "compareMinTwo": "Angalau miundo miwili inahitajika kwa --compare (iliyotenganishwa kwa koma)", + "noProviders": "Hakuna watoa huduma waliosanidiwa. Ongeza mmoja kwa: omniroute keys add" + }, + "update": { + "checking": "Inatafuta masasisho...", + "upToDate": "Tayari imesasishwa ({version}).", + "available": "Sasisho linapatikana: {current} → {latest}", + "installing": "Inasakinisha {latest}...", + "done": "Imesasishwa hadi {latest}. Anzisha upya seva ili kutekeleza sasisho." + }, + "mcp": { + "title": "Seva ya MCP", + "running": "Seva ya MCP inafanya kazi ({transport})", + "stopped": "Seva ya MCP imesimamishwa.", + "restarted": "Seva ya MCP imeanzishwa upya.", + "stoppedHint": "Endesha `omniroute mcp enable` ili kuiwasha.", + "enabled": "Seva ya MCP imewezeshwa.", + "disabled": "Seva ya MCP imezimwa.", + "enable": { + "description": "Wezesha seva ya MCP", + "transport": "Njia ya usafirishaji ya kutumia: stdio|sse|streamable-http" + }, + "disable": { + "description": "Zima seva ya MCP" + }, + "call": { + "description": "Tekeleza zana ya MCP moja kwa moja", + "args": "Objekti ya hoja za JSON (ndani ya mstari)", + "args_file": "Njia ya faili ya hoja za JSON", + "stream": "Tumia endpoint ya utiririshaji (/api/mcp/stream)", + "scope": "Upeo unaohitajika (unaweza kurudiwa, k.m. read:health)" + }, + "scopes": { + "description": "Orodhesha mawanda ya MCP yanayopatikana", + "tool": "Onyesha mawanda yanayohitajika na zana mahususi" + }, + "tools": { + "description": "Kagua zana za MCP", + "list": { + "description": "Orodhesha zana zote za MCP", + "scope": "Chuja kwa upeo" + }, + "info": { + "description": "Onyesha metadata ya zana ya MCP" + }, + "schema": { + "description": "Onyesha schema ya JSON ya ingizo/tokeo kwa zana ya MCP", + "io": "Aina ya schema: input|output (chaguo-msingi: input)" + } + }, + "audit": { + "description": "Kumbukumbu ya ukaguzi ya MCP (jina mbadala la audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Orodhesha ujuzi wa A2A unaopatikana kutoka kwenye kadi ya ajenti" + }, + "invoke": { + "description": "Tekeleza ujuzi wa A2A na urudishe kitambulisho cha jukumu", + "input": "Objekti ya ingizo la JSON", + "input_file": "Njia ya faili ya ingizo la JSON", + "wait": "Subiri jukumu likamilike kabla ya kurudi", + "timeout": "Muda wa juu wa kusubiri kukamilika kwa ms (chaguo-msingi: 60000)" + }, + "tasks": { + "description": "Dhibiti majukumu ya A2A", + "list": { + "status": "Chuja kwa hali", + "skill": "Chuja kwa kitambulisho cha ujuzi" + }, + "watch": { + "description": "Kagua hali ya jukumu mara kwa mara hadi likamilike" + }, + "stream": { + "description": "Tiririsha matukio ya utekelezaji wa jukumu kupitia SSE" + }, + "logs": { + "description": "Onyesha ujumbe na vizalia vya jukumu" + } + } + }, + "policy": { + "description": "Dhibiti sera za uidhinishaji za OmniRoute", + "list": { + "description": "Orodhesha sera", + "kind": "Chuja kwa aina (allow|deny|rate-limit|cost-cap)", + "scope": "Chuja kwa upeo (global|api-key|provider)" + }, + "get": { + "description": "Pata maelezo ya sera kwa kitambulisho" + }, + "create": { + "description": "Unda sera kutoka kwenye faili ya JSON", + "file": "Njia ya faili ya JSON ya sera" + }, + "update": { + "description": "Sasisha sera kutoka kwenye faili ya JSON", + "file": "Njia ya faili ya JSON ya sera" + }, + "delete": { + "description": "Futa sera kwa kitambulisho", + "yes": "Ruka kidokezo cha uthibitishaji" + }, + "evaluate": { + "description": "Tathmini sera kwa majaribio (exit 0=allowed, 4=denied)", + "api_key": "Ufunguo wa API wa kutathmini", + "action": "Kitendo cha kukagua (mf. chat, embed, admin)", + "resource": "Njia au kitambulisho cha rasilimali", + "context": "Muktadha wa ziada kama kipengee cha JSON" + }, + "export": { + "description": "Hamisha sera zote kwenye faili ya JSON" + }, + "import": { + "description": "Leta sera kutoka kwenye faili ya JSON", + "overwrite": "Andika juu ya sera zilizopo zenye ID sawa" + } + }, + "compression": { + "description": "Sanidi na ukague mchakato wa ubanaji wa OmniRoute", + "status": { + "description": "Onyesha hali na mipangilio ya sasa ya ubanaji" + }, + "configure": { + "description": "Sanidi mipangilio ya ubanaji", + "engine": "Injini ya ubanaji (caveman|rtk|hybrid|none)", + "caveman_agg": "Kiwango cha ubanaji cha Caveman 0.0–1.0", + "rtk_budget": "Bajeti ya tokeni za RTK", + "language_pack": "Kifurushi cha lugha cha kuwezesha" + }, + "engine": { + "description": "Pata au weka injini ya ubanaji inayotumika" + }, + "combos": { + "description": "Dhibiti takwimu za michanganyiko ya ubanaji" + }, + "rules": { + "description": "Dhibiti kanuni za ubanaji", + "add": { + "pattern": "Ruwaza ya kulinganisha (regex au field:pattern)", + "action": "Kitendo: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Orodhesha vifurushi vya lugha vya ubanaji vinavyopatikana" + }, + "preview": { + "description": "Kagua awali athari ya ubanaji kwenye ombi", + "file": "Njia ya faili ya JSON ya ombi" + } + }, + "tunnel": { + "title": "Vichuguu", + "listDescription": "Orodhesha vichuguu vinavyotumika", + "createDescription": "Unda kichuguu", + "created": "Kichuguu kimeundwa: {url}", + "stopped": "Kichuguu kimesimamishwa.", + "confirmStop": "Usimamishe kichuguu {id}?", + "stopDescription": "Simamisha kichuguu", + "statusDescription": "Onyesha hali ya kina ya kichuguu", + "logsDescription": "Onyesha kumbukumbu za kichuguu", + "infoDescription": "Onyesha maelezo ya usanidi wa kichuguu", + "rotateDescription": "Zalisha URL mpya ya kichuguu", + "tailOpt": "Idadi ya mistari ya kumbukumbu ya kuonyesha", + "typeRequired": "Aina ya kichuguu inahitajika.", + "noLogs": "Hakuna kumbukumbu zinazopatikana.", + "notAvailable": "Taarifa za kichuguu hazipatikani.", + "noTunnels": "Hakuna vichuguu vinavyotumika.", + "infoTitle": "Taarifa za kichuguu: {type}", + "rotated": "URL ya kichuguu imebadilishwa: {url}", + "confirmRotate": "Badilisha URL ya kichuguu cha aina ya {type}? (URL mpya itazalishwa)" + }, + "stop": { + "description": "Simamisha seva ya OmniRoute", + "stopping": "Inasimamisha seva (PID {pid})...", + "stopped": "Seva imesimamishwa.", + "notRunning": "Hakuna seva inayoendeshwa.", + "portFallback": "Hakuna faili la PID lililopatikana, inajaribu kusimamisha kulingana na porti..." + }, + "restart": { + "description": "Anzisha upya seva ya OmniRoute", + "restarting": "Inaanzisha upya seva ya OmniRoute..." + }, + "dashboard": { + "description": "Fungua dashibodi ya OmniRoute katika kivinjari", + "opening": "Inafungua dashibodi kwenye {url}", + "urlOnly": "Chapisha URL ya dashibodi bila kufungua kivinjari", + "tui": "Fungua dashibodi shirikishi ya TUI (kiolesura cha terminali, vichupo 7)" + }, + "models": { + "description": "Orodhesha modeli zinazopatikana (inahitaji seva)", + "search": "Chuja modeli kwa kitambulisho, jina, mtoa huduma, au maelezo", + "noServer": "Seva haiendeshwi. Ianzishe kwa: omniroute serve", + "noModels": "Hakuna modeli zilizopatikana." + }, + "audit": { + "description": "Fikia kumbukumbu za ukaguzi wa uzingatiaji na MCP", + "source": "Chanzo cha kumbukumbu: all|compliance|mcp (chaguo-msingi: all)", + "since": "Rejesha maingizo kuanzia muhuri huu wa muda (ISO 8601)", + "until": "Rejesha maingizo hadi muhuri huu wa muda (ISO 8601)", + "tail": { + "description": "Onyesha maingizo ya hivi karibuni ya kumbukumbu ya ukaguzi", + "follow": "Endelea kufuatilia maingizo mapya (ukaguzi kila sekunde 2)", + "limit": "Idadi ya juu ya maingizo ya kuonyesha (chaguo-msingi: 100)" + }, + "search": { + "description": "Tafuta maingizo ya kumbukumbu ya ukaguzi kwa neno muhimu", + "limit": "Idadi ya juu ya matokeo (chaguo-msingi: 200)", + "actor": "Chuja kwa kitambulisho cha mhusika", + "action": "Chuja kwa jina la kitendo" + }, + "export": { + "description": "Hamisha kumbukumbu ya ukaguzi kwenda kwenye faili", + "format": "Umbizo la matokeo: jsonl|csv (chaguo-msingi: jsonl)" + }, + "stats": { + "description": "Onyesha takwimu za kumbukumbu ya ukaguzi", + "period": "Kipindi cha muda: 1d|7d|30d (chaguo-msingi: 7d)" + }, + "get": { + "description": "Pata ingizo moja la kumbukumbu ya ukaguzi kwa kitambulisho" + } + }, + "skills": { + "description": "Dhibiti ujuzi wa OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Orodhesha ujuzi uliosakinishwa", + "type": "Chuja kwa aina (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Onyesha ujuzi uliowezeshwa pekee", + "disabled": "Onyesha ujuzi uliozimwa pekee", + "api_key": "Chuja kwa ufunguo wa API" + }, + "get": { + "description": "Pata maelezo ya ujuzi kwa kitambulisho" + }, + "install": { + "description": "Sakinisha ujuzi kutoka kwenye faili au URL", + "from_file": "Njia ya faili ya ufafanuzi wa JSON wa ujuzi", + "from_url": "URL ya ufafanuzi wa skill ya mbali", + "type": "Aina ya skill (sandbox|custom|hybrid)", + "enable": "Washa skill baada ya kusakinisha" + }, + "enable": { + "description": "Washa skill kwa kutumia ID" + }, + "disable": { + "description": "Zima skill kwa kutumia ID", + "yes": "Ruka ombi la uthibitisho" + }, + "delete": { + "description": "Futa skill kwa kutumia ID", + "yes": "Ruka ombi la uthibitisho" + }, + "execute": { + "description": "Tekeleza skill kwa kutumia ID", + "input": "Kipengee cha ingizo cha JSON", + "input_file": "Njia ya faili ya ingizo la JSON", + "timeout": "Muda wa mwisho wa utekelezaji kwa ms (chaguo-msingi: 30000)" + }, + "executions": { + "description": "Orodhesha historia ya utekelezaji wa skill", + "skill": "Chuja kwa ID ya skill", + "limit": "Idadi ya juu zaidi ya matokeo (chaguo-msingi: 50)", + "status": "Chuja kwa hali (running|completed|failed)" + }, + "skillssh": { + "description": "Dhibiti skill zilizosakinishwa kupitia SSH" + }, + "marketplace": { + "description": "Vinjari na usakinishe skill kutoka marketplace" + }, + "mp": { + "search": { + "description": "Tafuta vifurushi vya marketplace", + "category": "Chuja kwa kategoria", + "tag": "Chuja kwa tagi", + "limit": "Idadi ya juu zaidi ya matokeo (chaguo-msingi: 30)", + "sort": "Panga kwa: downloads|rating|recent" + }, + "info": { + "description": "Onyesha maelezo ya kifurushi na readme" + }, + "install": { + "description": "Sakinisha kifurushi cha marketplace", + "version": "Toleo la kifurushi (chaguo-msingi: latest)", + "enable": "Washa baada ya kusakinisha", + "yes": "Ruka ombi la uthibitisho" + }, + "categories": { + "description": "Orodhesha kategoria za marketplace" + }, + "featured": { + "description": "Onyesha vifurushi vilivyoangaziwa vya marketplace" + } + } + }, + "memory": { + "description": "Dhibiti kumbukumbu ya mazungumzo ya OmniRoute (FTS5 + vector)", + "search": { + "description": "Tafuta maingizo ya kumbukumbu kwa hoja ya kisemantiki", + "type": "Chuja kwa aina ya kumbukumbu (user|feedback|project|reference)", + "limit": "Idadi ya juu zaidi ya matokeo (chaguo-msingi: 20)", + "api_key": "Chuja kwa ufunguo wa API", + "token_budget": "Weka kikomo cha jumla ya tokeni katika matokeo" + }, + "add": { + "description": "Ongeza ingizo jipya la kumbukumbu", + "content": "Maudhui ya maandishi ya kumbukumbu", + "file": "Soma maudhui kutoka kwenye faili", + "type": "Aina ya kumbukumbu (chaguo-msingi: user)", + "metadata": "Kipengee cha metadata cha JSON", + "api_key": "Husianisha na ufunguo wa API" + }, + "clear": { + "description": "Futa maingizo ya kumbukumbu yanayolingana na vichujio", + "type": "Chuja kwa aina", + "older": "Futa maingizo yaliyo na umri unaozidi muda uliobainishwa (30d, 6m, 1y)", + "api_key": "Chuja kwa ufunguo wa API", + "yes": "Ruka ombi la uthibitisho" + }, + "list": { + "description": "Orodhesha maingizo ya kumbukumbu bila upangaji wa matokeo ya utafutaji", + "type": "Chuja kwa aina", + "limit": "Idadi ya juu ya matokeo (chaguo-msingi: 100)", + "api_key": "Chuja kwa ufunguo wa API" + }, + "get": { + "description": "Pata ingizo moja la kumbukumbu kwa ID" + }, + "delete": { + "description": "Futa ingizo la kumbukumbu kwa ID", + "yes": "Ruka ombi la uthibitisho" + }, + "health": { + "description": "Onyesha hali ya mfumo mdogo wa kumbukumbu (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Dhibiti miunganisho ya watoa huduma wa OAuth", + "providers": { + "description": "Orodhesha watoa huduma wanaotumia OAuth na aina zao za mtiririko" + }, + "start": { + "description": "Anzisha mtiririko wa uidhinishaji wa OAuth kwa mtoa huduma", + "provider": "ID ya mtoa huduma (gemini, copilot, cursor, …)", + "no_browser": "Chapisha URL pekee — usifungue kivinjari", + "import_system": "Leta kiotomatiki vitambulisho kutoka kwenye usanidi wa mfumo wa ndani", + "social": "Mtoa huduma wa kuingia kupitia mtandao wa kijamii (google|github) — inahitajika kwa kiro", + "timeout": "Muda wa juu wa kusubiri uidhinishaji katika ms (chaguo-msingi: 300000)" + }, + "status": { + "description": "Orodhesha miunganisho amilifu ya OAuth", + "provider": "Chuja kwa ID ya mtoa huduma" + }, + "revoke": { + "description": "Batilisha muunganisho wa OAuth", + "provider": "ID ya mtoa huduma ya kubatilisha", + "connection_id": "Batilisha muunganisho mahususi kwa ID", + "yes": "Ruka ombi la uthibitisho" + } + }, + "cloud": { + "description": "Dhibiti majukumu ya mawakala wa AI wa wingu (codex, devin, jules)", + "agents": { + "description": "Orodhesha mawakala wa wingu wanaopatikana" + }, + "agent": { + "description": "Dhibiti majukumu ya wakala wa wingu wa {agent}", + "auth": { + "description": "Idhinisha {agent} kupitia OAuth" + } + }, + "task": { + "description": "Dhibiti majukumu ya wakala wa wingu", + "create": { + "description": "Unda jukumu jipya la wakala", + "title": "Kichwa cha jukumu (chaguo-msingi ni herufi 80 za kwanza za kidokezo)", + "prompt": "Maandishi ya kidokezo cha jukumu", + "prompt_file": "Soma kidokezo kutoka kwenye faili", + "repo": "URL ya hazina ya kunakili kwa ajili ya jukumu", + "branch": "Jina la tawi la kutumia", + "metadata": "Kipengee cha metadata cha JSON" + }, + "list": { + "description": "Orodhesha kazi za ajenti", + "status": "Chuja kwa hali (running|completed|failed|cancelled)", + "limit": "Idadi ya juu zaidi ya matokeo (chaguo-msingi: 50)" + }, + "get": { + "description": "Pata maelezo ya kazi kwa ID" + }, + "status": { + "description": "Chapisha hali ya kazi (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Ghairi kazi inayoendelea", + "yes": "Ruka kidokezo cha uthibitishaji" + }, + "approve": { + "description": "Idhinisha mpango wa ajenti ili kuanza utekelezaji" + }, + "message": { + "description": "Tuma ujumbe kwa kazi inayoendelea" + } + }, + "sources": { + "description": "Orodhesha faili chanzo zilizoundwa na kazi" + } + }, + "eval": { + "description": "Dhibiti seti na uendeshaji wa tathmini", + "suites": { + "description": "Dhibiti seti za tathmini", + "list": { + "description": "Orodhesha seti za tathmini" + }, + "get": { + "description": "Pata maelezo ya seti ya tathmini kwa ID" + }, + "create": { + "description": "Unda seti ya tathmini kutoka kwenye faili ya JSON", + "file": "Njia ya faili ya JSON yenye ufafanuzi wa seti" + } + }, + "run": { + "description": "Anzisha uendeshaji wa tathmini kwa seti", + "model": "ID ya modeli ya kutathmini (chaguo-msingi: auto)", + "combo": "Lazimisha mseto mahususi kwa jina", + "concurrency": "Idadi ya sampuli zinazoendeshwa kwa wakati mmoja (chaguo-msingi: 4)", + "tag": "Weka lebo kwenye uendeshaji huu kwa ajili ya kuchuja baadaye", + "watch": "Fuatilia maendeleo ya uendeshaji hadi ukamilike" + }, + "list": { + "description": "Orodhesha uendeshaji wa tathmini", + "suite": "Chuja kwa ID ya seti", + "status": "Chuja kwa hali", + "since": "Rejesha uendeshaji tangu muhuri huu wa muda", + "limit": "Idadi ya juu zaidi ya matokeo (chaguo-msingi: 50)" + }, + "get": { + "description": "Pata maelezo ya uendeshaji wa tathmini kwa ID" + }, + "results": { + "description": "Onyesha matokeo ya sampuli kwa uendeshaji wa tathmini", + "failed": "Onyesha sampuli zilizofeli pekee" + }, + "cancel": { + "description": "Ghairi tathmini inayoendelea", + "yes": "Ruka kidokezo cha uthibitishaji" + }, + "scorecard": { + "description": "Onyesha kadi ya alama ya uendeshaji wa tathmini uliokamilika" + } + }, + "webhooks": { + "description": "Dhibiti webhook za OmniRoute", + "events": { + "description": "Orodhesha aina zote za matukio ya webhook zinazopatikana" + }, + "list": { + "description": "Orodhesha webhook zilizosanidiwa" + }, + "get": { + "description": "Pata maelezo ya webhook kwa ID" + }, + "add": { + "description": "Sajili webhook mpya", + "url": "URL lengwa", + "events": "Orodha ya aina za matukio zilizotenganishwa kwa koma", + "secret": "Siri ya kutia saini ya HMAC", + "header": "Kichwa cha ziada katika muundo wa key=value (kinaweza kurudiwa)", + "no_enabled": "Unda webhook ikiwa imezimwa" + }, + "update": { + "description": "Sasisha webhook iliyopo", + "enabled": "Weka hali ya kuwashwa (true|false)" + }, + "remove": { + "description": "Futa webhook", + "yes": "Ruka ombi la uthibitisho" + }, + "test": { + "description": "Tuma tukio la majaribio kwa webhook", + "event": "Aina ya tukio la kuiga (chaguomsingi: request.completed)" + } + }, + "program": { + "description": "OmniRoute — Kipanga Njia Mahiri cha AI chenye Njia Mbadala ya Kiotomatiki", + "version": "Chapisha toleo na uondoke", + "output": "Muundo wa matokeo (table, json, jsonl, csv)", + "quiet": "Ficha matokeo yasiyo muhimu", + "no_color": "Zima matokeo yenye rangi", + "timeout": "Muda wa mwisho wa ombi la HTTP kwa milisekunde", + "api_key": "Ufunguo wa API wa seva ya OmniRoute", + "base_url": "URL msingi ya seva ya OmniRoute", + "context": "Muktadha/wasifu wa seva wa kutumia kwa amri hii", + "lang": "Weka lugha ya kuonyesha ya CLI (inabatilisha OMNIROUTE_LANG)" + }, + "files": { + "description": "Dhibiti faili (pakia, orodhesha, pata, pakua, futa)", + "list": { + "purpose": "Chuja kulingana na kusudi", + "limit": "Idadi ya juu ya matokeo" + }, + "get": { + "description": "Pata metadata ya faili" + }, + "upload": { + "description": "Pakia faili", + "purpose": "Kusudi la faili (batch, assistants, fine-tune)" + }, + "content": { + "description": "Pakua maudhui ya faili", + "out": "Hifadhi kwenye njia (chaguomsingi: stdout)" + }, + "delete": { + "yes": "Ruka uthibitisho" + } + }, + "batches": { + "description": "Dhibiti kazi za batch zinazooana na OpenAI", + "list": { + "status": "Chuja kulingana na hali", + "limit": "Idadi ya juu ya matokeo" + }, + "create": { + "description": "Unda kazi ya batch", + "inputFile": "Kitambulisho cha faili ya ingizo", + "endpoint": "Endpoint lengwa", + "window": "Kipindi cha ukamilishaji", + "metadata": "Ongeza metadata key=value" + }, + "submit": { + "description": "Pakia faili ya JSONL na uunde batch", + "jsonl": "Njia ya faili ya JSONL", + "endpoint": "Endpoint lengwa", + "wait": "Subiri hadi ikamilike" + }, + "cancel": { + "yes": "Ruka uthibitishaji" + }, + "wait": { + "timeout": "Muda wa kusubiri kwa ms" + }, + "output": { + "out": "Hifadhi matokeo kwenye njia" + }, + "errors": { + "out": "Hifadhi hitilafu kwenye njia" + } + }, + "translator": { + "description": "Tafsiri miili ya maombi kati ya miundo ya LLM", + "detect": { + "description": "Tambua muundo wa mwili" + }, + "translate": { + "description": "Badilisha mwili kutoka muundo mmoja hadi mwingine" + }, + "send": { + "description": "Tafsiri na utume kwa huduma ya juu" + }, + "stream": { + "description": "Tafsiri mwili wa ombi kwa mtiririko" + }, + "from": "Muundo chanzo (openai|anthropic|gemini|cohere)", + "to": "Muundo lengwa (openai|anthropic|gemini|cohere)", + "file": "Njia ya faili ya JSON ya mwili wa ombi", + "out": "Hifadhi matokeo kwenye faili", + "model": "Batilisha modeli", + "history": { + "limit": "Idadi ya juu ya matokeo" + } + }, + "pricing": { + "description": "Dhibiti data ya bei za modeli", + "sync": { + "description": "Sawazisha bei kutoka vyanzo vya juu", + "provider": "Chuja kwa mtoa huduma", + "force": "Lazimisha usawazishaji upya" + }, + "list": { + "provider": "Chuja kwa mtoa huduma", + "model": "Chuja kwa modeli", + "limit": "Idadi ya juu ya matokeo" + }, + "defaults": { + "description": "Dhibiti bei chaguomsingi", + "input": "Gharama ya ingizo kwa tokeni milioni 1 (USD)", + "output": "Gharama ya tokeo kwa tokeni milioni 1 (USD)", + "cacheRead": "Gharama ya kusoma akiba kwa tokeni milioni 1 (USD)", + "cacheWrite": "Gharama ya kuandika akiba kwa tokeni milioni 1 (USD)" + }, + "diff": { + "description": "Onyesha tofauti na bei za chanzo cha juu", + "model": "Chuja kwa modeli" + } + }, + "radar": { + "description": "Kagua na usawazishe milisho ya katalogi ya Radar ya ndani", + "status": "Onyesha mipangilio ya Radar ya ndani na hali ya akiba ya milisho", + "sync": "Sawazisha katalogi, marejeleo, ofa na Intel kupitia seva ya ndani" + }, + "resilience": { + "description": "Kagua na udhibiti mbinu za ustahimilivu", + "status": { + "provider": "Chuja kwa mtoa huduma" + }, + "breakers": { + "provider": "Chuja kwa mtoa huduma" + }, + "cooldowns": { + "provider": "Chuja kwa mtoa huduma", + "connectionId": "Chuja kwa kitambulisho cha muunganisho" + }, + "lockouts": { + "provider": "Chuja kwa mtoa huduma", + "model": "Chuja kwa modeli" + }, + "reset": { + "description": "Weka upya hali ya kivunja mzunguko/muda wa kusubiri", + "provider": "Mtoa huduma wa kuweka upya", + "connectionId": "Kitambulisho cha muunganisho cha kuweka upya", + "model": "Muundo wa kuondolea kufungiwa", + "allCooldowns": "Weka upya muda wote wa kusubiri kwa mtoa huduma", + "yes": "Ruka uthibitishaji" + }, + "profile": { + "description": "Dhibiti wasifu wa ustahimilivu", + "name": "Jina la wasifu" + }, + "config": { + "description": "Dhibiti usanidi wa ustahimilivu", + "threshold": "Kikomo cha hitilafu", + "resetTimeout": "Muda wa kuweka upya kwa ms", + "baseCooldown": "Muda msingi wa kusubiri kwa ms" + } + }, + "nodes": { + "description": "Dhibiti nodi za mtoa huduma (vituo vya mwisho)", + "list": { + "provider": "Chuja kulingana na mtoa huduma", + "enabled": "Onyesha nodi zilizowezeshwa pekee" + }, + "add": { + "provider": "Jina la mtoa huduma", + "baseUrl": "URL msingi ya nodi", + "name": "Jina la nodi", + "weight": "Uzito wa usawazishaji wa mzigo", + "region": "Lebo ya eneo", + "authHeader": "Kijajuu maalum cha uthibitishaji (key=value)" + }, + "update": { + "baseUrl": "URL mpya ya msingi", + "name": "Jina jipya", + "weight": "Uzito mpya", + "region": "Eneo jipya", + "enabled": "Washa au zima (true|false)" + }, + "remove": { + "yes": "Ruka uthibitishaji" + }, + "validate": { + "baseUrl": "URL ya kuthibitisha", + "provider": "Mtoa huduma wa kutumia kuthibitisha" + }, + "test": { + "description": "Tuma ombi la majaribio kwa nodi" + }, + "metrics": { + "description": "Onyesha vipimo vya nodi", + "period": "Kipindi cha muda (k.m. 24h, 7d)" + } + }, + "context": { + "description": "Sanidi mchakato wa uhandisi wa muktadha (Caveman, RTK)", + "analytics": { + "period": "Kipindi cha muda (k.m. 7d, 30d)" + }, + "caveman": { + "description": "Dhibiti kibana muktadha cha Caveman", + "config": { + "description": "Onyesha au sasisha usanidi wa Caveman", + "aggressiveness": "Kiwango cha ukali 0.0–1.0", + "maxShrinkPct": "Asilimia ya juu zaidi ya upunguzaji", + "preserveTags": "Lebo za kuhifadhi zilizotenganishwa kwa koma" + } + }, + "rtk": { + "description": "Dhibiti kiboreshaji cha muktadha cha RTK", + "config": { + "description": "Onyesha au sasisha usanidi wa RTK", + "tokenBudget": "Bajeti ya tokeni kwa RTK", + "reservePct": "Asilimia ya akiba" + }, + "filters": { + "description": "Dhibiti vichujio vya RTK", + "pattern": "Muundo wa kichujio (regex)", + "priority": "Kipaumbele cha kichujio (chaguo-msingi: 100)", + "action": "Kitendo cha kichujio: drop|shrink|replace", + "yes": "Ruka uthibitishaji" + }, + "test": { + "file": "Njia ya faili ya JSON ya ombi" + } + }, + "combos": { + "description": "Usimamizi wa michanganyiko unaozingatia muktadha" + } + }, + "sessions": { + "description": "Kagua na udhibiti vipindi vinavyotumika", + "list": { + "user": "Chuja kwa mtumiaji", + "kind": "Chuja kwa aina (dashboard|api-key|mcp|a2a)", + "active": "Onyesha vipindi vinavyotumika pekee", + "limit": "Idadi ya juu ya matokeo (chaguo-msingi: 100)" + }, + "expire": { + "yes": "Ruka uthibitishaji" + }, + "expireAll": { + "user": "Mtumiaji ambaye vipindi vyake vitaisha", + "yes": "Ruka uthibitishaji" + } + }, + "tags": { + "description": "Dhibiti lebo za rasilimali", + "add": { + "color": "Rangi ya lebo (hex au jina)", + "description": "Maelezo ya lebo" + }, + "remove": { + "yes": "Ruka uthibitishaji" + }, + "assign": { + "tag": "Jina la lebo", + "to": "Rasilimali lengwa kama type:id (mf. provider:openai)" + }, + "unassign": { + "tag": "Jina la lebo", + "from": "Rasilimali chanzo kama type:id" + } + }, + "openapi": { + "description": "Fikia na ujaribu vipimo vya OmniRoute OpenAPI", + "dump": { + "description": "Toa vipimo vya OpenAPI kwenye stdout au faili", + "format": "Muundo wa towe: yaml|json (chaguo-msingi: yaml)", + "out": "Hifadhi kwenye njia ya faili" + }, + "validate": { + "description": "Thibitisha vipimo vya OpenAPI" + }, + "try": { + "description": "Jaribu endpoint ya API kupitia vipimo", + "method": "Mbinu ya HTTP (chaguo-msingi: GET)", + "body": "Njia ya faili ya JSON yenye kiini cha ombi", + "query": "Kigezo cha hoja kama key=value (kinaweza kurudiwa)", + "header": "Kichwa kama key=value (kinaweza kurudiwa)" + }, + "endpoints": { + "description": "Orodhesha endpoint zote za API", + "search": "Chuja kwa njia au muhtasari" + }, + "paths": { + "description": "Orodhesha njia zote za API" + } + }, + "combo": { + "title": "Michanganyiko", + "switched": "Mseto unaotumika: {name}", + "created": "Mseto umeundwa: {name}", + "deleted": "Mseto umefutwa: {name}", + "noCombos": "Hakuna miseto iliyosanidiwa.", + "confirmDelete": "Ufute mseto {name}?", + "suggest": { + "description": "Pendekeza mseto bora kwa kazi kwa kutumia ukadiriaji wa AI", + "task": "Maelezo ya kazi", + "maxCost": "Gharama ya juu zaidi kwa kila ombi katika USD", + "maxLatencyMs": "Muda wa juu zaidi wa kusubiri katika milisekunde", + "weights": "Uzani wa ukadiriaji wa JSON, k.m. {\"latency\":0.7,\"cost\":0.3}", + "top": "Idadi ya wagombea bora wa kuonyesha (chaguo-msingi: 5)", + "explain": "Chapisha sababu kwenye stderr", + "switch": "Washa mseto ulioorodheshwa wa kwanza" + } + }, + "oneproxy": { + "description": "Dhibiti hifadhi ya seva za juu za OneProxy", + "stats": { + "provider": "Chuja kulingana na mtoa huduma", + "period": "Kipindi cha muda (chaguo-msingi: 24h)" + }, + "fetch": { + "description": "Leta proksi kutoka kwenye hifadhi", + "count": "Idadi ya proksi za kuleta (chaguo-msingi: 1)", + "type": "Aina ya proksi: http|socks5 (chaguo-msingi: http)" + }, + "rotate": { + "description": "Lazimisha ubadilishaji wa proksi", + "provider": "Mtoa huduma wa kufanyiwa ubadilishaji", + "connectionId": "Kitambulisho mahususi cha muunganisho cha kubadilisha" + }, + "config": { + "description": "Onyesha au sasisha usanidi wa OneProxy", + "enabled": "Washa hifadhi ya proksi (true|false)", + "poolSize": "Ukubwa wa hifadhi", + "providerSource": "URL ya mtoa huduma wa proksi", + "rotationPolicy": "Sera ya ubadilishaji: sticky|per-request|periodic" + }, + "pool": { + "description": "Orodhesha hifadhi ya sasa ya proksi pamoja na vipimo" + } + }, + "open": { + "description": "Fungua ukurasa mahususi wa dashibodi ya OmniRoute kwenye kivinjari", + "url": "Chapisha URL pekee, usifungue kivinjari" + }, + "telemetry": { + "description": "Fikia data iliyojumuishwa ya telemetria", + "summary": { + "description": "Onyesha muhtasari wa telemetria iliyojumuishwa", + "period": "Kipindi cha muda: 24h|7d|30d (chaguo-msingi: 24h)", + "compareTo": "Linganisha na kipindi kilichotangulia" + }, + "export": { + "description": "Hamisha matukio ya telemetria hadi JSONL", + "out": "Njia ya faili ya kutoa (chaguo-msingi: telemetry.jsonl)", + "period": "Kipindi cha muda cha kuhamisha (chaguo-msingi: 7d)" + } + }, + "sync": { + "description": "Sawazisha usanidi kati ya matukio ya OmniRoute", + "push": { + "description": "Tuma usanidi kwenye wingu au tukio la mbali", + "target": "Lengwa (cloud au context:name)", + "bundle": "Sehemu za kifurushi za kusawazisha", + "dryRun": "Hakiki bila kutekeleza" + }, + "pull": { + "description": "Pakua usanidi kutoka kwenye wingu au chanzo cha mbali", + "source": "Chanzo (wingu au context:name)", + "merge": "Unganisha na usanidi uliopo", + "replace": "Badilisha usanidi uliopo", + "dryRun": "Hakiki bila kutekeleza" + }, + "diff": { + "source": "Muktadha wa chanzo", + "target": "Muktadha lengwa" + }, + "bundle": { + "description": "Hamisha usanidi kama faili la kifurushi", + "include": "Sehemu za kujumuisha (zinazotenganishwa kwa koma)" + }, + "import": { + "description": "Leta faili la kifurushi", + "dryRun": "Thibitisha bila kutekeleza" + }, + "initialize": { + "fromCloud": "Anzisha kutoka kwenye nakala rudufu ya wingu" + }, + "tokens": { + "description": "Dhibiti tokeni za usawazishaji", + "create": { + "name": "Jina la tokeni", + "scope": "Upeo wa tokeni", + "ttl": "Muda wa kuishi wa tokeni (k.m. 30d)" + }, + "revoke": { + "yes": "Ruka uthibitishaji" + } + }, + "resolve": { + "description": "Tatua migongano ya usawazishaji kwa mwingiliano" + } + }, + "config": { + "contexts": { + "description": "Dhibiti miktadha/wasifu wa seva (ongeza, tumia, orodhesha, onyesha, ondoa, badilisha jina, hamisha, leta)" + }, + "lang": { + "description": "Dhibiti lugha ya kuonyesha ya CLI", + "getDescription": "Onyesha msimbo wa lugha inayotumika sasa", + "setDescription": "Weka lugha ya kuonyesha na uihifadhi kwenye usanidi", + "listDescription": "Orodhesha lugha zote zinazopatikana", + "listTitle": "Lugha Zinazopatikana", + "current": "Lugha: {code} ({name})", + "saved": "Lugha imewekwa kuwa {code} ({name}).", + "noCode": "Msimbo wa lugha unahitajika. Endesha 'omniroute config lang list' ili kuona misimbo inayopatikana.", + "unknown": "Msimbo wa lugha hautambuliki: {code}. Endesha 'omniroute config lang list' ili kuona misimbo inayopatikana.", + "alreadySet": "Lugha tayari imewekwa kuwa {code}.", + "envHint": "Kidokezo: unaweza pia kuweka OMNIROUTE_LANG={code} katika mazingira yako." + } + }, + "completion": { + "description": "Zalisha au sakinisha hati za ukamilishaji za shell", + "zsh": "Chapisha hati ya ukamilishaji ya zsh", + "bash": "Chapisha hati ya ukamilishaji ya bash", + "fish": "Chapisha hati ya ukamilishaji ya fish", + "install": "Sakinisha hati ya ukamilishaji kwa mfumo mzima kwa shell iliyotambuliwa", + "refresh": "Onyesha upya akiba ya michanganyiko/watoa huduma/miundo" + }, + "logs": { + "description": "Tiririsha au hamisha kumbukumbu za maombi", + "follow": "Tiririsha kumbukumbu kwa wakati halisi", + "filter": "Chuja kwa kiwango (error,warn,info) — vilivyotenganishwa kwa koma", + "lines": "Idadi ya mistari ya kuleta", + "timeout": "Muda wa kuisha kwa muunganisho kwa ms", + "baseUrl": "URL msingi ya API ya OmniRoute", + "requestId": "Chuja kwa kitambulisho cha ombi", + "apiKey": "Chuja kwa ufunguo wa API", + "combo": "Chuja kwa jina la mchanganyiko", + "status": "Chuja kwa msimbo wa hali ya HTTP", + "durationMin": "Muda wa chini wa ombi kwa ms", + "durationMax": "Muda wa juu wa ombi kwa ms", + "export": "Hifadhi kumbukumbu kwenye faili (json/jsonl/csv)", + "exported": "Kumbukumbu zimehifadhiwa kwenye {path}", + "stopped": "Mtiririko wa kumbukumbu umesimamishwa.", + "streamError": "Hitilafu ya mtiririko wa kumbukumbu: {message}" + }, + "tray": { + "description": "Dhibiti ikoni ya trei ya mfumo", + "show": "Onyesha ikoni ya trei (ikiwa seva inaendeshwa na --tray)", + "hide": "Ficha ikoni ya trei", + "quit": "Funga OmniRoute kupitia trei" + }, + "autostart": { + "description": "Dhibiti kuanza kiotomatiki kwa OmniRoute wakati wa kuwasha mfumo (Linux: huduma ya mtumiaji ya systemd)", + "enable": "Washa kuanza kiotomatiki wakati wa kuwasha mfumo", + "disable": "Zima kuanza kiotomatiki wakati wa kuwasha mfumo", + "toggle": "Badilisha hali ya kuanza kiotomatiki wakati wa kuwasha mfumo", + "status": "Onyesha hali ya kuanza kiotomatiki" + }, + "runtime": { + "description": "Dhibiti vitegemezi asilia vya mazingira ya utekelezaji", + "check": "Angalia hali ya vitegemezi asilia katika saraka ya mazingira ya utekelezaji", + "repair": "Sakinisha upya vitegemezi asilia katika saraka ya mazingira ya utekelezaji", + "repair_force": "Lazimisha usakinishaji upya hata kama ni halali", + "clean": "Ondoa saraka ya mazingira ya utekelezaji (huongeza nafasi huru ya diski)", + "clean_yes": "Ruka uthibitisho" + }, + "repl": { + "description": "REPL shirikishi ya hatua nyingi kwa kutumia LLM", + "model": "Modeli ya kutumia (chaguomsingi: auto)", + "combo": "Jina la mchanganyiko la kutumia", + "system": "Kidokezo cha mfumo", + "resume": "Endelea na kipindi kilichohifadhiwa kwa jina" + }, + "plugin": { + "description": "Dhibiti programu-jalizi za CLI (omniroute-cmd-*)", + "list": "Orodhesha programu-jalizi zilizosakinishwa", + "install": "Sakinisha programu-jalizi kutoka npm au njia ya ndani", + "remove": "Ondoa programu-jalizi iliyosakinishwa", + "info": "Onyesha maelezo ya programu-jalizi iliyosakinishwa", + "search": "Tafuta programu-jalizi zinazopatikana katika sajili ya npm", + "update": "Sasisha programu-jalizi zilizosakinishwa", + "scaffold": "Unda kiolezo cha msingi cha programu-jalizi mpya" + }, + "launch": { + "description": "Zindua Claude Code ikielekezwa kwenye OmniRoute (ya ndani au ya mbali, kwa kutumia --profile)", + "token": "Tokeni ambayo kiteja cha Claude kinapaswa kutuma (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute haipatikani kwenye {port}. Iwashe kwa kutumia 'omniroute serve'.", + "notFound": "CLI ya 'claude' haikupatikana katika PATH." + }, + "run": { + "description": "Zindua lengwa la CLI linalotumika kupitia OmniRoute" + }, + "setupClaude": { + "description": "Zalisha wasifu wa Claude Code katika ~/.claude/profiles kutoka kwenye katalogi ya modeli za OmniRoute" + }, + "connect": { + "description": "Unganisha kwenye seva ya mbali ya OmniRoute na uingie katika hali ya mbali" + }, + "tokens": { + "description": "Dhibiti tokeni za ufikiaji wa CLI zenye mawanda (hali ya mbali)" + }, + "configure": { + "description": "Chagua mtoa huduma+modeli kutoka kwenye seva inayotumika na usanidi CLI ya ndani inayotumika" + }, + "launchCodex": { + "description": "Zindua Codex CLI ikielekezwa kwenye OmniRoute (ya ndani au VPS ya mbali)" + }, + "setupCodex": { + "description": "Zalisha faili za wasifu za ~/.codex kutoka kwenye katalogi hai ya modeli za OmniRoute" + }, + "packs": { + "description": "Dhibiti vifurushi vya hiari vya wakati wa utekelezaji (ML / uendeshaji otomatiki wa kivinjari)", + "listDescription": "Orodhesha vifurushi vya hiari na hali yake ya usakinishaji", + "installDescription": "Sakinisha kifurushi cha hiari katika DATA_DIR", + "verifyDescription": "Thibitisha vifurushi vilivyosakinishwa dhidi ya faharasa ya thamani hakikishi iliyosambazwa", + "removeDescription": "Ondoa kifurushi cha hiari kilichosakinishwa", + "sourceOpt": "Saraka iliyo na maudhui ya vifurushi na faharasa ya vifurushi", + "warnNoIndex": "optional-packs.index.json haikupatikana — kusakinisha/kuthibitisha hakupatikani katika nakala hii ya msimbo (vifurushi vya desktop huihusisha)", + "errUnknown": "kifurushi kisichojulikana: {name}", + "errNoIndex": "faharasa ya vifurushi haikupatikana; pitisha --source iliyo na maudhui ya kifurushi (vifurushi vya desktop huiweka karibu na programu)", + "installed": "kifurushi \"{name}\" kimesakinishwa na kuthibitishwa katika {dir}", + "restartHint": "anzisha upya seva ya OmniRoute (au programu ya desktop) ili mazingira ya utekelezaji yatambue kifurushi", + "removed": "kifurushi \"{name}\" kimeondolewa", + "notInstalled": "kifurushi \"{name}\" hakikuwa kimesakinishwa", + "verifyOk": "vifurushi vyote vilivyosakinishwa vimethibitishwa", + "verifyFailed": "vifurushi {count} vimeshindwa kuthibitishwa", + "noneInstalled": "hakuna vifurushi vya hiari vilivyosakinishwa" } } diff --git a/bin/cli/locales/ta.json b/bin/cli/locales/ta.json index eef8c7826f..1118c0c818 100644 --- a/bin/cli/locales/ta.json +++ b/bin/cli/locales/ta.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "பிழை: {message}", + "serverOffline": "OmniRoute சேவையகம் ஆஃப்லைனில் உள்ளது. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "authRequired": "அங்கீகாரம் தேவை. OMNIROUTE_API_KEY-ஐ அமைக்கவும் அல்லது இதை இயக்கவும்: omniroute setup", + "rateLimited": "விகித வரம்பு மீறப்பட்டது. {seconds} வினாடிகளுக்குப் பிறகு மீண்டும் முயற்சிக்கவும்.", + "timeout": "கோரிக்கை {ms} மி.வி.க்குப் பிறகு காலாவதியானது.", + "success": "முடிந்தது.", + "yes": "ஆம்", + "no": "இல்லை", + "confirm": "உறுதியாகத் தொடர விரும்புகிறீர்களா? (ஆம்/இல்லை)", + "dryRun": "[dry-run] {action} செய்யப்படும்", + "cancelled": "ரத்துசெய்யப்பட்டது.", + "jsonOpt": "JSON ஆக வெளியிடு", + "yesOpt": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்" + }, + "setup": { + "title": "OmniRoute அமைப்பு", + "passwordPrompt": "நிர்வாகி கடவுச்சொல்", + "providerPrompt": "இயல்புநிலை provider (தவிர்க்க காலியாக விடவும்)", + "done": "அமைப்பு முடிந்தது", + "passwordSet": "நிர்வாகி கடவுச்சொல் உள்ளமைக்கப்பட்டது", + "providerSet": "Provider உள்ளமைக்கப்பட்டது: {name}", + "testingProvider": "Provider இணைப்பு சோதிக்கப்படுகிறது: {name}", + "testPassed": "Provider சோதனை வெற்றிபெற்றது", + "testFailed": "Provider சோதனை தோல்வியடைந்தது: {error}", + "loginEnabled": "உள்நுழைவு: இயக்கப்பட்டது (கடவுச்சொல் புதுப்பிக்கப்பட்டது)", + "loginDisabled": "உள்நுழைவு: முடக்கப்பட்டது", + "providerInfo": "Provider: {info}", + "opencode": "OpenCode-க்கான தொகுக்கப்பட்ட @omniroute/opencode-plugin-ஐ நிறுவி உள்ளமைக்கவும்" + }, + "doctor": { + "title": "OmniRoute பரிசோதனை", + "dbOk": "தரவுத்தளம்: சரி ({path})", + "dbMissing": "தரவுத்தளம் தொடங்கப்படவில்லை — `omniroute setup`-ஐ இயக்கவும்", + "portOk": "போர்ட் {port}: கிடைக்கிறது", + "portConflict": "போர்ட் {port}: மற்றொரு செயல்முறையால் பயன்படுத்தப்படுகிறது", + "encryptionOk": "குறியாக்க விசை: உள்ளமைக்கப்பட்டது", + "encryptionMissing": "குறியாக்க விசை இல்லை — `omniroute setup`-ஐ இயக்கவும்", + "allGood": "அனைத்துச் சோதனைகளும் வெற்றிபெற்றன.", + "warnings": "{count} எச்சரிக்கை(கள்) — மேலே பார்க்கவும்." + }, + "providers": { + "title": "Providers", + "noProviders": "Provider எதுவும் உள்ளமைக்கப்படவில்லை. இயக்கவும்: omniroute setup", + "testing": "{name} சோதிக்கப்படுகிறது...", + "available": "{count} provider(கள்) கிடைக்கின்றன", + "connected": "இணைக்கப்பட்டது", + "disconnected": "இணைப்பு துண்டிக்கப்பட்டது", + "validationFailed": "சரிபார்ப்பு தோல்வியடைந்தது: {error}", + "metrics": { + "description": "வழங்குநரின் செயல்திறன் அளவீடுகளைக் காட்டு (தாமதம், வெற்றி விகிதம், செலவு)", + "provider": "வழங்குநர் ID மூலம் வடிகட்டு", + "connection_id": "இணைப்பு ID மூலம் வடிகட்டு", + "period": "கால அளவு: 1h|6h|24h|7d|30d (இயல்புநிலை: 24h)", + "metric": "குறிப்பிட்ட அளவீட்டுப் புலத்தில் கவனம் செலுத்து", + "sort": "புலத்தின் அடிப்படையில் வரிசைப்படுத்து (இறங்கு வரிசை)", + "limit": "அதிகபட்ச வரிசைகள் (இயல்புநிலை: 50)", + "watch": "ஒவ்வொரு 5s-க்கும் புதுப்பி (நேரலைப் பயன்முறை)", + "compare": "அருகருகே ஒப்பிடுவதற்கான காற்புள்ளியால் பிரிக்கப்பட்ட வழங்குநர் ID-கள்" + }, + "metric_single": { + "description": "குறிப்பிட்ட இணைப்பிற்கான ஒற்றை அளவீட்டு மதிப்பைப் பெறு" + }, + "rotate": { + "description": "வழங்குநர் இணைப்பிற்கான அப்ஸ்ட்ரீம் API விசையைச் சுழற்று", + "newKeyOpt": "புதிய API விசை மதிப்பு (தவிர்க்கவும்: --from-env பயன்படுத்துவது சிறந்தது)", + "fromEnvOpt": "சுற்றுச்சூழல் மாறி VAR-இலிருந்து புதிய விசையைப் படி", + "oauthOpt": "அதற்குப் பதிலாக OAuth மறுஅங்கீகாரச் செயல்முறையைத் தொடங்கு", + "skipTestOpt": "சுழற்றலுக்குப் பிந்தைய இணைப்புச் சோதனையைத் தவிர்", + "dryRunOpt": "எழுதாமல் என்ன மாறும் என்பதைக் காட்டு", + "confirmPrompt": "\"{name}\" ({id}) இணைப்பிற்கான API விசையை மாற்றவா? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id})-க்கான விசை சுழற்றப்படும். எந்த மாற்றமும் செய்யப்படவில்லை.", + "oauthHint": "OAuth இணைப்பு — இயக்கவும்: omniroute oauth {provider}", + "envVarEmpty": "சுற்றுச்சூழல் மாறி {var} அமைக்கப்படவில்லை அல்லது காலியாக உள்ளது.", + "success": "\"{name}\"-க்கான விசை சுழற்றப்பட்டது. சரிபார்க்க `providers test {id}`-ஐ இயக்கவும்.", + "testPassed": "சுழற்றலுக்குப் பிந்தைய சோதனை வெற்றியடைந்தது.", + "testFailed": "சுழற்றலுக்குப் பிந்தைய சோதனை தோல்வியடைந்தது: {error}" + }, + "status": { + "description": "அனைத்து வழங்குநர் இணைப்புகளுக்குமான விசை நிலவரத்தைக் காட்டு (வயது, காலாவதி, காத்திருப்புக் காலம்)", + "providerOpt": "வழங்குநர் பெயரால் வடிகட்டு", + "header": "ID வழங்குநர் பெயர் காலாவதி நிலை சோதனை நிலை காத்திருப்பு முடியும் நேரம்", + "noData": "வழங்குநர் இணைப்புத் தரவு எதுவும் கிடைக்கவில்லை.", + "requiresServer": "providers status-க்கு OmniRoute சேவையகம் இயங்கிக்கொண்டிருக்க வேண்டும்." + } + }, + "keys": { + "title": "API விசைகள்", + "addDescription": "வழங்குநருக்கான API விசையைச் சேர் அல்லது புதுப்பி", + "listDescription": "உள்ளமைக்கப்பட்ட அனைத்து API விசைகளையும் பட்டியலிடு", + "removeDescription": "வழங்குநருக்கான API விசையை அகற்று", + "regenerateDescription": "OmniRoute API விசையை மீண்டும் உருவாக்கு", + "revokeDescription": "OmniRoute API விசையைத் திரும்பப் பெறு", + "revealDescription": "மறைக்கப்படாத API விசை மதிப்பை வெளிப்படுத்து", + "usageDescription": "API விசைக்கான சமீபத்திய பயன்பாட்டைக் காட்டு", + "usageLimitOpt": "சமீபத்திய கோரிக்கைகளின் எண்ணிக்கை", + "rotateDescription": "புதிய விசையை உருவாக்கி, பழைய விசையைச் செல்லாததாக்கு", + "graceOpt": "பழைய விசை செல்லாததாக்கப்படுவதற்கு முன் உள்ள சலுகைக் காலம் (ms)", + "stdinOpt": "வாதத்திற்குப் பதிலாக stdin இலிருந்து API விசையைப் படி", + "added": "{provider} க்கான விசை சேர்க்கப்பட்டது.", + "removed": "விசை அகற்றப்பட்டது.", + "listed": "{count} விசை(கள்).", + "noKeys": "விசைகள் எதுவும் உள்ளமைக்கப்படவில்லை.", + "noUsage": "பயன்பாட்டுத் தரவு எதுவும் கிடைக்கவில்லை.", + "confirmRemove": "{id} விசையை அகற்றவா?", + "confirmRegenerate": "{id} விசையை மீண்டும் உருவாக்கவா?", + "confirmRevoke": "{id} விசையை ரத்து செய்யவா?", + "confirmRotate": "{id} விசையைச் சுழற்றவா? (சலுகைக் காலத்திற்குப் பிறகு பழைய விசை செல்லாததாக்கப்படும்)", + "regenerated": "மீண்டும் உருவாக்கப்பட்டது. புதிய விசை: {key}", + "revoked": "{id} விசை ரத்து செய்யப்பட்டது.", + "rotated": "{id} விசை சுழற்றப்பட்டது. புதிய விசை ID: {newId}", + "revealWarning": "⚠ இது மறைக்கப்படாத முழு விசையையும் காண்பிக்கும். உங்கள் திரை தனிப்பட்டதாக இருப்பதை உறுதிசெய்யவும்.", + "providerRequired": "வழங்குநர் தேவை.", + "keyRequired": "API விசை தேவை.", + "stdinEmpty": "stdin வழியாக API விசை எதுவும் வழங்கப்படவில்லை.", + "unknownProvider": "அறியப்படாத வழங்குநர்: {provider}", + "policy": { + "title": "விசைக் கொள்கை", + "showDescription": "ஒரு விசைக்கான விகித/செலவுக் கொள்கையைக் காட்டு", + "setDescription": "ஒரு விசைக்கான விகித/செலவுக் கொள்கையை அமை", + "rateLimitOpt": "ஒரு நிமிடத்திற்கான அதிகபட்ச கோரிக்கைகள்", + "maxCostOpt": "ஒரு நாளுக்கான அதிகபட்ச செலவு (USD)", + "allowedModelsOpt": "அனுமதிக்கப்பட்ட மாதிரிகளின் காற்புள்ளியால் பிரிக்கப்பட்ட பட்டியல்", + "nothingToSet": "கொள்கைப் புலங்கள் எதுவும் வழங்கப்படவில்லை. --rate-limit, --max-cost அல்லது --allowed-models ஐப் பயன்படுத்தவும்.", + "updated": "கொள்கை புதுப்பிக்கப்பட்டது." + }, + "expiration": { + "title": "விசை காலாவதி", + "listDescription": "விரைவில் காலாவதியாகும் விசைகளைப் பட்டியலிடு", + "daysOpt": "N நாட்களுக்குள் காலாவதியாகும் விசைகளைக் காட்டு", + "none": "{days} நாட்களுக்குள் காலாவதியாகும் விசைகள் எதுவும் இல்லை.", + "listTitle": "{days} நாட்களுக்குள் காலாவதியாகும் விசைகள்:" + } + }, + "authExport": { + "description": "மறைகுறியாக்கம் நீக்கப்பட்ட வழங்குநர் நற்சான்றுகளை ஏற்றுமதி செய் (உள்ளகப் பயன்பாட்டிற்கு மட்டும், எளிய உரை வெளியீடு)", + "idOpt": "இந்த id/பெயர்/வழங்குநருடன் பொருந்தும் இணைப்பை மட்டும் ஏற்றுமதி செய்", + "formatOpt": "வெளியீட்டு வடிவம்: json அல்லது env", + "outOpt": "stdout க்குப் பதிலாக வெளியீட்டைக் கோப்பில் எழுது (0600 அனுமதிகளுடன் எழுதப்படும்)", + "forceOpt": "இது எளிய உரை ரகசியங்களை அச்சிடுகிறது/எழுதுகிறது என்பதை நீங்கள் புரிந்துகொண்டதை உறுதிப்படுத்தவும்", + "warning": "⚠ இது மறைகுறியாக்கம் நீக்கப்பட்ட எளிய உரை API விசைகளையும் OAuth டோக்கன்களையும் அச்சிடுகிறது/எழுதுகிறது. உங்கள் திரை, ஷெல் வரலாறு மற்றும் எந்த வெளியீட்டுக் கோப்பும் தனிப்பட்டதாக இருப்பதை உறுதிசெய்யவும்.", + "confirmHeading": "⚠ எச்சரிக்கை: இது மறைகுறியாக்கம் நீக்கப்பட்ட வழங்குநர் நற்சான்றுகளை எளிய உரையில் ஏற்றுமதி செய்கிறது", + "confirmBody": "இந்தக் கட்டளை தேர்ந்தெடுக்கப்பட்ட இணைப்பு(களுக்கான) apiKey, accessToken, refreshToken மற்றும்\nidToken ஆகியவற்றின் மறைகுறியாக்கத்தை நீக்கி அச்சிடுகிறது/எழுதுகிறது. வெளியீட்டை ஒரு ரகசியமாகக் கருதவும்.", + "confirmFooter": "உறுதிப்படுத்த, இதை இயக்கவும்:\n omniroute auth export --force", + "missingKey": "நற்சான்றுகளை ஏற்றுமதி செய்ய STORAGE_ENCRYPTION_KEY தேவை.", + "notFound": "இணைப்பு கிடைக்கவில்லை: {id}", + "invalidFormat": "தவறான வடிவம்: {format}. json அல்லது env ஐப் பயன்படுத்தவும்." + }, + "stream": { + "description": "SSE ஆய்வு முறைகளுடன் அரட்டை பதிலை ஸ்ட்ரீம் செய்யவும்", + "file": "கோப்பிலிருந்து தூண்டுரையைப் படிக்கவும்", + "stdin": "stdin இலிருந்து தூண்டுரையைப் படிக்கவும்", + "model": "மாதிரி ID (இயல்புநிலை: auto)", + "system": "கணினித் தூண்டுரை", + "combo": "பெயரின் அடிப்படையில் குறிப்பிட்ட combo ஐக் கட்டாயப்படுத்தவும்", + "max_tokens": "பதிலில் அதிகபட்ச டோக்கன்கள்", + "responses_api": "/v1/chat/completions என்பதற்குப் பதிலாக /v1/responses ஐப் பயன்படுத்தவும்", + "raw": "பெறப்பட்டவாறே மூல SSE வரிகளை அச்சிடவும்", + "debug": "ஒவ்வொரு துண்டிற்குமான நேரத் தகவலை stderr இல் அச்சிடவும்", + "save": "அனைத்து SSE நிகழ்வுகளையும் .jsonl கோப்பில் சேமிக்கவும்", + "error": { + "empty_prompt": "பிழை: தூண்டுரை தேவை (நிலைச் சார்பு வாதம், --file அல்லது --stdin)" + } + }, + "usage": { + "description": "பயன்பாட்டுப் பகுப்பாய்வு, வரவுசெலவுகள், ஒதுக்கீடுகள் மற்றும் பதிவுகள்", + "analytics": { + "description": "திரட்டப்பட்ட பயன்பாட்டுப் பகுப்பாய்வைக் காட்டவும்", + "period": "கால வரம்பு: 1d|7d|30d|90d|ytd|all (இயல்புநிலை: 30d)", + "provider": "வழங்குநர் ID மூலம் வடிகட்டவும்" + }, + "budget": { + "description": "செலவு வரவுசெலவுகளை நிர்வகிக்கவும்", + "set": { + "scope": "வரவுசெலவு வரம்பு (இயல்புநிலை: global)", + "period": "வரவுசெலவுக் காலம்: daily|weekly|monthly (இயல்புநிலை: monthly)" + } + }, + "quota": { + "description": "வழங்குநரின் ஒதுக்கீட்டுப் பயன்பாட்டைக் காட்டவும்", + "provider": "வழங்குநர் ID மூலம் வடிகட்டவும்", + "check": "புதிய கோரிக்கைக்கு ஒதுக்கீடு கிடைக்கிறதா என்பதைக் காட்டவும்" + }, + "logs": { + "description": "கோரிக்கை அழைப்புப் பதிவுகளைக் காட்டவும்", + "limit": "திருப்பி வழங்க வேண்டிய பதிவுகளின் எண்ணிக்கை (இயல்புநிலை: 100)", + "search": "பதிவுகளை வடிகட்டுவதற்கான தேடல் வினவல்", + "since": "இந்த நேரமுத்திரைக்குப் பிந்தைய பதிவுகளைத் திருப்பி வழங்கவும்", + "follow": "புதிய பதிவுகளைத் தொடர்ந்து கண்காணிக்கவும்", + "api_key": "API விசையின்படி பதிவுகளை வடிகட்டவும்" + }, + "utilization": { + "description": "API விசைப் பயன்பாட்டு அளவீடுகளைக் காட்டவும்", + "api_key": "API விசையின்படி வடிகட்டவும்" + }, + "history": { + "description": "கோரிக்கை வரலாற்றைக் காட்டவும்", + "limit": "வரலாற்றுப் பதிவுகளின் எண்ணிக்கை (இயல்புநிலை: 100)" + }, + "proxy_logs": { + "description": "பதிலி-நிலை கோரிக்கைப் பதிவுகளைக் காட்டவும்", + "limit": "பதிலி பதிவுகளின் எண்ணிக்கை (இயல்புநிலை: 100)" + } + }, + "cost": { + "description": "வழங்குநர், மாதிரி, combo அல்லது API விசையின்படி பிரிக்கப்பட்ட செலவு அறிக்கையைக் காட்டவும்", + "period": "கால வரம்பு: 1d|7d|30d|90d|ytd|all (இயல்புநிலை: 30d)", + "since": "தொடக்கத் தேதி (ISO வடிவம், எ.கா. 2026-01-01) — --period ஐ மீறி அமைக்கும்", + "until": "முடிவுத் தேதி (ISO வடிவம்)", + "group_by": "முடிவுகளை இதன்படி குழுவாக்கு: provider|model|api-key|combo|day (இயல்புநிலை: provider)", + "api_key_filter": "குறிப்பிட்ட API key மூலம் வடிகட்டு", + "limit": "காட்ட வேண்டிய வரிசைகளின் அதிகபட்ச எண்ணிக்கை (இயல்புநிலை: 100)" + }, + "simulate": { + "description": "Dry-run வழித்தட உருவகப்படுத்தல் — upstream ஐ அழைக்காமல் எந்த provider-கள் தேர்ந்தெடுக்கப்படும் என்பதைக் காட்டு", + "file": "JSON கோப்பிலிருந்து முழு request body-ஐ ஏற்று", + "model": "Model ID (இயல்புநிலை: auto)", + "combo": "பெயரைக் கொண்டு குறிப்பிட்ட combo-ஐ கட்டாயப்படுத்து", + "reasoning": "Reasoning effort நிலை (low|medium|high)", + "thinking": "Extended thinking token வரம்பு", + "explain": "fallback tree மற்றும் செலவு வரம்பை stderr-க்கு அச்சிடு", + "noCombo": "பொருந்தும் combo எதுவும் கிடைக்கவில்லை. இதைக் கொண்டு ஒன்றை உள்ளமைக்கவும்: omniroute combo create" + }, + "chat": { + "description": "OmniRoute-க்கு ஒரு one-shot chat prompt-ஐ அனுப்பு", + "file": "கோப்பிலிருந்து prompt-ஐ படி", + "stdin": "stdin-இலிருந்து prompt-ஐ படி", + "system": "System prompt", + "model": "Model ID (இயல்புநிலை: auto)", + "max_tokens": "பதிலிலுள்ள அதிகபட்ச token-கள்", + "temperature": "Sampling temperature (0–2)", + "top_p": "Top-p nucleus sampling", + "reasoning_effort": "Reasoning effort நிலை (low|medium|high)", + "thinking_budget": "Extended thinking token வரம்பு", + "combo": "பெயரைக் கொண்டு குறிப்பிட்ட combo-ஐ கட்டாயப்படுத்து", + "responses_api": "/v1/chat/completions என்பதற்குப் பதிலாக /v1/responses-ஐ பயன்படுத்து", + "stream": "பதிலைப் படிப்படியாக stream செய்", + "no_history": "~/.omniroute/cli-history.jsonl-இல் சேமிக்க வேண்டாம்", + "error": { + "empty_prompt": "பிழை: prompt தேவை (positional arg, --file, அல்லது --stdin)" + } + }, + "serve": { + "description": "OmniRoute server-ஐத் தொடங்கு (இயல்புநிலைச் செயல்)", + "starting": "{port} port-இல் OmniRoute server தொடங்கப்படுகிறது...", + "ready": "http://localhost:{port} இல் தயாராக உள்ளது", + "stopping": "server நிறுத்தப்படுகிறது (PID {pid})...", + "stopped": "server நிறுத்தப்பட்டது.", + "notRunning": "server இயங்கவில்லை.", + "port": "கேட்க வேண்டிய port (இயல்புநிலை: 20128)", + "no_open": "browser-ஐத் தானாகத் திறக்க வேண்டாம்", + "daemon": "server-ஐ background daemon ஆக இயக்கு", + "log": "server logs-ஐ inline-ஆகக் காட்டு", + "no_recovery": "crash ஏற்பட்டால் auto-restart செய்வதை முடக்கு (debugging mode)", + "max_restarts": "கைவிடுவதற்கு முன் 30s-க்குள் அனுமதிக்கப்படும் அதிகபட்ச crash restart-கள் (இயல்புநிலை: 2)", + "tray": "கணினித் தட்டில் தொடங்கு (டெஸ்க்டாப் மட்டும், விருப்பத் தேர்வு)", + "no_tray": "கணினித் தட்டு ஐகானை முடக்கு", + "ready_timeout": "தயார்நிலைச் சோதனையின் காலாவதி நேரம் மில்லிவினாடிகளில் (OMNIROUTE_READY_TIMEOUT_MS-உம் பொருந்தும், இயல்புநிலை 60000)", + "tls_cert": "HTTPS வழங்குவதற்கான TLS சான்றிதழின் (PEM) பாதை (OMNIROUTE_TLS_CERT-உம் பொருந்தும்)", + "tls_key": "HTTPS வழங்குவதற்கான TLS தனிப்பட்ட விசையின் (PEM) பாதை (OMNIROUTE_TLS_KEY-உம் பொருந்தும்)" + }, + "backup": { + "title": "காப்புப்பிரதி", + "description": "OmniRoute தரவின் காப்புப்பிரதியை உருவாக்கு", + "creating": "காப்புப்பிரதி உருவாக்கப்படுகிறது...", + "done": "காப்புப்பிரதி {path} இல் சேமிக்கப்பட்டது", + "noFiles": "காப்புப்பிரதி எடுக்க கோப்புகள் எதுவுமில்லை (தரவுத்தளம் துவக்கப்படவில்லை)", + "failed": "காப்புப்பிரதி தோல்வியடைந்தது: {error}", + "restoring": "{path} இலிருந்து மீட்டமைக்கப்படுகிறது...", + "restored": "மீட்டமைப்பு நிறைவடைந்தது.", + "restoreDescription": "காப்புப்பிரதியிலிருந்து மீட்டமை", + "listTitle": "கிடைக்கக்கூடிய காப்புப்பிரதிகள்", + "noBackups": "காப்புப்பிரதிகள் எதுவும் கிடைக்கவில்லை.", + "notFound": "காப்புப்பிரதி கிடைக்கவில்லை: {name}", + "confirmRestore": "தற்போதைய தரவை {ts} நேரத்திலுள்ள காப்புப்பிரதியால் மேலெழுதவா?", + "createDescription": "OmniRoute தரவின் காப்புப்பிரதியை உருவாக்கு", + "nameOpt": "தனிப்பயன் காப்புப்பிரதிப் பெயர்", + "cloudOpt": "காப்புப்பிரதியை மேகச் சேமிப்பகத்தில் பதிவேற்று", + "encryptOpt": "AES-256-GCM மூலம் காப்புப்பிரதியை மறைகுறியாக்கு", + "keyFileOpt": "மறைகுறியாக்கக் கடவுத்தொடரைக் கொண்ட கோப்பின் பாதை", + "excludeOpt": "வடிவத்துடன் பொருந்தும் கோப்பை விலக்கு (மீண்டும் பயன்படுத்தலாம்)", + "retentionOpt": "கடைசி N காப்புப்பிரதிகளை மட்டும் வைத்திரு", + "passphrasePrompt": "மறைகுறியாக்கக் கடவுத்தொடர்:", + "noPassphrase": "மறைகுறியாக்கப்பட்ட காப்புப்பிரதிக்குக் கடவுத்தொடர் அவசியம்.", + "cloudFailed": "எச்சரிக்கை: மேகப் பதிவேற்றம் தோல்வியடைந்தது. உள்ளூர் காப்புப்பிரதி சேமிக்கப்பட்டது.", + "cloudUploaded": "மேகக் காப்புப்பிரதி பதிவேற்றப்பட்டது: {url}", + "auto": { + "title": "காப்புப்பிரதி அட்டவணை", + "enableDescription": "திட்டமிடப்பட்ட தானியங்கி காப்புப்பிரதிகளை இயக்கு", + "disableDescription": "திட்டமிடப்பட்ட தானியங்கி காப்புப்பிரதிகளை முடக்கு", + "statusDescription": "தற்போதைய காப்புப்பிரதி அட்டவணை நிலையைக் காட்டு", + "cronOpt": "அட்டவணைக்கான Cron கோவை (இயல்புநிலை: தினமும் அதிகாலை 3 மணிக்கு)", + "enabled": "தானியங்கி காப்புப்பிரதி இயக்கப்பட்டது (cron: {cron}).", + "hint": "தொடக்கத்தின்போது அட்டவணையை omniroute serve வாசிக்கும்.", + "disabled": "தானியங்கி காப்புப்பிரதி முடக்கப்பட்டது.", + "notConfigured": "காப்புப்பிரதி அட்டவணை எதுவும் உள்ளமைக்கப்படவில்லை." + } + }, + "health": { + "description": "சேவையகத்தின் ஆரோக்கியத்தையும் கூறுகளின் நிலையையும் சரிபார்", + "noServer": "சேவையகம் இயங்கவில்லை. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "title": "நிலைமை", + "status": "நிலை: {status}", + "uptime": "இயங்குநேரம்: {uptime}", + "requests": "கோரிக்கைகள் (24மணி): {count}", + "cost": "செலவு (24மணி): ${cost}" + }, + "quota": { + "description": "வழங்குநரின் ஒதுக்கீட்டுப் பயன்பாட்டைக் காட்டு", + "noServer": "சேவையகம் இயங்கவில்லை. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "noData": "ஒதுக்கீட்டுத் தகவல் எதுவும் கிடைக்கவில்லை." + }, + "cache": { + "description": "பதில் தற்காலிகச் சேமிப்பை நிர்வகி", + "noServer": "சேவையகம் இயங்கவில்லை. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "cleared": "தற்காலிகச் சேமிப்பு அழிக்கப்பட்டது.", + "clearFailed": "தற்காலிகச் சேமிப்பை அழிக்க முடியவில்லை." + }, "redis": { "description": "OmniRoute தற்காலிக சேமிப்பு மற்றும் ஒதுக்கீடு கண்காணிப்புக்காக ஒரே கிளிக்கில் உள்ளூர் Redis கொள்கலனை (Podman அல்லது Docker) தொடங்கவும்" + }, + "test": { + "description": "வழங்குநர் இணைப்பைச் சோதிக்கவும்", + "noServer": "சேவையகம் இயங்கவில்லை. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "testing": "{provider} / {model} சோதிக்கப்படுகிறது...", + "passed": "இணைப்பு வெற்றிகரமாக நிறுவப்பட்டது!", + "failed": "இணைப்பு தோல்வியடைந்தது: {error}", + "allProvidersOpt": "உள்ளமைக்கப்பட்ட அனைத்து வழங்குநர்களையும் சோதிக்கவும்", + "latencyOpt": "தாமத அளவீடுகளைக் காட்டு (சராசரி/குறைந்தபட்சம்/அதிகபட்சம் மி.வி.)", + "repeatOpt": "சோதனையை N முறை மீண்டும் செய்து முடிவுகளைத் தொகுக்கவும்", + "compareOpt": "ஒப்பிட வேண்டிய காற்புள்ளியால் பிரிக்கப்பட்ட மாதிரிகள் (எ.கா. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "முடிவுகளை ஒரு JSON கோப்பில் சேமிக்கவும்", + "saved": "முடிவுகள் {path} இல் சேமிக்கப்பட்டன", + "compareTitle": "மாதிரி ஒப்பீடு", + "compareMinTwo": "--compare என்பதற்கு குறைந்தது இரண்டு மாதிரிகள் தேவை (காற்புள்ளியால் பிரிக்கப்பட்டவை)", + "noProviders": "வழங்குநர்கள் எதுவும் உள்ளமைக்கப்படவில்லை. இதைக் கொண்டு ஒன்றைச் சேர்க்கவும்: omniroute keys add" + }, + "update": { + "checking": "புதுப்பிப்புகள் உள்ளதா எனச் சரிபார்க்கப்படுகிறது...", + "upToDate": "ஏற்கனவே புதுப்பித்த நிலையில் உள்ளது ({version}).", + "available": "புதுப்பிப்பு கிடைக்கிறது: {current} → {latest}", + "installing": "{latest} நிறுவப்படுகிறது...", + "done": "{latest} க்குப் புதுப்பிக்கப்பட்டது. பயன்படுத்த சேவையகத்தை மறுதொடக்கம் செய்யவும்." + }, + "mcp": { + "title": "MCP சேவையகம்", + "running": "MCP சேவையகம் இயங்குகிறது ({transport})", + "stopped": "MCP சேவையகம் நிறுத்தப்பட்டது.", + "restarted": "MCP சேவையகம் மறுதொடக்கம் செய்யப்பட்டது.", + "stoppedHint": "அதை இயக்க `omniroute mcp enable` ஐப் பயன்படுத்தவும்.", + "enabled": "MCP சேவையகம் இயக்கப்பட்டது.", + "disabled": "MCP சேவையகம் முடக்கப்பட்டது.", + "enable": { + "description": "MCP சேவையகத்தை இயக்கு", + "transport": "பயன்படுத்த வேண்டிய போக்குவரத்து முறை: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP சேவையகத்தை முடக்கு" + }, + "call": { + "description": "MCP கருவியை நேரடியாக இயக்கு", + "args": "JSON மதிப்புருக்கள் பொருள் (உள்ளமைந்தது)", + "args_file": "JSON மதிப்புருக்கள் கோப்பிற்கான பாதை", + "stream": "ஸ்ட்ரீமிங் முனைப்புள்ளியைப் பயன்படுத்து (/api/mcp/stream)", + "scope": "தேவையான வரம்பு (மீண்டும் குறிப்பிடக்கூடியது, எ.கா. read:health)" + }, + "scopes": { + "description": "கிடைக்கக்கூடிய MCP வரம்புகளைப் பட்டியலிடு", + "tool": "குறிப்பிட்ட கருவிக்குத் தேவையான வரம்புகளைக் காட்டு" + }, + "tools": { + "description": "MCP கருவிகளை ஆய்வுசெய்", + "list": { + "description": "அனைத்து MCP கருவிகளையும் பட்டியலிடு", + "scope": "வரம்பின்படி வடிகட்டு" + }, + "info": { + "description": "MCP கருவிக்கான மேனிலைத் தரவைக் காட்டு" + }, + "schema": { + "description": "MCP கருவிக்கான உள்ளீடு/வெளியீடு JSON திட்டவடிவத்தைக் காட்டு", + "io": "திட்டவடிவ வகை: input|output (இயல்புநிலை: input)" + } + }, + "audit": { + "description": "MCP தணிக்கைப் பதிவு (audit --source mcp என்பதற்கான மாற்றுப்பெயர்)" + } + }, + "a2a": { + "skills": { + "description": "முகவர் அட்டையிலிருந்து கிடைக்கக்கூடிய A2A திறன்களைப் பட்டியலிடு" + }, + "invoke": { + "description": "A2A திறனை இயக்கி, பணியின் ID-ஐத் திருப்பு", + "input": "JSON உள்ளீட்டுப் பொருள்", + "input_file": "JSON உள்ளீட்டுக் கோப்பிற்கான பாதை", + "wait": "திரும்புவதற்கு முன் பணி நிறைவடையும் வரை காத்திரு", + "timeout": "நிறைவுக்காகக் காத்திருக்கும் காலவரம்பு ms-இல் (இயல்புநிலை: 60000)" + }, + "tasks": { + "description": "A2A பணிகளை நிர்வகி", + "list": { + "status": "நிலையின்படி வடிகட்டு", + "skill": "திறன் ID-இன்படி வடிகட்டு" + }, + "watch": { + "description": "பணி நிறைவடையும் வரை அதன் நிலையைத் தொடர்ந்து சரிபார்" + }, + "stream": { + "description": "SSE வழியாகப் பணி இயக்க நிகழ்வுகளை ஸ்ட்ரீம் செய்" + }, + "logs": { + "description": "பணிச் செய்திகளையும் உருவாக்கப்பட்ட ஆவணங்களையும் காட்டு" + } + } + }, + "policy": { + "description": "OmniRoute அங்கீகாரக் கொள்கைகளை நிர்வகி", + "list": { + "description": "கொள்கைகளைப் பட்டியலிடு", + "kind": "வகையின்படி வடிகட்டு (allow|deny|rate-limit|cost-cap)", + "scope": "வரம்பின்படி வடிகட்டு (global|api-key|provider)" + }, + "get": { + "description": "ID மூலம் கொள்கை விவரங்களைப் பெறு" + }, + "create": { + "description": "JSON கோப்பிலிருந்து கொள்கையை உருவாக்கு", + "file": "கொள்கை JSON கோப்பிற்கான பாதை" + }, + "update": { + "description": "JSON கோப்பிலிருந்து கொள்கையைப் புதுப்பி", + "file": "கொள்கை JSON கோப்பிற்கான பாதை" + }, + "delete": { + "description": "ID மூலம் கொள்கையை நீக்கு", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்" + }, + "evaluate": { + "description": "கொள்கை மதிப்பீட்டைச் சோதனை முறையில் இயக்கு (வெளியேற்றக் குறியீடு 0=அனுமதிக்கப்பட்டது, 4=மறுக்கப்பட்டது)", + "api_key": "மதிப்பிட வேண்டிய API விசை", + "action": "சரிபார்க்க வேண்டிய செயல் (எ.கா. chat, embed, admin)", + "resource": "வளப் பாதை அல்லது அடையாளங்காட்டி", + "context": "JSON பொருளாகக் கூடுதல் சூழல்" + }, + "export": { + "description": "அனைத்து கொள்கைகளையும் ஒரு JSON கோப்பிற்கு ஏற்றுமதி செய்" + }, + "import": { + "description": "ஒரு JSON கோப்பிலிருந்து கொள்கைகளை இறக்குமதி செய்", + "overwrite": "அதே ID கொண்ட தற்போதைய கொள்கைகளை மேலெழுது" + } + }, + "compression": { + "description": "OmniRoute சுருக்கச் செயலாக்கத் தொடரை உள்ளமைத்து ஆய்வுசெய்", + "status": { + "description": "தற்போதைய சுருக்க நிலை மற்றும் அமைப்புகளைக் காட்டு" + }, + "configure": { + "description": "சுருக்க அமைப்புகளை உள்ளமை", + "engine": "சுருக்கப் பொறி (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman தீவிரத்தன்மை 0.0–1.0", + "rtk_budget": "RTK டோக்கன் வரம்பு", + "language_pack": "செயல்படுத்த வேண்டிய மொழித் தொகுப்பு" + }, + "engine": { + "description": "செயலில் உள்ள சுருக்கப் பொறியைப் பெறு அல்லது அமை" + }, + "combos": { + "description": "சுருக்க இணைப்பு புள்ளிவிவரங்களை நிர்வகி" + }, + "rules": { + "description": "சுருக்க விதிகளை நிர்வகி", + "add": { + "pattern": "பொருத்த வேண்டிய வடிவம் (regex அல்லது field:pattern)", + "action": "செயல்: drop|shrink|replace" + } + }, + "language_packs": { + "description": "கிடைக்கக்கூடிய சுருக்க மொழித் தொகுப்புகளைப் பட்டியலிடு" + }, + "preview": { + "description": "ஒரு கோரிக்கையில் சுருக்கத்தின் விளைவை முன்னோட்டமிடு", + "file": "கோரிக்கை JSON கோப்பிற்கான பாதை" + } + }, + "tunnel": { + "title": "சுரங்கங்கள்", + "listDescription": "செயலில் உள்ள சுரங்கங்களைப் பட்டியலிடு", + "createDescription": "ஒரு சுரங்கத்தை உருவாக்கு", + "created": "சுரங்கம் உருவாக்கப்பட்டது: {url}", + "stopped": "சுரங்கம் நிறுத்தப்பட்டது.", + "confirmStop": "சுரங்கம் {id}-ஐ நிறுத்தவா?", + "stopDescription": "ஒரு சுரங்கத்தை நிறுத்து", + "statusDescription": "ஒரு சுரங்கத்தின் விரிவான நிலையைக் காட்டு", + "logsDescription": "ஒரு சுரங்கத்திற்கான பதிவுகளைக் காட்டு", + "infoDescription": "ஒரு சுரங்கத்தின் உள்ளமைவு விவரங்களைக் காட்டு", + "rotateDescription": "புதிய சுரங்க URL-ஐ உருவாக்கு", + "tailOpt": "காட்ட வேண்டிய பதிவுவரிகளின் எண்ணிக்கை", + "typeRequired": "சுரங்க வகை அவசியம்.", + "noLogs": "பதிவுகள் எதுவும் கிடைக்கவில்லை.", + "notAvailable": "சுரங்கத் தகவல் கிடைக்கவில்லை.", + "noTunnels": "செயலில் உள்ள சுரங்கங்கள் எதுவும் இல்லை.", + "infoTitle": "சுரங்கத் தகவல்: {type}", + "rotated": "சுரங்க URL மாற்றப்பட்டது: {url}", + "confirmRotate": "{type} சுரங்க URL-ஐ மாற்றவா? (ஒரு புதிய URL உருவாக்கப்படும்)" + }, + "stop": { + "description": "OmniRoute சேவையகத்தை நிறுத்து", + "stopping": "சேவையகம் நிறுத்தப்படுகிறது (PID {pid})...", + "stopped": "சேவையகம் நிறுத்தப்பட்டது.", + "notRunning": "எந்தச் சேவையகமும் இயங்கவில்லை.", + "portFallback": "PID கோப்பு கிடைக்கவில்லை, போர்ட் அடிப்படையில் நிறுத்த முயற்சிக்கப்படுகிறது..." + }, + "restart": { + "description": "OmniRoute சேவையகத்தை மறுதொடக்கம் செய்", + "restarting": "OmniRoute சேவையகம் மறுதொடக்கம் செய்யப்படுகிறது..." + }, + "dashboard": { + "description": "OmniRoute கட்டுப்பாட்டுப் பலகையை உலாவியில் திற", + "opening": "{url} இல் கட்டுப்பாட்டுப் பலகை திறக்கப்படுகிறது", + "urlOnly": "உலாவியைத் திறக்காமல் கட்டுப்பாட்டுப் பலகை URL-ஐ அச்சிடு", + "tui": "ஊடாடும் TUI கட்டுப்பாட்டுப் பலகையைத் திற (முனைய UI, 7 தாவல்கள்)" + }, + "models": { + "description": "கிடைக்கக்கூடிய மாதிரிகளைப் பட்டியலிடு (சேவையகம் தேவை)", + "search": "ID, பெயர், வழங்குநர் அல்லது விளக்கத்தின் அடிப்படையில் மாதிரிகளை வடிகட்டு", + "noServer": "சேவையகம் இயங்கவில்லை. இதைக் கொண்டு தொடங்கவும்: omniroute serve", + "noModels": "மாதிரிகள் எதுவும் கிடைக்கவில்லை." + }, + "audit": { + "description": "இணக்கப்பாடு மற்றும் MCP தணிக்கைப் பதிவுகளை அணுகு", + "source": "பதிவு மூலம்: all|compliance|mcp (இயல்புநிலை: all)", + "since": "இந்த நேரமுத்திரையிலிருந்து பதிவுகளைத் திருப்பு (ISO 8601)", + "until": "இந்த நேரமுத்திரை வரை பதிவுகளைத் திருப்பு (ISO 8601)", + "tail": { + "description": "சமீபத்திய தணிக்கைப் பதிவுகளைக் காட்டு", + "follow": "புதிய பதிவுகளைத் தொடர்ந்து காட்டு (2s வாக்கெடுப்பு)", + "limit": "காட்ட வேண்டிய அதிகபட்ச பதிவுகள் (இயல்புநிலை: 100)" + }, + "search": { + "description": "முக்கியச்சொல் மூலம் தணிக்கைப் பதிவுகளைத் தேடு", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 200)", + "actor": "செயல்பாட்டாளர் ID மூலம் வடிகட்டு", + "action": "செயல் பெயர் மூலம் வடிகட்டு" + }, + "export": { + "description": "தணிக்கைப் பதிவைக் கோப்பிற்கு ஏற்றுமதி செய்", + "format": "வெளியீட்டு வடிவம்: jsonl|csv (இயல்புநிலை: jsonl)" + }, + "stats": { + "description": "தணிக்கைப் பதிவு புள்ளிவிவரங்களைக் காட்டு", + "period": "கால அளவு: 1d|7d|30d (இயல்புநிலை: 7d)" + }, + "get": { + "description": "ID மூலம் ஒரு தணிக்கைப் பதிவைப் பெறு" + } + }, + "skills": { + "description": "OmniRoute திறன்களை நிர்வகி (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "நிறுவப்பட்ட திறன்களைப் பட்டியலிடு", + "type": "வகை மூலம் வடிகட்டு (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "இயக்கப்பட்ட திறன்களை மட்டும் காட்டு", + "disabled": "முடக்கப்பட்ட திறன்களை மட்டும் காட்டு", + "api_key": "API விசை மூலம் வடிகட்டு" + }, + "get": { + "description": "ID மூலம் ஒரு திறனின் விவரங்களைப் பெறு" + }, + "install": { + "description": "கோப்பு அல்லது URL-இலிருந்து ஒரு திறனை நிறுவு", + "from_file": "திறன் JSON வரையறைக் கோப்பிற்கான பாதை", + "from_url": "தொலைநிலை skill வரையறையின் URL", + "type": "Skill வகை (sandbox|custom|hybrid)", + "enable": "நிறுவிய பிறகு skill-ஐ இயக்கவும்" + }, + "enable": { + "description": "ID மூலம் ஒரு skill-ஐ இயக்கவும்" + }, + "disable": { + "description": "ID மூலம் ஒரு skill-ஐ முடக்கவும்", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்க்கவும்" + }, + "delete": { + "description": "ID மூலம் ஒரு skill-ஐ நீக்கவும்", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்க்கவும்" + }, + "execute": { + "description": "ID மூலம் ஒரு skill-ஐ செயல்படுத்தவும்", + "input": "JSON உள்ளீட்டு பொருள்", + "input_file": "JSON உள்ளீட்டுக் கோப்பிற்கான பாதை", + "timeout": "செயல்பாட்டு நேர வரம்பு ms-இல் (இயல்புநிலை: 30000)" + }, + "executions": { + "description": "Skill செயல்பாட்டு வரலாற்றைப் பட்டியலிடவும்", + "skill": "Skill ID மூலம் வடிகட்டவும்", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 50)", + "status": "நிலையின்படி வடிகட்டவும் (running|completed|failed)" + }, + "skillssh": { + "description": "SSH வழியாக நிறுவப்பட்ட skills-ஐ நிர்வகிக்கவும்" + }, + "marketplace": { + "description": "சந்தையிலிருந்து skills-ஐ உலாவி நிறுவவும்" + }, + "mp": { + "search": { + "description": "சந்தைத் தொகுப்புகளைத் தேடவும்", + "category": "வகையின்படி வடிகட்டவும்", + "tag": "குறிச்சொல்லின்படி வடிகட்டவும்", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 30)", + "sort": "இதன்படி வரிசைப்படுத்தவும்: downloads|rating|recent" + }, + "info": { + "description": "தொகுப்பு விவரங்களையும் readme-ஐயும் காட்டவும்" + }, + "install": { + "description": "ஒரு சந்தைத் தொகுப்பை நிறுவவும்", + "version": "தொகுப்புப் பதிப்பு (இயல்புநிலை: latest)", + "enable": "நிறுவிய பிறகு இயக்கவும்", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்க்கவும்" + }, + "categories": { + "description": "சந்தை வகைகளைப் பட்டியலிடவும்" + }, + "featured": { + "description": "சிறப்புத் தேர்வான சந்தைத் தொகுப்புகளைக் காட்டவும்" + } + } + }, + "memory": { + "description": "OmniRoute உரையாடல் நினைவகத்தை நிர்வகிக்கவும் (FTS5 + vector)", + "search": { + "description": "பொருள்சார் வினவல் மூலம் நினைவக உள்ளீடுகளைத் தேடவும்", + "type": "நினைவக வகையின்படி வடிகட்டவும் (user|feedback|project|reference)", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 20)", + "api_key": "API key மூலம் வடிகட்டவும்", + "token_budget": "முடிவுகளில் உள்ள மொத்த token-களைக் கட்டுப்படுத்தவும்" + }, + "add": { + "description": "புதிய நினைவக உள்ளீட்டைச் சேர்க்கவும்", + "content": "நினைவக உரை உள்ளடக்கம்", + "file": "கோப்பிலிருந்து உள்ளடக்கத்தைப் படிக்கவும்", + "type": "நினைவக வகை (இயல்புநிலை: user)", + "metadata": "JSON மெட்டாடேட்டா பொருள்", + "api_key": "API விசையுடன் இணை" + }, + "clear": { + "description": "வடிப்பான்களுடன் பொருந்தும் நினைவகப் பதிவுகளை நீக்கு", + "type": "வகையின்படி வடிகட்டு", + "older": "குறிப்பிட்ட காலத்தைவிடப் பழைய பதிவுகளை நீக்கு (30d, 6m, 1y)", + "api_key": "API விசையின்படி வடிகட்டு", + "yes": "உறுதிப்படுத்தல் அறிவுறுத்தலைத் தவிர்" + }, + "list": { + "description": "தேடல் தரவரிசையின்றி நினைவகப் பதிவுகளைப் பட்டியலிடு", + "type": "வகையின்படி வடிகட்டு", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 100)", + "api_key": "API விசையின்படி வடிகட்டு" + }, + "get": { + "description": "ID மூலம் ஒரு நினைவகப் பதிவைப் பெறு" + }, + "delete": { + "description": "ID மூலம் ஒரு நினைவகப் பதிவை நீக்கு", + "yes": "உறுதிப்படுத்தல் அறிவுறுத்தலைத் தவிர்" + }, + "health": { + "description": "நினைவகத் துணைஅமைப்பின் நிலையைக் காட்டு (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth வழங்குநர் இணைப்புகளை நிர்வகி", + "providers": { + "description": "OAuth வசதியுள்ள வழங்குநர்களையும் அவற்றின் செயல்முறை வகைகளையும் பட்டியலிடு" + }, + "start": { + "description": "ஒரு வழங்குநருக்கான OAuth அங்கீகாரச் செயல்முறையைத் தொடங்கு", + "provider": "வழங்குநர் ID (gemini, copilot, cursor, …)", + "no_browser": "URL-ஐ மட்டும் அச்சிடு — உலாவியைத் திறக்காதே", + "import_system": "உள்ளூர் அமைப்புக் கட்டமைப்பிலிருந்து நற்சான்றுகளைத் தானாக இறக்குமதி செய்", + "social": "சமூக உள்நுழைவு வழங்குநர் (google|github) — kiro-க்கு அவசியம்", + "timeout": "அங்கீகாரத்திற்காகக் காத்திருக்கும் காலவரம்பு, ms-இல் (இயல்புநிலை: 300000)" + }, + "status": { + "description": "செயலில் உள்ள OAuth இணைப்புகளைப் பட்டியலிடு", + "provider": "வழங்குநர் ID-யின்படி வடிகட்டு" + }, + "revoke": { + "description": "OAuth இணைப்பைத் திரும்பப்பெறு", + "provider": "திரும்பப்பெற வேண்டிய வழங்குநர் ID", + "connection_id": "ID மூலம் ஒரு குறிப்பிட்ட இணைப்பைத் திரும்பப்பெறு", + "yes": "உறுதிப்படுத்தல் அறிவுறுத்தலைத் தவிர்" + } + }, + "cloud": { + "description": "கிளவுட் AI முகவர் பணிகளை நிர்வகி (codex, devin, jules)", + "agents": { + "description": "கிடைக்கக்கூடிய கிளவுட் முகவர்களைப் பட்டியலிடு" + }, + "agent": { + "description": "{agent} கிளவுட் முகவர் பணிகளை நிர்வகி", + "auth": { + "description": "OAuth மூலம் {agent}-ஐ அங்கீகரி" + } + }, + "task": { + "description": "கிளவுட் முகவர் பணிகளை நிர்வகி", + "create": { + "description": "புதிய முகவர் பணியை உருவாக்கு", + "title": "பணித் தலைப்பு (இயல்புநிலையாக அறிவுறுத்தலின் முதல் 80 எழுத்துகள்)", + "prompt": "பணி அறிவுறுத்தல் உரை", + "prompt_file": "கோப்பிலிருந்து அறிவுறுத்தலைப் படி", + "repo": "பணிக்காக நகலெடுக்க வேண்டிய களஞ்சிய URL", + "branch": "பயன்படுத்த வேண்டிய கிளைப் பெயர்", + "metadata": "JSON மெட்டாடேட்டா பொருள்" + }, + "list": { + "description": "முகவர் பணிகளைப் பட்டியலிடு", + "status": "நிலையின்படி வடிகட்டு (running|completed|failed|cancelled)", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 50)" + }, + "get": { + "description": "ID மூலம் பணி விவரங்களைப் பெறு" + }, + "status": { + "description": "பணி நிலையை அச்சிடு (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "இயங்கிக்கொண்டிருக்கும் பணியை ரத்துசெய்", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்" + }, + "approve": { + "description": "செயல்படுத்தலைத் தொடங்க முகவர் திட்டத்தை அங்கீகரி" + }, + "message": { + "description": "இயங்கிக்கொண்டிருக்கும் பணிக்கு ஒரு செய்தியை அனுப்பு" + } + }, + "sources": { + "description": "ஒரு பணியால் உருவாக்கப்பட்ட மூலக் கோப்புகளைப் பட்டியலிடு" + } + }, + "eval": { + "description": "மதிப்பீட்டுத் தொகுப்புகளையும் இயக்கங்களையும் நிர்வகி", + "suites": { + "description": "மதிப்பீட்டுத் தொகுப்புகளை நிர்வகி", + "list": { + "description": "மதிப்பீட்டுத் தொகுப்புகளைப் பட்டியலிடு" + }, + "get": { + "description": "ID மூலம் மதிப்பீட்டுத் தொகுப்பு விவரங்களைப் பெறு" + }, + "create": { + "description": "JSON கோப்பிலிருந்து ஒரு மதிப்பீட்டுத் தொகுப்பை உருவாக்கு", + "file": "தொகுப்பு வரையறை JSON கோப்பிற்கான பாதை" + } + }, + "run": { + "description": "ஒரு தொகுப்பிற்கான மதிப்பீட்டு இயக்கத்தைத் தொடங்கு", + "model": "மதிப்பிட வேண்டிய மாதிரி ID (இயல்புநிலை: auto)", + "combo": "பெயரின் அடிப்படையில் ஒரு குறிப்பிட்ட சேர்க்கையை கட்டாயப்படுத்து", + "concurrency": "ஒரே நேரத்தில் இயங்கும் மாதிரிகளின் எண்ணிக்கை (இயல்புநிலை: 4)", + "tag": "பின்னர் வடிகட்டுவதற்காக இந்த இயக்கத்தைக் குறியிடு", + "watch": "இயக்கம் முடியும் வரை அதன் முன்னேற்றத்தைக் கண்காணி" + }, + "list": { + "description": "மதிப்பீட்டு இயக்கங்களைப் பட்டியலிடு", + "suite": "தொகுப்பு ID மூலம் வடிகட்டு", + "status": "நிலையின்படி வடிகட்டு", + "since": "இந்த நேர முத்திரைக்குப் பிந்தைய இயக்கங்களை வழங்கு", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 50)" + }, + "get": { + "description": "ID மூலம் மதிப்பீட்டு இயக்க விவரங்களைப் பெறு" + }, + "results": { + "description": "ஒரு மதிப்பீட்டு இயக்கத்திற்கான மாதிரி முடிவுகளைக் காட்டு", + "failed": "தோல்வியடைந்த மாதிரிகளை மட்டும் காட்டு" + }, + "cancel": { + "description": "இயங்கிக்கொண்டிருக்கும் மதிப்பீட்டை ரத்துசெய்", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்" + }, + "scorecard": { + "description": "முடிவடைந்த மதிப்பீட்டு இயக்கத்திற்கான மதிப்பெண் அட்டையைக் காட்டு" + } + }, + "webhooks": { + "description": "OmniRoute வெப்ஹுக்குகளை நிர்வகி", + "events": { + "description": "கிடைக்கக்கூடிய அனைத்து வெப்ஹுக் நிகழ்வு வகைகளையும் பட்டியலிடு" + }, + "list": { + "description": "உள்ளமைக்கப்பட்ட வெப்ஹுக்குகளைப் பட்டியலிடு" + }, + "get": { + "description": "ID மூலம் வெப்ஹுக் விவரங்களைப் பெறு" + }, + "add": { + "description": "புதிய வெப்ஹுக்கைப் பதிவுசெய்", + "url": "இலக்கு URL", + "events": "காற்புள்ளியால் பிரிக்கப்பட்ட நிகழ்வு வகைகளின் பட்டியல்", + "secret": "HMAC கையொப்பமிடும் ரகசியம்", + "header": "key=value வடிவில் கூடுதல் தலைப்பு (மீண்டும் பயன்படுத்தலாம்)", + "no_enabled": "முடக்கப்பட்ட நிலையில் webhook-ஐ உருவாக்கு" + }, + "update": { + "description": "ஏற்கனவே உள்ள webhook-ஐப் புதுப்பி", + "enabled": "இயக்கப்பட்ட நிலையை அமை (true|false)" + }, + "remove": { + "description": "webhook-ஐ நீக்கு", + "yes": "உறுதிப்படுத்தல் கேள்வியைத் தவிர்" + }, + "test": { + "description": "webhook-க்கு ஒரு சோதனை நிகழ்வை அனுப்பு", + "event": "உருவகப்படுத்த வேண்டிய நிகழ்வு வகை (இயல்புநிலை: request.completed)" + } + }, + "program": { + "description": "OmniRoute — தானியங்கு மாற்றுவழியுடன் கூடிய நுண்ணறிவு AI வழிப்படுத்தி", + "version": "பதிப்பை அச்சிட்டு வெளியேறு", + "output": "வெளியீட்டு வடிவம் (table, json, jsonl, csv)", + "quiet": "அத்தியாவசியமற்ற வெளியீட்டை மறை", + "no_color": "வண்ண வெளியீட்டை முடக்கு", + "timeout": "HTTP கோரிக்கைக்கான நேர முடிவு மில்லிவிநாடிகளில்", + "api_key": "OmniRoute சேவையகத்திற்கான API விசை", + "base_url": "OmniRoute சேவையகத்தின் அடிப்படை URL", + "context": "இந்தக் கட்டளைக்குப் பயன்படுத்த வேண்டிய சேவையகச் சூழல்/profile", + "lang": "CLI காட்சி மொழியை அமை (OMNIROUTE_LANG-ஐ மீறும்)" + }, + "files": { + "description": "கோப்புகளை நிர்வகி (பதிவேற்றம், பட்டியலிடுதல், பெறுதல், பதிவிறக்கம், நீக்குதல்)", + "list": { + "purpose": "நோக்கத்தின் அடிப்படையில் வடிகட்டு", + "limit": "அதிகபட்ச முடிவுகள்" + }, + "get": { + "description": "கோப்பின் metadata-வைப் பெறு" + }, + "upload": { + "description": "ஒரு கோப்பைப் பதிவேற்று", + "purpose": "கோப்பின் நோக்கம் (batch, assistants, fine-tune)" + }, + "content": { + "description": "கோப்பின் உள்ளடக்கத்தைப் பதிவிறக்கு", + "out": "பாதையில் சேமி (இயல்புநிலை: stdout)" + }, + "delete": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + } + }, + "batches": { + "description": "OpenAI-இணக்கமான batch பணிகளை நிர்வகி", + "list": { + "status": "நிலையின் அடிப்படையில் வடிகட்டு", + "limit": "அதிகபட்ச முடிவுகள்" + }, + "create": { + "description": "ஒரு batch பணியை உருவாக்கு", + "inputFile": "உள்ளீட்டுக் கோப்பு ID", + "endpoint": "இலக்கு endpoint", + "window": "நிறைவு காலவரம்பு", + "metadata": "metadata key=value-ஐச் சேர்" + }, + "submit": { + "description": "JSONL கோப்பைப் பதிவேற்றி batch-ஐ உருவாக்கு", + "jsonl": "JSONL கோப்பிற்கான பாதை", + "endpoint": "இலக்கு endpoint", + "wait": "நிறைவடையும் வரை காத்திரு" + }, + "cancel": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "wait": { + "timeout": "காலாவதி நேரம் (ms)" + }, + "output": { + "out": "வெளியீட்டை பாதையில் சேமி" + }, + "errors": { + "out": "பிழைகளை பாதையில் சேமி" + } + }, + "translator": { + "description": "LLM வடிவங்களுக்கிடையே கோரிக்கை உடல்களை மொழிபெயர்", + "detect": { + "description": "உடல் வடிவத்தைக் கண்டறி" + }, + "translate": { + "description": "உடலை ஒரு வடிவத்திலிருந்து மற்றொன்றுக்கு மாற்று" + }, + "send": { + "description": "மொழிபெயர்த்து அப்ஸ்ட்ரீமுக்கு அனுப்பு" + }, + "stream": { + "description": "கோரிக்கை உடலை ஸ்ட்ரீம் முறையில் மொழிபெயர்" + }, + "from": "மூல வடிவம் (openai|anthropic|gemini|cohere)", + "to": "இலக்கு வடிவம் (openai|anthropic|gemini|cohere)", + "file": "கோரிக்கை உடல் JSON கோப்பிற்கான பாதை", + "out": "வெளியீட்டைக் கோப்பில் சேமி", + "model": "மாதிரியை மேலெழுது", + "history": { + "limit": "அதிகபட்ச முடிவுகள்" + } + }, + "pricing": { + "description": "மாதிரிகளுக்கான விலைத் தரவை நிர்வகி", + "sync": { + "description": "அப்ஸ்ட்ரீம் மூலங்களிலிருந்து விலைகளை ஒத்திசை", + "provider": "வழங்குநரின்படி வடிகட்டு", + "force": "மீண்டும் ஒத்திசைப்பதைக் கட்டாயப்படுத்து" + }, + "list": { + "provider": "வழங்குநரின்படி வடிகட்டு", + "model": "மாதிரியின்படி வடிகட்டு", + "limit": "அதிகபட்ச முடிவுகள்" + }, + "defaults": { + "description": "இயல்புநிலை விலையிடலை நிர்வகி", + "input": "1M டோக்கன்களுக்கான உள்ளீட்டுச் செலவு (USD)", + "output": "1M டோக்கன்களுக்கான வெளியீட்டுச் செலவு (USD)", + "cacheRead": "1M டோக்கன்களுக்கான தற்காலிகச் சேமிப்பு வாசிப்புச் செலவு (USD)", + "cacheWrite": "1M டோக்கன்களுக்கான தற்காலிகச் சேமிப்பு எழுதுதல் செலவு (USD)" + }, + "diff": { + "description": "அப்ஸ்ட்ரீம் விலைகளிலிருந்து உள்ள வேறுபாட்டைக் காட்டு", + "model": "மாதிரியின்படி வடிகட்டு" + } + }, + "radar": { + "description": "உள்ளூர் Radar பட்டியல் ஊட்டங்களை ஆய்வு செய்து ஒத்திசை", + "status": "உள்ளூர் Radar அமைப்புகளையும் ஊட்டத் தற்காலிகச் சேமிப்பு நிலையையும் காட்டு", + "sync": "உள்ளூர் சேவையகம் வழியாக பட்டியல், பரிந்துரைகள், சலுகைகள் மற்றும் Intel ஆகியவற்றை ஒத்திசை" + }, + "resilience": { + "description": "மீட்சித்திறன் வழிமுறைகளை ஆய்வு செய்து நிர்வகி", + "status": { + "provider": "வழங்குநரின்படி வடிகட்டு" + }, + "breakers": { + "provider": "வழங்குநரின்படி வடிகட்டு" + }, + "cooldowns": { + "provider": "வழங்குநரின்படி வடிகட்டு", + "connectionId": "இணைப்பு ID-இன்படி வடிகட்டு" + }, + "lockouts": { + "provider": "வழங்குநரின்படி வடிகட்டு", + "model": "மாதிரியின்படி வடிகட்டு" + }, + "reset": { + "description": "பிரேக்கர்/கூல்டவுன் நிலையை மீட்டமை", + "provider": "மீட்டமைக்க வேண்டிய வழங்குநர்", + "connectionId": "மீட்டமைக்க வேண்டிய இணைப்பு ID", + "model": "லாக்அவுட்டை மீட்டமைக்க வேண்டிய மாடல்", + "allCooldowns": "வழங்குநருக்கான அனைத்து கூல்டவுன்களையும் மீட்டமை", + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "profile": { + "description": "மீள்திறன் சுயவிவரத்தை நிர்வகி", + "name": "சுயவிவரப் பெயர்" + }, + "config": { + "description": "மீள்திறன் உள்ளமைவை நிர்வகி", + "threshold": "தோல்வி வரம்பு", + "resetTimeout": "மீட்டமைப்பு காலாவதி நேரம் (ms)", + "baseCooldown": "அடிப்படை கூல்டவுன் (ms)" + } + }, + "nodes": { + "description": "வழங்குநர் முனைகளை (எண்ட்பாயிண்ட்கள்) நிர்வகி", + "list": { + "provider": "வழங்குநர் வாரியாக வடிகட்டு", + "enabled": "செயல்படுத்தப்பட்ட முனைகளை மட்டும் காட்டு" + }, + "add": { + "provider": "வழங்குநர் பெயர்", + "baseUrl": "முனைக்கான அடிப்படை URL", + "name": "முனையின் பெயர்", + "weight": "சுமைச் சமநிலை எடை", + "region": "பிராந்தியக் குறிச்சொல்", + "authHeader": "தனிப்பயன் அங்கீகாரத் தலைப்பு (key=value)" + }, + "update": { + "baseUrl": "புதிய அடிப்படை URL", + "name": "புதிய பெயர்", + "weight": "புதிய எடை", + "region": "புதிய பிராந்தியம்", + "enabled": "செயல்படுத்து அல்லது முடக்கு (true|false)" + }, + "remove": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "validate": { + "baseUrl": "சரிபார்க்க வேண்டிய URL", + "provider": "எதிராகச் சரிபார்க்க வேண்டிய வழங்குநர்" + }, + "test": { + "description": "முனைக்குச் சோதனைக் கோரிக்கையை அனுப்பு" + }, + "metrics": { + "description": "முனை அளவீடுகளைக் காட்டு", + "period": "காலப்பகுதி (எ.கா. 24h, 7d)" + } + }, + "context": { + "description": "சூழல் பொறியியல் பைப்லைனை உள்ளமை (Caveman, RTK)", + "analytics": { + "period": "காலப்பகுதி (எ.கா. 7d, 30d)" + }, + "caveman": { + "description": "Caveman சூழல் சுருக்கியைக் நிர்வகி", + "config": { + "description": "Caveman உள்ளமைவைக் காட்டு அல்லது புதுப்பி", + "aggressiveness": "தீவிரத்தன்மை 0.0–1.0", + "maxShrinkPct": "அதிகபட்சச் சுருக்க சதவீதம்", + "preserveTags": "பாதுகாக்க வேண்டிய காற்புள்ளியால் பிரிக்கப்பட்ட குறிச்சொற்கள்" + } + }, + "rtk": { + "description": "RTK சூழல் உகப்பாக்கியை நிர்வகி", + "config": { + "description": "RTK உள்ளமைவைக் காட்டு அல்லது புதுப்பி", + "tokenBudget": "RTK-க்கான டோக்கன் வரம்பு", + "reservePct": "ஒதுக்கீட்டு சதவீதம்" + }, + "filters": { + "description": "RTK வடிப்பான்களை நிர்வகி", + "pattern": "வடிப்பான் வடிவம் (regex)", + "priority": "வடிப்பான் முன்னுரிமை (இயல்புநிலை: 100)", + "action": "வடிப்பான் செயல்: drop|shrink|replace", + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "test": { + "file": "கோரிக்கை JSON கோப்பிற்கான பாதை" + } + }, + "combos": { + "description": "சூழல் சார்ந்த சேர்க்கை நிர்வாகம்" + } + }, + "sessions": { + "description": "செயலில் உள்ள அமர்வுகளை ஆய்ந்து நிர்வகி", + "list": { + "user": "பயனரின்படி வடிகட்டு", + "kind": "வகையின்படி வடிகட்டு (dashboard|api-key|mcp|a2a)", + "active": "செயலில் உள்ள அமர்வுகளை மட்டும் காட்டு", + "limit": "அதிகபட்ச முடிவுகள் (இயல்புநிலை: 100)" + }, + "expire": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "expireAll": { + "user": "அமர்வுகள் காலாவதியாக்கப்பட வேண்டிய பயனர்", + "yes": "உறுதிப்படுத்தலைத் தவிர்" + } + }, + "tags": { + "description": "வளக் குறிச்சொற்களை நிர்வகி", + "add": { + "color": "குறிச்சொல் நிறம் (hex அல்லது பெயர்)", + "description": "குறிச்சொல் விளக்கம்" + }, + "remove": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "assign": { + "tag": "குறிச்சொல் பெயர்", + "to": "இலக்கு வளம் type:id வடிவில் (எ.கா. provider:openai)" + }, + "unassign": { + "tag": "குறிச்சொல் பெயர்", + "from": "மூல வளம் type:id வடிவில்" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI விவரக்குறிப்பை அணுகிச் சோதி", + "dump": { + "description": "OpenAPI விவரக்குறிப்பை stdout அல்லது கோப்பில் வெளியிடு", + "format": "வெளியீட்டு வடிவம்: yaml|json (இயல்புநிலை: yaml)", + "out": "கோப்புப் பாதையில் சேமி" + }, + "validate": { + "description": "OpenAPI விவரக்குறிப்பைச் சரிபார்" + }, + "try": { + "description": "விவரக்குறிப்பு வழியாக API முனைப்புள்ளியைச் சோதி", + "method": "HTTP முறை (இயல்புநிலை: GET)", + "body": "கோரிக்கை உடல் JSON கோப்பிற்கான பாதை", + "query": "வினவல் அளவுரு key=value வடிவில் (மீண்டும் வழங்கலாம்)", + "header": "தலைப்பு key=value வடிவில் (மீண்டும் வழங்கலாம்)" + }, + "endpoints": { + "description": "அனைத்து API முனைப்புள்ளிகளையும் பட்டியலிடு", + "search": "பாதை அல்லது சுருக்கத்தின்படி வடிகட்டு" + }, + "paths": { + "description": "அனைத்து API பாதைகளையும் பட்டியலிடு" + } + }, + "combo": { + "title": "சேர்க்கைகள்", + "switched": "செயலில் உள்ள சேர்க்கை: {name}", + "created": "சேர்க்கை உருவாக்கப்பட்டது: {name}", + "deleted": "சேர்க்கை நீக்கப்பட்டது: {name}", + "noCombos": "எந்தச் சேர்க்கைகளும் உள்ளமைக்கப்படவில்லை.", + "confirmDelete": "{name} சேர்க்கையை நீக்கவா?", + "suggest": { + "description": "AI மதிப்பீட்டைப் பயன்படுத்தி ஒரு பணிக்கான சிறந்த சேர்க்கையைப் பரிந்துரைக்கவும்", + "task": "பணி விளக்கம்", + "maxCost": "ஒரு கோரிக்கைக்கான அதிகபட்சச் செலவு, USD-இல்", + "maxLatencyMs": "அதிகபட்சத் தாமதம், மில்லிவிநாடிகளில்", + "weights": "JSON மதிப்பீட்டு எடைகள், எ.கா. {\"latency\":0.7,\"cost\":0.3}", + "top": "காட்ட வேண்டிய முன்னணி தேர்வுகளின் எண்ணிக்கை (இயல்புநிலை: 5)", + "explain": "காரண விளக்கத்தை stderr-க்கு அச்சிடவும்", + "switch": "முதலிடத்தில் உள்ள சேர்க்கையைச் செயல்படுத்தவும்" + } + }, + "oneproxy": { + "description": "OneProxy அப்ஸ்ட்ரீம் தொகுப்பை நிர்வகிக்கவும்", + "stats": { + "provider": "வழங்குநரின்படி வடிகட்டவும்", + "period": "கால அளவு (இயல்புநிலை: 24h)" + }, + "fetch": { + "description": "தொகுப்பிலிருந்து ப்ராக்ஸிகளைப் பெறவும்", + "count": "பெற வேண்டிய ப்ராக்ஸிகளின் எண்ணிக்கை (இயல்புநிலை: 1)", + "type": "ப்ராக்ஸி வகை: http|socks5 (இயல்புநிலை: http)" + }, + "rotate": { + "description": "ப்ராக்ஸி சுழற்சியைக் கட்டாயப்படுத்தவும்", + "provider": "சுழற்ற வேண்டிய வழங்குநர்", + "connectionId": "சுழற்ற வேண்டிய குறிப்பிட்ட இணைப்பு ID" + }, + "config": { + "description": "OneProxy உள்ளமைவைக் காட்டவும் அல்லது புதுப்பிக்கவும்", + "enabled": "ப்ராக்ஸி தொகுப்பை இயக்கவும் (true|false)", + "poolSize": "தொகுப்பின் அளவு", + "providerSource": "ப்ராக்ஸி வழங்குநருக்கான URL", + "rotationPolicy": "சுழற்சிக் கொள்கை: sticky|per-request|periodic" + }, + "pool": { + "description": "அளவீடுகளுடன் தற்போதைய ப்ராக்ஸி தொகுப்பைப் பட்டியலிடவும்" + } + }, + "open": { + "description": "குறிப்பிட்ட OmniRoute டாஷ்போர்டு பக்கத்தை உலாவியில் திறக்கவும்", + "url": "URL-ஐ மட்டும் அச்சிடவும்; உலாவியைத் திறக்க வேண்டாம்" + }, + "telemetry": { + "description": "ஒருங்கிணைக்கப்பட்ட தொலைஅளவீட்டுத் தரவை அணுகவும்", + "summary": { + "description": "ஒருங்கிணைக்கப்பட்ட தொலைஅளவீட்டுச் சுருக்கத்தைக் காட்டவும்", + "period": "கால அளவு: 24h|7d|30d (இயல்புநிலை: 24h)", + "compareTo": "முந்தைய கால அளவுடன் ஒப்பிடவும்" + }, + "export": { + "description": "தொலைஅளவீட்டு நிகழ்வுகளை JSONL-க்கு ஏற்றுமதி செய்யவும்", + "out": "வெளியீட்டுக் கோப்புப் பாதை (இயல்புநிலை: telemetry.jsonl)", + "period": "ஏற்றுமதிக்கான கால அளவு (இயல்புநிலை: 7d)" + } + }, + "sync": { + "description": "OmniRoute நிகழ்வுகளுக்கிடையே உள்ளமைவை ஒத்திசைக்கவும்", + "push": { + "description": "உள்ளமைவை கிளவுட் அல்லது தொலைநிலை நிகழ்வுக்கு அனுப்பவும்", + "target": "இலக்கு (cloud அல்லது context:name)", + "bundle": "ஒத்திசைக்க வேண்டிய தொகுப்புப் பகுதிகள்", + "dryRun": "பயன்படுத்தாமல் முன்னோட்டமிடு" + }, + "pull": { + "description": "கிளவுட் அல்லது தொலைநிலையிலிருந்து உள்ளமைவைப் பெறு", + "source": "மூலம் (கிளவுட் அல்லது context:name)", + "merge": "ஏற்கனவே உள்ள உள்ளமைவுடன் ஒன்றிணை", + "replace": "ஏற்கனவே உள்ள உள்ளமைவை மாற்றியமை", + "dryRun": "பயன்படுத்தாமல் முன்னோட்டமிடு" + }, + "diff": { + "source": "மூலச் சூழல்", + "target": "இலக்குச் சூழல்" + }, + "bundle": { + "description": "உள்ளமைவைத் தொகுப்புக் கோப்பாக ஏற்றுமதி செய்", + "include": "சேர்க்க வேண்டிய பகுதிகள் (காற்புள்ளியால் பிரிக்கப்பட்டவை)" + }, + "import": { + "description": "தொகுப்புக் கோப்பை இறக்குமதி செய்", + "dryRun": "பயன்படுத்தாமல் சரிபார்" + }, + "initialize": { + "fromCloud": "கிளவுட் காப்புப்பிரதியிலிருந்து துவக்கு" + }, + "tokens": { + "description": "ஒத்திசைவு டோக்கன்களை நிர்வகி", + "create": { + "name": "டோக்கன் பெயர்", + "scope": "டோக்கன் வரம்பு", + "ttl": "டோக்கன் ஆயுட்காலம் (எ.கா. 30d)" + }, + "revoke": { + "yes": "உறுதிப்படுத்தலைத் தவிர்" + } + }, + "resolve": { + "description": "ஒத்திசைவு முரண்பாடுகளை ஊடாடும் முறையில் தீர்க்கவும்" + } + }, + "config": { + "contexts": { + "description": "சேவையகச் சூழல்கள்/சுயவிவரங்களை நிர்வகி (சேர், பயன்படுத்து, பட்டியலிடு, காட்டு, நீக்கு, மறுபெயரிடு, ஏற்றுமதி செய், இறக்குமதி செய்)" + }, + "lang": { + "description": "CLI காட்சி மொழியை நிர்வகி", + "getDescription": "தற்போது செயலில் உள்ள மொழிக் குறியீட்டைக் காட்டு", + "setDescription": "காட்சி மொழியை அமைத்து, அதை உள்ளமைவில் சேமி", + "listDescription": "கிடைக்கக்கூடிய அனைத்து மொழிகளையும் பட்டியலிடு", + "listTitle": "கிடைக்கக்கூடிய மொழிகள்", + "current": "மொழி: {code} ({name})", + "saved": "மொழி {code} ({name}) என அமைக்கப்பட்டது.", + "noCode": "மொழிக் குறியீடு தேவை. கிடைக்கக்கூடிய குறியீடுகளைக் காண 'omniroute config lang list' ஐ இயக்கவும்.", + "unknown": "அறியப்படாத மொழிக் குறியீடு: {code}. கிடைக்கக்கூடிய குறியீடுகளைக் காண 'omniroute config lang list' ஐ இயக்கவும்.", + "alreadySet": "மொழி ஏற்கனவே {code} என அமைக்கப்பட்டுள்ளது.", + "envHint": "குறிப்பு: உங்கள் சூழலிலும் OMNIROUTE_LANG={code} என்பதை அமைக்கலாம்." + } + }, + "completion": { + "description": "ஷெல் தான்நிரப்பல் ஸ்கிரிப்ட்களை உருவாக்கு அல்லது நிறுவு", + "zsh": "zsh தான்நிரப்பல் ஸ்கிரிப்டை அச்சிடு", + "bash": "bash தான்நிரப்பல் ஸ்கிரிப்டை அச்சிடு", + "fish": "fish தான்நிரப்பல் ஸ்கிரிப்டை அச்சிடு", + "install": "கண்டறியப்பட்ட ஷெல்லுக்கான தான்நிரப்பல் ஸ்கிரிப்டை முழுமையாக நிறுவு", + "refresh": "சேர்க்கைகள்/வழங்குநர்கள்/மாதிரிகளின் தற்காலிகச் சேமிப்பைப் புதுப்பி" + }, + "logs": { + "description": "கோரிக்கைப் பதிவுகளை நேரலையாக அனுப்பு அல்லது ஏற்றுமதி செய்", + "follow": "பதிவுகளை நிகழ்நேரத்தில் நேரலையாக அனுப்பு", + "filter": "நிலைப்படி வடிகட்டு (error,warn,info) — காற்புள்ளியால் பிரிக்கப்பட்டவை", + "lines": "பெற வேண்டிய வரிகளின் எண்ணிக்கை", + "timeout": "இணைப்பு நேர முடிவு, ms-இல்", + "baseUrl": "OmniRoute API அடிப்படை URL", + "requestId": "கோரிக்கை ID மூலம் வடிகட்டு", + "apiKey": "API விசை மூலம் வடிகட்டு", + "combo": "காம்போ பெயர் மூலம் வடிகட்டு", + "status": "HTTP நிலைக் குறியீடு மூலம் வடிகட்டு", + "durationMin": "குறைந்தபட்ச கோரிக்கை கால அளவு, ms-இல்", + "durationMax": "அதிகபட்ச கோரிக்கை கால அளவு, ms-இல்", + "export": "பதிவுகளை கோப்பில் சேமி (json/jsonl/csv)", + "exported": "பதிவுகள் {path} இல் சேமிக்கப்பட்டன", + "stopped": "பதிவுத் தரவோடை நிறுத்தப்பட்டது.", + "streamError": "பதிவுத் தரவோடைப் பிழை: {message}" + }, + "tray": { + "description": "கணினித் தட்டு ஐகானைக் கட்டுப்படுத்து", + "show": "தட்டு ஐகானைக் காட்டு (--tray உடன் சேவையகம் இயங்கினால்)", + "hide": "தட்டு ஐகானை மறை", + "quit": "தட்டு வழியாக OmniRoute-இலிருந்து வெளியேறு" + }, + "autostart": { + "description": "துவக்கத்தின்போது OmniRoute தானாகத் தொடங்குவதை நிர்வகி (Linux: systemd பயனர் சேவை)", + "enable": "துவக்கத்தின்போது தானாகத் தொடங்குவதை இயக்கு", + "disable": "துவக்கத்தின்போது தானாகத் தொடங்குவதை முடக்கு", + "toggle": "துவக்கத்தின்போது தானாகத் தொடங்குவதை மாற்று", + "status": "தானியக்கத் தொடக்க நிலையை காட்டு" + }, + "runtime": { + "description": "சொந்த இயக்கநேரச் சார்புகளை நிர்வகி", + "check": "இயக்கநேரக் கோப்பகத்திலுள்ள சொந்த சார்புகளின் நிலையைச் சரிபார்", + "repair": "இயக்கநேரக் கோப்பகத்தில் சொந்த சார்புகளை மீண்டும் நிறுவு", + "repair_force": "செல்லுபடியாக இருந்தாலும் கட்டாயமாக மீண்டும் நிறுவு", + "clean": "இயக்கநேரக் கோப்பகத்தை அகற்று (வட்டு இடத்தை விடுவிக்கும்)", + "clean_yes": "உறுதிப்படுத்தலைத் தவிர்" + }, + "repl": { + "description": "LLM உடனான ஊடாடும் பல-சுற்று REPL", + "model": "பயன்படுத்த வேண்டிய மாதிரி (இயல்புநிலை: auto)", + "combo": "பயன்படுத்த வேண்டிய காம்போ பெயர்", + "system": "கணினி அறிவுறுத்தல்", + "resume": "பெயரின் மூலம் சேமிக்கப்பட்ட அமர்வைத் தொடரு" + }, + "plugin": { + "description": "CLI செருகுநிரல்களை நிர்வகி (omniroute-cmd-*)", + "list": "நிறுவப்பட்ட செருகுநிரல்களைப் பட்டியலிடு", + "install": "npm அல்லது உள்ளகப் பாதையிலிருந்து செருகுநிரலை நிறுவு", + "remove": "நிறுவப்பட்ட செருகுநிரலை அகற்று", + "info": "நிறுவப்பட்ட செருகுநிரலின் விவரங்களைக் காட்டு", + "search": "கிடைக்கக்கூடிய செருகுநிரல்களுக்கு npm பதிவகத்தில் தேடு", + "update": "நிறுவப்பட்ட செருகுநிரல்(களை) புதுப்பிக்கவும்", + "scaffold": "புதிய செருகுநிரலுக்கான அடிப்படை வார்ப்புருவை உருவாக்கவும்" + }, + "launch": { + "description": "OmniRoute-ஐ நோக்கி Claude Code-ஐத் தொடங்கவும் (உள்ளூர் அல்லது தொலைநிலை, --profile உடன்)", + "token": "Claude கிளையன்ட் அனுப்ப வேண்டிய டோக்கன் (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "{port} இல் OmniRoute-ஐ அணுக முடியவில்லை. 'omniroute serve' மூலம் அதைத் தொடங்கவும்.", + "notFound": "'claude' CLI, PATH இல் காணப்படவில்லை." + }, + "run": { + "description": "OmniRoute வழியாக ஆதரிக்கப்படும் CLI இலக்கைத் தொடங்கவும்" + }, + "setupClaude": { + "description": "OmniRoute மாதிரிப் பட்டியலிலிருந்து ~/.claude/profiles Claude Code சுயவிவரங்களை உருவாக்கவும்" + }, + "connect": { + "description": "தொலைநிலை OmniRoute சேவையகத்துடன் இணைந்து தொலைநிலைப் பயன்முறைக்குச் செல்லவும்" + }, + "tokens": { + "description": "வரம்பிடப்பட்ட CLI அணுகல் டோக்கன்களை நிர்வகிக்கவும் (தொலைநிலைப் பயன்முறை)" + }, + "configure": { + "description": "செயலில் உள்ள சேவையகத்திலிருந்து ஒரு வழங்குநர்+மாதிரியைத் தேர்ந்தெடுத்து, ஆதரிக்கப்படும் உள்ளூர் CLI-ஐ உள்ளமைக்கவும்" + }, + "launchCodex": { + "description": "OmniRoute-ஐ நோக்கி Codex CLI-ஐத் தொடங்கவும் (உள்ளூர் அல்லது தொலைநிலை VPS)" + }, + "setupCodex": { + "description": "OmniRoute-இன் நேரடி மாதிரிப் பட்டியலிலிருந்து ~/.codex சுயவிவரக் கோப்புகளை உருவாக்கவும்" + }, + "packs": { + "description": "விருப்ப இயக்கநேரத் தொகுப்புகளை நிர்வகிக்கவும் (ML / உலாவித் தானியக்கம்)", + "listDescription": "விருப்பத் தொகுப்புகளையும் அவற்றின் நிறுவல் நிலையையும் பட்டியலிடவும்", + "installDescription": "விருப்பத் தொகுப்பை DATA_DIR இல் நிறுவவும்", + "verifyDescription": "வழங்கப்பட்ட checksum குறியீட்டிற்கு எதிராக நிறுவப்பட்ட தொகுப்புகளைச் சரிபார்க்கவும்", + "removeDescription": "நிறுவப்பட்ட விருப்பத் தொகுப்பை அகற்றவும்", + "sourceOpt": "தொகுப்பு உள்ளடக்கங்களையும் தொகுப்புக் குறியீட்டையும் கொண்டுள்ள கோப்பகம்", + "warnNoIndex": "optional-packs.index.json காணப்படவில்லை — இந்த checkout-இல் நிறுவல்/சரிபார்ப்பு வசதிகள் கிடைக்காது (desktop bundles அதைக் கொண்டிருக்கும்)", + "errUnknown": "அறியப்படாத தொகுப்பு: {name}", + "errNoIndex": "தொகுப்புக் குறியீடு காணப்படவில்லை; தொகுப்பு உள்ளடக்கத்தைக் கொண்டுள்ள --source என்பதை வழங்கவும் (desktop bundles அதை பயன்பாட்டிற்கு அருகில் கொண்டிருக்கும்)", + "installed": "\"{name}\" தொகுப்பு {dir} இல் நிறுவப்பட்டு சரிபார்க்கப்பட்டது", + "restartHint": "இயக்கநேரம் தொகுப்பைப் பயன்படுத்தும் வகையில் OmniRoute சேவையகத்தை (அல்லது desktop app-ஐ) மறுதொடக்கம் செய்யவும்", + "removed": "\"{name}\" தொகுப்பு அகற்றப்பட்டது", + "notInstalled": "\"{name}\" தொகுப்பு நிறுவப்படவில்லை", + "verifyOk": "நிறுவப்பட்ட அனைத்து தொகுப்புகளும் சரிபார்க்கப்பட்டன", + "verifyFailed": "{count} தொகுப்பு(கள்) சரிபார்ப்பில் தோல்வியடைந்தன", + "noneInstalled": "விருப்பத் தொகுப்புகள் எதுவும் நிறுவப்படவில்லை" } } diff --git a/bin/cli/locales/te.json b/bin/cli/locales/te.json index c3c637f6e1..1ed38b5e92 100644 --- a/bin/cli/locales/te.json +++ b/bin/cli/locales/te.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "లోపం: {message}", + "serverOffline": "OmniRoute సర్వర్ ఆఫ్లైన్లో ఉంది. దీన్ని ఇలా ప్రారంభించండి: omniroute serve", + "authRequired": "ప్రమాణీకరణ అవసరం. OMNIROUTE_API_KEY సెట్ చేయండి లేదా దీన్ని అమలు చేయండి: omniroute setup", + "rateLimited": "రేట్ పరిమితి మించిపోయింది. {seconds}s తర్వాత మళ్లీ ప్రయత్నించండి.", + "timeout": "అభ్యర్థన {ms}ms తర్వాత గడువు ముగిసింది.", + "success": "పూర్తయింది.", + "yes": "అవును", + "no": "కాదు", + "confirm": "మీరు ఖచ్చితంగా కొనసాగాలనుకుంటున్నారా? (అవును/కాదు)", + "dryRun": "[dry-run] {action} చేస్తుంది", + "cancelled": "రద్దు చేయబడింది.", + "jsonOpt": "JSONగా అవుట్పుట్ చేయండి", + "yesOpt": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "setup": { + "title": "OmniRoute సెటప్", + "passwordPrompt": "అడ్మిన్ పాస్వర్డ్", + "providerPrompt": "డిఫాల్ట్ ప్రొవైడర్ (దాటవేయడానికి ఖాళీగా ఉంచండి)", + "done": "సెటప్ పూర్తయింది", + "passwordSet": "అడ్మిన్ పాస్వర్డ్ కాన్ఫిగర్ చేయబడింది", + "providerSet": "ప్రొవైడర్ కాన్ఫిగర్ చేయబడింది: {name}", + "testingProvider": "ప్రొవైడర్ కనెక్షన్ను పరీక్షిస్తోంది: {name}", + "testPassed": "ప్రొవైడర్ పరీక్ష విజయవంతమైంది", + "testFailed": "ప్రొవైడర్ పరీక్ష విఫలమైంది: {error}", + "loginEnabled": "లాగిన్: ప్రారంభించబడింది (పాస్వర్డ్ నవీకరించబడింది)", + "loginDisabled": "లాగిన్: నిలిపివేయబడింది", + "providerInfo": "ప్రొవైడర్: {info}", + "opencode": "OpenCode కోసం బండిల్ చేసిన @omniroute/opencode-pluginను ఇన్స్టాల్ చేసి కాన్ఫిగర్ చేయండి" + }, + "doctor": { + "title": "OmniRoute డాక్టర్", + "dbOk": "డేటాబేస్: సరే ({path})", + "dbMissing": "డేటాబేస్: ప్రారంభించబడలేదు — `omniroute setup` అమలు చేయండి", + "portOk": "పోర్ట్ {port}: అందుబాటులో ఉంది", + "portConflict": "పోర్ట్ {port}: మరొక ప్రాసెస్ ఉపయోగిస్తోంది", + "encryptionOk": "ఎన్క్రిప్షన్ కీ: కాన్ఫిగర్ చేయబడింది", + "encryptionMissing": "ఎన్క్రిప్షన్ కీ లేదు — `omniroute setup` అమలు చేయండి", + "allGood": "అన్ని తనిఖీలు విజయవంతమయ్యాయి.", + "warnings": "{count} హెచ్చరిక(లు) — పైన చూడండి." + }, + "providers": { + "title": "ప్రొవైడర్లు", + "noProviders": "ఏ ప్రొవైడర్లూ కాన్ఫిగర్ చేయబడలేదు. అమలు చేయండి: omniroute setup", + "testing": "{name}ను పరీక్షిస్తోంది...", + "available": "{count} ప్రొవైడర్(లు) అందుబాటులో ఉన్నాయి", + "connected": "కనెక్ట్ చేయబడింది", + "disconnected": "డిస్కనెక్ట్ చేయబడింది", + "validationFailed": "ధృవీకరణ విఫలమైంది: {error}", + "metrics": { + "description": "ప్రొవైడర్ పనితీరు మెట్రిక్లను చూపించు (లేటెన్సీ, విజయ రేటు, ఖర్చు)", + "provider": "ప్రొవైడర్ ID ద్వారా ఫిల్టర్ చేయి", + "connection_id": "కనెక్షన్ ID ద్వారా ఫిల్టర్ చేయి", + "period": "కాల వ్యవధి: 1h|6h|24h|7d|30d (డిఫాల్ట్: 24h)", + "metric": "నిర్దిష్ట మెట్రిక్ ఫీల్డ్పై దృష్టి పెట్టు", + "sort": "ఫీల్డ్ ఆధారంగా క్రమబద్ధీకరించు (అవరోహణ క్రమం)", + "limit": "గరిష్ఠ వరుసలు (డిఫాల్ట్: 50)", + "watch": "ప్రతి 5sకు రిఫ్రెష్ చేయి (లైవ్ మోడ్)", + "compare": "పక్కపక్కన పోల్చడానికి కామాతో వేరు చేసిన ప్రొవైడర్ IDలు" + }, + "metric_single": { + "description": "నిర్దిష్ట కనెక్షన్ కోసం ఒకే మెట్రిక్ విలువను పొందు" + }, + "rotate": { + "description": "ప్రొవైడర్ కనెక్షన్ కోసం అప్స్ట్రీమ్ API కీని మార్చు", + "newKeyOpt": "కొత్త API కీ విలువ (నివారించండి: --from-envకు ప్రాధాన్యం ఇవ్వండి)", + "fromEnvOpt": "ఎన్విరాన్మెంట్ వేరియబుల్ VAR నుండి కొత్త కీని చదువు", + "oauthOpt": "బదులుగా OAuth పునః-ప్రామాణీకరణ ప్రక్రియను ప్రారంభించు", + "skipTestOpt": "మార్పు తర్వాత కనెక్టివిటీ పరీక్షను దాటవేయి", + "dryRunOpt": "వ్రాయకుండా ఏం మారుతుందో చూపించు", + "confirmPrompt": "\"{name}\" ({id}) కనెక్షన్ కోసం API కీని భర్తీ చేయాలా? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) కోసం కీని మార్చేది. ఎలాంటి మార్పులు చేయలేదు.", + "oauthHint": "OAuth కనెక్షన్ — అమలు చేయండి: omniroute oauth {provider}", + "envVarEmpty": "ఎన్విరాన్మెంట్ వేరియబుల్ {var} సెట్ చేయబడలేదు లేదా ఖాళీగా ఉంది.", + "success": "\"{name}\" కోసం కీ మార్చబడింది. ధృవీకరించడానికి `providers test {id}` అమలు చేయండి.", + "testPassed": "మార్పు తర్వాత పరీక్ష విజయవంతమైంది.", + "testFailed": "మార్పు తర్వాత పరీక్ష విఫలమైంది: {error}" + }, + "status": { + "description": "అన్ని ప్రొవైడర్ కనెక్షన్ల కీ స్థితిని చూపించు (వయస్సు, గడువు, కూల్డౌన్)", + "providerOpt": "ప్రొవైడర్ పేరు ద్వారా ఫిల్టర్ చేయి", + "header": "ID ప్రొవైడర్ పేరు గడువు స్థితి పరీక్ష స్థితి కూల్డౌన్ ముగిసే సమయం", + "noData": "ప్రొవైడర్ కనెక్షన్ డేటా అందుబాటులో లేదు.", + "requiresServer": "providers status కోసం OmniRoute సర్వర్ నడుస్తూ ఉండాలి." + } + }, + "keys": { + "title": "API కీలు", + "addDescription": "ప్రొవైడర్ కోసం API కీని జోడించు లేదా నవీకరించు", + "listDescription": "కాన్ఫిగర్ చేసిన అన్ని API కీలను జాబితా చేయి", + "removeDescription": "ప్రొవైడర్ కోసం API కీని తొలగించు", + "regenerateDescription": "OmniRoute API కీని మళ్లీ రూపొందించు", + "revokeDescription": "OmniRoute API కీని రద్దు చేయి", + "revealDescription": "మాస్క్ చేయని API కీ విలువను చూపించు", + "usageDescription": "API కీ కోసం ఇటీవలి వినియోగాన్ని చూపించు", + "usageLimitOpt": "ఇటీవలి అభ్యర్థనల సంఖ్య", + "rotateDescription": "కొత్త కీని రూపొందించి పాత కీని చెల్లనిదిగా చేయి", + "graceOpt": "పాత కీ చెల్లుబాటు కాకుండా చేయడానికి ముందు గ్రేస్ పీరియడ్ (ms)", + "stdinOpt": "ఆర్గ్యుమెంట్కు బదులుగా stdin నుండి API కీని చదవండి", + "added": "{provider} కోసం కీ జోడించబడింది.", + "removed": "కీ తొలగించబడింది.", + "listed": "{count} కీ(లు).", + "noKeys": "ఏ కీలు కాన్ఫిగర్ చేయబడలేదు.", + "noUsage": "వినియోగ డేటా కనుగొనబడలేదు.", + "confirmRemove": "కీ {id}ని తొలగించాలా?", + "confirmRegenerate": "కీ {id}ని మళ్లీ రూపొందించాలా?", + "confirmRevoke": "కీ {id}ని రద్దు చేయాలా?", + "confirmRotate": "కీ {id}ని రొటేట్ చేయాలా? (గ్రేస్ పీరియడ్ తర్వాత పాత కీ చెల్లుబాటు కాకుండా చేయబడుతుంది)", + "regenerated": "మళ్లీ రూపొందించబడింది. కొత్త కీ: {key}", + "revoked": "కీ {id} రద్దు చేయబడింది.", + "rotated": "కీ {id} రొటేట్ చేయబడింది. కొత్త కీ ID: {newId}", + "revealWarning": "⚠ ఇది మాస్క్ చేయని పూర్తి కీని ప్రదర్శిస్తుంది. మీ స్క్రీన్ ప్రైవేట్గా ఉందని నిర్ధారించుకోండి.", + "providerRequired": "ప్రొవైడర్ అవసరం.", + "keyRequired": "API కీ అవసరం.", + "stdinEmpty": "stdin ద్వారా API కీ ఏదీ అందించబడలేదు.", + "unknownProvider": "తెలియని ప్రొవైడర్: {provider}", + "policy": { + "title": "కీ విధానం", + "showDescription": "ఒక కీకి సంబంధించిన రేట్/ఖర్చు విధానాన్ని చూపించండి", + "setDescription": "ఒక కీకి రేట్/ఖర్చు విధానాన్ని సెట్ చేయండి", + "rateLimitOpt": "నిమిషానికి గరిష్ఠ అభ్యర్థనలు", + "maxCostOpt": "రోజుకు గరిష్ఠ ఖర్చు (USD)", + "allowedModelsOpt": "అనుమతించబడిన మోడళ్ల కామాతో వేరు చేసిన జాబితా", + "nothingToSet": "విధాన ఫీల్డ్లు ఏవీ అందించబడలేదు. --rate-limit, --max-cost, లేదా --allowed-models ఉపయోగించండి.", + "updated": "విధానం నవీకరించబడింది." + }, + "expiration": { + "title": "కీ గడువు ముగింపు", + "listDescription": "త్వరలో గడువు ముగిసే కీలను జాబితా చేయండి", + "daysOpt": "N రోజులలోపు గడువు ముగిసే కీలను చూపించండి", + "none": "{days} రోజులలోపు గడువు ముగిసే కీలు లేవు.", + "listTitle": "{days} రోజులలోపు గడువు ముగిసే కీలు:" + } + }, + "authExport": { + "description": "డీక్రిప్ట్ చేసిన ప్రొవైడర్ క్రెడెన్షియల్లను ఎగుమతి చేయండి (స్థానికంగా మాత్రమే, ప్లెయిన్టెక్స్ట్ అవుట్పుట్)", + "idOpt": "ఈ id/పేరు/ప్రొవైడర్తో సరిపోలే కనెక్షన్ను మాత్రమే ఎగుమతి చేయండి", + "formatOpt": "అవుట్పుట్ ఫార్మాట్: json లేదా env", + "outOpt": "stdoutకు బదులుగా అవుట్పుట్ను ఫైల్లో వ్రాయండి (0600 అనుమతులతో వ్రాయబడుతుంది)", + "forceOpt": "ఇది ప్లెయిన్టెక్స్ట్ రహస్యాలను ప్రింట్/వ్రాస్తుందని మీరు అర్థం చేసుకున్నట్లు నిర్ధారించండి", + "warning": "⚠ ఇది డీక్రిప్ట్ చేసిన ప్లెయిన్టెక్స్ట్ API కీలు మరియు OAuth టోకెన్లను ప్రింట్/వ్రాస్తుంది. మీ స్క్రీన్, షెల్ హిస్టరీ మరియు ఏదైనా అవుట్పుట్ ఫైల్ ప్రైవేట్గా ఉండేలా చూసుకోండి.", + "confirmHeading": "⚠ హెచ్చరిక: ఇది డీక్రిప్ట్ చేసిన ప్రొవైడర్ క్రెడెన్షియల్లను ప్లెయిన్టెక్స్ట్లో ఎగుమతి చేస్తుంది", + "confirmBody": "ఈ కమాండ్ ఎంచుకున్న కనెక్షన్(ల) కోసం apiKey, accessToken, refreshToken మరియు\nidTokenలను డీక్రిప్ట్ చేసి ప్రింట్/వ్రాస్తుంది. అవుట్పుట్ను రహస్యంగా పరిగణించండి.", + "confirmFooter": "నిర్ధారించడానికి, దీన్ని అమలు చేయండి:\n omniroute auth export --force", + "missingKey": "క్రెడెన్షియల్స్ను ఎగుమతి చేయడానికి STORAGE_ENCRYPTION_KEY అవసరం.", + "notFound": "కనెక్షన్ కనుగొనబడలేదు: {id}", + "invalidFormat": "చెల్లని ఫార్మాట్: {format}. json లేదా env ఉపయోగించండి." + }, + "stream": { + "description": "SSE తనిఖీ మోడ్లతో చాట్ ప్రతిస్పందనను స్ట్రీమ్ చేయండి", + "file": "ఫైల్ నుండి ప్రాంప్ట్ను చదవండి", + "stdin": "stdin నుండి ప్రాంప్ట్ను చదవండి", + "model": "మోడల్ ID (డిఫాల్ట్: auto)", + "system": "సిస్టమ్ ప్రాంప్ట్", + "combo": "పేరు ద్వారా నిర్దిష్ట కాంబోను బలవంతంగా ఉపయోగించండి", + "max_tokens": "ప్రతిస్పందనలో గరిష్ఠ టోకెన్లు", + "responses_api": "/v1/chat/completions బదులుగా /v1/responses ఉపయోగించండి", + "raw": "అందుకున్నట్లుగానే ముడి SSE పంక్తులను ముద్రించండి", + "debug": "ప్రతి చంక్ సమయ సమాచారాన్ని stderrకు ముద్రించండి", + "save": "అన్ని SSE ఈవెంట్లను .jsonl ఫైల్లో సేవ్ చేయండి", + "error": { + "empty_prompt": "లోపం: ప్రాంప్ట్ అవసరం (స్థాన ఆర్గ్యుమెంట్, --file, లేదా --stdin)" + } + }, + "usage": { + "description": "వినియోగ విశ్లేషణలు, బడ్జెట్లు, కోటాలు మరియు లాగ్లు", + "analytics": { + "description": "సమగ్ర వినియోగ విశ్లేషణలను చూపండి", + "period": "సమయ పరిధి: 1d|7d|30d|90d|ytd|all (డిఫాల్ట్: 30d)", + "provider": "ప్రొవైడర్ ID ద్వారా ఫిల్టర్ చేయండి" + }, + "budget": { + "description": "ఖర్చు బడ్జెట్లను నిర్వహించండి", + "set": { + "scope": "బడ్జెట్ పరిధి (డిఫాల్ట్: global)", + "period": "బడ్జెట్ వ్యవధి: daily|weekly|monthly (డిఫాల్ట్: monthly)" + } + }, + "quota": { + "description": "ప్రొవైడర్ కోటా వినియోగాన్ని చూపండి", + "provider": "ప్రొవైడర్ ID ద్వారా ఫిల్టర్ చేయండి", + "check": "కొత్త అభ్యర్థనకు కోటా అందుబాటులో ఉందో లేదో చూపండి" + }, + "logs": { + "description": "అభ్యర్థన కాల్ లాగ్లను చూపండి", + "limit": "తిరిగి ఇవ్వాల్సిన లాగ్ నమోదుల సంఖ్య (డిఫాల్ట్: 100)", + "search": "లాగ్లను ఫిల్టర్ చేయడానికి శోధన క్వెరీ", + "since": "ఈ టైమ్స్టాంప్ నుండి లాగ్లను తిరిగి ఇవ్వండి", + "follow": "కొత్త లాగ్ నమోదులను నిరంతరం అనుసరించండి", + "api_key": "API కీ ద్వారా లాగ్లను ఫిల్టర్ చేయండి" + }, + "utilization": { + "description": "API కీ వినియోగ మెట్రిక్లను చూపండి", + "api_key": "API కీ ద్వారా ఫిల్టర్ చేయండి" + }, + "history": { + "description": "అభ్యర్థన చరిత్రను చూపండి", + "limit": "చరిత్ర నమోదుల సంఖ్య (డిఫాల్ట్: 100)" + }, + "proxy_logs": { + "description": "ప్రాక్సీ-స్థాయి అభ్యర్థన లాగ్లను చూపండి", + "limit": "ప్రాక్సీ లాగ్ నమోదుల సంఖ్య (డిఫాల్ట్: 100)" + } + }, + "cost": { + "description": "ప్రొవైడర్, మోడల్, కాంబో లేదా API కీ వారీ విభజనతో ఖర్చు నివేదికను చూపండి", + "period": "సమయ పరిధి: 1d|7d|30d|90d|ytd|all (డిఫాల్ట్: 30d)", + "since": "ప్రారంభ తేదీ (ISO ఫార్మాట్, ఉదా. 2026-01-01) — --periodను అధిగమిస్తుంది", + "until": "ముగింపు తేదీ (ISO ఫార్మాట్)", + "group_by": "ఫలితాలను దీని ప్రకారం సమూహీకరించండి: provider|model|api-key|combo|day (డిఫాల్ట్: provider)", + "api_key_filter": "నిర్దిష్ట API కీ ద్వారా ఫిల్టర్ చేయండి", + "limit": "చూపించాల్సిన గరిష్ఠ వరుసల సంఖ్య (డిఫాల్ట్: 100)" + }, + "simulate": { + "description": "డ్రై-రన్ రూటింగ్ అనుకరణ — అప్స్ట్రీమ్కు కాల్ చేయకుండా ఏ ప్రొవైడర్లు ఎంచుకోబడతారో చూపించండి", + "file": "JSON ఫైల్ నుండి పూర్తి అభ్యర్థన బాడీని లోడ్ చేయండి", + "model": "మోడల్ ID (డిఫాల్ట్: auto)", + "combo": "పేరు ద్వారా నిర్దిష్ట comboను బలవంతంగా ఉపయోగించండి", + "reasoning": "రీజనింగ్ ప్రయత్న స్థాయి (low|medium|high)", + "thinking": "విస్తృత ఆలోచన టోకెన్ బడ్జెట్", + "explain": "ఫాల్బ్యాక్ ట్రీ మరియు ఖర్చు పరిధిని stderrకు ప్రింట్ చేయండి", + "noCombo": "సరిపోలే combo కనుగొనబడలేదు. దీనితో ఒకదాన్ని కాన్ఫిగర్ చేయండి: omniroute combo create" + }, + "chat": { + "description": "OmniRouteకు వన్-షాట్ చాట్ ప్రాంప్ట్ను పంపండి", + "file": "ఫైల్ నుండి ప్రాంప్ట్ను చదవండి", + "stdin": "stdin నుండి ప్రాంప్ట్ను చదవండి", + "system": "సిస్టమ్ ప్రాంప్ట్", + "model": "మోడల్ ID (డిఫాల్ట్: auto)", + "max_tokens": "ప్రతిస్పందనలో గరిష్ఠ టోకెన్లు", + "temperature": "శాంప్లింగ్ టెంపరేచర్ (0–2)", + "top_p": "Top-p న్యూక్లియస్ శాంప్లింగ్", + "reasoning_effort": "రీజనింగ్ ప్రయత్న స్థాయి (low|medium|high)", + "thinking_budget": "విస్తృత ఆలోచన టోకెన్ బడ్జెట్", + "combo": "పేరు ద్వారా నిర్దిష్ట comboను బలవంతంగా ఉపయోగించండి", + "responses_api": "/v1/chat/completionsకు బదులుగా /v1/responses ఉపయోగించండి", + "stream": "ప్రతిస్పందనను క్రమంగా స్ట్రీమ్ చేయండి", + "no_history": "~/.omniroute/cli-history.jsonlలో సేవ్ చేయవద్దు", + "error": { + "empty_prompt": "లోపం: ప్రాంప్ట్ అవసరం (స్థాన ఆర్గ్యుమెంట్, --file, లేదా --stdin)" + } + }, + "serve": { + "description": "OmniRoute సర్వర్ను ప్రారంభించండి (డిఫాల్ట్ చర్య)", + "starting": "పోర్ట్ {port}లో OmniRoute సర్వర్ ప్రారంభమవుతోంది...", + "ready": "http://localhost:{port} వద్ద సిద్ధంగా ఉంది", + "stopping": "సర్వర్ (PID {pid}) ఆపివేయబడుతోంది...", + "stopped": "సర్వర్ ఆపివేయబడింది.", + "notRunning": "సర్వర్ రన్ కావడం లేదు.", + "port": "వినాల్సిన పోర్ట్ (డిఫాల్ట్: 20128)", + "no_open": "బ్రౌజర్ను స్వయంచాలకంగా తెరవవద్దు", + "daemon": "సర్వర్ను బ్యాక్గ్రౌండ్ డీమన్గా రన్ చేయండి", + "log": "సర్వర్ లాగ్లను ఇన్లైన్లో చూపించండి", + "no_recovery": "క్రాష్ అయినప్పుడు ఆటో-రీస్టార్ట్ను నిలిపివేయండి (డీబగ్గింగ్ మోడ్)", + "max_restarts": "విరమించే ముందు 30s లోపు అనుమతించాల్సిన గరిష్ఠ క్రాష్ రీస్టార్ట్లు (డిఫాల్ట్: 2)", + "tray": "సిస్టమ్ ట్రేలో ప్రారంభించండి (డెస్క్టాప్లో మాత్రమే, స్వచ్ఛంద ఎంపిక)", + "no_tray": "సిస్టమ్ ట్రే చిహ్నాన్ని నిలిపివేయండి", + "ready_timeout": "రెడీనెస్ ప్రోబ్ గడువు మిల్లీసెకన్లలో (OMNIROUTE_READY_TIMEOUT_MS కూడా, డిఫాల్ట్ 60000)", + "tls_cert": "HTTPS అందించడానికి TLS సర్టిఫికేట్ (PEM) మార్గం (OMNIROUTE_TLS_CERT కూడా)", + "tls_key": "HTTPS అందించడానికి TLS ప్రైవేట్ కీ (PEM) మార్గం (OMNIROUTE_TLS_KEY కూడా)" + }, + "backup": { + "title": "బ్యాకప్", + "description": "OmniRoute డేటా బ్యాకప్ను సృష్టించండి", + "creating": "బ్యాకప్ సృష్టిస్తోంది...", + "done": "బ్యాకప్ {path}కు సేవ్ చేయబడింది", + "noFiles": "బ్యాకప్ చేయడానికి ఫైళ్లు లేవు (డేటాబేస్ ప్రారంభించబడలేదు)", + "failed": "బ్యాకప్ విఫలమైంది: {error}", + "restoring": "{path} నుండి పునరుద్ధరిస్తోంది...", + "restored": "పునరుద్ధరణ పూర్తయింది.", + "restoreDescription": "బ్యాకప్ నుండి పునరుద్ధరించండి", + "listTitle": "అందుబాటులో ఉన్న బ్యాకప్లు", + "noBackups": "బ్యాకప్లు ఏవీ కనుగొనబడలేదు.", + "notFound": "బ్యాకప్ కనుగొనబడలేదు: {name}", + "confirmRestore": "{ts} నాటి బ్యాకప్తో ప్రస్తుత డేటాను ఓవర్రైట్ చేయాలా?", + "createDescription": "OmniRoute డేటా బ్యాకప్ను సృష్టించండి", + "nameOpt": "అనుకూల బ్యాకప్ పేరు", + "cloudOpt": "బ్యాకప్ను క్లౌడ్ నిల్వకు అప్లోడ్ చేయండి", + "encryptOpt": "AES-256-GCMతో బ్యాకప్ను ఎన్క్రిప్ట్ చేయండి", + "keyFileOpt": "ఎన్క్రిప్షన్ పాస్ఫ్రేజ్ను కలిగి ఉన్న ఫైల్ మార్గం", + "excludeOpt": "నమూనాకు సరిపోలే ఫైల్ను మినహాయించండి (పునరావృతం చేయవచ్చు)", + "retentionOpt": "చివరి N బ్యాకప్లను మాత్రమే ఉంచండి", + "passphrasePrompt": "ఎన్క్రిప్షన్ పాస్ఫ్రేజ్:", + "noPassphrase": "ఎన్క్రిప్ట్ చేసిన బ్యాకప్కు పాస్ఫ్రేజ్ అవసరం.", + "cloudFailed": "హెచ్చరిక: క్లౌడ్ అప్లోడ్ విఫలమైంది. స్థానిక బ్యాకప్ సేవ్ చేయబడింది.", + "cloudUploaded": "క్లౌడ్ బ్యాకప్ అప్లోడ్ చేయబడింది: {url}", + "auto": { + "title": "బ్యాకప్ షెడ్యూల్", + "enableDescription": "షెడ్యూల్ చేసిన ఆటోమేటిక్ బ్యాకప్లను ప్రారంభించండి", + "disableDescription": "షెడ్యూల్ చేసిన ఆటోమేటిక్ బ్యాకప్లను నిలిపివేయండి", + "statusDescription": "ప్రస్తుత బ్యాకప్ షెడ్యూల్ స్థితిని చూపండి", + "cronOpt": "షెడ్యూల్ కోసం Cron ఎక్స్ప్రెషన్ (డిఫాల్ట్: ప్రతిరోజూ ఉదయం 3 గంటలకు)", + "enabled": "ఆటోమేటిక్ బ్యాకప్ ప్రారంభించబడింది (cron: {cron}).", + "hint": "ప్రారంభ సమయంలో షెడ్యూల్ను omniroute serve చదువుతుంది.", + "disabled": "ఆటోమేటిక్ బ్యాకప్ నిలిపివేయబడింది.", + "notConfigured": "బ్యాకప్ షెడ్యూల్ ఏదీ కాన్ఫిగర్ చేయబడలేదు." + } + }, + "health": { + "description": "సర్వర్ ఆరోగ్యం మరియు కాంపోనెంట్ స్థితిని తనిఖీ చేయండి", + "noServer": "సర్వర్ అమలులో లేదు. దీనితో ప్రారంభించండి: omniroute serve", + "title": "ఆరోగ్యం", + "status": "స్థితి: {status}", + "uptime": "అప్టైమ్: {uptime}", + "requests": "అభ్యర్థనలు (24గం): {count}", + "cost": "ఖర్చు (24గం): ${cost}" + }, + "quota": { + "description": "ప్రొవైడర్ కోటా వినియోగాన్ని చూపించు", + "noServer": "సర్వర్ రన్ కావడం లేదు. దీనితో ప్రారంభించండి: omniroute serve", + "noData": "కోటా సమాచారం అందుబాటులో లేదు." + }, + "cache": { + "description": "ప్రతిస్పందన క్యాష్ను నిర్వహించండి", + "noServer": "సర్వర్ రన్ కావడం లేదు. దీనితో ప్రారంభించండి: omniroute serve", + "cleared": "క్యాష్ క్లియర్ చేయబడింది.", + "clearFailed": "క్యాష్ను క్లియర్ చేయడం విఫలమైంది." + }, "redis": { "description": "OmniRoute కాషింగ్ మరియు కోటా ట్రాకింగ్ కోసం ఒకే క్లిక్‌లో స్థానిక Redis కంటైనర్ (Podman లేదా Docker) ప్రారంభించండి" + }, + "test": { + "description": "ప్రొవైడర్ కనెక్షన్ను పరీక్షించండి", + "noServer": "సర్వర్ రన్ కావడం లేదు. దీనితో ప్రారంభించండి: omniroute serve", + "testing": "{provider} / {model}ను పరీక్షిస్తోంది...", + "passed": "కనెక్షన్ విజయవంతమైంది!", + "failed": "కనెక్షన్ విఫలమైంది: {error}", + "allProvidersOpt": "కాన్ఫిగర్ చేసిన అన్ని ప్రొవైడర్లను పరీక్షించండి", + "latencyOpt": "లేటెన్సీ కొలతలను చూపించు (సగటు/కనిష్ఠం/గరిష్ఠం ms)", + "repeatOpt": "పరీక్షను N సార్లు పునరావృతం చేసి ఫలితాలను సమీకరించండి", + "compareOpt": "పోల్చాల్సిన కామాలతో వేరు చేసిన మోడళ్లు (ఉదా. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "ఫలితాలను JSON ఫైల్లో సేవ్ చేయండి", + "saved": "ఫలితాలు {path}లో సేవ్ చేయబడ్డాయి", + "compareTitle": "మోడల్ పోలిక", + "compareMinTwo": "--compare కోసం కనీసం రెండు మోడళ్లు అవసరం (కామాలతో వేరు చేసినవి)", + "noProviders": "ప్రొవైడర్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు. దీనితో ఒకదాన్ని జోడించండి: omniroute keys add" + }, + "update": { + "checking": "అప్డేట్ల కోసం తనిఖీ చేస్తోంది...", + "upToDate": "ఇప్పటికే తాజా వెర్షన్లో ఉంది ({version}).", + "available": "అప్డేట్ అందుబాటులో ఉంది: {current} → {latest}", + "installing": "{latest}ను ఇన్స్టాల్ చేస్తోంది...", + "done": "{latest}కు అప్డేట్ చేయబడింది. వర్తింపజేయడానికి సర్వర్ను పునఃప్రారంభించండి." + }, + "mcp": { + "title": "MCP సర్వర్", + "running": "MCP సర్వర్ రన్ అవుతోంది ({transport})", + "stopped": "MCP సర్వర్ ఆపివేయబడింది.", + "restarted": "MCP సర్వర్ పునఃప్రారంభించబడింది.", + "stoppedHint": "దీన్ని ఆన్ చేయడానికి `omniroute mcp enable`ను అమలు చేయండి.", + "enabled": "MCP సర్వర్ ప్రారంభించబడింది.", + "disabled": "MCP సర్వర్ నిలిపివేయబడింది.", + "enable": { + "description": "MCP సర్వర్ను ప్రారంభించండి", + "transport": "ఉపయోగించాల్సిన ట్రాన్స్పోర్ట్: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP సర్వర్ను నిలిపివేయండి" + }, + "call": { + "description": "MCP సాధనాన్ని నేరుగా అమలు చేయండి", + "args": "JSON ఆర్గ్యుమెంట్ల ఆబ్జెక్ట్ (ఇన్లైన్)", + "args_file": "JSON ఆర్గ్యుమెంట్ల ఫైల్కు పాత్", + "stream": "స్ట్రీమింగ్ ఎండ్పాయింట్ను ఉపయోగించండి (/api/mcp/stream)", + "scope": "అవసరమైన స్కోప్ (పునరావృతం చేయవచ్చు, ఉదా. read:health)" + }, + "scopes": { + "description": "అందుబాటులో ఉన్న MCP స్కోప్లను జాబితా చేయండి", + "tool": "నిర్దిష్ట సాధనానికి అవసరమైన స్కోప్లను చూపండి" + }, + "tools": { + "description": "MCP సాధనాలను పరిశీలించండి", + "list": { + "description": "అన్ని MCP సాధనాలను జాబితా చేయండి", + "scope": "స్కోప్ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "info": { + "description": "MCP సాధనం కోసం మెటాడేటాను చూపండి" + }, + "schema": { + "description": "MCP సాధనం కోసం ఇన్పుట్/అవుట్పుట్ JSON స్కీమాను చూపండి", + "io": "స్కీమా రకం: input|output (డిఫాల్ట్: input)" + } + }, + "audit": { + "description": "MCP ఆడిట్ లాగ్ (audit --source mcp కోసం మారుపేరు)" + } + }, + "a2a": { + "skills": { + "description": "ఏజెంట్ కార్డ్ నుండి అందుబాటులో ఉన్న A2A నైపుణ్యాలను జాబితా చేయండి" + }, + "invoke": { + "description": "A2A నైపుణ్యాన్ని అమలు చేసి, టాస్క్ IDని తిరిగి ఇవ్వండి", + "input": "JSON ఇన్పుట్ ఆబ్జెక్ట్", + "input_file": "JSON ఇన్పుట్ ఫైల్కు పాత్", + "wait": "తిరిగి ఇచ్చే ముందు టాస్క్ పూర్తయ్యే వరకు వేచి ఉండండి", + "timeout": "పూర్తయ్యే వరకు వేచి ఉండే గడువు msలో (డిఫాల్ట్: 60000)" + }, + "tasks": { + "description": "A2A టాస్క్లను నిర్వహించండి", + "list": { + "status": "స్థితి ఆధారంగా ఫిల్టర్ చేయండి", + "skill": "నైపుణ్య ID ఆధారంగా ఫిల్టర్ చేయండి" + }, + "watch": { + "description": "టాస్క్ పూర్తయ్యే వరకు దాని స్థితిని పోల్ చేయండి" + }, + "stream": { + "description": "SSE ద్వారా టాస్క్ అమలు ఈవెంట్లను స్ట్రీమ్ చేయండి" + }, + "logs": { + "description": "టాస్క్ సందేశాలు మరియు ఆర్టిఫాక్ట్లను చూపండి" + } + } + }, + "policy": { + "description": "OmniRoute ఆథరైజేషన్ విధానాలను నిర్వహించండి", + "list": { + "description": "విధానాలను జాబితా చేయండి", + "kind": "రకం ఆధారంగా ఫిల్టర్ చేయండి (allow|deny|rate-limit|cost-cap)", + "scope": "స్కోప్ ఆధారంగా ఫిల్టర్ చేయండి (global|api-key|provider)" + }, + "get": { + "description": "ID ద్వారా విధాన వివరాలను పొందండి" + }, + "create": { + "description": "JSON ఫైల్ నుండి విధానాన్ని సృష్టించండి", + "file": "విధాన JSON ఫైల్కు పాత్" + }, + "update": { + "description": "JSON ఫైల్ నుండి విధానాన్ని నవీకరించండి", + "file": "విధాన JSON ఫైల్కు పాత్" + }, + "delete": { + "description": "ID ద్వారా విధానాన్ని తొలగించండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "evaluate": { + "description": "డ్రై-రన్ విధాన మూల్యాంకనం (exit 0=అనుమతించబడింది, 4=తిరస్కరించబడింది)", + "api_key": "మూల్యాంకనం చేయాల్సిన API కీ", + "action": "తనిఖీ చేయాల్సిన చర్య (ఉదా. chat, embed, admin)", + "resource": "వనరు పాత్ లేదా ఐడెంటిఫయర్", + "context": "JSON ఆబ్జెక్ట్గా అదనపు సందర్భం" + }, + "export": { + "description": "అన్ని పాలసీలను JSON ఫైల్కు ఎగుమతి చేయండి" + }, + "import": { + "description": "JSON ఫైల్ నుండి పాలసీలను దిగుమతి చేయండి", + "overwrite": "అదే ID ఉన్న ప్రస్తుత పాలసీలను ఓవర్రైట్ చేయండి" + } + }, + "compression": { + "description": "OmniRoute కంప్రెషన్ పైప్లైన్ను కాన్ఫిగర్ చేసి పరిశీలించండి", + "status": { + "description": "ప్రస్తుత కంప్రెషన్ స్థితి మరియు సెట్టింగ్లను చూపించండి" + }, + "configure": { + "description": "కంప్రెషన్ సెట్టింగ్లను కాన్ఫిగర్ చేయండి", + "engine": "కంప్రెషన్ ఇంజిన్ (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman తీవ్రత 0.0–1.0", + "rtk_budget": "RTK టోకెన్ బడ్జెట్", + "language_pack": "యాక్టివేట్ చేయాల్సిన భాషా ప్యాక్" + }, + "engine": { + "description": "యాక్టివ్ కంప్రెషన్ ఇంజిన్ను పొందండి లేదా సెట్ చేయండి" + }, + "combos": { + "description": "కంప్రెషన్ కాంబో గణాంకాలను నిర్వహించండి" + }, + "rules": { + "description": "కంప్రెషన్ నియమాలను నిర్వహించండి", + "add": { + "pattern": "సరిపోల్చాల్సిన నమూనా (regex లేదా field:pattern)", + "action": "చర్య: drop|shrink|replace" + } + }, + "language_packs": { + "description": "అందుబాటులో ఉన్న కంప్రెషన్ భాషా ప్యాక్లను జాబితా చేయండి" + }, + "preview": { + "description": "రిక్వెస్ట్పై కంప్రెషన్ ప్రభావాన్ని ప్రివ్యూ చేయండి", + "file": "రిక్వెస్ట్ JSON ఫైల్ పాత్" + } + }, + "tunnel": { + "title": "టన్నెల్లు", + "listDescription": "యాక్టివ్ టన్నెల్లను జాబితా చేయండి", + "createDescription": "టన్నెల్ను సృష్టించండి", + "created": "టన్నెల్ సృష్టించబడింది: {url}", + "stopped": "టన్నెల్ నిలిపివేయబడింది.", + "confirmStop": "టన్నెల్ {id}ను నిలిపివేయాలా?", + "stopDescription": "టన్నెల్ను నిలిపివేయండి", + "statusDescription": "టన్నెల్ యొక్క వివరణాత్మక స్థితిని చూపించండి", + "logsDescription": "టన్నెల్ లాగ్లను చూపించండి", + "infoDescription": "టన్నెల్ కాన్ఫిగరేషన్ వివరాలను చూపించండి", + "rotateDescription": "కొత్త టన్నెల్ URLను రూపొందించండి", + "tailOpt": "చూపించాల్సిన లాగ్ లైన్ల సంఖ్య", + "typeRequired": "టన్నెల్ రకం అవసరం.", + "noLogs": "లాగ్లు అందుబాటులో లేవు.", + "notAvailable": "టన్నెల్ సమాచారం అందుబాటులో లేదు.", + "noTunnels": "యాక్టివ్ టన్నెల్లు లేవు.", + "infoTitle": "టన్నెల్ సమాచారం: {type}", + "rotated": "టన్నెల్ URL మార్చబడింది: {url}", + "confirmRotate": "టన్నెల్ {type}ను మార్చాలా? (కొత్త URL రూపొందించబడుతుంది)" + }, + "stop": { + "description": "OmniRoute సర్వర్ను ఆపండి", + "stopping": "సర్వర్ను ఆపుతోంది (PID {pid})...", + "stopped": "సర్వర్ ఆపబడింది.", + "notRunning": "ఏ సర్వర్ అమలులో లేదు.", + "portFallback": "PID ఫైల్ కనుగొనబడలేదు, పోర్ట్ ఆధారిత నిలిపివేతకు ప్రయత్నిస్తోంది..." + }, + "restart": { + "description": "OmniRoute సర్వర్ను పునఃప్రారంభించండి", + "restarting": "OmniRoute సర్వర్ను పునఃప్రారంభిస్తోంది..." + }, + "dashboard": { + "description": "బ్రౌజర్లో OmniRoute డ్యాష్బోర్డ్ను తెరవండి", + "opening": "{url} వద్ద డ్యాష్బోర్డ్ను తెరుస్తోంది", + "urlOnly": "బ్రౌజర్ను తెరవకుండా డ్యాష్బోర్డ్ URLను ముద్రించండి", + "tui": "ఇంటరాక్టివ్ TUI డ్యాష్బోర్డ్ను తెరవండి (టెర్మినల్ UI, 7 ట్యాబ్లు)" + }, + "models": { + "description": "అందుబాటులో ఉన్న మోడళ్లను జాబితా చేయండి (సర్వర్ అవసరం)", + "search": "ID, పేరు, ప్రొవైడర్ లేదా వివరణ ఆధారంగా మోడళ్లను ఫిల్టర్ చేయండి", + "noServer": "సర్వర్ అమలులో లేదు. దీనితో ప్రారంభించండి: omniroute serve", + "noModels": "మోడళ్లు ఏవీ కనుగొనబడలేదు." + }, + "audit": { + "description": "కంప్లయన్స్ మరియు MCP ఆడిట్ లాగ్లను యాక్సెస్ చేయండి", + "source": "లాగ్ మూలం: all|compliance|mcp (డిఫాల్ట్: all)", + "since": "ఈ టైమ్స్టాంప్ నుండి నమోదులను తిరిగి ఇవ్వండి (ISO 8601)", + "until": "ఈ టైమ్స్టాంప్ వరకు నమోదులను తిరిగి ఇవ్వండి (ISO 8601)", + "tail": { + "description": "ఇటీవలి ఆడిట్ లాగ్ నమోదులను చూపండి", + "follow": "కొత్త నమోదులను నిరంతరం అనుసరించండి (2సె పోల్)", + "limit": "చూపించాల్సిన గరిష్ఠ నమోదులు (డిఫాల్ట్: 100)" + }, + "search": { + "description": "కీవర్డ్ ద్వారా ఆడిట్ లాగ్ నమోదులను శోధించండి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 200)", + "actor": "యాక్టర్ ID ఆధారంగా ఫిల్టర్ చేయండి", + "action": "చర్య పేరు ఆధారంగా ఫిల్టర్ చేయండి" + }, + "export": { + "description": "ఆడిట్ లాగ్ను ఫైల్కు ఎగుమతి చేయండి", + "format": "అవుట్పుట్ ఫార్మాట్: jsonl|csv (డిఫాల్ట్: jsonl)" + }, + "stats": { + "description": "ఆడిట్ లాగ్ గణాంకాలను చూపండి", + "period": "కాల వ్యవధి: 1d|7d|30d (డిఫాల్ట్: 7d)" + }, + "get": { + "description": "ID ద్వారా ఒకే ఆడిట్ లాగ్ నమోదును పొందండి" + } + }, + "skills": { + "description": "OmniRoute స్కిల్స్ను నిర్వహించండి (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "ఇన్స్టాల్ చేసిన స్కిల్స్ను జాబితా చేయండి", + "type": "రకం ఆధారంగా ఫిల్టర్ చేయండి (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "ప్రారంభించబడిన స్కిల్స్ను మాత్రమే చూపండి", + "disabled": "నిలిపివేయబడిన స్కిల్స్ను మాత్రమే చూపండి", + "api_key": "API కీ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "get": { + "description": "ID ద్వారా స్కిల్ వివరాలను పొందండి" + }, + "install": { + "description": "ఫైల్ లేదా URL నుండి స్కిల్ను ఇన్స్టాల్ చేయండి", + "from_file": "స్కిల్ JSON నిర్వచన ఫైల్కు పాత్", + "from_url": "రిమోట్ స్కిల్ నిర్వచనం యొక్క URL", + "type": "స్కిల్ రకం (sandbox|custom|hybrid)", + "enable": "ఇన్స్టాల్ చేసిన తర్వాత స్కిల్ను ప్రారంభించు" + }, + "enable": { + "description": "ID ద్వారా స్కిల్ను ప్రారంభించు" + }, + "disable": { + "description": "ID ద్వారా స్కిల్ను నిలిపివేయి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయి" + }, + "delete": { + "description": "ID ద్వారా స్కిల్ను తొలగించు", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయి" + }, + "execute": { + "description": "ID ద్వారా స్కిల్ను అమలు చేయి", + "input": "JSON ఇన్పుట్ ఆబ్జెక్ట్", + "input_file": "JSON ఇన్పుట్ ఫైల్కు పాత్", + "timeout": "అమలు గడువు msలో (డిఫాల్ట్: 30000)" + }, + "executions": { + "description": "స్కిల్ అమలు చరిత్రను జాబితా చేయి", + "skill": "స్కిల్ ID ద్వారా ఫిల్టర్ చేయి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 50)", + "status": "స్థితి ద్వారా ఫిల్టర్ చేయి (running|completed|failed)" + }, + "skillssh": { + "description": "SSH ద్వారా ఇన్స్టాల్ చేసిన స్కిల్స్ను నిర్వహించు" + }, + "marketplace": { + "description": "మార్కెట్ప్లేస్ నుండి స్కిల్స్ను బ్రౌజ్ చేసి ఇన్స్టాల్ చేయి" + }, + "mp": { + "search": { + "description": "మార్కెట్ప్లేస్ ప్యాకేజీలను శోధించు", + "category": "వర్గం ద్వారా ఫిల్టర్ చేయి", + "tag": "ట్యాగ్ ద్వారా ఫిల్టర్ చేయి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 30)", + "sort": "దీని ప్రకారం క్రమబద్ధీకరించు: downloads|rating|recent" + }, + "info": { + "description": "ప్యాకేజీ వివరాలు మరియు readmeను చూపు" + }, + "install": { + "description": "మార్కెట్ప్లేస్ ప్యాకేజీని ఇన్స్టాల్ చేయి", + "version": "ప్యాకేజీ వెర్షన్ (డిఫాల్ట్: latest)", + "enable": "ఇన్స్టాల్ చేసిన తర్వాత ప్రారంభించు", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయి" + }, + "categories": { + "description": "మార్కెట్ప్లేస్ వర్గాలను జాబితా చేయి" + }, + "featured": { + "description": "ఫీచర్ చేసిన మార్కెట్ప్లేస్ ప్యాకేజీలను చూపు" + } + } + }, + "memory": { + "description": "OmniRoute సంభాషణాత్మక మెమరీని నిర్వహించు (FTS5 + vector)", + "search": { + "description": "సెమాంటిక్ క్వెరీ ద్వారా మెమరీ ఎంట్రీలను శోధించు", + "type": "మెమరీ రకం ద్వారా ఫిల్టర్ చేయి (user|feedback|project|reference)", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 20)", + "api_key": "API కీ ద్వారా ఫిల్టర్ చేయి", + "token_budget": "ఫలితాల్లోని మొత్తం టోకెన్లను పరిమితం చేయి" + }, + "add": { + "description": "కొత్త మెమరీ ఎంట్రీని జోడించు", + "content": "మెమరీ టెక్స్ట్ కంటెంట్", + "file": "ఫైల్ నుండి కంటెంట్ను చదువు", + "type": "మెమరీ రకం (డిఫాల్ట్: user)", + "metadata": "JSON మెటాడేటా ఆబ్జెక్ట్", + "api_key": "API కీతో అనుబంధించండి" + }, + "clear": { + "description": "ఫిల్టర్లకు సరిపోలే మెమరీ ఎంట్రీలను తొలగించండి", + "type": "రకం ఆధారంగా ఫిల్టర్ చేయండి", + "older": "వ్యవధి (30d, 6m, 1y) కంటే పాత ఎంట్రీలను తొలగించండి", + "api_key": "API కీ ఆధారంగా ఫిల్టర్ చేయండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "list": { + "description": "శోధన ర్యాంకింగ్ లేకుండా మెమరీ ఎంట్రీలను జాబితా చేయండి", + "type": "రకం ఆధారంగా ఫిల్టర్ చేయండి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 100)", + "api_key": "API కీ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "get": { + "description": "ID ద్వారా ఒకే మెమరీ ఎంట్రీని పొందండి" + }, + "delete": { + "description": "ID ద్వారా ఒక మెమరీ ఎంట్రీని తొలగించండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "health": { + "description": "మెమరీ ఉపవ్యవస్థ ఆరోగ్య స్థితిని చూపించండి (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth ప్రొవైడర్ కనెక్షన్లను నిర్వహించండి", + "providers": { + "description": "OAuth సామర్థ్యం గల ప్రొవైడర్లను మరియు వాటి ఫ్లో రకాలను జాబితా చేయండి" + }, + "start": { + "description": "ఒక ప్రొవైడర్ కోసం OAuth అధికార ప్రదాన ఫ్లోను ప్రారంభించండి", + "provider": "ప్రొవైడర్ ID (gemini, copilot, cursor, …)", + "no_browser": "URLను మాత్రమే ప్రింట్ చేయండి — బ్రౌజర్ను తెరవవద్దు", + "import_system": "స్థానిక సిస్టమ్ కాన్ఫిగ్ నుండి క్రెడెన్షియల్లను స్వయంచాలకంగా దిగుమతి చేయండి", + "social": "సోషల్ లాగిన్ ప్రొవైడర్ (google|github) — kiro కోసం అవసరం", + "timeout": "అధికార ప్రదానం కోసం వేచి ఉండే గడువు msలో (డిఫాల్ట్: 300000)" + }, + "status": { + "description": "సక్రియ OAuth కనెక్షన్లను జాబితా చేయండి", + "provider": "ప్రొవైడర్ ID ఆధారంగా ఫిల్టర్ చేయండి" + }, + "revoke": { + "description": "OAuth కనెక్షన్ను రద్దు చేయండి", + "provider": "రద్దు చేయాల్సిన ప్రొవైడర్ ID", + "connection_id": "ID ద్వారా నిర్దిష్ట కనెక్షన్ను రద్దు చేయండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + } + }, + "cloud": { + "description": "క్లౌడ్ AI ఏజెంట్ టాస్క్లను నిర్వహించండి (codex, devin, jules)", + "agents": { + "description": "అందుబాటులో ఉన్న క్లౌడ్ ఏజెంట్లను జాబితా చేయండి" + }, + "agent": { + "description": "{agent} క్లౌడ్ ఏజెంట్ టాస్క్లను నిర్వహించండి", + "auth": { + "description": "OAuth ద్వారా {agent}కు అధికార ప్రదానం చేయండి" + } + }, + "task": { + "description": "క్లౌడ్ ఏజెంట్ టాస్క్లను నిర్వహించండి", + "create": { + "description": "కొత్త ఏజెంట్ టాస్క్ను సృష్టించండి", + "title": "టాస్క్ శీర్షిక (డిఫాల్ట్గా ప్రాంప్ట్లోని మొదటి 80 అక్షరాలు)", + "prompt": "టాస్క్ ప్రాంప్ట్ టెక్స్ట్", + "prompt_file": "ఫైల్ నుండి ప్రాంప్ట్ను చదవండి", + "repo": "టాస్క్ కోసం క్లోన్ చేయాల్సిన రిపోజిటరీ URL", + "branch": "ఉపయోగించాల్సిన బ్రాంచ్ పేరు", + "metadata": "JSON మెటాడేటా ఆబ్జెక్ట్" + }, + "list": { + "description": "ఏజెంట్ టాస్క్లను జాబితా చేయండి", + "status": "స్థితి ఆధారంగా ఫిల్టర్ చేయండి (running|completed|failed|cancelled)", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 50)" + }, + "get": { + "description": "ID ద్వారా టాస్క్ వివరాలను పొందండి" + }, + "status": { + "description": "టాస్క్ స్థితిని ముద్రించండి (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "రన్ అవుతున్న టాస్క్ను రద్దు చేయండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "approve": { + "description": "అమలును ప్రారంభించడానికి ఏజెంట్ ప్లాన్ను ఆమోదించండి" + }, + "message": { + "description": "రన్ అవుతున్న టాస్క్కు సందేశాన్ని పంపండి" + } + }, + "sources": { + "description": "టాస్క్ ద్వారా రూపొందించబడిన సోర్స్ ఫైల్లను జాబితా చేయండి" + } + }, + "eval": { + "description": "ఎవాల్ సూట్లు మరియు రన్లను నిర్వహించండి", + "suites": { + "description": "ఎవాల్ సూట్లను నిర్వహించండి", + "list": { + "description": "ఎవాల్ సూట్లను జాబితా చేయండి" + }, + "get": { + "description": "ID ద్వారా ఎవాల్ సూట్ వివరాలను పొందండి" + }, + "create": { + "description": "JSON ఫైల్ నుండి ఎవాల్ సూట్ను సృష్టించండి", + "file": "సూట్ నిర్వచన JSON ఫైల్ పాత్" + } + }, + "run": { + "description": "సూట్ కోసం ఎవాల్ రన్ను ప్రారంభించండి", + "model": "మూల్యాంకనం చేయాల్సిన మోడల్ ID (డిఫాల్ట్: auto)", + "combo": "పేరు ద్వారా నిర్దిష్ట కాంబోను బలవంతంగా ఎంచుకోండి", + "concurrency": "ఏకకాల నమూనాల సంఖ్య (డిఫాల్ట్: 4)", + "tag": "తర్వాత ఫిల్టర్ చేయడానికి ఈ రన్కు ట్యాగ్ను జోడించండి", + "watch": "పూర్తయ్యే వరకు రన్ పురోగతిని గమనించండి" + }, + "list": { + "description": "ఎవాల్ రన్లను జాబితా చేయండి", + "suite": "సూట్ ID ఆధారంగా ఫిల్టర్ చేయండి", + "status": "స్థితి ఆధారంగా ఫిల్టర్ చేయండి", + "since": "ఈ టైమ్స్టాంప్ నుండి రన్లను తిరిగి ఇవ్వండి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 50)" + }, + "get": { + "description": "ID ద్వారా ఎవాల్ రన్ వివరాలను పొందండి" + }, + "results": { + "description": "ఎవాల్ రన్ కోసం నమూనా ఫలితాలను చూపండి", + "failed": "విఫలమైన నమూనాలను మాత్రమే చూపండి" + }, + "cancel": { + "description": "రన్ అవుతున్న ఎవాల్ను రద్దు చేయండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "scorecard": { + "description": "పూర్తయిన ఎవాల్ రన్ కోసం స్కోర్కార్డ్ను చూపండి" + } + }, + "webhooks": { + "description": "OmniRoute వెబ్హుక్లను నిర్వహించండి", + "events": { + "description": "అందుబాటులో ఉన్న అన్ని వెబ్హుక్ ఈవెంట్ రకాలను జాబితా చేయండి" + }, + "list": { + "description": "కాన్ఫిగర్ చేసిన వెబ్హుక్లను జాబితా చేయండి" + }, + "get": { + "description": "ID ద్వారా వెబ్హుక్ వివరాలను పొందండి" + }, + "add": { + "description": "కొత్త వెబ్హుక్ను నమోదు చేయండి", + "url": "గమ్యస్థాన URL", + "events": "కామాలతో వేరు చేసిన ఈవెంట్ రకాల జాబితా", + "secret": "HMAC సంతకం రహస్యం", + "header": "key=value ఆకృతిలో అదనపు హెడర్ (పునరావృతం చేయవచ్చు)", + "no_enabled": "నిలిపివేసిన స్థితిలో వెబ్హుక్ను సృష్టించండి" + }, + "update": { + "description": "ఇప్పటికే ఉన్న వెబ్హుక్ను నవీకరించండి", + "enabled": "ప్రారంభ స్థితిని సెట్ చేయండి (true|false)" + }, + "remove": { + "description": "వెబ్హుక్ను తొలగించండి", + "yes": "నిర్ధారణ ప్రాంప్ట్ను దాటవేయండి" + }, + "test": { + "description": "వెబ్హుక్కు పరీక్షా ఈవెంట్ను పంపండి", + "event": "అనుకరించాల్సిన ఈవెంట్ రకం (డిఫాల్ట్: request.completed)" + } + }, + "program": { + "description": "OmniRoute — స్వయంచాలక ఫాల్బ్యాక్తో స్మార్ట్ AI రూటర్", + "version": "వెర్షన్ను ముద్రించి నిష్క్రమించండి", + "output": "అవుట్పుట్ ఆకృతి (table, json, jsonl, csv)", + "quiet": "అనవసరమైన అవుట్పుట్ను అణచివేయండి", + "no_color": "రంగుల అవుట్పుట్ను నిలిపివేయండి", + "timeout": "మిల్లీసెకన్లలో HTTP అభ్యర్థన గడువు", + "api_key": "OmniRoute సర్వర్ కోసం API కీ", + "base_url": "OmniRoute సర్వర్ బేస్ URL", + "context": "ఈ కమాండ్ కోసం ఉపయోగించాల్సిన సర్వర్ సందర్భం/ప్రొఫైల్", + "lang": "CLI ప్రదర్శన భాషను సెట్ చేయండి (OMNIROUTE_LANGను అధిగమిస్తుంది)" + }, + "files": { + "description": "ఫైళ్లను నిర్వహించండి (అప్లోడ్, జాబితా, పొందడం, డౌన్లోడ్, తొలగించడం)", + "list": { + "purpose": "ప్రయోజనం ఆధారంగా ఫిల్టర్ చేయండి", + "limit": "గరిష్ఠ ఫలితాలు" + }, + "get": { + "description": "ఫైల్ మెటాడేటాను పొందండి" + }, + "upload": { + "description": "ఫైల్ను అప్లోడ్ చేయండి", + "purpose": "ఫైల్ ప్రయోజనం (batch, assistants, fine-tune)" + }, + "content": { + "description": "ఫైల్ కంటెంట్ను డౌన్లోడ్ చేయండి", + "out": "పాత్లో సేవ్ చేయండి (డిఫాల్ట్: stdout)" + }, + "delete": { + "yes": "నిర్ధారణను దాటవేయండి" + } + }, + "batches": { + "description": "OpenAI-అనుకూల బ్యాచ్ జాబ్లను నిర్వహించండి", + "list": { + "status": "స్థితి ఆధారంగా ఫిల్టర్ చేయండి", + "limit": "గరిష్ఠ ఫలితాలు" + }, + "create": { + "description": "బ్యాచ్ జాబ్ను సృష్టించండి", + "inputFile": "ఇన్పుట్ ఫైల్ ID", + "endpoint": "లక్ష్య ఎండ్పాయింట్", + "window": "పూర్తి చేసే సమయ పరిమితి", + "metadata": "మెటాడేటా key=valueను జోడించండి" + }, + "submit": { + "description": "JSONL ఫైల్ను అప్లోడ్ చేసి బ్యాచ్ను సృష్టించండి", + "jsonl": "JSONL ఫైల్ పాత్", + "endpoint": "లక్ష్య ఎండ్పాయింట్", + "wait": "పూర్తయ్యే వరకు వేచి ఉండండి" + }, + "cancel": { + "yes": "నిర్ధారణను దాటవేయండి" + }, + "wait": { + "timeout": "మిల్లీసెకన్లలో గడువు" + }, + "output": { + "out": "అవుట్పుట్ను పాత్లో సేవ్ చేయండి" + }, + "errors": { + "out": "లోపాలను పాత్లో సేవ్ చేయండి" + } + }, + "translator": { + "description": "LLM ఫార్మాట్ల మధ్య అభ్యర్థన బాడీలను అనువదించండి", + "detect": { + "description": "బాడీ ఫార్మాట్ను గుర్తించండి" + }, + "translate": { + "description": "బాడీని ఒక ఫార్మాట్ నుండి మరొక ఫార్మాట్కు మార్చండి" + }, + "send": { + "description": "అనువదించి అప్స్ట్రీమ్కు పంపించండి" + }, + "stream": { + "description": "అభ్యర్థన బాడీని స్ట్రీమ్లో అనువదించండి" + }, + "from": "మూల ఫార్మాట్ (openai|anthropic|gemini|cohere)", + "to": "లక్ష్య ఫార్మాట్ (openai|anthropic|gemini|cohere)", + "file": "అభ్యర్థన బాడీ JSON ఫైల్కు పాత్", + "out": "అవుట్పుట్ను ఫైల్లో సేవ్ చేయండి", + "model": "మోడల్ను ఓవర్రైడ్ చేయండి", + "history": { + "limit": "గరిష్ఠ ఫలితాలు" + } + }, + "pricing": { + "description": "మోడళ్ల ధరల డేటాను నిర్వహించండి", + "sync": { + "description": "అప్స్ట్రీమ్ మూలాల నుండి ధరలను సమకాలీకరించండి", + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "force": "బలవంతంగా మళ్లీ సమకాలీకరించండి" + }, + "list": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "model": "మోడల్ ఆధారంగా ఫిల్టర్ చేయండి", + "limit": "గరిష్ఠ ఫలితాలు" + }, + "defaults": { + "description": "డిఫాల్ట్ ధరలను నిర్వహించండి", + "input": "1M టోకెన్లకు ఇన్పుట్ ఖర్చు (USD)", + "output": "1M టోకెన్లకు అవుట్పుట్ ఖర్చు (USD)", + "cacheRead": "1M టోకెన్లకు క్యాష్ రీడ్ ఖర్చు (USD)", + "cacheWrite": "1M టోకెన్లకు క్యాష్ రైట్ ఖర్చు (USD)" + }, + "diff": { + "description": "అప్స్ట్రీమ్ ధరల నుండి వ్యత్యాసాన్ని చూపండి", + "model": "మోడల్ ఆధారంగా ఫిల్టర్ చేయండి" + } + }, + "radar": { + "description": "స్థానిక Radar కేటలాగ్ ఫీడ్లను పరిశీలించి సమకాలీకరించండి", + "status": "స్థానిక Radar సెట్టింగ్లు మరియు ఫీడ్ క్యాష్ స్థితిని చూపండి", + "sync": "స్థానిక సర్వర్ ద్వారా కేటలాగ్, రెఫరల్స్, ఆఫర్లు మరియు Intelను సమకాలీకరించండి" + }, + "resilience": { + "description": "స్థితిస్థాపకత యంత్రాంగాలను పరిశీలించి నిర్వహించండి", + "status": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "breakers": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "cooldowns": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "connectionId": "కనెక్షన్ ID ఆధారంగా ఫిల్టర్ చేయండి" + }, + "lockouts": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "model": "మోడల్ ఆధారంగా ఫిల్టర్ చేయండి" + }, + "reset": { + "description": "బ్రేకర్/కూల్డౌన్ స్థితిని రీసెట్ చేయండి", + "provider": "రీసెట్ చేయాల్సిన ప్రొవైడర్", + "connectionId": "రీసెట్ చేయాల్సిన కనెక్షన్ ID", + "model": "లాక్అవుట్ను రీసెట్ చేయాల్సిన మోడల్", + "allCooldowns": "ప్రొవైడర్కు సంబంధించిన అన్ని కూల్డౌన్లను రీసెట్ చేయండి", + "yes": "నిర్ధారణను దాటవేయండి" + }, + "profile": { + "description": "స్థితిస్థాపకత ప్రొఫైల్ను నిర్వహించండి", + "name": "ప్రొఫైల్ పేరు" + }, + "config": { + "description": "స్థితిస్థాపకత కాన్ఫిగ్ను నిర్వహించండి", + "threshold": "వైఫల్య పరిమితి", + "resetTimeout": "రీసెట్ గడువు (msలో)", + "baseCooldown": "ప్రాథమిక కూల్డౌన్ (msలో)" + } + }, + "nodes": { + "description": "ప్రొవైడర్ నోడ్లను (ఎండ్పాయింట్లను) నిర్వహించండి", + "list": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "enabled": "ప్రారంభించబడిన నోడ్లను మాత్రమే చూపండి" + }, + "add": { + "provider": "ప్రొవైడర్ పేరు", + "baseUrl": "నోడ్కు సంబంధించిన బేస్ URL", + "name": "నోడ్ పేరు", + "weight": "లోడ్ బ్యాలెన్సింగ్ వెయిట్", + "region": "రీజియన్ ట్యాగ్", + "authHeader": "అనుకూల ఆథ్ హెడర్ (key=value)" + }, + "update": { + "baseUrl": "కొత్త బేస్ URL", + "name": "కొత్త పేరు", + "weight": "కొత్త వెయిట్", + "region": "కొత్త రీజియన్", + "enabled": "ప్రారంభించండి లేదా నిలిపివేయండి (true|false)" + }, + "remove": { + "yes": "నిర్ధారణను దాటవేయండి" + }, + "validate": { + "baseUrl": "ధృవీకరించాల్సిన URL", + "provider": "దేనితో పోల్చి ధృవీకరించాలో ఆ ప్రొవైడర్" + }, + "test": { + "description": "నోడ్కు పరీక్ష అభ్యర్థనను పంపండి" + }, + "metrics": { + "description": "నోడ్ మెట్రిక్లను చూపండి", + "period": "కాల వ్యవధి (ఉదా. 24h, 7d)" + } + }, + "context": { + "description": "కాంటెక్స్ట్ ఇంజినీరింగ్ పైప్లైన్ను కాన్ఫిగర్ చేయండి (Caveman, RTK)", + "analytics": { + "period": "కాల వ్యవధి (ఉదా. 7d, 30d)" + }, + "caveman": { + "description": "Caveman కాంటెక్స్ట్ కంప్రెసర్ను నిర్వహించండి", + "config": { + "description": "Caveman కాన్ఫిగ్ను చూపండి లేదా నవీకరించండి", + "aggressiveness": "దూకుడు స్థాయి 0.0–1.0", + "maxShrinkPct": "గరిష్ఠ కుదింపు శాతం", + "preserveTags": "భద్రపరచాల్సిన కామాతో వేరు చేసిన ట్యాగ్లు" + } + }, + "rtk": { + "description": "RTK కాంటెక్స్ట్ ఆప్టిమైజర్ను నిర్వహించండి", + "config": { + "description": "RTK కాన్ఫిగ్ను చూపించండి లేదా నవీకరించండి", + "tokenBudget": "RTK కోసం టోకెన్ బడ్జెట్", + "reservePct": "రిజర్వ్ శాతం" + }, + "filters": { + "description": "RTK ఫిల్టర్లను నిర్వహించండి", + "pattern": "ఫిల్టర్ నమూనా (regex)", + "priority": "ఫిల్టర్ ప్రాధాన్యత (డిఫాల్ట్: 100)", + "action": "ఫిల్టర్ చర్య: drop|shrink|replace", + "yes": "నిర్ధారణను దాటవేయండి" + }, + "test": { + "file": "అభ్యర్థన JSON ఫైల్ పాత్" + } + }, + "combos": { + "description": "సందర్భ-ఆధారిత కాంబో నిర్వహణ" + } + }, + "sessions": { + "description": "సక్రియ సెషన్లను పరిశీలించి నిర్వహించండి", + "list": { + "user": "వినియోగదారు ఆధారంగా ఫిల్టర్ చేయండి", + "kind": "రకం ఆధారంగా ఫిల్టర్ చేయండి (dashboard|api-key|mcp|a2a)", + "active": "సక్రియ సెషన్లను మాత్రమే చూపించండి", + "limit": "గరిష్ఠ ఫలితాలు (డిఫాల్ట్: 100)" + }, + "expire": { + "yes": "నిర్ధారణను దాటవేయండి" + }, + "expireAll": { + "user": "సెషన్లను గడువు ముగిసేలా చేయాల్సిన వినియోగదారు", + "yes": "నిర్ధారణను దాటవేయండి" + } + }, + "tags": { + "description": "వనరుల ట్యాగ్లను నిర్వహించండి", + "add": { + "color": "ట్యాగ్ రంగు (hex లేదా పేరు)", + "description": "ట్యాగ్ వివరణ" + }, + "remove": { + "yes": "నిర్ధారణను దాటవేయండి" + }, + "assign": { + "tag": "ట్యాగ్ పేరు", + "to": "type:id రూపంలో లక్ష్య వనరు (ఉదా. provider:openai)" + }, + "unassign": { + "tag": "ట్యాగ్ పేరు", + "from": "type:id రూపంలో మూల వనరు" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI స్పెక్ను యాక్సెస్ చేసి పరీక్షించండి", + "dump": { + "description": "OpenAPI స్పెక్ను stdout లేదా ఫైల్కు డంప్ చేయండి", + "format": "అవుట్పుట్ ఫార్మాట్: yaml|json (డిఫాల్ట్: yaml)", + "out": "ఫైల్ పాత్కు సేవ్ చేయండి" + }, + "validate": { + "description": "OpenAPI స్పెక్ను ధ్రువీకరించండి" + }, + "try": { + "description": "స్పెక్ ద్వారా API ఎండ్పాయింట్ను పరీక్షించండి", + "method": "HTTP పద్ధతి (డిఫాల్ట్: GET)", + "body": "అభ్యర్థన బాడీ JSON ఫైల్ పాత్", + "query": "కీ=విలువ రూపంలో క్వెరీ పారామీటర్ (పునరావృతం చేయవచ్చు)", + "header": "కీ=విలువ రూపంలో హెడర్ (పునరావృతం చేయవచ్చు)" + }, + "endpoints": { + "description": "అన్ని API ఎండ్పాయింట్లను జాబితా చేయండి", + "search": "పాత్ లేదా సారాంశం ఆధారంగా ఫిల్టర్ చేయండి" + }, + "paths": { + "description": "అన్ని API పాత్లను జాబితా చేయండి" + } + }, + "combo": { + "title": "కాంబోలు", + "switched": "సక్రియ కాంబో: {name}", + "created": "కాంబో సృష్టించబడింది: {name}", + "deleted": "కాంబో తొలగించబడింది: {name}", + "noCombos": "ఏ కాంబోలు కాన్ఫిగర్ చేయబడలేదు.", + "confirmDelete": "{name} కాంబోను తొలగించాలా?", + "suggest": { + "description": "AI స్కోరింగ్ను ఉపయోగించి ఒక టాస్క్కు ఉత్తమ కాంబోను సూచించండి", + "task": "టాస్క్ వివరణ", + "maxCost": "ఒక్కో అభ్యర్థనకు USDలో గరిష్ఠ వ్యయం", + "maxLatencyMs": "మిల్లీసెకన్లలో గరిష్ఠ లేటెన్సీ", + "weights": "JSON స్కోరింగ్ వెయిట్లు, ఉదా. {\"latency\":0.7,\"cost\":0.3}", + "top": "చూపించాల్సిన అగ్ర అభ్యర్థుల సంఖ్య (డిఫాల్ట్: 5)", + "explain": "కారణ వివరణను stderrకు ప్రింట్ చేయండి", + "switch": "అగ్ర ర్యాంక్ పొందిన కాంబోను సక్రియం చేయండి" + } + }, + "oneproxy": { + "description": "OneProxy అప్స్ట్రీమ్ పూల్ను నిర్వహించండి", + "stats": { + "provider": "ప్రొవైడర్ ఆధారంగా ఫిల్టర్ చేయండి", + "period": "కాల వ్యవధి (డిఫాల్ట్: 24h)" + }, + "fetch": { + "description": "పూల్ నుండి ప్రాక్సీలను పొందండి", + "count": "పొందాల్సిన ప్రాక్సీల సంఖ్య (డిఫాల్ట్: 1)", + "type": "ప్రాక్సీ రకం: http|socks5 (డిఫాల్ట్: http)" + }, + "rotate": { + "description": "ప్రాక్సీ రొటేషన్ను బలవంతంగా అమలు చేయండి", + "provider": "రొటేట్ చేయాల్సిన ప్రొవైడర్", + "connectionId": "రొటేట్ చేయాల్సిన నిర్దిష్ట కనెక్షన్ ID" + }, + "config": { + "description": "OneProxy కాన్ఫిగ్ను చూపండి లేదా అప్డేట్ చేయండి", + "enabled": "ప్రాక్సీ పూల్ను ప్రారంభించండి (true|false)", + "poolSize": "పూల్ పరిమాణం", + "providerSource": "ప్రాక్సీ ప్రొవైడర్ కోసం URL", + "rotationPolicy": "రొటేషన్ విధానం: sticky|per-request|periodic" + }, + "pool": { + "description": "మెట్రిక్లతో ప్రస్తుత ప్రాక్సీ పూల్ను జాబితా చేయండి" + } + }, + "open": { + "description": "బ్రౌజర్లో నిర్దిష్ట OmniRoute డ్యాష్బోర్డ్ పేజీని తెరవండి", + "url": "URLను మాత్రమే ప్రింట్ చేయండి, బ్రౌజర్ను తెరవవద్దు" + }, + "telemetry": { + "description": "సమగ్రపరచిన టెలిమెట్రీ డేటాను యాక్సెస్ చేయండి", + "summary": { + "description": "సమగ్రపరచిన టెలిమెట్రీ సారాంశాన్ని చూపండి", + "period": "కాల వ్యవధి: 24h|7d|30d (డిఫాల్ట్: 24h)", + "compareTo": "మునుపటి కాల వ్యవధితో పోల్చండి" + }, + "export": { + "description": "టెలిమెట్రీ ఈవెంట్లను JSONLకు ఎగుమతి చేయండి", + "out": "అవుట్పుట్ ఫైల్ పాత్ (డిఫాల్ట్: telemetry.jsonl)", + "period": "ఎగుమతి కోసం కాల వ్యవధి (డిఫాల్ట్: 7d)" + } + }, + "sync": { + "description": "OmniRoute ఇన్స్టాన్స్ల మధ్య కాన్ఫిగరేషన్ను సింక్ చేయండి", + "push": { + "description": "కాన్ఫిగ్ను క్లౌడ్ లేదా రిమోట్ ఇన్స్టాన్స్కు పుష్ చేయండి", + "target": "లక్ష్యం (cloud లేదా context:name)", + "bundle": "సింక్ చేయాల్సిన బండిల్ భాగాలు", + "dryRun": "వర్తింపజేయకుండా ప్రివ్యూ చూడండి" + }, + "pull": { + "description": "క్లౌడ్ లేదా రిమోట్ నుండి కాన్ఫిగ్ను పుల్ చేయండి", + "source": "మూలం (క్లౌడ్ లేదా context:name)", + "merge": "ఇప్పటికే ఉన్న కాన్ఫిగ్తో విలీనం చేయండి", + "replace": "ఇప్పటికే ఉన్న కాన్ఫిగ్ను భర్తీ చేయండి", + "dryRun": "వర్తింపజేయకుండా ప్రివ్యూ చూడండి" + }, + "diff": { + "source": "మూల కాంటెక్స్ట్", + "target": "లక్ష్య కాంటెక్స్ట్" + }, + "bundle": { + "description": "కాన్ఫిగ్ను బండిల్ ఫైల్గా ఎగుమతి చేయండి", + "include": "చేర్చాల్సిన భాగాలు (కామాలతో వేరు చేసినవి)" + }, + "import": { + "description": "బండిల్ ఫైల్ను దిగుమతి చేయండి", + "dryRun": "వర్తింపజేయకుండా ధృవీకరించండి" + }, + "initialize": { + "fromCloud": "క్లౌడ్ బ్యాకప్ నుండి ప్రారంభించండి" + }, + "tokens": { + "description": "సింక్ టోకెన్లను నిర్వహించండి", + "create": { + "name": "టోకెన్ పేరు", + "scope": "టోకెన్ పరిధి", + "ttl": "టోకెన్ TTL (ఉదా. 30d)" + }, + "revoke": { + "yes": "నిర్ధారణను దాటవేయండి" + } + }, + "resolve": { + "description": "సింక్ వైరుధ్యాలను ఇంటరాక్టివ్గా పరిష్కరించండి" + } + }, + "config": { + "contexts": { + "description": "సర్వర్ కాంటెక్స్ట్లు/ప్రొఫైల్లను నిర్వహించండి (జోడించు, ఉపయోగించు, జాబితా చూపు, వివరాలు చూపు, తొలగించు, పేరు మార్చు, ఎగుమతి చేయు, దిగుమతి చేయు)" + }, + "lang": { + "description": "CLI ప్రదర్శన భాషను నిర్వహించండి", + "getDescription": "ప్రస్తుతం సక్రియంగా ఉన్న భాషా కోడ్ను చూపండి", + "setDescription": "ప్రదర్శన భాషను సెట్ చేసి కాన్ఫిగ్లో సేవ్ చేయండి", + "listDescription": "అందుబాటులో ఉన్న అన్ని భాషలను జాబితా చేయండి", + "listTitle": "అందుబాటులో ఉన్న భాషలు", + "current": "భాష: {code} ({name})", + "saved": "భాష {code} ({name})కు సెట్ చేయబడింది.", + "noCode": "భాషా కోడ్ అవసరం. అందుబాటులో ఉన్న కోడ్లను చూడటానికి 'omniroute config lang list'ను అమలు చేయండి.", + "unknown": "తెలియని భాషా కోడ్: {code}. అందుబాటులో ఉన్న కోడ్లను చూడటానికి 'omniroute config lang list'ను అమలు చేయండి.", + "alreadySet": "భాష ఇప్పటికే {code}కు సెట్ చేయబడింది.", + "envHint": "చిట్కా: మీరు మీ ఎన్విరాన్మెంట్లో OMNIROUTE_LANG={code}ను కూడా సెట్ చేయవచ్చు." + } + }, + "completion": { + "description": "షెల్ కంప్లీషన్ స్క్రిప్ట్లను రూపొందించండి లేదా ఇన్స్టాల్ చేయండి", + "zsh": "zsh కంప్లీషన్ స్క్రిప్ట్ను ప్రింట్ చేయండి", + "bash": "bash కంప్లీషన్ స్క్రిప్ట్ను ప్రింట్ చేయండి", + "fish": "fish కంప్లీషన్ స్క్రిప్ట్ను ప్రింట్ చేయండి", + "install": "గుర్తించిన షెల్ కోసం కంప్లీషన్ స్క్రిప్ట్ను గ్లోబల్గా ఇన్స్టాల్ చేయండి", + "refresh": "కాంబోలు/ప్రొవైడర్లు/మోడళ్ల క్యాష్ను రిఫ్రెష్ చేయండి" + }, + "logs": { + "description": "అభ్యర్థన లాగ్లను స్ట్రీమ్ చేయండి లేదా ఎగుమతి చేయండి", + "follow": "లాగ్లను రియల్-టైమ్లో స్ట్రీమ్ చేయండి", + "filter": "స్థాయి ఆధారంగా ఫిల్టర్ చేయండి (error,warn,info) — కామాలతో వేరు చేసినవి", + "lines": "తీసుకురావాల్సిన లైన్ల సంఖ్య", + "timeout": "కనెక్షన్ టైమ్ఔట్ (msలో)", + "baseUrl": "OmniRoute API బేస్ URL", + "requestId": "రిక్వెస్ట్ ID ఆధారంగా ఫిల్టర్ చేయండి", + "apiKey": "API కీ ఆధారంగా ఫిల్టర్ చేయండి", + "combo": "కాంబో పేరు ఆధారంగా ఫిల్టర్ చేయండి", + "status": "HTTP స్టేటస్ కోడ్ ఆధారంగా ఫిల్టర్ చేయండి", + "durationMin": "కనిష్ఠ రిక్వెస్ట్ వ్యవధి (msలో)", + "durationMax": "గరిష్ఠ రిక్వెస్ట్ వ్యవధి (msలో)", + "export": "లాగ్లను ఫైల్లో సేవ్ చేయండి (json/jsonl/csv)", + "exported": "లాగ్లు {path}కు సేవ్ చేయబడ్డాయి", + "stopped": "లాగ్ స్ట్రీమ్ ఆగిపోయింది.", + "streamError": "లాగ్ స్ట్రీమ్ లోపం: {message}" + }, + "tray": { + "description": "సిస్టమ్ ట్రే ఐకాన్ను నియంత్రించండి", + "show": "ట్రే ఐకాన్ను చూపండి (సర్వర్ --trayతో నడుస్తుంటే)", + "hide": "ట్రే ఐకాన్ను దాచండి", + "quit": "ట్రే ద్వారా OmniRoute నుండి నిష్క్రమించండి" + }, + "autostart": { + "description": "బూట్ సమయంలో OmniRoute ఆటోస్టార్ట్ను నిర్వహించండి (Linux: systemd యూజర్ సర్వీస్)", + "enable": "బూట్ సమయంలో ఆటోస్టార్ట్ను ప్రారంభించండి", + "disable": "బూట్ సమయంలో ఆటోస్టార్ట్ను నిలిపివేయండి", + "toggle": "బూట్ సమయంలో ఆటోస్టార్ట్ను టాగుల్ చేయండి", + "status": "ఆటోస్టార్ట్ స్థితిని చూపండి" + }, + "runtime": { + "description": "నేటివ్ రన్టైమ్ డిపెండెన్సీలను నిర్వహించండి", + "check": "రన్టైమ్ డైరెక్టరీలోని నేటివ్ డిపెండెన్సీల స్థితిని తనిఖీ చేయండి", + "repair": "రన్టైమ్ డైరెక్టరీలో నేటివ్ డిపెండెన్సీలను మళ్లీ ఇన్స్టాల్ చేయండి", + "repair_force": "చెల్లుబాటులో ఉన్నప్పటికీ బలవంతంగా మళ్లీ ఇన్స్టాల్ చేయండి", + "clean": "రన్టైమ్ డైరెక్టరీని తొలగించండి (డిస్క్ స్థలాన్ని ఖాళీ చేస్తుంది)", + "clean_yes": "నిర్ధారణను దాటవేయండి" + }, + "repl": { + "description": "LLMతో ఇంటరాక్టివ్ బహుళ-దశల REPL", + "model": "ఉపయోగించాల్సిన మోడల్ (డిఫాల్ట్: auto)", + "combo": "ఉపయోగించాల్సిన కాంబో పేరు", + "system": "సిస్టమ్ ప్రాంప్ట్", + "resume": "పేరు ద్వారా సేవ్ చేసిన సెషన్ను పునఃప్రారంభించండి" + }, + "plugin": { + "description": "CLI ప్లగిన్లను నిర్వహించండి (omniroute-cmd-*)", + "list": "ఇన్స్టాల్ చేసిన ప్లగిన్ల జాబితా", + "install": "npm లేదా లోకల్ పాత్ నుండి ప్లగిన్ను ఇన్స్టాల్ చేయండి", + "remove": "ఇన్స్టాల్ చేసిన ప్లగిన్ను తొలగించండి", + "info": "ఇన్స్టాల్ చేసిన ప్లగిన్ వివరాలను చూపండి", + "search": "అందుబాటులో ఉన్న ప్లగిన్ల కోసం npm రిజిస్ట్రీలో శోధించండి", + "update": "ఇన్స్టాల్ చేసిన ప్లగిన్(ల)ను నవీకరించండి", + "scaffold": "కొత్త ప్లగిన్ బాయిలర్ప్లేట్ను స్కాఫోల్డ్ చేయండి" + }, + "launch": { + "description": "OmniRouteను లక్ష్యంగా చేసుకుని Claude Codeను ప్రారంభించండి (లోకల్ లేదా రిమోట్, --profileతో)", + "token": "Claude క్లయింట్ పంపాల్సిన టోకెన్ (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "{port} వద్ద OmniRouteను చేరుకోలేకపోతున్నాము. 'omniroute serve'తో దాన్ని ప్రారంభించండి.", + "notFound": "PATHలో 'claude' CLI కనుగొనబడలేదు." + }, + "run": { + "description": "OmniRoute ద్వారా మద్దతున్న CLI లక్ష్యాన్ని ప్రారంభించండి" + }, + "setupClaude": { + "description": "OmniRoute మోడల్ కేటలాగ్ నుండి ~/.claude/profiles Claude Code ప్రొఫైల్లను రూపొందించండి" + }, + "connect": { + "description": "రిమోట్ OmniRoute సర్వర్కు కనెక్ట్ అయి రిమోట్ మోడ్లోకి ప్రవేశించండి" + }, + "tokens": { + "description": "స్కోప్ చేసిన CLI యాక్సెస్ టోకెన్లను నిర్వహించండి (రిమోట్ మోడ్)" + }, + "configure": { + "description": "సక్రియ సర్వర్ నుండి ప్రొవైడర్+మోడల్ను ఎంచుకుని, మద్దతున్న లోకల్ CLIని కాన్ఫిగర్ చేయండి" + }, + "launchCodex": { + "description": "OmniRouteను లక్ష్యంగా చేసుకుని Codex CLIని ప్రారంభించండి (లోకల్ లేదా రిమోట్ VPS)" + }, + "setupCodex": { + "description": "OmniRoute లైవ్ మోడల్ కేటలాగ్ నుండి ~/.codex ప్రొఫైల్ ఫైల్లను రూపొందించండి" + }, + "packs": { + "description": "ఐచ్ఛిక రన్టైమ్ ప్యాక్లను నిర్వహించండి (ML / బ్రౌజర్ ఆటోమేషన్)", + "listDescription": "ఐచ్ఛిక ప్యాక్లు మరియు వాటి ఇన్స్టాలేషన్ స్థితిని జాబితా చేయండి", + "installDescription": "DATA_DIRలో ఐచ్ఛిక ప్యాక్ను ఇన్స్టాల్ చేయండి", + "verifyDescription": "రవాణా చేసిన చెక్సమ్ ఇండెక్స్తో ఇన్స్టాల్ చేసిన ప్యాక్లను ధృవీకరించండి", + "removeDescription": "ఇన్స్టాల్ చేసిన ఐచ్ఛిక ప్యాక్ను తొలగించండి", + "sourceOpt": "ప్యాక్ పేలోడ్లు మరియు ప్యాక్ ఇండెక్స్ను కలిగి ఉన్న డైరెక్టరీ", + "warnNoIndex": "optional-packs.index.json కనుగొనబడలేదు — ఈ చెక్అవుట్లో ఇన్స్టాల్/ధృవీకరణ అందుబాటులో లేవు (డెస్క్టాప్ బండిళ్లలో ఇది ఉంటుంది)", + "errUnknown": "తెలియని ప్యాక్: {name}", + "errNoIndex": "ప్యాక్ ఇండెక్స్ కనుగొనబడలేదు; ప్యాక్ పేలోడ్ ఉన్న --source ను అందించండి (డెస్క్టాప్ బండిళ్లలో ఇది యాప్ పక్కనే ఉంటుంది)", + "installed": "ప్యాక్ \"{name}\" {dir} వద్ద ఇన్స్టాల్ చేయబడి ధృవీకరించబడింది", + "restartHint": "రన్టైమ్ ప్యాక్ను గుర్తించేలా OmniRoute సర్వర్ను (లేదా డెస్క్టాప్ యాప్ను) పునఃప్రారంభించండి", + "removed": "ప్యాక్ \"{name}\" తొలగించబడింది", + "notInstalled": "ప్యాక్ \"{name}\" ఇన్స్టాల్ చేయబడలేదు", + "verifyOk": "ఇన్స్టాల్ చేసిన అన్ని ప్యాక్లు ధృవీకరించబడ్డాయి", + "verifyFailed": "{count} ప్యాక్(లు) ధృవీకరణలో విఫలమయ్యాయి", + "noneInstalled": "ఐచ్ఛిక ప్యాక్లేవీ ఇన్స్టాల్ చేయబడలేదు" } } diff --git a/bin/cli/locales/th.json b/bin/cli/locales/th.json index 4088d10366..25fd62246c 100644 --- a/bin/cli/locales/th.json +++ b/bin/cli/locales/th.json @@ -14,6 +14,812 @@ "jsonOpt": "ส่งออกเป็น JSON", "yesOpt": "ข้ามการยืนยัน" }, + "setup": { + "title": "ตั้งค่า OmniRoute", + "passwordPrompt": "รหัสผ่านผู้ดูแลระบบ", + "providerPrompt": "ผู้ให้บริการเริ่มต้น (เว้นว่างเพื่อข้าม)", + "done": "ตั้งค่าเสร็จสมบูรณ์", + "passwordSet": "กำหนดรหัสผ่านผู้ดูแลระบบแล้ว", + "providerSet": "กำหนดค่าผู้ให้บริการแล้ว: {name}", + "testingProvider": "กำลังทดสอบการเชื่อมต่อกับผู้ให้บริการ: {name}", + "testPassed": "การทดสอบผู้ให้บริการผ่าน", + "testFailed": "การทดสอบผู้ให้บริการล้มเหลว: {error}", + "loginEnabled": "การเข้าสู่ระบบ: เปิดใช้งานแล้ว (อัปเดตรหัสผ่านแล้ว)", + "loginDisabled": "การเข้าสู่ระบบ: ปิดใช้งาน", + "providerInfo": "ผู้ให้บริการ: {info}", + "opencode": "ติดตั้งและกำหนดค่า @omniroute/opencode-plugin ที่รวมมาให้สำหรับ OpenCode" + }, + "doctor": { + "title": "OmniRoute Doctor", + "dbOk": "ฐานข้อมูล: ปกติ ({path})", + "dbMissing": "ฐานข้อมูล: ยังไม่ได้เริ่มต้น — เรียกใช้ `omniroute setup`", + "portOk": "พอร์ต {port}: พร้อมใช้งาน", + "portConflict": "พอร์ต {port}: ถูกใช้งานโดยกระบวนการอื่น", + "encryptionOk": "คีย์การเข้ารหัส: กำหนดค่าแล้ว", + "encryptionMissing": "ไม่พบคีย์การเข้ารหัส — เรียกใช้ `omniroute setup`", + "allGood": "การตรวจสอบทั้งหมดผ่านแล้ว", + "warnings": "คำเตือน {count} รายการ — ดูรายละเอียดด้านบน" + }, + "providers": { + "title": "ผู้ให้บริการ", + "noProviders": "ยังไม่ได้กำหนดค่าผู้ให้บริการ เรียกใช้: omniroute setup", + "testing": "กำลังทดสอบ {name}...", + "available": "มีผู้ให้บริการพร้อมใช้งาน {count} ราย", + "connected": "เชื่อมต่อแล้ว", + "disconnected": "ตัดการเชื่อมต่อแล้ว", + "validationFailed": "การตรวจสอบความถูกต้องล้มเหลว: {error}", + "metrics": { + "description": "แสดงเมตริกประสิทธิภาพของผู้ให้บริการ (เวลาแฝง อัตราความสำเร็จ ค่าใช้จ่าย)", + "provider": "กรองตาม ID ผู้ให้บริการ", + "connection_id": "กรองตาม ID การเชื่อมต่อ", + "period": "ช่วงเวลา: 1h|6h|24h|7d|30d (ค่าเริ่มต้น: 24h)", + "metric": "เน้นฟิลด์เมตริกที่ระบุ", + "sort": "เรียงลำดับตามฟิลด์ (จากมากไปน้อย)", + "limit": "จำนวนแถวสูงสุด (ค่าเริ่มต้น: 50)", + "watch": "รีเฟรชทุก 5 วินาที (โหมดสด)", + "compare": "ID ผู้ให้บริการที่คั่นด้วยจุลภาคเพื่อเปรียบเทียบแบบเคียงข้างกัน" + }, + "metric_single": { + "description": "รับค่าเมตริกเดียวสำหรับการเชื่อมต่อที่ระบุ" + }, + "rotate": { + "description": "หมุนเวียนคีย์ API ต้นทางสำหรับการเชื่อมต่อกับผู้ให้บริการ", + "newKeyOpt": "ค่าคีย์ API ใหม่ (ควรหลีกเลี่ยง: แนะนำให้ใช้ --from-env)", + "fromEnvOpt": "อ่านคีย์ใหม่จากตัวแปรสภาพแวดล้อม VAR", + "oauthOpt": "เรียกใช้กระบวนการยืนยันตัวตน OAuth อีกครั้งแทน", + "skipTestOpt": "ข้ามการทดสอบการเชื่อมต่อหลังหมุนเวียนคีย์", + "dryRunOpt": "แสดงสิ่งที่จะเปลี่ยนแปลงโดยไม่เขียนข้อมูล", + "confirmPrompt": "แทนที่คีย์ API สำหรับการเชื่อมต่อ \"{name}\" ({id}) หรือไม่? [y/N]", + "dryRunResult": "[dry-run] จะหมุนเวียนคีย์สำหรับ \"{name}\" ({id}) ไม่มีการเปลี่ยนแปลงใด ๆ", + "oauthHint": "การเชื่อมต่อ OAuth — เรียกใช้: omniroute oauth {provider}", + "envVarEmpty": "ตัวแปรสภาพแวดล้อม {var} ไม่ได้ถูกตั้งค่าหรือว่างเปล่า", + "success": "หมุนเวียนคีย์สำหรับ \"{name}\" แล้ว เรียกใช้ `providers test {id}` เพื่อตรวจสอบ", + "testPassed": "การทดสอบหลังหมุนเวียนคีย์ผ่านแล้ว", + "testFailed": "การทดสอบหลังหมุนเวียนคีย์ล้มเหลว: {error}" + }, + "status": { + "description": "แสดงสถานะคีย์สำหรับการเชื่อมต่อผู้ให้บริการทั้งหมด (อายุ วันหมดอายุ ระยะพักใช้งาน)", + "providerOpt": "กรองตามชื่อผู้ให้บริการ", + "header": "ID ผู้ให้บริการ ชื่อ สถานะการหมดอายุ สถานะการทดสอบ พักใช้งานจนถึง", + "noData": "ไม่มีข้อมูลการเชื่อมต่อผู้ให้บริการ", + "requiresServer": "คำสั่ง providers status ต้องให้เซิร์ฟเวอร์ OmniRoute ทำงานอยู่" + } + }, + "keys": { + "title": "คีย์ API", + "addDescription": "เพิ่มหรืออัปเดตคีย์ API สำหรับผู้ให้บริการ", + "listDescription": "แสดงคีย์ API ที่กำหนดค่าไว้ทั้งหมด", + "removeDescription": "ลบคีย์ API สำหรับผู้ให้บริการ", + "regenerateDescription": "สร้างคีย์ API ของ OmniRoute ใหม่", + "revokeDescription": "เพิกถอนคีย์ API ของ OmniRoute", + "revealDescription": "แสดงค่าคีย์ API แบบไม่ปกปิด", + "usageDescription": "แสดงการใช้งานล่าสุดของคีย์ API", + "usageLimitOpt": "จำนวนคำขอล่าสุด", + "rotateDescription": "สร้างคีย์ใหม่และทำให้คีย์เก่าใช้ไม่ได้", + "graceOpt": "ระยะผ่อนผัน (ms) ก่อนทำให้คีย์เก่าใช้ไม่ได้", + "stdinOpt": "อ่านคีย์ API จาก stdin แทนอาร์กิวเมนต์", + "added": "เพิ่มคีย์สำหรับ {provider} แล้ว", + "removed": "ลบคีย์แล้ว", + "listed": "{count} คีย์", + "noKeys": "ยังไม่ได้กำหนดค่าคีย์", + "noUsage": "ไม่พบข้อมูลการใช้งาน", + "confirmRemove": "ลบคีย์ {id} หรือไม่?", + "confirmRegenerate": "สร้างคีย์ {id} ใหม่หรือไม่?", + "confirmRevoke": "เพิกถอนคีย์ {id} หรือไม่?", + "confirmRotate": "หมุนเวียนคีย์ {id} หรือไม่? (คีย์เก่าจะใช้ไม่ได้หลังพ้นระยะผ่อนผัน)", + "regenerated": "สร้างใหม่แล้ว คีย์ใหม่: {key}", + "revoked": "เพิกถอนคีย์ {id} แล้ว", + "rotated": "หมุนเวียนคีย์ {id} แล้ว ID คีย์ใหม่: {newId}", + "revealWarning": "⚠ การดำเนินการนี้จะแสดงคีย์แบบเต็มโดยไม่มีการปกปิด โปรดตรวจสอบว่าหน้าจอของคุณเป็นส่วนตัว", + "providerRequired": "จำเป็นต้องระบุผู้ให้บริการ", + "keyRequired": "จำเป็นต้องระบุ API key", + "stdinEmpty": "ไม่ได้ระบุ API key ผ่าน stdin", + "unknownProvider": "ไม่รู้จักผู้ให้บริการ: {provider}", + "policy": { + "title": "นโยบายคีย์", + "showDescription": "แสดงนโยบายอัตรา/ค่าใช้จ่ายสำหรับคีย์", + "setDescription": "ตั้งค่านโยบายอัตรา/ค่าใช้จ่ายสำหรับคีย์", + "rateLimitOpt": "จำนวนคำขอสูงสุดต่อนาที", + "maxCostOpt": "ค่าใช้จ่ายสูงสุดต่อวัน (USD)", + "allowedModelsOpt": "รายการโมเดลที่อนุญาตโดยคั่นด้วยจุลภาค", + "nothingToSet": "ไม่ได้ระบุฟิลด์นโยบาย โปรดใช้ --rate-limit, --max-cost หรือ --allowed-models", + "updated": "อัปเดตนโยบายแล้ว" + }, + "expiration": { + "title": "การหมดอายุของคีย์", + "listDescription": "แสดงรายการคีย์ที่ใกล้หมดอายุ", + "daysOpt": "แสดงคีย์ที่จะหมดอายุภายใน N วัน", + "none": "ไม่มีคีย์ที่จะหมดอายุภายใน {days} วัน", + "listTitle": "คีย์ที่จะหมดอายุภายใน {days} วัน:" + } + }, + "authExport": { + "description": "ส่งออกข้อมูลประจำตัวของผู้ให้บริการที่ถอดรหัสแล้ว (ใช้ภายในเครื่องเท่านั้น, เอาต์พุตเป็นข้อความธรรมดา)", + "idOpt": "ส่งออกเฉพาะการเชื่อมต่อที่ตรงกับ id/name/provider นี้", + "formatOpt": "รูปแบบเอาต์พุต: json หรือ env", + "outOpt": "เขียนเอาต์พุตลงในไฟล์แทน stdout (เขียนด้วยสิทธิ์ 0600)", + "forceOpt": "ยืนยันว่าคุณเข้าใจว่าการดำเนินการนี้จะพิมพ์/เขียนข้อมูลลับเป็นข้อความธรรมดา", + "warning": "⚠ การดำเนินการนี้จะพิมพ์/เขียน API key และโทเค็น OAuth ที่ถอดรหัสแล้วเป็นข้อความธรรมดา โปรดตรวจสอบว่าหน้าจอ ประวัติ shell และไฟล์เอาต์พุตของคุณเป็นส่วนตัว", + "confirmHeading": "⚠ คำเตือน: การดำเนินการนี้จะส่งออกข้อมูลประจำตัวของผู้ให้บริการที่ถอดรหัสแล้วเป็นข้อความธรรมดา", + "confirmBody": "คำสั่งนี้จะถอดรหัสและพิมพ์/เขียน apiKey, accessToken, refreshToken และ\nidToken สำหรับการเชื่อมต่อที่เลือก โปรดถือว่าเอาต์พุตเป็นข้อมูลลับ", + "confirmFooter": "เพื่อยืนยัน ให้เรียกใช้:\n omniroute auth export --force", + "missingKey": "จำเป็นต้องมี STORAGE_ENCRYPTION_KEY เพื่อส่งออกข้อมูลประจำตัว", + "notFound": "ไม่พบการเชื่อมต่อ: {id}", + "invalidFormat": "รูปแบบไม่ถูกต้อง: {format} โปรดใช้ json หรือ env" + }, + "stream": { + "description": "สตรีมการตอบกลับแชตพร้อมโหมดตรวจสอบ SSE", + "file": "อ่านพรอมต์จากไฟล์", + "stdin": "อ่านพรอมต์จาก stdin", + "model": "ID โมเดล (ค่าเริ่มต้น: auto)", + "system": "พรอมต์ระบบ", + "combo": "บังคับใช้คอมโบที่ระบุตามชื่อ", + "max_tokens": "จำนวนโทเค็นสูงสุดในการตอบกลับ", + "responses_api": "ใช้ /v1/responses แทน /v1/chat/completions", + "raw": "พิมพ์บรรทัด SSE ดิบตามที่ได้รับ", + "debug": "พิมพ์ข้อมูลเวลาของแต่ละชิ้นไปยัง stderr", + "save": "บันทึกอีเวนต์ SSE ทั้งหมดลงในไฟล์ .jsonl", + "error": { + "empty_prompt": "ข้อผิดพลาด: ต้องระบุพรอมต์ (อาร์กิวเมนต์แบบระบุตำแหน่ง, --file หรือ --stdin)" + } + }, + "usage": { + "description": "การวิเคราะห์การใช้งาน งบประมาณ โควตา และบันทึก", + "analytics": { + "description": "แสดงข้อมูลวิเคราะห์การใช้งานแบบรวม", + "period": "ช่วงเวลา: 1d|7d|30d|90d|ytd|all (ค่าเริ่มต้น: 30d)", + "provider": "กรองตาม ID ผู้ให้บริการ" + }, + "budget": { + "description": "จัดการงบประมาณค่าใช้จ่าย", + "set": { + "scope": "ขอบเขตงบประมาณ (ค่าเริ่มต้น: global)", + "period": "รอบงบประมาณ: daily|weekly|monthly (ค่าเริ่มต้น: monthly)" + } + }, + "quota": { + "description": "แสดงการใช้โควตาของผู้ให้บริการ", + "provider": "กรองตาม ID ผู้ให้บริการ", + "check": "แสดงว่ามีโควตาสำหรับคำขอใหม่หรือไม่" + }, + "logs": { + "description": "แสดงบันทึกการเรียกคำขอ", + "limit": "จำนวนรายการบันทึกที่จะส่งคืน (ค่าเริ่มต้น: 100)", + "search": "คำค้นหาสำหรับกรองบันทึก", + "since": "ส่งคืนบันทึกตั้งแต่เวลาประทับนี้", + "follow": "ติดตามรายการบันทึกใหม่อย่างต่อเนื่อง", + "api_key": "กรองบันทึกตาม API key" + }, + "utilization": { + "description": "แสดงเมตริกการใช้งาน API key", + "api_key": "กรองตาม API key" + }, + "history": { + "description": "แสดงประวัติคำขอ", + "limit": "จำนวนรายการประวัติ (ค่าเริ่มต้น: 100)" + }, + "proxy_logs": { + "description": "แสดงบันทึกคำขอระดับพร็อกซี", + "limit": "จำนวนรายการบันทึกพร็อกซี (ค่าเริ่มต้น: 100)" + } + }, + "cost": { + "description": "แสดงรายงานค่าใช้จ่ายพร้อมแจกแจงตามผู้ให้บริการ โมเดล คอมโบ หรือ API key", + "period": "ช่วงเวลา: 1d|7d|30d|90d|ytd|all (ค่าเริ่มต้น: 30d)", + "since": "วันที่เริ่มต้น (รูปแบบ ISO เช่น 2026-01-01) — มีผลแทนที่ --period", + "until": "วันที่สิ้นสุด (รูปแบบ ISO)", + "group_by": "จัดกลุ่มผลลัพธ์ตาม: provider|model|api-key|combo|day (ค่าเริ่มต้น: provider)", + "api_key_filter": "กรองตาม API key ที่ระบุ", + "limit": "จำนวนแถวสูงสุดที่จะแสดง (ค่าเริ่มต้น: 100)" + }, + "simulate": { + "description": "การจำลองการกำหนดเส้นทางแบบ Dry-run — แสดงผู้ให้บริการที่จะถูกเลือกโดยไม่เรียกต้นทาง", + "file": "โหลดเนื้อหาคำขอทั้งหมดจากไฟล์ JSON", + "model": "ID โมเดล (ค่าเริ่มต้น: auto)", + "combo": "บังคับใช้คอมโบที่ระบุตามชื่อ", + "reasoning": "ระดับความพยายามในการใช้เหตุผล (low|medium|high)", + "thinking": "งบประมาณโทเค็นสำหรับการคิดแบบขยาย", + "explain": "พิมพ์โครงสร้างทางเลือกสำรองและช่วงค่าใช้จ่ายไปยัง stderr", + "noCombo": "ไม่พบคอมโบที่ตรงกัน กำหนดค่าคอมโบด้วย: omniroute combo create" + }, + "chat": { + "description": "ส่งพรอมต์แชตแบบครั้งเดียวไปยัง OmniRoute", + "file": "อ่านพรอมต์จากไฟล์", + "stdin": "อ่านพรอมต์จาก stdin", + "system": "พรอมต์ระบบ", + "model": "รหัสโมเดล (ค่าเริ่มต้น: auto)", + "max_tokens": "จำนวนโทเค็นสูงสุดในการตอบกลับ", + "temperature": "ค่าอุณหภูมิการสุ่มตัวอย่าง (0–2)", + "top_p": "การสุ่มตัวอย่างแบบนิวเคลียส Top-p", + "reasoning_effort": "ระดับความพยายามในการให้เหตุผล (low|medium|high)", + "thinking_budget": "งบประมาณโทเค็นสำหรับการคิดแบบขยาย", + "combo": "บังคับใช้คอมโบที่ระบุด้วยชื่อ", + "responses_api": "ใช้ /v1/responses แทน /v1/chat/completions", + "stream": "สตรีมคำตอบแบบเพิ่มขึ้นทีละส่วน", + "no_history": "ไม่บันทึกลงใน ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "ข้อผิดพลาด: ต้องระบุพรอมต์ (อาร์กิวเมนต์ตามตำแหน่ง, --file หรือ --stdin)" + } + }, + "serve": { + "description": "เริ่มเซิร์ฟเวอร์ OmniRoute (การดำเนินการเริ่มต้น)", + "starting": "กำลังเริ่มเซิร์ฟเวอร์ OmniRoute บนพอร์ต {port}...", + "ready": "พร้อมใช้งานที่ http://localhost:{port}", + "stopping": "กำลังหยุดเซิร์ฟเวอร์ (PID {pid})...", + "stopped": "หยุดเซิร์ฟเวอร์แล้ว", + "notRunning": "เซิร์ฟเวอร์ไม่ได้ทำงานอยู่", + "port": "พอร์ตสำหรับรับฟัง (ค่าเริ่มต้น: 20128)", + "no_open": "ไม่เปิดเบราว์เซอร์โดยอัตโนมัติ", + "daemon": "เรียกใช้เซิร์ฟเวอร์เป็นดีมอนเบื้องหลัง", + "log": "แสดงบันทึกเซิร์ฟเวอร์ในบรรทัด", + "no_recovery": "ปิดใช้งานการรีสตาร์ตอัตโนมัติเมื่อขัดข้อง (โหมดดีบัก)", + "max_restarts": "จำนวนครั้งสูงสุดที่จะรีสตาร์ตหลังขัดข้องภายใน 30 วินาทีก่อนยกเลิก (ค่าเริ่มต้น: 2)", + "tray": "เริ่มในถาดระบบ (เฉพาะเดสก์ท็อป ต้องเลือกเปิดใช้)", + "no_tray": "ปิดใช้งานไอคอนถาดระบบ", + "ready_timeout": "ระยะหมดเวลาของโพรบตรวจสอบความพร้อมเป็นมิลลิวินาที (รวมถึง OMNIROUTE_READY_TIMEOUT_MS, ค่าเริ่มต้น 60000)", + "tls_cert": "พาธไปยังใบรับรอง TLS (PEM) สำหรับให้บริการ HTTPS (รวมถึง OMNIROUTE_TLS_CERT)", + "tls_key": "พาธไปยังคีย์ส่วนตัว TLS (PEM) สำหรับให้บริการ HTTPS (รวมถึง OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "สำรองข้อมูล", + "description": "สร้างข้อมูลสำรองของข้อมูล OmniRoute", + "creating": "กำลังสร้างข้อมูลสำรอง...", + "done": "บันทึกข้อมูลสำรองไปยัง {path} แล้ว", + "noFiles": "ไม่มีไฟล์ให้สำรองข้อมูล (ยังไม่ได้เริ่มต้นฐานข้อมูล)", + "failed": "การสำรองข้อมูลล้มเหลว: {error}", + "restoring": "กำลังกู้คืนจาก {path}...", + "restored": "กู้คืนเสร็จสมบูรณ์", + "restoreDescription": "กู้คืนจากข้อมูลสำรอง", + "listTitle": "ข้อมูลสำรองที่มีอยู่", + "noBackups": "ไม่พบข้อมูลสำรอง", + "notFound": "ไม่พบข้อมูลสำรอง: {name}", + "confirmRestore": "เขียนทับข้อมูลปัจจุบันด้วยข้อมูลสำรองจาก {ts} หรือไม่?", + "createDescription": "สร้างข้อมูลสำรองของ OmniRoute", + "nameOpt": "ชื่อข้อมูลสำรองแบบกำหนดเอง", + "cloudOpt": "อัปโหลดข้อมูลสำรองไปยังพื้นที่จัดเก็บบนคลาวด์", + "encryptOpt": "เข้ารหัสข้อมูลสำรองด้วย AES-256-GCM", + "keyFileOpt": "พาธไปยังไฟล์ที่มีวลีรหัสผ่านสำหรับการเข้ารหัส", + "excludeOpt": "ไม่รวมไฟล์ที่ตรงกับรูปแบบ (ระบุซ้ำได้)", + "retentionOpt": "เก็บเฉพาะข้อมูลสำรอง N รายการล่าสุด", + "passphrasePrompt": "วลีรหัสผ่านสำหรับการเข้ารหัส:", + "noPassphrase": "ต้องระบุวลีรหัสผ่านสำหรับข้อมูลสำรองที่เข้ารหัส", + "cloudFailed": "คำเตือน: การอัปโหลดไปยังคลาวด์ล้มเหลว บันทึกข้อมูลสำรองไว้ในเครื่องแล้ว", + "cloudUploaded": "อัปโหลดข้อมูลสำรองไปยังคลาวด์แล้ว: {url}", + "auto": { + "title": "กำหนดการสำรองข้อมูล", + "enableDescription": "เปิดใช้งานการสำรองข้อมูลอัตโนมัติตามกำหนดเวลา", + "disableDescription": "ปิดใช้งานการสำรองข้อมูลอัตโนมัติตามกำหนดเวลา", + "statusDescription": "แสดงสถานะปัจจุบันของกำหนดการสำรองข้อมูล", + "cronOpt": "นิพจน์ Cron สำหรับกำหนดการ (ค่าเริ่มต้น: ทุกวันเวลา 03:00 น.)", + "enabled": "เปิดใช้งานการสำรองข้อมูลอัตโนมัติแล้ว (cron: {cron})", + "hint": "omniroute serve จะอ่านกำหนดการเมื่อเริ่มทำงาน", + "disabled": "ปิดใช้งานการสำรองข้อมูลอัตโนมัติแล้ว", + "notConfigured": "ยังไม่ได้กำหนดค่ากำหนดการสำรองข้อมูล" + } + }, + "health": { + "description": "ตรวจสอบสถานะความพร้อมใช้งานของเซิร์ฟเวอร์และสถานะของคอมโพเนนต์", + "noServer": "เซิร์ฟเวอร์ไม่ได้ทำงาน เริ่มด้วย: omniroute serve", + "title": "ความพร้อมใช้งาน", + "status": "สถานะ: {status}", + "uptime": "ระยะเวลาทำงาน: {uptime}", + "requests": "คำขอ (24 ชม.): {count}", + "cost": "ค่าใช้จ่าย (24 ชม.): ${cost}" + }, + "quota": { + "description": "แสดงการใช้โควตาของผู้ให้บริการ", + "noServer": "เซิร์ฟเวอร์ไม่ได้ทำงาน เริ่มด้วย: omniroute serve", + "noData": "ไม่มีข้อมูลโควตา" + }, + "cache": { + "description": "จัดการแคชการตอบกลับ", + "noServer": "เซิร์ฟเวอร์ไม่ได้ทำงาน เริ่มด้วย: omniroute serve", + "cleared": "ล้างแคชแล้ว", + "clearFailed": "ล้างแคชไม่สำเร็จ" + }, + "redis": { + "description": "เปิดใช้คอนเทนเนอร์ Redis ในเครื่องด้วยการคลิกเดียว (Podman หรือ Docker) สำหรับการแคชและการติดตามโควตาของ OmniRoute" + }, + "test": { + "description": "ทดสอบการเชื่อมต่อกับผู้ให้บริการ", + "noServer": "เซิร์ฟเวอร์ไม่ได้ทำงาน เริ่มต้นด้วย: omniroute serve", + "testing": "กำลังทดสอบ {provider} / {model}...", + "passed": "เชื่อมต่อสำเร็จ!", + "failed": "การเชื่อมต่อล้มเหลว: {error}", + "allProvidersOpt": "ทดสอบผู้ให้บริการที่กำหนดค่าไว้ทั้งหมด", + "latencyOpt": "แสดงค่าความหน่วง (เฉลี่ย/ต่ำสุด/สูงสุด หน่วย ms)", + "repeatOpt": "ทดสอบซ้ำ N ครั้งและรวมผลลัพธ์", + "compareOpt": "โมเดลที่ต้องการเปรียบเทียบ โดยคั่นด้วยจุลภาค (เช่น gpt-4o,claude-3-5-sonnet)", + "saveOpt": "บันทึกผลลัพธ์ลงในไฟล์ JSON", + "saved": "บันทึกผลลัพธ์ไปยัง {path} แล้ว", + "compareTitle": "การเปรียบเทียบโมเดล", + "compareMinTwo": "ต้องมีอย่างน้อยสองโมเดลสำหรับ --compare (คั่นด้วยจุลภาค)", + "noProviders": "ยังไม่ได้กำหนดค่าผู้ให้บริการ เพิ่มได้ด้วย: omniroute keys add" + }, + "update": { + "checking": "กำลังตรวจสอบการอัปเดต...", + "upToDate": "เป็นเวอร์ชันล่าสุดแล้ว ({version})", + "available": "มีการอัปเดต: {current} → {latest}", + "installing": "กำลังติดตั้ง {latest}...", + "done": "อัปเดตเป็น {latest} แล้ว โปรดรีสตาร์ตเซิร์ฟเวอร์เพื่อให้การเปลี่ยนแปลงมีผล" + }, + "mcp": { + "title": "เซิร์ฟเวอร์ MCP", + "running": "เซิร์ฟเวอร์ MCP กำลังทำงาน ({transport})", + "stopped": "เซิร์ฟเวอร์ MCP หยุดทำงานแล้ว", + "restarted": "รีสตาร์ตเซิร์ฟเวอร์ MCP แล้ว", + "stoppedHint": "เรียกใช้ `omniroute mcp enable` เพื่อเปิดใช้งาน", + "enabled": "เปิดใช้งานเซิร์ฟเวอร์ MCP แล้ว", + "disabled": "ปิดใช้งานเซิร์ฟเวอร์ MCP แล้ว", + "enable": { + "description": "เปิดใช้งานเซิร์ฟเวอร์ MCP", + "transport": "การรับส่งข้อมูลที่จะใช้: stdio|sse|streamable-http" + }, + "disable": { + "description": "ปิดใช้งานเซิร์ฟเวอร์ MCP" + }, + "call": { + "description": "เรียกใช้เครื่องมือ MCP โดยตรง", + "args": "ออบเจ็กต์อาร์กิวเมนต์ JSON (แบบอินไลน์)", + "args_file": "พาธไปยังไฟล์อาร์กิวเมนต์ JSON", + "stream": "ใช้เอนด์พอยต์แบบสตรีมมิง (/api/mcp/stream)", + "scope": "ขอบเขตที่จำเป็น (ระบุซ้ำได้ เช่น read:health)" + }, + "scopes": { + "description": "แสดงรายการขอบเขต MCP ที่ใช้ได้", + "tool": "แสดงขอบเขตที่เครื่องมือเฉพาะต้องใช้" + }, + "tools": { + "description": "ตรวจสอบเครื่องมือ MCP", + "list": { + "description": "แสดงรายการเครื่องมือ MCP ทั้งหมด", + "scope": "กรองตามขอบเขต" + }, + "info": { + "description": "แสดงข้อมูลเมตาสำหรับเครื่องมือ MCP" + }, + "schema": { + "description": "แสดงสคีมา JSON ของอินพุต/เอาต์พุตสำหรับเครื่องมือ MCP", + "io": "ประเภทสคีมา: input|output (ค่าเริ่มต้น: input)" + } + }, + "audit": { + "description": "บันทึกการตรวจสอบ MCP (นามแฝงของ audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "แสดงรายการทักษะ A2A ที่มีจากการ์ดเอเจนต์" + }, + "invoke": { + "description": "เรียกใช้ทักษะ A2A และส่งคืน ID งาน", + "input": "ออบเจ็กต์อินพุต JSON", + "input_file": "พาธไปยังไฟล์อินพุต JSON", + "wait": "รอให้งานเสร็จสิ้นก่อนส่งคืน", + "timeout": "ระยะหมดเวลาสำหรับรอให้งานเสร็จสิ้น หน่วยเป็น ms (ค่าเริ่มต้น: 60000)" + }, + "tasks": { + "description": "จัดการงาน A2A", + "list": { + "status": "กรองตามสถานะ", + "skill": "กรองตาม ID ทักษะ" + }, + "watch": { + "description": "ตรวจสอบสถานะงานเป็นระยะจนกว่าจะเสร็จสิ้น" + }, + "stream": { + "description": "สตรีมเหตุการณ์การดำเนินงานผ่าน SSE" + }, + "logs": { + "description": "แสดงข้อความและอาร์ติแฟกต์ของงาน" + } + } + }, + "policy": { + "description": "จัดการนโยบายการอนุญาตของ OmniRoute", + "list": { + "description": "แสดงรายการนโยบาย", + "kind": "กรองตามประเภท (allow|deny|rate-limit|cost-cap)", + "scope": "กรองตามขอบเขต (global|api-key|provider)" + }, + "get": { + "description": "ดูรายละเอียดนโยบายตาม ID" + }, + "create": { + "description": "สร้างนโยบายจากไฟล์ JSON", + "file": "พาธไปยังไฟล์ JSON ของนโยบาย" + }, + "update": { + "description": "อัปเดตนโยบายจากไฟล์ JSON", + "file": "พาธไปยังไฟล์ JSON ของนโยบาย" + }, + "delete": { + "description": "ลบนโยบายตาม ID", + "yes": "ข้ามข้อความแจ้งให้ยืนยัน" + }, + "evaluate": { + "description": "ประเมินนโยบายแบบทดลอง (รหัสออก 0=อนุญาต, 4=ปฏิเสธ)", + "api_key": "คีย์ API ที่จะประเมิน", + "action": "การดำเนินการที่จะตรวจสอบ (เช่น chat, embed, admin)", + "resource": "พาธหรือตัวระบุทรัพยากร", + "context": "บริบทเพิ่มเติมในรูปแบบออบเจ็กต์ JSON" + }, + "export": { + "description": "ส่งออกนโยบายทั้งหมดไปยังไฟล์ JSON" + }, + "import": { + "description": "นำเข้านโยบายจากไฟล์ JSON", + "overwrite": "เขียนทับนโยบายที่มี ID เดียวกัน" + } + }, + "compression": { + "description": "กำหนดค่าและตรวจสอบไปป์ไลน์การบีบอัดของ OmniRoute", + "status": { + "description": "แสดงสถานะและการตั้งค่าการบีบอัดปัจจุบัน" + }, + "configure": { + "description": "กำหนดค่าการบีบอัด", + "engine": "เอนจินการบีบอัด (caveman|rtk|hybrid|none)", + "caveman_agg": "ระดับความเข้มของ Caveman 0.0–1.0", + "rtk_budget": "งบประมาณโทเค็น RTK", + "language_pack": "แพ็กภาษาที่จะเปิดใช้งาน" + }, + "engine": { + "description": "รับหรือตั้งค่าเอนจินการบีบอัดที่ใช้งานอยู่" + }, + "combos": { + "description": "จัดการสถิติคอมโบการบีบอัด" + }, + "rules": { + "description": "จัดการกฎการบีบอัด", + "add": { + "pattern": "รูปแบบสำหรับจับคู่ (regex หรือ field:pattern)", + "action": "การดำเนินการ: drop|shrink|replace" + } + }, + "language_packs": { + "description": "แสดงรายการแพ็กภาษาสำหรับการบีบอัดที่พร้อมใช้งาน" + }, + "preview": { + "description": "ดูตัวอย่างผลของการบีบอัดที่มีต่อคำขอ", + "file": "พาธไปยังไฟล์ JSON ของคำขอ" + } + }, + "tunnel": { + "title": "ทันเนล", + "listDescription": "แสดงรายการทันเนลที่ใช้งานอยู่", + "createDescription": "สร้างทันเนล", + "created": "สร้างทันเนลแล้ว: {url}", + "stopped": "หยุดทันเนลแล้ว", + "confirmStop": "หยุดทันเนล {id} หรือไม่", + "stopDescription": "หยุดทันเนล", + "statusDescription": "แสดงสถานะโดยละเอียดของทันเนล", + "logsDescription": "แสดงบันทึกของทันเนล", + "infoDescription": "แสดงรายละเอียดการกำหนดค่าของทันเนล", + "rotateDescription": "สร้าง URL ทันเนลใหม่", + "tailOpt": "จำนวนบรรทัดของบันทึกที่จะแสดง", + "typeRequired": "ต้องระบุประเภททันเนล", + "noLogs": "ไม่มีบันทึกที่พร้อมใช้งาน", + "notAvailable": "ไม่มีข้อมูลทันเนล", + "noTunnels": "ไม่มีทันเนลที่ใช้งานอยู่", + "infoTitle": "ข้อมูลทันเนล: {type}", + "rotated": "เปลี่ยน URL ทันเนลแล้ว: {url}", + "confirmRotate": "เปลี่ยน URL ของทันเนล {type} หรือไม่ (ระบบจะสร้าง URL ใหม่)" + }, + "stop": { + "description": "หยุดเซิร์ฟเวอร์ OmniRoute", + "stopping": "กำลังหยุดเซิร์ฟเวอร์ (PID {pid})...", + "stopped": "หยุดเซิร์ฟเวอร์แล้ว", + "notRunning": "ไม่มีเซิร์ฟเวอร์ที่กำลังทำงานอยู่", + "portFallback": "ไม่พบไฟล์ PID กำลังพยายามหยุดตามพอร์ต..." + }, + "restart": { + "description": "รีสตาร์ตเซิร์ฟเวอร์ OmniRoute", + "restarting": "กำลังรีสตาร์ตเซิร์ฟเวอร์ OmniRoute..." + }, + "dashboard": { + "description": "เปิดแดชบอร์ด OmniRoute ในเบราว์เซอร์", + "opening": "กำลังเปิดแดชบอร์ดที่ {url}", + "urlOnly": "แสดง URL ของแดชบอร์ดโดยไม่เปิดเบราว์เซอร์", + "tui": "เปิดแดชบอร์ด TUI แบบโต้ตอบ (UI เทอร์มินัล 7 แท็บ)" + }, + "models": { + "description": "แสดงรายการโมเดลที่พร้อมใช้งาน (ต้องเปิดเซิร์ฟเวอร์)", + "search": "กรองโมเดลตาม id, ชื่อ, provider หรือคำอธิบาย", + "noServer": "เซิร์ฟเวอร์ไม่ได้ทำงาน เริ่มด้วย: omniroute serve", + "noModels": "ไม่พบโมเดล" + }, + "audit": { + "description": "เข้าถึงบันทึกการตรวจสอบการปฏิบัติตามข้อกำหนดและ MCP", + "source": "แหล่งที่มาของบันทึก: all|compliance|mcp (ค่าเริ่มต้น: all)", + "since": "แสดงรายการตั้งแต่เวลาประทับนี้ (ISO 8601)", + "until": "แสดงรายการจนถึงเวลาประทับนี้ (ISO 8601)", + "tail": { + "description": "แสดงรายการบันทึกการตรวจสอบล่าสุด", + "follow": "ติดตามรายการใหม่อย่างต่อเนื่อง (ตรวจสอบทุก 2 วินาที)", + "limit": "จำนวนรายการสูงสุดที่จะแสดง (ค่าเริ่มต้น: 100)" + }, + "search": { + "description": "ค้นหารายการบันทึกการตรวจสอบด้วยคำสำคัญ", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 200)", + "actor": "กรองตาม ID ของผู้ดำเนินการ", + "action": "กรองตามชื่อการดำเนินการ" + }, + "export": { + "description": "ส่งออกบันทึกการตรวจสอบไปยังไฟล์", + "format": "รูปแบบเอาต์พุต: jsonl|csv (ค่าเริ่มต้น: jsonl)" + }, + "stats": { + "description": "แสดงสถิติของบันทึกการตรวจสอบ", + "period": "ช่วงเวลา: 1d|7d|30d (ค่าเริ่มต้น: 7d)" + }, + "get": { + "description": "รับรายการบันทึกการตรวจสอบหนึ่งรายการตาม ID" + } + }, + "skills": { + "description": "จัดการทักษะของ OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "แสดงรายการทักษะที่ติดตั้งแล้ว", + "type": "กรองตามประเภท (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "แสดงเฉพาะทักษะที่เปิดใช้งาน", + "disabled": "แสดงเฉพาะทักษะที่ปิดใช้งาน", + "api_key": "กรองตามคีย์ API" + }, + "get": { + "description": "ดูรายละเอียดของทักษะตาม ID" + }, + "install": { + "description": "ติดตั้งทักษะจากไฟล์หรือ URL", + "from_file": "พาธไปยังไฟล์คำจำกัดความทักษะ JSON", + "from_url": "URL ของคำจำกัดความทักษะระยะไกล", + "type": "ประเภททักษะ (sandbox|custom|hybrid)", + "enable": "เปิดใช้งานทักษะหลังติดตั้ง" + }, + "enable": { + "description": "เปิดใช้งานทักษะตาม ID" + }, + "disable": { + "description": "ปิดใช้งานทักษะตาม ID", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "delete": { + "description": "ลบทักษะตาม ID", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "execute": { + "description": "เรียกใช้ทักษะตาม ID", + "input": "ออบเจ็กต์อินพุต JSON", + "input_file": "พาธไปยังไฟล์อินพุต JSON", + "timeout": "ระยะหมดเวลาการดำเนินการเป็นมิลลิวินาที (ค่าเริ่มต้น: 30000)" + }, + "executions": { + "description": "แสดงประวัติการเรียกใช้ทักษะ", + "skill": "กรองตาม ID ทักษะ", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 50)", + "status": "กรองตามสถานะ (running|completed|failed)" + }, + "skillssh": { + "description": "จัดการทักษะที่ติดตั้งผ่าน SSH" + }, + "marketplace": { + "description": "เรียกดูและติดตั้งทักษะจากมาร์เก็ตเพลส" + }, + "mp": { + "search": { + "description": "ค้นหาแพ็กเกจในมาร์เก็ตเพลส", + "category": "กรองตามหมวดหมู่", + "tag": "กรองตามแท็ก", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 30)", + "sort": "เรียงตาม: downloads|rating|recent" + }, + "info": { + "description": "แสดงรายละเอียดแพ็กเกจและ readme" + }, + "install": { + "description": "ติดตั้งแพ็กเกจจากมาร์เก็ตเพลส", + "version": "เวอร์ชันแพ็กเกจ (ค่าเริ่มต้น: latest)", + "enable": "เปิดใช้งานหลังการติดตั้ง", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "categories": { + "description": "แสดงรายการหมวดหมู่ในมาร์เก็ตเพลส" + }, + "featured": { + "description": "แสดงแพ็กเกจแนะนำในมาร์เก็ตเพลส" + } + } + }, + "memory": { + "description": "จัดการหน่วยความจำการสนทนาของ OmniRoute (FTS5 + vector)", + "search": { + "description": "ค้นหารายการหน่วยความจำด้วยคำค้นหาเชิงความหมาย", + "type": "กรองตามประเภทหน่วยความจำ (user|feedback|project|reference)", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 20)", + "api_key": "กรองตามคีย์ API", + "token_budget": "จำกัดจำนวนโทเค็นทั้งหมดในผลลัพธ์" + }, + "add": { + "description": "เพิ่มรายการหน่วยความจำใหม่", + "content": "เนื้อหาข้อความในหน่วยความจำ", + "file": "อ่านเนื้อหาจากไฟล์", + "type": "ประเภทหน่วยความจำ (ค่าเริ่มต้น: user)", + "metadata": "ออบเจ็กต์ข้อมูลเมตา JSON", + "api_key": "เชื่อมโยงกับคีย์ API" + }, + "clear": { + "description": "ลบรายการหน่วยความจำที่ตรงกับตัวกรอง", + "type": "กรองตามประเภท", + "older": "ลบรายการที่เก่ากว่าระยะเวลาที่กำหนด (30d, 6m, 1y)", + "api_key": "กรองตามคีย์ API", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "list": { + "description": "แสดงรายการหน่วยความจำโดยไม่มีการจัดอันดับการค้นหา", + "type": "กรองตามประเภท", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 100)", + "api_key": "กรองตามคีย์ API" + }, + "get": { + "description": "รับรายการหน่วยความจำหนึ่งรายการตาม ID" + }, + "delete": { + "description": "ลบรายการหน่วยความจำตาม ID", + "yes": "ข้ามข้อความแจ้งให้ยืนยัน" + }, + "health": { + "description": "แสดงสถานะของระบบย่อยหน่วยความจำ (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "จัดการการเชื่อมต่อผู้ให้บริการ OAuth", + "providers": { + "description": "แสดงรายการผู้ให้บริการที่รองรับ OAuth และประเภทโฟลว์" + }, + "start": { + "description": "เริ่มโฟลว์การอนุญาต OAuth สำหรับผู้ให้บริการ", + "provider": "รหัสผู้ให้บริการ (gemini, copilot, cursor, …)", + "no_browser": "แสดงเฉพาะ URL — ไม่ต้องเปิดเบราว์เซอร์", + "import_system": "นำเข้าข้อมูลรับรองโดยอัตโนมัติจากการกำหนดค่าระบบภายในเครื่อง", + "social": "ผู้ให้บริการการเข้าสู่ระบบผ่านโซเชียล (google|github) — จำเป็นสำหรับ kiro", + "timeout": "ระยะหมดเวลารอการอนุญาตเป็นมิลลิวินาที (ค่าเริ่มต้น: 300000)" + }, + "status": { + "description": "แสดงรายการการเชื่อมต่อ OAuth ที่ใช้งานอยู่", + "provider": "กรองตามรหัสผู้ให้บริการ" + }, + "revoke": { + "description": "เพิกถอนการเชื่อมต่อ OAuth", + "provider": "รหัสผู้ให้บริการที่จะเพิกถอน", + "connection_id": "เพิกถอนการเชื่อมต่อที่ระบุตาม ID", + "yes": "ข้ามข้อความแจ้งให้ยืนยัน" + } + }, + "cloud": { + "description": "จัดการงานเอเจนต์ AI บนคลาวด์ (codex, devin, jules)", + "agents": { + "description": "แสดงรายการเอเจนต์บนคลาวด์ที่พร้อมใช้งาน" + }, + "agent": { + "description": "จัดการงานเอเจนต์ {agent} บนคลาวด์", + "auth": { + "description": "อนุญาต {agent} ผ่าน OAuth" + } + }, + "task": { + "description": "จัดการงานเอเจนต์บนคลาวด์", + "create": { + "description": "สร้างงานเอเจนต์ใหม่", + "title": "ชื่องาน (ค่าเริ่มต้นคือ 80 อักขระแรกของพรอมต์)", + "prompt": "ข้อความพรอมต์ของงาน", + "prompt_file": "อ่านพรอมต์จากไฟล์", + "repo": "URL ของรีพอซิทอรีที่จะโคลนสำหรับงาน", + "branch": "ชื่อแบรนช์ที่จะใช้", + "metadata": "ออบเจ็กต์ข้อมูลเมตา JSON" + }, + "list": { + "description": "แสดงรายการงานของเอเจนต์", + "status": "กรองตามสถานะ (running|completed|failed|cancelled)", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 50)" + }, + "get": { + "description": "ดูรายละเอียดงานตาม ID" + }, + "status": { + "description": "แสดงสถานะงาน (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "ยกเลิกงานที่กำลังทำงานอยู่", + "yes": "ข้ามข้อความแจ้งให้ยืนยัน" + }, + "approve": { + "description": "อนุมัติแผนของเอเจนต์เพื่อเริ่มดำเนินการ" + }, + "message": { + "description": "ส่งข้อความไปยังงานที่กำลังทำงานอยู่" + } + }, + "sources": { + "description": "แสดงรายการไฟล์ต้นฉบับที่สร้างโดยงาน" + } + }, + "eval": { + "description": "จัดการชุดการประเมินและการเรียกใช้", + "suites": { + "description": "จัดการชุดการประเมิน", + "list": { + "description": "แสดงรายการชุดการประเมิน" + }, + "get": { + "description": "ดูรายละเอียดชุดการประเมินตาม ID" + }, + "create": { + "description": "สร้างชุดการประเมินจากไฟล์ JSON", + "file": "พาธไปยังไฟล์ JSON ที่กำหนดชุดการประเมิน" + } + }, + "run": { + "description": "เริ่มการรันการประเมินสำหรับชุดการประเมิน", + "model": "ID โมเดลที่จะประเมิน (ค่าเริ่มต้น: auto)", + "combo": "บังคับใช้คอมโบที่ระบุตามชื่อ", + "concurrency": "จำนวนตัวอย่างที่ทำงานพร้อมกัน (ค่าเริ่มต้น: 4)", + "tag": "ติดแท็กการรันนี้เพื่อกรองในภายหลัง", + "watch": "ติดตามความคืบหน้าของการรันจนเสร็จสิ้น" + }, + "list": { + "description": "แสดงรายการการรันการประเมิน", + "suite": "กรองตาม ID ชุดการประเมิน", + "status": "กรองตามสถานะ", + "since": "แสดงการรันนับตั้งแต่การประทับเวลานี้", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 50)" + }, + "get": { + "description": "ดูรายละเอียดการรันการประเมินตาม ID" + }, + "results": { + "description": "แสดงผลลัพธ์ของตัวอย่างสำหรับการรันการประเมิน", + "failed": "แสดงเฉพาะตัวอย่างที่ล้มเหลว" + }, + "cancel": { + "description": "ยกเลิกการรันการประเมินที่กำลังดำเนินอยู่", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "scorecard": { + "description": "แสดงตารางคะแนนสำหรับการรันการประเมินที่เสร็จสมบูรณ์" + } + }, + "webhooks": { + "description": "จัดการเว็บฮุกของ OmniRoute", + "events": { + "description": "แสดงรายการประเภทเหตุการณ์เว็บฮุกทั้งหมดที่พร้อมใช้งาน" + }, + "list": { + "description": "แสดงรายการเว็บฮุกที่กำหนดค่าไว้" + }, + "get": { + "description": "ดูรายละเอียดเว็บฮุกตาม ID" + }, + "add": { + "description": "ลงทะเบียนเว็บฮุกใหม่", + "url": "URL ปลายทาง", + "events": "รายการประเภทเหตุการณ์ที่คั่นด้วยจุลภาค", + "secret": "ข้อมูลลับสำหรับการลงนาม HMAC", + "header": "ส่วนหัวเพิ่มเติมในรูปแบบ key=value (ระบุซ้ำได้)", + "no_enabled": "สร้างเว็บฮุกในสถานะปิดใช้งาน" + }, + "update": { + "description": "อัปเดตเว็บฮุกที่มีอยู่", + "enabled": "ตั้งค่าสถานะการเปิดใช้งาน (true|false)" + }, + "remove": { + "description": "ลบเว็บฮุก", + "yes": "ข้ามข้อความแจ้งยืนยัน" + }, + "test": { + "description": "ส่งเหตุการณ์ทดสอบไปยังเว็บฮุก", + "event": "ประเภทเหตุการณ์ที่จะจำลอง (ค่าเริ่มต้น: request.completed)" + } + }, "program": { "description": "OmniRoute — AI Router อัจฉริยะพร้อม Auto Fallback", "version": "แสดงเวอร์ชันและออก", @@ -26,7 +832,509 @@ "context": "บริบท/โปรไฟล์ของเซิร์ฟเวอร์สำหรับคำสั่งนี้", "lang": "ตั้งค่าภาษาแสดงผล CLI (แทนที่ OMNIROUTE_LANG)" }, - "redis": { - "description": "เปิดใช้คอนเทนเนอร์ Redis ในเครื่องด้วยการคลิกเดียว (Podman หรือ Docker) สำหรับการแคชและการติดตามโควตาของ OmniRoute" + "files": { + "description": "จัดการไฟล์ (อัปโหลด แสดงรายการ ดู ดาวน์โหลด ลบ)", + "list": { + "purpose": "กรองตามวัตถุประสงค์", + "limit": "จำนวนผลลัพธ์สูงสุด" + }, + "get": { + "description": "รับข้อมูลเมตาของไฟล์" + }, + "upload": { + "description": "อัปโหลดไฟล์", + "purpose": "วัตถุประสงค์ของไฟล์ (batch, assistants, fine-tune)" + }, + "content": { + "description": "ดาวน์โหลดเนื้อหาไฟล์", + "out": "บันทึกไปยังพาธ (ค่าเริ่มต้น: stdout)" + }, + "delete": { + "yes": "ข้ามการยืนยัน" + } + }, + "batches": { + "description": "จัดการงานแบตช์ที่เข้ากันได้กับ OpenAI", + "list": { + "status": "กรองตามสถานะ", + "limit": "จำนวนผลลัพธ์สูงสุด" + }, + "create": { + "description": "สร้างงานแบตช์", + "inputFile": "ID ไฟล์อินพุต", + "endpoint": "เอนด์พอยต์เป้าหมาย", + "window": "กรอบเวลาการดำเนินการให้เสร็จสิ้น", + "metadata": "เพิ่มข้อมูลเมตา key=value" + }, + "submit": { + "description": "อัปโหลดไฟล์ JSONL และสร้างงานแบตช์", + "jsonl": "พาธไปยังไฟล์ JSONL", + "endpoint": "เอนด์พอยต์เป้าหมาย", + "wait": "รอจนกว่าจะเสร็จสิ้น" + }, + "cancel": { + "yes": "ข้ามการยืนยัน" + }, + "wait": { + "timeout": "ระยะหมดเวลาเป็น ms" + }, + "output": { + "out": "บันทึกเอาต์พุตไปยังพาธ" + }, + "errors": { + "out": "บันทึกข้อผิดพลาดไปยังพาธ" + } + }, + "translator": { + "description": "แปลเนื้อหาคำขอระหว่างรูปแบบ LLM", + "detect": { + "description": "ตรวจหารูปแบบเนื้อหา" + }, + "translate": { + "description": "แปลงเนื้อหาจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่ง" + }, + "send": { + "description": "แปลและส่งต่อไปยังต้นทาง" + }, + "stream": { + "description": "แปลเนื้อหาคำขอแบบสตรีม" + }, + "from": "รูปแบบต้นทาง (openai|anthropic|gemini|cohere)", + "to": "รูปแบบเป้าหมาย (openai|anthropic|gemini|cohere)", + "file": "พาธไปยังไฟล์ JSON เนื้อหาคำขอ", + "out": "บันทึกเอาต์พุตลงในไฟล์", + "model": "แทนที่โมเดล", + "history": { + "limit": "จำนวนผลลัพธ์สูงสุด" + } + }, + "pricing": { + "description": "จัดการข้อมูลราคาสำหรับโมเดล", + "sync": { + "description": "ซิงค์ราคาจากแหล่งต้นทาง", + "provider": "กรองตามผู้ให้บริการ", + "force": "บังคับให้ซิงค์ใหม่" + }, + "list": { + "provider": "กรองตามผู้ให้บริการ", + "model": "กรองตามโมเดล", + "limit": "จำนวนผลลัพธ์สูงสุด" + }, + "defaults": { + "description": "จัดการราคาเริ่มต้น", + "input": "ต้นทุนอินพุตต่อ 1 ล้านโทเค็น (USD)", + "output": "ต้นทุนเอาต์พุตต่อ 1 ล้านโทเค็น (USD)", + "cacheRead": "ต้นทุนการอ่านแคชต่อ 1 ล้านโทเค็น (USD)", + "cacheWrite": "ต้นทุนการเขียนแคชต่อ 1 ล้านโทเค็น (USD)" + }, + "diff": { + "description": "แสดงความแตกต่างจากราคาต้นทาง", + "model": "กรองตามโมเดล" + } + }, + "radar": { + "description": "ตรวจสอบและซิงค์ฟีดแค็ตตาล็อก Radar ภายในเครื่อง", + "status": "แสดงการตั้งค่า Radar ภายในเครื่องและสถานะแคชของฟีด", + "sync": "ซิงค์แค็ตตาล็อก การแนะนำ ข้อเสนอ และ Intel ผ่านเซิร์ฟเวอร์ภายในเครื่อง" + }, + "resilience": { + "description": "ตรวจสอบและจัดการกลไกความยืดหยุ่น", + "status": { + "provider": "กรองตามผู้ให้บริการ" + }, + "breakers": { + "provider": "กรองตามผู้ให้บริการ" + }, + "cooldowns": { + "provider": "กรองตามผู้ให้บริการ", + "connectionId": "กรองตาม ID การเชื่อมต่อ" + }, + "lockouts": { + "provider": "กรองตามผู้ให้บริการ", + "model": "กรองตามโมเดล" + }, + "reset": { + "description": "รีเซ็ตสถานะเบรกเกอร์/ช่วงพัก", + "provider": "ผู้ให้บริการที่จะรีเซ็ต", + "connectionId": "ID การเชื่อมต่อที่จะรีเซ็ต", + "model": "โมเดลที่จะยกเลิกการล็อก", + "allCooldowns": "รีเซ็ตช่วงพักทั้งหมดสำหรับผู้ให้บริการ", + "yes": "ข้ามการยืนยัน" + }, + "profile": { + "description": "จัดการโปรไฟล์ความยืดหยุ่น", + "name": "ชื่อโปรไฟล์" + }, + "config": { + "description": "จัดการการกำหนดค่าความยืดหยุ่น", + "threshold": "เกณฑ์จำนวนครั้งที่ล้มเหลว", + "resetTimeout": "ระยะหมดเวลาก่อนรีเซ็ต หน่วย ms", + "baseCooldown": "ช่วงพักพื้นฐาน หน่วย ms" + } + }, + "nodes": { + "description": "จัดการโหนดของผู้ให้บริการ (เอนด์พอยต์)", + "list": { + "provider": "กรองตามผู้ให้บริการ", + "enabled": "แสดงเฉพาะโหนดที่เปิดใช้งาน" + }, + "add": { + "provider": "ชื่อผู้ให้บริการ", + "baseUrl": "URL ฐานสำหรับโหนด", + "name": "ชื่อโหนด", + "weight": "ค่าน้ำหนักการกระจายโหลด", + "region": "แท็กภูมิภาค", + "authHeader": "ส่วนหัวการยืนยันตัวตนแบบกำหนดเอง (key=value)" + }, + "update": { + "baseUrl": "URL ฐานใหม่", + "name": "ชื่อใหม่", + "weight": "น้ำหนักใหม่", + "region": "ภูมิภาคใหม่", + "enabled": "เปิดหรือปิดใช้งาน (true|false)" + }, + "remove": { + "yes": "ข้ามการยืนยัน" + }, + "validate": { + "baseUrl": "URL ที่จะตรวจสอบ", + "provider": "ผู้ให้บริการที่ใช้ตรวจสอบเปรียบเทียบ" + }, + "test": { + "description": "ส่งคำขอทดสอบไปยังโหนด" + }, + "metrics": { + "description": "แสดงเมตริกของโหนด", + "period": "ช่วงเวลา (เช่น 24h, 7d)" + } + }, + "context": { + "description": "กำหนดค่าไปป์ไลน์วิศวกรรมบริบท (Caveman, RTK)", + "analytics": { + "period": "ช่วงเวลา (เช่น 7d, 30d)" + }, + "caveman": { + "description": "จัดการตัวบีบอัดบริบท Caveman", + "config": { + "description": "แสดงหรืออัปเดตการกำหนดค่า Caveman", + "aggressiveness": "ระดับความเข้ม 0.0–1.0", + "maxShrinkPct": "เปอร์เซ็นต์การย่อสูงสุด", + "preserveTags": "แท็กที่ต้องเก็บไว้ โดยคั่นด้วยเครื่องหมายจุลภาค" + } + }, + "rtk": { + "description": "จัดการเครื่องมือเพิ่มประสิทธิภาพบริบท RTK", + "config": { + "description": "แสดงหรืออัปเดตการกำหนดค่า RTK", + "tokenBudget": "งบประมาณโทเค็นสำหรับ RTK", + "reservePct": "เปอร์เซ็นต์สำรอง" + }, + "filters": { + "description": "จัดการตัวกรอง RTK", + "pattern": "รูปแบบตัวกรอง (regex)", + "priority": "ลำดับความสำคัญของตัวกรอง (ค่าเริ่มต้น: 100)", + "action": "การดำเนินการของตัวกรอง: drop|shrink|replace", + "yes": "ข้ามการยืนยัน" + }, + "test": { + "file": "พาธไปยังไฟล์ JSON ของคำขอ" + } + }, + "combos": { + "description": "การจัดการชุดคำสั่งผสมที่คำนึงถึงบริบท" + } + }, + "sessions": { + "description": "ตรวจสอบและจัดการเซสชันที่ใช้งานอยู่", + "list": { + "user": "กรองตามผู้ใช้", + "kind": "กรองตามประเภท (dashboard|api-key|mcp|a2a)", + "active": "แสดงเฉพาะเซสชันที่ใช้งานอยู่", + "limit": "จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น: 100)" + }, + "expire": { + "yes": "ข้ามการยืนยัน" + }, + "expireAll": { + "user": "ผู้ใช้ที่ต้องการให้เซสชันหมดอายุ", + "yes": "ข้ามการยืนยัน" + } + }, + "tags": { + "description": "จัดการแท็กทรัพยากร", + "add": { + "color": "สีแท็ก (เลขฐานสิบหกหรือชื่อสี)", + "description": "คำอธิบายแท็ก" + }, + "remove": { + "yes": "ข้ามการยืนยัน" + }, + "assign": { + "tag": "ชื่อแท็ก", + "to": "ทรัพยากรเป้าหมายในรูปแบบ type:id (เช่น provider:openai)" + }, + "unassign": { + "tag": "ชื่อแท็ก", + "from": "ทรัพยากรต้นทางในรูปแบบ type:id" + } + }, + "openapi": { + "description": "เข้าถึงและทดสอบข้อกำหนด OpenAPI ของ OmniRoute", + "dump": { + "description": "ส่งออกข้อกำหนด OpenAPI ไปยัง stdout หรือไฟล์", + "format": "รูปแบบเอาต์พุต: yaml|json (ค่าเริ่มต้น: yaml)", + "out": "บันทึกไปยังพาธไฟล์" + }, + "validate": { + "description": "ตรวจสอบความถูกต้องของข้อกำหนด OpenAPI" + }, + "try": { + "description": "ทดสอบ API endpoint ผ่านข้อกำหนด", + "method": "เมธอด HTTP (ค่าเริ่มต้น: GET)", + "body": "พาธไปยังไฟล์ JSON สำหรับ request body", + "query": "พารามิเตอร์คิวรีในรูปแบบ key=value (ระบุซ้ำได้)", + "header": "ส่วนหัวในรูปแบบ key=value (ระบุซ้ำได้)" + }, + "endpoints": { + "description": "แสดง API endpoint ทั้งหมด", + "search": "กรองตามพาธหรือสรุป" + }, + "paths": { + "description": "แสดงพาธ API ทั้งหมด" + } + }, + "combo": { + "title": "คอมโบ", + "switched": "คอมโบที่ใช้งานอยู่: {name}", + "created": "สร้างคอมโบแล้ว: {name}", + "deleted": "ลบคอมโบแล้ว: {name}", + "noCombos": "ยังไม่ได้กำหนดค่าคอมโบ", + "confirmDelete": "ลบคอมโบ {name} หรือไม่?", + "suggest": { + "description": "แนะนำคอมโบที่ดีที่สุดสำหรับงานโดยใช้การให้คะแนนด้วย AI", + "task": "คำอธิบายงาน", + "maxCost": "ค่าใช้จ่ายสูงสุดต่อคำขอในหน่วย USD", + "maxLatencyMs": "เวลาแฝงสูงสุดในหน่วยมิลลิวินาที", + "weights": "ค่าน้ำหนักการให้คะแนนแบบ JSON เช่น {\"latency\":0.7,\"cost\":0.3}", + "top": "จำนวนตัวเลือกอันดับสูงสุดที่จะแสดง (ค่าเริ่มต้น: 5)", + "explain": "พิมพ์เหตุผลไปยัง stderr", + "switch": "เปิดใช้งานคอมโบอันดับสูงสุด" + } + }, + "oneproxy": { + "description": "จัดการพูลอัปสตรีมของ OneProxy", + "stats": { + "provider": "กรองตามผู้ให้บริการ", + "period": "ช่วงเวลา (ค่าเริ่มต้น: 24h)" + }, + "fetch": { + "description": "ดึงพร็อกซีจากพูล", + "count": "จำนวนพร็อกซีที่จะดึง (ค่าเริ่มต้น: 1)", + "type": "ประเภทพร็อกซี: http|socks5 (ค่าเริ่มต้น: http)" + }, + "rotate": { + "description": "บังคับหมุนเวียนพร็อกซี", + "provider": "ผู้ให้บริการที่จะหมุนเวียน", + "connectionId": "ID การเชื่อมต่อเฉพาะที่จะหมุนเวียน" + }, + "config": { + "description": "แสดงหรืออัปเดตการกำหนดค่า OneProxy", + "enabled": "เปิดใช้งานพูลพร็อกซี (true|false)", + "poolSize": "ขนาดพูล", + "providerSource": "URL สำหรับผู้ให้บริการพร็อกซี", + "rotationPolicy": "นโยบายการหมุนเวียน: sticky|per-request|periodic" + }, + "pool": { + "description": "แสดงรายการพูลพร็อกซีปัจจุบันพร้อมเมตริก" + } + }, + "open": { + "description": "เปิดหน้าแดชบอร์ด OmniRoute ที่ระบุในเบราว์เซอร์", + "url": "แสดงเฉพาะ URL โดยไม่เปิดเบราว์เซอร์" + }, + "telemetry": { + "description": "เข้าถึงข้อมูลเทเลเมทรีแบบรวม", + "summary": { + "description": "แสดงสรุปเทเลเมทรีแบบรวม", + "period": "ช่วงเวลา: 24h|7d|30d (ค่าเริ่มต้น: 24h)", + "compareTo": "เปรียบเทียบกับช่วงเวลาก่อนหน้า" + }, + "export": { + "description": "ส่งออกเหตุการณ์เทเลเมทรีเป็น JSONL", + "out": "พาธไฟล์เอาต์พุต (ค่าเริ่มต้น: telemetry.jsonl)", + "period": "ช่วงเวลาสำหรับการส่งออก (ค่าเริ่มต้น: 7d)" + } + }, + "sync": { + "description": "ซิงค์การกำหนดค่าระหว่างอินสแตนซ์ OmniRoute", + "push": { + "description": "พุชการกำหนดค่าไปยังระบบคลาวด์หรืออินสแตนซ์ระยะไกล", + "target": "เป้าหมาย (cloud หรือ context:name)", + "bundle": "ส่วนของบันเดิลที่จะซิงค์", + "dryRun": "แสดงตัวอย่างโดยไม่ใช้การเปลี่ยนแปลง" + }, + "pull": { + "description": "ดึงการกำหนดค่าจากระบบคลาวด์หรืออินสแตนซ์ระยะไกล", + "source": "แหล่งที่มา (cloud หรือ context:name)", + "merge": "ผสานกับการกำหนดค่าที่มีอยู่", + "replace": "แทนที่การกำหนดค่าที่มีอยู่", + "dryRun": "แสดงตัวอย่างโดยไม่ใช้การเปลี่ยนแปลง" + }, + "diff": { + "source": "คอนเท็กซ์ต้นทาง", + "target": "คอนเท็กซ์ปลายทาง" + }, + "bundle": { + "description": "ส่งออกการกำหนดค่าเป็นไฟล์บันเดิล", + "include": "ส่วนที่จะรวม (คั่นด้วยจุลภาค)" + }, + "import": { + "description": "นำเข้าไฟล์บันเดิล", + "dryRun": "ตรวจสอบความถูกต้องโดยไม่ใช้การเปลี่ยนแปลง" + }, + "initialize": { + "fromCloud": "เริ่มต้นจากข้อมูลสำรองบนคลาวด์" + }, + "tokens": { + "description": "จัดการโทเค็นการซิงค์", + "create": { + "name": "ชื่อโทเค็น", + "scope": "ขอบเขตโทเค็น", + "ttl": "TTL ของโทเค็น (เช่น 30d)" + }, + "revoke": { + "yes": "ข้ามการยืนยัน" + } + }, + "resolve": { + "description": "แก้ไขข้อขัดแย้งในการซิงค์แบบโต้ตอบ" + } + }, + "config": { + "contexts": { + "description": "จัดการคอนเท็กซ์/โปรไฟล์ของเซิร์ฟเวอร์ (เพิ่ม, ใช้งาน, แสดงรายการ, แสดงรายละเอียด, ลบ, เปลี่ยนชื่อ, ส่งออก, นำเข้า)" + }, + "lang": { + "description": "จัดการภาษาที่แสดงผลของ CLI", + "getDescription": "แสดงรหัสภาษาที่ใช้งานอยู่ในปัจจุบัน", + "setDescription": "ตั้งค่าภาษาที่ใช้แสดงผลและบันทึกลงใน config", + "listDescription": "แสดงรายการภาษาที่ใช้ได้ทั้งหมด", + "listTitle": "ภาษาที่ใช้ได้", + "current": "ภาษา: {code} ({name})", + "saved": "ตั้งค่าภาษาเป็น {code} ({name}) แล้ว", + "noCode": "ต้องระบุรหัสภาษา เรียกใช้ 'omniroute config lang list' เพื่อดูรหัสที่ใช้ได้", + "unknown": "ไม่รู้จักรหัสภาษา: {code} เรียกใช้ 'omniroute config lang list' เพื่อดูรหัสที่ใช้ได้", + "alreadySet": "ตั้งค่าภาษาเป็น {code} อยู่แล้ว", + "envHint": "เคล็ดลับ: คุณสามารถตั้งค่า OMNIROUTE_LANG={code} ในสภาพแวดล้อมของคุณได้เช่นกัน" + } + }, + "completion": { + "description": "สร้างหรือติดตั้งสคริปต์เติมคำสั่งอัตโนมัติสำหรับเชลล์", + "zsh": "แสดงสคริปต์เติมคำสั่งอัตโนมัติสำหรับ zsh", + "bash": "แสดงสคริปต์เติมคำสั่งอัตโนมัติสำหรับ bash", + "fish": "แสดงสคริปต์เติมคำสั่งอัตโนมัติสำหรับ fish", + "install": "ติดตั้งสคริปต์เติมคำสั่งอัตโนมัติแบบส่วนกลางสำหรับเชลล์ที่ตรวจพบ", + "refresh": "รีเฟรชแคชของคอมโบ/ผู้ให้บริการ/โมเดล" + }, + "logs": { + "description": "สตรีมหรือส่งออกบันทึกคำขอ", + "follow": "สตรีมบันทึกแบบเรียลไทม์", + "filter": "กรองตามระดับ (error,warn,info) — คั่นด้วยเครื่องหมายจุลภาค", + "lines": "จำนวนบรรทัดที่จะดึงข้อมูล", + "timeout": "ระยะหมดเวลาการเชื่อมต่อ หน่วยเป็น ms", + "baseUrl": "URL ฐานของ OmniRoute API", + "requestId": "กรองตาม ID คำขอ", + "apiKey": "กรองตามคีย์ API", + "combo": "กรองตามชื่อคอมโบ", + "status": "กรองตามรหัสสถานะ HTTP", + "durationMin": "ระยะเวลาขั้นต่ำของคำขอ หน่วยเป็น ms", + "durationMax": "ระยะเวลาสูงสุดของคำขอ หน่วยเป็น ms", + "export": "บันทึกล็อกลงในไฟล์ (json/jsonl/csv)", + "exported": "บันทึกล็อกไปยัง {path} แล้ว", + "stopped": "หยุดสตรีมล็อกแล้ว", + "streamError": "เกิดข้อผิดพลาดในการสตรีมล็อก: {message}" + }, + "tray": { + "description": "ควบคุมไอคอนในถาดระบบ", + "show": "แสดงไอคอนในถาดระบบ (หากเซิร์ฟเวอร์กำลังทำงานด้วย --tray)", + "hide": "ซ่อนไอคอนในถาดระบบ", + "quit": "ออกจาก OmniRoute ผ่านถาดระบบ" + }, + "autostart": { + "description": "จัดการการเริ่ม OmniRoute อัตโนมัติเมื่อบูต (Linux: บริการผู้ใช้ systemd)", + "enable": "เปิดใช้การเริ่มอัตโนมัติเมื่อบูต", + "disable": "ปิดใช้การเริ่มอัตโนมัติเมื่อบูต", + "toggle": "สลับสถานะการเริ่มอัตโนมัติเมื่อบูต", + "status": "แสดงสถานะการเริ่มอัตโนมัติ" + }, + "runtime": { + "description": "จัดการการพึ่งพารันไทม์แบบเนทีฟ", + "check": "ตรวจสอบสถานะของการพึ่งพาแบบเนทีฟในไดเรกทอรีรันไทม์", + "repair": "ติดตั้งการพึ่งพาแบบเนทีฟอีกครั้งในไดเรกทอรีรันไทม์", + "repair_force": "บังคับติดตั้งใหม่แม้ว่ายังใช้งานได้", + "clean": "ลบไดเรกทอรีรันไทม์ (เพิ่มพื้นที่ว่างในดิสก์)", + "clean_yes": "ข้ามการยืนยัน" + }, + "repl": { + "description": "REPL แบบโต้ตอบหลายรอบกับ LLM", + "model": "โมเดลที่จะใช้ (ค่าเริ่มต้น: อัตโนมัติ)", + "combo": "ชื่อคอมโบที่จะใช้", + "system": "พรอมต์ระบบ", + "resume": "ดำเนินเซสชันที่บันทึกไว้ต่อตามชื่อ" + }, + "plugin": { + "description": "จัดการปลั๊กอิน CLI (omniroute-cmd-*)", + "list": "แสดงรายการปลั๊กอินที่ติดตั้งแล้ว", + "install": "ติดตั้งปลั๊กอินจาก npm หรือพาธภายในเครื่อง", + "remove": "ลบปลั๊กอินที่ติดตั้งแล้ว", + "info": "แสดงรายละเอียดของปลั๊กอินที่ติดตั้งแล้ว", + "search": "ค้นหาปลั๊กอินที่พร้อมใช้งานในรีจิสทรี npm", + "update": "อัปเดตปลั๊กอินที่ติดตั้งแล้ว", + "scaffold": "สร้างโครงเริ่มต้นสำหรับปลั๊กอินใหม่" + }, + "launch": { + "description": "เปิด Claude Code ที่เชื่อมต่อกับ OmniRoute (ภายในเครื่องหรือระยะไกล พร้อม --profile)", + "token": "โทเค็นที่ไคลเอนต์ Claude ควรส่ง (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "ไม่สามารถเข้าถึง OmniRoute ที่ {port} ได้ เริ่มต้นด้วย 'omniroute serve'", + "notFound": "ไม่พบ CLI 'claude' ใน PATH" + }, + "run": { + "description": "เปิดเป้าหมาย CLI ที่รองรับผ่าน OmniRoute" + }, + "setupClaude": { + "description": "สร้างโปรไฟล์ Claude Code ใน ~/.claude/profiles จากแค็ตตาล็อกโมเดล OmniRoute" + }, + "connect": { + "description": "เชื่อมต่อกับเซิร์ฟเวอร์ OmniRoute ระยะไกลและเข้าสู่โหมดระยะไกล" + }, + "tokens": { + "description": "จัดการโทเค็นการเข้าถึง CLI แบบกำหนดขอบเขต (โหมดระยะไกล)" + }, + "configure": { + "description": "เลือกผู้ให้บริการ+โมเดลจากเซิร์ฟเวอร์ที่ใช้งานอยู่และกำหนดค่า CLI ภายในเครื่องที่รองรับ" + }, + "launchCodex": { + "description": "เปิด Codex CLI ที่เชื่อมต่อกับ OmniRoute (ภายในเครื่องหรือ VPS ระยะไกล)" + }, + "setupCodex": { + "description": "สร้างไฟล์โปรไฟล์ใน ~/.codex จากแค็ตตาล็อกโมเดลแบบสดของ OmniRoute" + }, + "packs": { + "description": "จัดการแพ็กรันไทม์เสริม (ML / ระบบอัตโนมัติของเบราว์เซอร์)", + "listDescription": "แสดงรายการแพ็กเสริมและสถานะการติดตั้ง", + "installDescription": "ติดตั้งแพ็กเสริมลงใน DATA_DIR", + "verifyDescription": "ตรวจสอบแพ็กที่ติดตั้งแล้วเทียบกับดัชนีเช็กซัมที่ให้มา", + "removeDescription": "ลบแพ็กเสริมที่ติดตั้งแล้ว", + "sourceOpt": "ไดเรกทอรีที่เก็บเพย์โหลดของแพ็กและดัชนีแพ็ก", + "warnNoIndex": "ไม่พบ optional-packs.index.json — ไม่สามารถติดตั้ง/ตรวจสอบได้ในเช็กเอาต์นี้ (บันเดิลเดสก์ท็อปมีไฟล์นี้ให้)", + "errUnknown": "แพ็กที่ไม่รู้จัก: {name}", + "errNoIndex": "ไม่พบดัชนีแพ็ก โปรดส่ง --source ที่เก็บเพย์โหลดของแพ็ก (บันเดิลเดสก์ท็อปมีไฟล์นี้อยู่ถัดจากแอป)", + "installed": "ติดตั้งและตรวจสอบแพ็ก \"{name}\" ที่ {dir} แล้ว", + "restartHint": "รีสตาร์ทเซิร์ฟเวอร์ OmniRoute (หรือแอปเดสก์ท็อป) เพื่อให้รันไทม์ตรวจพบแพ็ก", + "removed": "นำแพ็ก \"{name}\" ออกแล้ว", + "notInstalled": "ยังไม่ได้ติดตั้งแพ็ก \"{name}\"", + "verifyOk": "ตรวจสอบแพ็กที่ติดตั้งทั้งหมดเรียบร้อยแล้ว", + "verifyFailed": "แพ็ก {count} รายการไม่ผ่านการตรวจสอบ", + "noneInstalled": "ไม่มีแพ็กเสริมที่ติดตั้งไว้" } } diff --git a/bin/cli/locales/tr.json b/bin/cli/locales/tr.json index 85054246ba..3c2167b2c8 100644 --- a/bin/cli/locales/tr.json +++ b/bin/cli/locales/tr.json @@ -14,6 +14,812 @@ "jsonOpt": "JSON olarak çıktı", "yesOpt": "Onayı atla" }, + "setup": { + "title": "OmniRoute Kurulumu", + "passwordPrompt": "Yönetici parolası", + "providerPrompt": "Varsayılan sağlayıcı (atlamak için boş bırakın)", + "done": "Kurulum tamamlandı", + "passwordSet": "Yönetici parolası yapılandırıldı", + "providerSet": "Sağlayıcı yapılandırıldı: {name}", + "testingProvider": "Sağlayıcı bağlantısı test ediliyor: {name}", + "testPassed": "Sağlayıcı testi başarılı", + "testFailed": "Sağlayıcı testi başarısız: {error}", + "loginEnabled": "Oturum açma: etkin (parola güncellendi)", + "loginDisabled": "Oturum açma: devre dışı", + "providerInfo": "Sağlayıcı: {info}", + "opencode": "OpenCode için paketle birlikte gelen @omniroute/opencode-plugin eklentisini yükleyip yapılandırın" + }, + "doctor": { + "title": "OmniRoute Tanılama", + "dbOk": "Veritabanı: Tamam ({path})", + "dbMissing": "Veritabanı: başlatılmamış — `omniroute setup` komutunu çalıştırın", + "portOk": "Port {port}: kullanılabilir", + "portConflict": "Port {port}: başka bir işlem tarafından kullanılıyor", + "encryptionOk": "Şifreleme anahtarı: yapılandırıldı", + "encryptionMissing": "Şifreleme anahtarı eksik — `omniroute setup` komutunu çalıştırın", + "allGood": "Tüm kontroller başarılı.", + "warnings": "{count} uyarı — yukarıya bakın." + }, + "providers": { + "title": "Sağlayıcılar", + "noProviders": "Yapılandırılmış sağlayıcı yok. Şunu çalıştırın: omniroute setup", + "testing": "{name} test ediliyor...", + "available": "{count} sağlayıcı kullanılabilir", + "connected": "Bağlı", + "disconnected": "Bağlantı kesildi", + "validationFailed": "Doğrulama başarısız: {error}", + "metrics": { + "description": "Sağlayıcı performans metriklerini göster (gecikme, başarı oranı, maliyet)", + "provider": "Sağlayıcı kimliğine göre filtrele", + "connection_id": "Bağlantı kimliğine göre filtrele", + "period": "Zaman aralığı: 1h|6h|24h|7d|30d (varsayılan: 24h)", + "metric": "Belirli bir metrik alanına odaklan", + "sort": "Alana göre sırala (azalan)", + "limit": "Maksimum satır sayısı (varsayılan: 50)", + "watch": "Her 5 saniyede bir yenile (canlı mod)", + "compare": "Yan yana karşılaştırılacak, virgülle ayrılmış sağlayıcı kimlikleri" + }, + "metric_single": { + "description": "Belirli bir bağlantı için tek bir metrik değeri al" + }, + "rotate": { + "description": "Bir sağlayıcı bağlantısının yukarı akış API anahtarını yenile", + "newKeyOpt": "Yeni API anahtarı değeri (kaçının: tercihen --from-env kullanın)", + "fromEnvOpt": "Yeni anahtarı VAR ortam değişkeninden oku", + "oauthOpt": "Bunun yerine OAuth yeniden kimlik doğrulama akışını tetikle", + "skipTestOpt": "Rotasyon sonrası bağlantı testini atla", + "dryRunOpt": "Yazmadan nelerin değişeceğini göster", + "confirmPrompt": "\"{name}\" ({id}) bağlantısının API anahtarı değiştirilsin mi? [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) için anahtar döndürülecekti. Hiçbir değişiklik yapılmadı.", + "oauthHint": "OAuth bağlantısı — çalıştırın: omniroute oauth {provider}", + "envVarEmpty": "{var} ortam değişkeni ayarlanmamış veya boş.", + "success": "\"{name}\" için anahtar döndürüldü. Doğrulamak için `providers test {id}` komutunu çalıştırın.", + "testPassed": "Rotasyon sonrası test başarılı.", + "testFailed": "Rotasyon sonrası test başarısız: {error}" + }, + "status": { + "description": "Tüm sağlayıcı bağlantılarının anahtar durumunu göster (yaş, süre sonu, bekleme süresi)", + "providerOpt": "Sağlayıcı adına göre filtrele", + "header": "Kimlik Sağlayıcı Ad Süre Sonu Durumu Test Durumu Bekleme Bitişi", + "noData": "Kullanılabilir sağlayıcı bağlantısı verisi yok.", + "requiresServer": "providers status için OmniRoute sunucusunun çalışıyor olması gerekir." + } + }, + "keys": { + "title": "API Anahtarları", + "addDescription": "Bir sağlayıcı için API anahtarı ekle veya güncelle", + "listDescription": "Yapılandırılmış tüm API anahtarlarını listele", + "removeDescription": "Bir sağlayıcının API anahtarını kaldır", + "regenerateDescription": "Bir OmniRoute API anahtarını yeniden oluştur", + "revokeDescription": "Bir OmniRoute API anahtarını iptal et", + "revealDescription": "Maskelenmemiş API anahtarı değerini göster", + "usageDescription": "Bir API anahtarının son kullanımını göster", + "usageLimitOpt": "Son isteklerin sayısı", + "rotateDescription": "Yeni bir anahtar oluştur ve eski anahtarı geçersiz kıl", + "graceOpt": "Eski anahtar geçersiz kılınmadan önceki ek süre (ms)", + "stdinOpt": "API anahtarını argüman yerine stdin'den oku", + "added": "{provider} için anahtar eklendi.", + "removed": "Anahtar kaldırıldı.", + "listed": "{count} anahtar.", + "noKeys": "Yapılandırılmış anahtar yok.", + "noUsage": "Kullanım verisi bulunamadı.", + "confirmRemove": "{id} anahtarı kaldırılsın mı?", + "confirmRegenerate": "{id} anahtarı yeniden oluşturulsun mu?", + "confirmRevoke": "{id} anahtarı iptal edilsin mi?", + "confirmRotate": "{id} anahtarı döndürülsün mü? (eski anahtar ek sürenin ardından geçersiz kılınacak)", + "regenerated": "Yeniden oluşturuldu. Yeni anahtar: {key}", + "revoked": "{id} anahtarı iptal edildi.", + "rotated": "Anahtar {id} yenilendi. Yeni anahtar kimliği: {newId}", + "revealWarning": "⚠ Bu işlem, maskelenmemiş anahtarın tamamını gösterecektir. Ekranınızın gizli olduğundan emin olun.", + "providerRequired": "Sağlayıcı gereklidir.", + "keyRequired": "API anahtarı gereklidir.", + "stdinEmpty": "stdin aracılığıyla API anahtarı sağlanmadı.", + "unknownProvider": "Bilinmeyen sağlayıcı: {provider}", + "policy": { + "title": "Anahtar Politikası", + "showDescription": "Bir anahtarın hız/maliyet politikasını göster", + "setDescription": "Bir anahtar için hız/maliyet politikası ayarla", + "rateLimitOpt": "Dakika başına maksimum istek sayısı", + "maxCostOpt": "Günlük maksimum maliyet (USD)", + "allowedModelsOpt": "İzin verilen modellerin virgülle ayrılmış listesi", + "nothingToSet": "Hiçbir politika alanı sağlanmadı. --rate-limit, --max-cost veya --allowed-models kullanın.", + "updated": "Politika güncellendi." + }, + "expiration": { + "title": "Anahtar Süre Sonu", + "listDescription": "Yakında süresi dolacak anahtarları listele", + "daysOpt": "N gün içinde süresi dolacak anahtarları göster", + "none": "{days} gün içinde süresi dolacak anahtar yok.", + "listTitle": "{days} gün içinde süresi dolacak anahtarlar:" + } + }, + "authExport": { + "description": "ŞİFRESİ ÇÖZÜLMÜŞ sağlayıcı kimlik bilgilerini dışa aktar (yalnızca yerel, düz metin çıktısı)", + "idOpt": "Yalnızca bu kimlik/ad/sağlayıcıyla eşleşen bağlantıyı dışa aktar", + "formatOpt": "Çıktı biçimi: json veya env", + "outOpt": "Çıktıyı stdout yerine bir dosyaya yaz (0600 izinleriyle yazılır)", + "forceOpt": "Bunun düz metin sırları görüntülediğini/yazdığını anladığınızı onaylayın", + "warning": "⚠ Bu işlem, ŞİFRESİ ÇÖZÜLMÜŞ düz metin API anahtarlarını ve OAuth belirteçlerini görüntüler/yazar. Ekranınızın, kabuk geçmişinizin ve tüm çıktı dosyalarının gizli kaldığından emin olun.", + "confirmHeading": "⚠ UYARI: Bu işlem, ŞİFRESİ ÇÖZÜLMÜŞ sağlayıcı kimlik bilgilerini düz metin olarak dışa aktarır", + "confirmBody": "Bu komut, seçilen bağlantıların apiKey, accessToken, refreshToken ve\nidToken değerlerinin şifresini çözer ve bunları görüntüler/yazar. Çıktıyı gizli bilgi olarak değerlendirin.", + "confirmFooter": "Onaylamak için şunu çalıştırın:\n omniroute auth export --force", + "missingKey": "Kimlik bilgilerini dışa aktarmak için STORAGE_ENCRYPTION_KEY gereklidir.", + "notFound": "Bağlantı bulunamadı: {id}", + "invalidFormat": "Geçersiz biçim: {format}. json veya env kullanın." + }, + "stream": { + "description": "SSE inceleme modlarıyla bir sohbet yanıtını akış halinde al", + "file": "İstemi dosyadan oku", + "stdin": "İstemi stdin'den oku", + "model": "Model kimliği (varsayılan: auto)", + "system": "Sistem istemi", + "combo": "Ada göre belirli bir kombinasyonu zorunlu kıl", + "max_tokens": "Yanıttaki maksimum belirteç sayısı", + "responses_api": "/v1/chat/completions yerine /v1/responses kullan", + "raw": "Alınan ham SSE satırlarını yazdır", + "debug": "Her parça için zamanlama bilgilerini stderr'e yazdır", + "save": "Tüm SSE olaylarını bir .jsonl dosyasına kaydet", + "error": { + "empty_prompt": "Hata: istem gerekli (konumsal argüman, --file veya --stdin)" + } + }, + "usage": { + "description": "Kullanım analizleri, bütçeler, kotalar ve günlükler", + "analytics": { + "description": "Toplu kullanım analizlerini göster", + "period": "Zaman aralığı: 1d|7d|30d|90d|ytd|all (varsayılan: 30d)", + "provider": "Sağlayıcı ID'sine göre filtrele" + }, + "budget": { + "description": "Maliyet bütçelerini yönet", + "set": { + "scope": "Bütçe kapsamı (varsayılan: global)", + "period": "Bütçe dönemi: daily|weekly|monthly (varsayılan: monthly)" + } + }, + "quota": { + "description": "Sağlayıcı kota kullanımını göster", + "provider": "Sağlayıcı ID'sine göre filtrele", + "check": "Yeni bir istek için kota olup olmadığını göster" + }, + "logs": { + "description": "İstek çağrısı günlüklerini göster", + "limit": "Döndürülecek günlük girdisi sayısı (varsayılan: 100)", + "search": "Günlükleri filtrelemek için arama sorgusu", + "since": "Bu zaman damgasından sonraki günlükleri döndür", + "follow": "Yeni günlük girdilerini sürekli takip et", + "api_key": "Günlükleri API anahtarına göre filtrele" + }, + "utilization": { + "description": "API anahtarı kullanım metriklerini göster", + "api_key": "API anahtarına göre filtrele" + }, + "history": { + "description": "İstek geçmişini göster", + "limit": "Geçmiş girdisi sayısı (varsayılan: 100)" + }, + "proxy_logs": { + "description": "Proxy düzeyindeki istek günlüklerini göster", + "limit": "Proxy günlük girdisi sayısı (varsayılan: 100)" + } + }, + "cost": { + "description": "Sağlayıcı, model, kombinasyon veya API anahtarına göre dökümlü maliyet raporunu göster", + "period": "Zaman aralığı: 1d|7d|30d|90d|ytd|all (varsayılan: 30d)", + "since": "Başlangıç tarihi (ISO biçimi, ör. 2026-01-01) — --period değerini geçersiz kılar", + "until": "Bitiş tarihi (ISO biçimi)", + "group_by": "Sonuçları şuna göre grupla: provider|model|api-key|combo|day (varsayılan: provider)", + "api_key_filter": "Belirli bir API anahtarına göre filtrele", + "limit": "Gösterilecek maksimum satır sayısı (varsayılan: 100)" + }, + "simulate": { + "description": "Deneme çalıştırması yönlendirme simülasyonu — üst servisi çağırmadan hangi sağlayıcıların seçileceğini göster", + "file": "Tam istek gövdesini JSON dosyasından yükle", + "model": "Model ID'si (varsayılan: auto)", + "combo": "Belirli bir kombinasyonu adına göre zorla", + "reasoning": "Akıl yürütme çabası düzeyi (low|medium|high)", + "thinking": "Genişletilmiş düşünme token bütçesi", + "explain": "Yedekleme ağacını ve maliyet aralığını stderr'e yazdır", + "noCombo": "Eşleşen kombinasyon bulunamadı. Şu komutla yapılandırın: omniroute combo create" + }, + "chat": { + "description": "OmniRoute'a tek seferlik bir sohbet istemi gönder", + "file": "İstemi dosyadan oku", + "stdin": "İstemi stdin'den oku", + "system": "Sistem istemi", + "model": "Model kimliği (varsayılan: auto)", + "max_tokens": "Yanıttaki maksimum token sayısı", + "temperature": "Örnekleme sıcaklığı (0–2)", + "top_p": "Top-p çekirdek örneklemesi", + "reasoning_effort": "Akıl yürütme çabası düzeyi (low|medium|high)", + "thinking_budget": "Genişletilmiş düşünme token bütçesi", + "combo": "Ada göre belirli bir kombinasyonu zorunlu kıl", + "responses_api": "/v1/chat/completions yerine /v1/responses kullan", + "stream": "Yanıtı kademeli olarak aktar", + "no_history": "~/.omniroute/cli-history.jsonl dosyasına kaydetme", + "error": { + "empty_prompt": "Hata: istem gerekli (konumsal argüman, --file veya --stdin)" + } + }, + "serve": { + "description": "OmniRoute sunucusunu başlat (varsayılan eylem)", + "starting": "OmniRoute sunucusu {port} portunda başlatılıyor...", + "ready": "http://localhost:{port} adresinde hazır", + "stopping": "Sunucu durduruluyor (PID {pid})...", + "stopped": "Sunucu durduruldu.", + "notRunning": "Sunucu çalışmıyor.", + "port": "Dinlenecek port (varsayılan: 20128)", + "no_open": "Tarayıcıyı otomatik olarak açma", + "daemon": "Sunucuyu arka plan hizmeti olarak çalıştır", + "log": "Sunucu günlüklerini satır içinde göster", + "no_recovery": "Çökme durumunda otomatik yeniden başlatmayı devre dışı bırak (hata ayıklama modu)", + "max_restarts": "Vazgeçmeden önce 30 saniye içinde izin verilen en fazla çökme sonrası yeniden başlatma sayısı (varsayılan: 2)", + "tray": "Sistem tepsisinde başlat (yalnızca masaüstü, isteğe bağlı)", + "no_tray": "Sistem tepsisi simgesini devre dışı bırak", + "ready_timeout": "Hazır olma denetimi zaman aşımı, ms cinsinden (ayrıca OMNIROUTE_READY_TIMEOUT_MS, varsayılan 60000)", + "tls_cert": "HTTPS sunmak için TLS sertifikasının yolu (PEM) (ayrıca OMNIROUTE_TLS_CERT)", + "tls_key": "HTTPS sunmak için TLS özel anahtarının yolu (PEM) (ayrıca OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Yedekleme", + "description": "OmniRoute verilerinin yedeğini oluştur", + "creating": "Yedek oluşturuluyor...", + "done": "Yedek {path} konumuna kaydedildi", + "noFiles": "Yedeklenecek dosya yok (veritabanı başlatılmamış)", + "failed": "Yedekleme başarısız oldu: {error}", + "restoring": "{path} konumundan geri yükleniyor...", + "restored": "Geri yükleme tamamlandı.", + "restoreDescription": "Bir yedekten geri yükle", + "listTitle": "Kullanılabilir Yedekler", + "noBackups": "Yedek bulunamadı.", + "notFound": "Yedek bulunamadı: {name}", + "confirmRestore": "Mevcut verilerin üzerine {ts} tarihli yedek yazılsın mı?", + "createDescription": "OmniRoute verilerinin yedeğini oluştur", + "nameOpt": "Özel yedek adı", + "cloudOpt": "Yedeği bulut depolama alanına yükle", + "encryptOpt": "Yedeği AES-256-GCM ile şifrele", + "keyFileOpt": "Şifreleme parolasını içeren dosyanın yolu", + "excludeOpt": "Desenle eşleşen dosyaları hariç tut (tekrarlanabilir)", + "retentionOpt": "Yalnızca son N yedeği sakla", + "passphrasePrompt": "Şifreleme parolası:", + "noPassphrase": "Şifrelenmiş yedek için parola gereklidir.", + "cloudFailed": "Uyarı: Buluta yükleme başarısız oldu. Yerel yedek kaydedildi.", + "cloudUploaded": "Bulut yedeği yüklendi: {url}", + "auto": { + "title": "Yedekleme Zamanlaması", + "enableDescription": "Zamanlanmış otomatik yedeklemeleri etkinleştir", + "disableDescription": "Zamanlanmış otomatik yedeklemeleri devre dışı bırak", + "statusDescription": "Mevcut yedekleme zamanlamasının durumunu göster", + "cronOpt": "Zamanlama için cron ifadesi (varsayılan: her gün saat 03.00'te)", + "enabled": "Otomatik yedekleme etkinleştirildi (cron: {cron}).", + "hint": "Zamanlama, başlangıçta omniroute serve tarafından okunur.", + "disabled": "Otomatik yedekleme devre dışı bırakıldı.", + "notConfigured": "Yedekleme zamanlaması yapılandırılmamış." + } + }, + "health": { + "description": "Sunucu sağlığını ve bileşen durumunu kontrol et", + "noServer": "Sunucu çalışmıyor. Şununla başlatın: omniroute serve", + "title": "Sağlık", + "status": "Durum: {status}", + "uptime": "Çalışma süresi: {uptime}", + "requests": "İstekler (24 sa.): {count}", + "cost": "Maliyet (24 sa.): ${cost}" + }, + "quota": { + "description": "Sağlayıcı kota kullanımını göster", + "noServer": "Sunucu çalışmıyor. Şununla başlatın: omniroute serve", + "noData": "Kota bilgisi mevcut değil." + }, + "cache": { + "description": "Yanıt önbelleğini yönet", + "noServer": "Sunucu çalışmıyor. Şununla başlatın: omniroute serve", + "cleared": "Önbellek temizlendi.", + "clearFailed": "Önbellek temizlenemedi." + }, + "redis": { + "description": "OmniRoute önbelleği ve kota takibi için tek tıkla yerel Redis konteyneri (Podman veya Docker) başlatın" + }, + "test": { + "description": "Bir sağlayıcı bağlantısını test et", + "noServer": "Sunucu çalışmıyor. Şununla başlatın: omniroute serve", + "testing": "{provider} / {model} test ediliyor...", + "passed": "Bağlantı başarılı!", + "failed": "Bağlantı başarısız: {error}", + "allProvidersOpt": "Yapılandırılmış tüm sağlayıcıları test et", + "latencyOpt": "Gecikme ölçümlerini göster (ort./min./maks. ms)", + "repeatOpt": "Testi N kez tekrarla ve sonuçları birleştir", + "compareOpt": "Karşılaştırılacak, virgülle ayrılmış modeller (ör. gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Sonuçları bir JSON dosyasına kaydet", + "saved": "Sonuçlar {path} konumuna kaydedildi", + "compareTitle": "Model Karşılaştırması", + "compareMinTwo": "--compare için en az iki model gereklidir (virgülle ayrılmış)", + "noProviders": "Yapılandırılmış sağlayıcı yok. Şununla bir tane ekleyin: omniroute keys add" + }, + "update": { + "checking": "Güncellemeler kontrol ediliyor...", + "upToDate": "Zaten güncel ({version}).", + "available": "Güncelleme mevcut: {current} → {latest}", + "installing": "{latest} yükleniyor...", + "done": "{latest} sürümüne güncellendi. Uygulamak için sunucuyu yeniden başlatın." + }, + "mcp": { + "title": "MCP Sunucusu", + "running": "MCP sunucusu çalışıyor ({transport})", + "stopped": "MCP sunucusu durduruldu.", + "restarted": "MCP sunucusu yeniden başlatıldı.", + "stoppedHint": "Etkinleştirmek için `omniroute mcp enable` komutunu çalıştırın.", + "enabled": "MCP sunucusu etkinleştirildi.", + "disabled": "MCP sunucusu devre dışı bırakıldı.", + "enable": { + "description": "MCP sunucusunu etkinleştir", + "transport": "Kullanılacak aktarım: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP sunucusunu devre dışı bırak" + }, + "call": { + "description": "Bir MCP aracını doğrudan çağır", + "args": "JSON bağımsız değişkenleri nesnesi (satır içi)", + "args_file": "JSON bağımsız değişkenleri dosyasının yolu", + "stream": "Akış uç noktasını kullan (/api/mcp/stream)", + "scope": "Gerekli kapsam (tekrarlanabilir, ör. read:health)" + }, + "scopes": { + "description": "Kullanılabilir MCP kapsamlarını listele", + "tool": "Belirli bir aracın gerektirdiği kapsamları göster" + }, + "tools": { + "description": "MCP araçlarını incele", + "list": { + "description": "Tüm MCP araçlarını listele", + "scope": "Kapsama göre filtrele" + }, + "info": { + "description": "Bir MCP aracının meta verilerini göster" + }, + "schema": { + "description": "Bir MCP aracının giriş/çıkış JSON şemasını göster", + "io": "Şema türü: input|output (varsayılan: input)" + } + }, + "audit": { + "description": "MCP denetim günlüğü (audit --source mcp için diğer ad)" + } + }, + "a2a": { + "skills": { + "description": "Aracı kartındaki kullanılabilir A2A becerilerini listele" + }, + "invoke": { + "description": "Bir A2A becerisini çağır ve görev kimliğini döndür", + "input": "JSON girdi nesnesi", + "input_file": "JSON girdi dosyasının yolu", + "wait": "Dönmeden önce görevin tamamlanmasını bekle", + "timeout": "Tamamlanmayı bekleme zaman aşımı, ms cinsinden (varsayılan: 60000)" + }, + "tasks": { + "description": "A2A görevlerini yönet", + "list": { + "status": "Duruma göre filtrele", + "skill": "Beceri kimliğine göre filtrele" + }, + "watch": { + "description": "Tamamlanana kadar görev durumunu sorgula" + }, + "stream": { + "description": "Görev yürütme olaylarını SSE üzerinden akışla aktar" + }, + "logs": { + "description": "Görev mesajlarını ve yapıtlarını göster" + } + } + }, + "policy": { + "description": "OmniRoute yetkilendirme politikalarını yönet", + "list": { + "description": "Politikaları listele", + "kind": "Türe göre filtrele (allow|deny|rate-limit|cost-cap)", + "scope": "Kapsama göre filtrele (global|api-key|provider)" + }, + "get": { + "description": "Kimliğe göre politika ayrıntılarını al" + }, + "create": { + "description": "Bir JSON dosyasından politika oluştur", + "file": "Politika JSON dosyasının yolu" + }, + "update": { + "description": "Bir politikayı JSON dosyasından güncelle", + "file": "Politika JSON dosyasının yolu" + }, + "delete": { + "description": "Kimliğe göre politika sil", + "yes": "Onay istemini atla" + }, + "evaluate": { + "description": "Politika değerlendirmesini deneme amaçlı çalıştır (çıkış 0=izin verildi, 4=reddedildi)", + "api_key": "Değerlendirilecek API anahtarı", + "action": "Denetlenecek eylem (ör. chat, embed, admin)", + "resource": "Kaynak yolu veya tanımlayıcısı", + "context": "JSON nesnesi olarak ek bağlam" + }, + "export": { + "description": "Tüm politikaları bir JSON dosyasına aktar" + }, + "import": { + "description": "Politikaları bir JSON dosyasından içe aktar", + "overwrite": "Aynı kimliğe sahip mevcut politikaların üzerine yaz" + } + }, + "compression": { + "description": "OmniRoute sıkıştırma işlem hattını yapılandır ve incele", + "status": { + "description": "Geçerli sıkıştırma durumunu ve ayarlarını göster" + }, + "configure": { + "description": "Sıkıştırma ayarlarını yapılandır", + "engine": "Sıkıştırma motoru (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman agresifliği 0.0–1.0", + "rtk_budget": "RTK token bütçesi", + "language_pack": "Etkinleştirilecek dil paketi" + }, + "engine": { + "description": "Etkin sıkıştırma motorunu al veya ayarla" + }, + "combos": { + "description": "Sıkıştırma kombinasyonu istatistiklerini yönet" + }, + "rules": { + "description": "Sıkıştırma kurallarını yönet", + "add": { + "pattern": "Eşleştirilecek desen (regex veya field:pattern)", + "action": "Eylem: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Kullanılabilir sıkıştırma dil paketlerini listele" + }, + "preview": { + "description": "Bir istek üzerindeki sıkıştırma etkisini önizle", + "file": "İstek JSON dosyasının yolu" + } + }, + "tunnel": { + "title": "Tüneller", + "listDescription": "Etkin tünelleri listele", + "createDescription": "Bir tünel oluştur", + "created": "Tünel oluşturuldu: {url}", + "stopped": "Tünel durduruldu.", + "confirmStop": "{id} tüneli durdurulsun mu?", + "stopDescription": "Bir tüneli durdur", + "statusDescription": "Bir tünelin ayrıntılı durumunu göster", + "logsDescription": "Bir tünelin günlüklerini göster", + "infoDescription": "Bir tünelin yapılandırma ayrıntılarını göster", + "rotateDescription": "Yeni bir tünel URL'si oluştur", + "tailOpt": "Gösterilecek günlük satırı sayısı", + "typeRequired": "Tünel türü gereklidir.", + "noLogs": "Kullanılabilir günlük yok.", + "notAvailable": "Tünel bilgisi kullanılamıyor.", + "noTunnels": "Etkin tünel yok.", + "infoTitle": "Tünel bilgisi: {type}", + "rotated": "Tünel URL'si yenilendi: {url}", + "confirmRotate": "{type} tüneli yenilensin mi? (yeni bir URL oluşturulacak)" + }, + "stop": { + "description": "OmniRoute sunucusunu durdur", + "stopping": "Sunucu durduruluyor (PID {pid})...", + "stopped": "Sunucu durduruldu.", + "notRunning": "Çalışan sunucu yok.", + "portFallback": "PID dosyası bulunamadı, bağlantı noktası üzerinden durdurma deneniyor..." + }, + "restart": { + "description": "OmniRoute sunucusunu yeniden başlat", + "restarting": "OmniRoute sunucusu yeniden başlatılıyor..." + }, + "dashboard": { + "description": "OmniRoute panosunu bir tarayıcıda aç", + "opening": "Pano {url} adresinde açılıyor", + "urlOnly": "Tarayıcıyı açmadan pano URL'sini yazdır", + "tui": "Etkileşimli TUI panosunu aç (terminal kullanıcı arayüzü, 7 sekme)" + }, + "models": { + "description": "Kullanılabilir modelleri listele (sunucu gerektirir)", + "search": "Modelleri kimliğe, ada, sağlayıcıya veya açıklamaya göre filtrele", + "noServer": "Sunucu çalışmıyor. Şununla başlatın: omniroute serve", + "noModels": "Model bulunamadı." + }, + "audit": { + "description": "Uyumluluk ve MCP denetim günlüklerine erişin", + "source": "Günlük kaynağı: all|compliance|mcp (varsayılan: all)", + "since": "Bu zaman damgasından (ISO 8601) sonraki kayıtları döndür", + "until": "Bu zaman damgasına (ISO 8601) kadarki kayıtları döndür", + "tail": { + "description": "Son denetim günlüğü kayıtlarını göster", + "follow": "Yeni kayıtları sürekli takip et (2 sn. yoklama)", + "limit": "Gösterilecek maksimum kayıt sayısı (varsayılan: 100)" + }, + "search": { + "description": "Denetim günlüğü kayıtlarında anahtar kelimeyle arama yap", + "limit": "Maksimum sonuç sayısı (varsayılan: 200)", + "actor": "Aktör kimliğine göre filtrele", + "action": "Eylem adına göre filtrele" + }, + "export": { + "description": "Denetim günlüğünü dosyaya aktar", + "format": "Çıktı biçimi: jsonl|csv (varsayılan: jsonl)" + }, + "stats": { + "description": "Denetim günlüğü istatistiklerini göster", + "period": "Zaman aralığı: 1d|7d|30d (varsayılan: 7d)" + }, + "get": { + "description": "Kimliğe göre tek bir denetim günlüğü kaydı al" + } + }, + "skills": { + "description": "OmniRoute becerilerini yönetin (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Yüklü becerileri listele", + "type": "Türe göre filtrele (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Yalnızca etkin becerileri göster", + "disabled": "Yalnızca devre dışı becerileri göster", + "api_key": "API anahtarına göre filtrele" + }, + "get": { + "description": "Kimliğe göre bir becerinin ayrıntılarını al" + }, + "install": { + "description": "Dosyadan veya URL'den bir beceri yükle", + "from_file": "Beceri JSON tanım dosyasının yolu", + "from_url": "Uzak beceri tanımının URL'si", + "type": "Beceri türü (sandbox|custom|hybrid)", + "enable": "Yüklemeden sonra beceriyi etkinleştir" + }, + "enable": { + "description": "Kimliğe göre bir beceriyi etkinleştir" + }, + "disable": { + "description": "Kimliğe göre bir beceriyi devre dışı bırak", + "yes": "Onay istemini atla" + }, + "delete": { + "description": "Kimliğe göre bir beceriyi sil", + "yes": "Onay istemini atla" + }, + "execute": { + "description": "Kimliğe göre bir beceriyi çalıştır", + "input": "JSON giriş nesnesi", + "input_file": "JSON giriş dosyasının yolu", + "timeout": "Milisaniye cinsinden yürütme zaman aşımı (varsayılan: 30000)" + }, + "executions": { + "description": "Beceri yürütme geçmişini listele", + "skill": "Yetenek kimliğine göre filtrele", + "limit": "Maksimum sonuç sayısı (varsayılan: 50)", + "status": "Duruma göre filtrele (running|completed|failed)" + }, + "skillssh": { + "description": "SSH aracılığıyla yüklenen yetenekleri yönet" + }, + "marketplace": { + "description": "Pazar yerindeki yeteneklere göz at ve yükle" + }, + "mp": { + "search": { + "description": "Pazar yeri paketlerinde ara", + "category": "Kategoriye göre filtrele", + "tag": "Etikete göre filtrele", + "limit": "Maksimum sonuç sayısı (varsayılan: 30)", + "sort": "Sıralama ölçütü: downloads|rating|recent" + }, + "info": { + "description": "Paket ayrıntılarını ve readme dosyasını göster" + }, + "install": { + "description": "Bir pazar yeri paketi yükle", + "version": "Paket sürümü (varsayılan: latest)", + "enable": "Yüklemeden sonra etkinleştir", + "yes": "Onay istemini atla" + }, + "categories": { + "description": "Pazar yeri kategorilerini listele" + }, + "featured": { + "description": "Öne çıkan pazar yeri paketlerini göster" + } + } + }, + "memory": { + "description": "OmniRoute konuşma belleğini yönet (FTS5 + vector)", + "search": { + "description": "Bellek girdilerini anlamsal sorguyla ara", + "type": "Bellek türüne göre filtrele (user|feedback|project|reference)", + "limit": "Maksimum sonuç sayısı (varsayılan: 20)", + "api_key": "API anahtarına göre filtrele", + "token_budget": "Sonuçlardaki toplam token sayısını sınırla" + }, + "add": { + "description": "Yeni bir bellek girdisi ekle", + "content": "Bellek metin içeriği", + "file": "İçeriği dosyadan oku", + "type": "Bellek türü (varsayılan: user)", + "metadata": "JSON meta veri nesnesi", + "api_key": "API anahtarıyla ilişkilendir" + }, + "clear": { + "description": "Filtrelerle eşleşen bellek girdilerini sil", + "type": "Türe göre filtrele", + "older": "Belirtilen süreden daha eski girdileri sil (30d, 6m, 1y)", + "api_key": "API anahtarına göre filtrele", + "yes": "Onay istemini atla" + }, + "list": { + "description": "Bellek girdilerini arama sıralaması olmadan listele", + "type": "Türe göre filtrele", + "limit": "Maksimum sonuç sayısı (varsayılan: 100)", + "api_key": "API anahtarına göre filtrele" + }, + "get": { + "description": "Kimliğe göre tek bir bellek girdisi getir" + }, + "delete": { + "description": "Kimliğe göre bir bellek girdisini sil", + "yes": "Onay istemini atla" + }, + "health": { + "description": "Bellek alt sisteminin durumunu göster (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth sağlayıcı bağlantılarını yönet", + "providers": { + "description": "OAuth destekli sağlayıcıları ve akış türlerini listele" + }, + "start": { + "description": "Bir sağlayıcı için OAuth yetkilendirme akışını başlat", + "provider": "Sağlayıcı kimliği (gemini, copilot, cursor, …)", + "no_browser": "Yalnızca URL'yi yazdır — tarayıcıyı açma", + "import_system": "Kimlik bilgilerini yerel sistem yapılandırmasından otomatik olarak içe aktar", + "social": "Sosyal oturum açma sağlayıcısı (google|github) — kiro için gerekli", + "timeout": "Yetkilendirme için beklenecek zaman aşımı, ms cinsinden (varsayılan: 300000)" + }, + "status": { + "description": "Etkin OAuth bağlantılarını listele", + "provider": "Sağlayıcı kimliğine göre filtrele" + }, + "revoke": { + "description": "Bir OAuth bağlantısını iptal et", + "provider": "İptal edilecek sağlayıcı kimliği", + "connection_id": "Belirli bir bağlantıyı kimliğine göre iptal et", + "yes": "Onay istemini atla" + } + }, + "cloud": { + "description": "Bulut yapay zekâ aracısı görevlerini yönet (codex, devin, jules)", + "agents": { + "description": "Kullanılabilir bulut aracılarını listele" + }, + "agent": { + "description": "{agent} bulut aracısı görevlerini yönet", + "auth": { + "description": "{agent} için OAuth üzerinden yetkilendirme yap" + } + }, + "task": { + "description": "Bulut aracısı görevlerini yönet", + "create": { + "description": "Yeni bir aracı görevi oluştur", + "title": "Görev başlığı (varsayılan olarak istemin ilk 80 karakteri kullanılır)", + "prompt": "Görev istemi metni", + "prompt_file": "İstemi dosyadan oku", + "repo": "Görev için klonlanacak depo URL'si", + "branch": "Kullanılacak dal adı", + "metadata": "JSON meta veri nesnesi" + }, + "list": { + "description": "Aracı görevlerini listele", + "status": "Duruma göre filtrele (running|completed|failed|cancelled)", + "limit": "Maksimum sonuç sayısı (varsayılan: 50)" + }, + "get": { + "description": "Görev ayrıntılarını kimliğe göre getir" + }, + "status": { + "description": "Görev durumunu yazdır (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Çalışan bir görevi iptal et", + "yes": "Onay istemini atla" + }, + "approve": { + "description": "Yürütmeyi başlatmak için aracı planını onayla" + }, + "message": { + "description": "Çalışan bir göreve mesaj gönder" + } + }, + "sources": { + "description": "Bir görev tarafından oluşturulan kaynak dosyaları listele" + } + }, + "eval": { + "description": "Değerlendirme paketlerini ve çalıştırmalarını yönet", + "suites": { + "description": "Değerlendirme paketlerini yönet", + "list": { + "description": "Değerlendirme paketlerini listele" + }, + "get": { + "description": "Kimliğe göre değerlendirme paketi ayrıntılarını getir" + }, + "create": { + "description": "Bir JSON dosyasından değerlendirme paketi oluştur", + "file": "Paket tanımı JSON dosyasının yolu" + } + }, + "run": { + "description": "Bir paket için değerlendirme çalıştırması başlat", + "model": "Değerlendirilecek model kimliği (varsayılan: auto)", + "combo": "Ada göre belirli bir kombinasyonu zorunlu kıl", + "concurrency": "Eşzamanlı örnek sayısı (varsayılan: 4)", + "tag": "Daha sonra filtrelemek için bu çalıştırmayı etiketle", + "watch": "Çalıştırma ilerlemesini tamamlanana kadar izle" + }, + "list": { + "description": "Değerlendirme çalıştırmalarını listele", + "suite": "Paket kimliğine göre filtrele", + "status": "Duruma göre filtrele", + "since": "Bu zaman damgasından sonraki çalıştırmaları döndür", + "limit": "Azami sonuç sayısı (varsayılan: 50)" + }, + "get": { + "description": "Kimliğe göre değerlendirme çalıştırması ayrıntılarını getir" + }, + "results": { + "description": "Bir değerlendirme çalıştırmasının örnek sonuçlarını göster", + "failed": "Yalnızca başarısız örnekleri göster" + }, + "cancel": { + "description": "Çalışan bir değerlendirmeyi iptal et", + "yes": "Onay istemini atla" + }, + "scorecard": { + "description": "Tamamlanmış bir değerlendirme çalıştırmasının puan kartını göster" + } + }, + "webhooks": { + "description": "OmniRoute webhook'larını yönet", + "events": { + "description": "Kullanılabilir tüm webhook olay türlerini listele" + }, + "list": { + "description": "Yapılandırılmış webhook'ları listele" + }, + "get": { + "description": "Kimliğe göre webhook ayrıntılarını getir" + }, + "add": { + "description": "Yeni bir webhook kaydet", + "url": "Hedef URL", + "events": "Virgülle ayrılmış olay türleri listesi", + "secret": "HMAC imzalama gizli anahtarı", + "header": "key=value biçiminde ek başlık (tekrarlanabilir)", + "no_enabled": "Webhook'u devre dışı durumda oluştur" + }, + "update": { + "description": "Mevcut bir webhook'u güncelle", + "enabled": "Etkin durumunu ayarla (true|false)" + }, + "remove": { + "description": "Bir webhook'u sil", + "yes": "Onay istemini atla" + }, + "test": { + "description": "Bir webhook'a test olayı gönder", + "event": "Simüle edilecek olay türü (varsayılan: request.completed)" + } + }, "program": { "description": "OmniRoute — Otomatik Fallback ile Akıllı AI Yönlendirici", "version": "Sürümü yazdır ve çık", @@ -26,7 +832,509 @@ "context": "Bu komut için sunucu bağlamı/profili", "lang": "CLI görüntüleme dilini ayarla (OMNIROUTE_LANG'ı geçersiz kılar)" }, - "redis": { - "description": "OmniRoute önbelleği ve kota takibi için tek tıkla yerel Redis konteyneri (Podman veya Docker) başlatın" + "files": { + "description": "Dosyaları yönet (yükle, listele, getir, indir, sil)", + "list": { + "purpose": "Amaca göre filtrele", + "limit": "Azami sonuç sayısı" + }, + "get": { + "description": "Dosya meta verilerini al" + }, + "upload": { + "description": "Bir dosya yükle", + "purpose": "Dosya amacı (batch, assistants, fine-tune)" + }, + "content": { + "description": "Dosya içeriğini indir", + "out": "Yola kaydet (varsayılan: stdout)" + }, + "delete": { + "yes": "Onayı atla" + } + }, + "batches": { + "description": "OpenAI uyumlu toplu işleri yönet", + "list": { + "status": "Duruma göre filtrele", + "limit": "Maksimum sonuç sayısı" + }, + "create": { + "description": "Bir toplu iş oluştur", + "inputFile": "Girdi dosyası kimliği", + "endpoint": "Hedef uç nokta", + "window": "Tamamlama aralığı", + "metadata": "Meta veri ekle: anahtar=değer" + }, + "submit": { + "description": "JSONL dosyası yükle ve toplu iş oluştur", + "jsonl": "JSONL dosyasının yolu", + "endpoint": "Hedef uç nokta", + "wait": "Tamamlanmasını bekle" + }, + "cancel": { + "yes": "Onayı atla" + }, + "wait": { + "timeout": "Zaman aşımı (ms)" + }, + "output": { + "out": "Çıktıyı yola kaydet" + }, + "errors": { + "out": "Hataları yola kaydet" + } + }, + "translator": { + "description": "İstek gövdelerini LLM biçimleri arasında dönüştür", + "detect": { + "description": "Gövde biçimini algıla" + }, + "translate": { + "description": "Gövdeyi bir biçimden diğerine dönüştür" + }, + "send": { + "description": "Dönüştür ve üst akışa gönder" + }, + "stream": { + "description": "İstek gövdesini akış sırasında dönüştür" + }, + "from": "Kaynak biçim (openai|anthropic|gemini|cohere)", + "to": "Hedef biçim (openai|anthropic|gemini|cohere)", + "file": "İstek gövdesi JSON dosyasının yolu", + "out": "Çıktıyı dosyaya kaydet", + "model": "Modeli geçersiz kıl", + "history": { + "limit": "Maksimum sonuç sayısı" + } + }, + "pricing": { + "description": "Modellerin fiyatlandırma verilerini yönet", + "sync": { + "description": "Fiyatları üst akış kaynaklarından eşitle", + "provider": "Sağlayıcıya göre filtrele", + "force": "Yeniden eşitlemeyi zorla" + }, + "list": { + "provider": "Sağlayıcıya göre filtrele", + "model": "Modele göre filtrele", + "limit": "Maksimum sonuç sayısı" + }, + "defaults": { + "description": "Varsayılan fiyatlandırmayı yönet", + "input": "1 milyon token başına girdi maliyeti (USD)", + "output": "1 milyon token başına çıktı maliyeti (USD)", + "cacheRead": "1 milyon token başına önbellek okuma maliyeti (USD)", + "cacheWrite": "1 milyon token başına önbellek yazma maliyeti (USD)" + }, + "diff": { + "description": "Üst kaynak fiyatlarından sapmayı göster", + "model": "Modele göre filtrele" + } + }, + "radar": { + "description": "Yerel Radar katalog akışlarını incele ve senkronize et", + "status": "Yerel Radar ayarlarını ve akış önbelleği durumunu göster", + "sync": "Kataloğu, yönlendirmeleri, teklifleri ve Intel'i yerel sunucu üzerinden senkronize et" + }, + "resilience": { + "description": "Dayanıklılık mekanizmalarını incele ve yönet", + "status": { + "provider": "Sağlayıcıya göre filtrele" + }, + "breakers": { + "provider": "Sağlayıcıya göre filtrele" + }, + "cooldowns": { + "provider": "Sağlayıcıya göre filtrele", + "connectionId": "Bağlantı kimliğine göre filtrele" + }, + "lockouts": { + "provider": "Sağlayıcıya göre filtrele", + "model": "Modele göre filtrele" + }, + "reset": { + "description": "Devre kesici/bekleme süresi durumunu sıfırla", + "provider": "Sıfırlanacak sağlayıcı", + "connectionId": "Sıfırlanacak bağlantı kimliği", + "model": "Kilidi sıfırlanacak model", + "allCooldowns": "Sağlayıcının tüm bekleme sürelerini sıfırla", + "yes": "Onayı atla" + }, + "profile": { + "description": "Dayanıklılık profilini yönet", + "name": "Profil adı" + }, + "config": { + "description": "Dayanıklılık yapılandırmasını yönet", + "threshold": "Hata eşiği", + "resetTimeout": "Sıfırlama zaman aşımı (ms)", + "baseCooldown": "Temel bekleme süresi (ms)" + } + }, + "nodes": { + "description": "Sağlayıcı düğümlerini (uç noktaları) yönet", + "list": { + "provider": "Sağlayıcıya göre filtrele", + "enabled": "Yalnızca etkin düğümleri göster" + }, + "add": { + "provider": "Sağlayıcı adı", + "baseUrl": "Düğümün temel URL'si", + "name": "Düğüm adı", + "weight": "Yük dengeleme ağırlığı", + "region": "Bölge etiketi", + "authHeader": "Özel kimlik doğrulama başlığı (key=value)" + }, + "update": { + "baseUrl": "Yeni temel URL", + "name": "Yeni ad", + "weight": "Yeni ağırlık", + "region": "Yeni bölge", + "enabled": "Etkinleştir veya devre dışı bırak (true|false)" + }, + "remove": { + "yes": "Onayı atla" + }, + "validate": { + "baseUrl": "Doğrulanacak URL", + "provider": "Karşılaştırılarak doğrulama yapılacak sağlayıcı" + }, + "test": { + "description": "Düğüme test isteği gönder" + }, + "metrics": { + "description": "Düğüm metriklerini göster", + "period": "Zaman aralığı (ör. 24h, 7d)" + } + }, + "context": { + "description": "Bağlam mühendisliği işlem hattını yapılandır (Caveman, RTK)", + "analytics": { + "period": "Zaman aralığı (ör. 7d, 30d)" + }, + "caveman": { + "description": "Caveman bağlam sıkıştırıcısını yönet", + "config": { + "description": "Caveman yapılandırmasını göster veya güncelle", + "aggressiveness": "Agresiflik 0.0–1.0", + "maxShrinkPct": "Maksimum küçültme yüzdesi", + "preserveTags": "Korunacak virgülle ayrılmış etiketler" + } + }, + "rtk": { + "description": "RTK bağlam iyileştiricisini yönet", + "config": { + "description": "RTK yapılandırmasını göster veya güncelle", + "tokenBudget": "RTK için token bütçesi", + "reservePct": "Ayrılacak yüzde" + }, + "filters": { + "description": "RTK filtrelerini yönet", + "pattern": "Filtre deseni (regex)", + "priority": "Filtre önceliği (varsayılan: 100)", + "action": "Filtre eylemi: drop|shrink|replace", + "yes": "Onayı atla" + }, + "test": { + "file": "İstek JSON dosyasının yolu" + } + }, + "combos": { + "description": "Bağlama duyarlı kombinasyon yönetimi" + } + }, + "sessions": { + "description": "Etkin oturumları incele ve yönet", + "list": { + "user": "Kullanıcıya göre filtrele", + "kind": "Türe göre filtrele (dashboard|api-key|mcp|a2a)", + "active": "Yalnızca etkin oturumları göster", + "limit": "Maksimum sonuç sayısı (varsayılan: 100)" + }, + "expire": { + "yes": "Onayı atla" + }, + "expireAll": { + "user": "Oturumları sonlandırılacak kullanıcı", + "yes": "Onayı atla" + } + }, + "tags": { + "description": "Kaynak etiketlerini yönet", + "add": { + "color": "Etiket rengi (hex veya ad)", + "description": "Etiket açıklaması" + }, + "remove": { + "yes": "Onayı atla" + }, + "assign": { + "tag": "Etiket adı", + "to": "Hedef kaynak, type:id biçiminde (örn. provider:openai)" + }, + "unassign": { + "tag": "Etiket adı", + "from": "Kaynak, type:id biçiminde" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI spesifikasyonuna erişin ve test edin", + "dump": { + "description": "OpenAPI spesifikasyonunu stdout'a veya dosyaya dökün", + "format": "Çıktı biçimi: yaml|json (varsayılan: yaml)", + "out": "Dosya yoluna kaydet" + }, + "validate": { + "description": "OpenAPI spesifikasyonunu doğrula" + }, + "try": { + "description": "Spesifikasyon üzerinden bir API uç noktasını test et", + "method": "HTTP yöntemi (varsayılan: GET)", + "body": "İstek gövdesi JSON dosyasının yolu", + "query": "key=value biçiminde sorgu parametresi (tekrarlanabilir)", + "header": "key=value biçiminde başlık (tekrarlanabilir)" + }, + "endpoints": { + "description": "Tüm API uç noktalarını listele", + "search": "Yola veya özete göre filtrele" + }, + "paths": { + "description": "Tüm API yollarını listele" + } + }, + "combo": { + "title": "Kombinasyonlar", + "switched": "Etkin kombinasyon: {name}", + "created": "Kombinasyon oluşturuldu: {name}", + "deleted": "Kombinasyon silindi: {name}", + "noCombos": "Yapılandırılmış kombinasyon yok.", + "confirmDelete": "{name} kombinasyonu silinsin mi?", + "suggest": { + "description": "Yapay zekâ puanlamasını kullanarak bir görev için en iyi kombinasyonu öner", + "task": "Görev açıklaması", + "maxCost": "İstek başına USD cinsinden maksimum maliyet", + "maxLatencyMs": "Milisaniye cinsinden maksimum gecikme", + "weights": "JSON puanlama ağırlıkları, örn. {\"latency\":0.7,\"cost\":0.3}", + "top": "Gösterilecek en iyi adayların sayısı (varsayılan: 5)", + "explain": "Gerekçeyi stderr'e yazdır", + "switch": "En yüksek sıralamalı kombinasyonu etkinleştir" + } + }, + "oneproxy": { + "description": "OneProxy üst sunucu havuzunu yönet", + "stats": { + "provider": "Sağlayıcıya göre filtrele", + "period": "Zaman aralığı (varsayılan: 24h)" + }, + "fetch": { + "description": "Havuzdan proxy'leri getir", + "count": "Getirilecek proxy sayısı (varsayılan: 1)", + "type": "Proxy türü: http|socks5 (varsayılan: http)" + }, + "rotate": { + "description": "Proxy rotasyonunu zorla", + "provider": "Rotasyon yapılacak sağlayıcı", + "connectionId": "Rotasyon yapılacak belirli bağlantı kimliği" + }, + "config": { + "description": "OneProxy yapılandırmasını göster veya güncelle", + "enabled": "Proxy havuzunu etkinleştir (true|false)", + "poolSize": "Havuz boyutu", + "providerSource": "Proxy sağlayıcısının URL'si", + "rotationPolicy": "Döndürme ilkesi: sticky|per-request|periodic" + }, + "pool": { + "description": "Geçerli proxy havuzunu metriklerle listele" + } + }, + "open": { + "description": "Belirli bir OmniRoute kontrol paneli sayfasını tarayıcıda aç", + "url": "Yalnızca URL'yi yazdır, tarayıcıyı açma" + }, + "telemetry": { + "description": "Toplu telemetri verilerine eriş", + "summary": { + "description": "Toplu telemetri özetini göster", + "period": "Zaman aralığı: 24h|7d|30d (varsayılan: 24h)", + "compareTo": "Önceki dönemle karşılaştır" + }, + "export": { + "description": "Telemetri olaylarını JSONL biçiminde dışa aktar", + "out": "Çıktı dosyası yolu (varsayılan: telemetry.jsonl)", + "period": "Dışa aktarma zaman aralığı (varsayılan: 7d)" + } + }, + "sync": { + "description": "Yapılandırmayı OmniRoute örnekleri arasında eşitle", + "push": { + "description": "Yapılandırmayı buluta veya uzak örneğe gönder", + "target": "Hedef (cloud veya context:name)", + "bundle": "Eşitlenecek paket bölümleri", + "dryRun": "Uygulamadan önizle" + }, + "pull": { + "description": "Yapılandırmayı buluttan veya uzak örnekten çek", + "source": "Kaynak (cloud veya context:name)", + "merge": "Mevcut yapılandırmayla birleştir", + "replace": "Mevcut yapılandırmayı değiştir", + "dryRun": "Uygulamadan önizle" + }, + "diff": { + "source": "Kaynak bağlam", + "target": "Hedef bağlam" + }, + "bundle": { + "description": "Yapılandırmayı paket dosyası olarak dışa aktar", + "include": "Dahil edilecek bölümler (virgülle ayrılmış)" + }, + "import": { + "description": "Bir paket dosyasını içe aktar", + "dryRun": "Uygulamadan doğrula" + }, + "initialize": { + "fromCloud": "Bulut yedeğinden başlat" + }, + "tokens": { + "description": "Eşitleme belirteçlerini yönet", + "create": { + "name": "Belirteç adı", + "scope": "Belirteç kapsamı", + "ttl": "Belirteç TTL'si (örn. 30d)" + }, + "revoke": { + "yes": "Onayı atla" + } + }, + "resolve": { + "description": "Eşitleme çakışmalarını etkileşimli olarak çöz" + } + }, + "config": { + "contexts": { + "description": "Sunucu bağlamlarını/profillerini yönet (ekle, kullan, listele, göster, kaldır, yeniden adlandır, dışa aktar, içe aktar)" + }, + "lang": { + "description": "CLI görüntüleme dilini yönet", + "getDescription": "Şu anda etkin olan dil kodunu göster", + "setDescription": "Görüntüleme dilini ayarla ve yapılandırmaya kaydet", + "listDescription": "Kullanılabilir tüm dilleri listele", + "listTitle": "Kullanılabilir Diller", + "current": "Dil: {code} ({name})", + "saved": "Dil {code} ({name}) olarak ayarlandı.", + "noCode": "Dil kodu gerekli. Kullanılabilir kodları görmek için 'omniroute config lang list' komutunu çalıştırın.", + "unknown": "Bilinmeyen dil kodu: {code}. Kullanılabilir kodları görmek için 'omniroute config lang list' komutunu çalıştırın.", + "alreadySet": "Dil zaten {code} olarak ayarlı.", + "envHint": "İpucu: Ortamınızda OMNIROUTE_LANG={code} değişkenini de ayarlayabilirsiniz." + } + }, + "completion": { + "description": "Kabuk otomatik tamamlama betiklerini oluştur veya yükle", + "zsh": "zsh otomatik tamamlama betiğini yazdır", + "bash": "bash otomatik tamamlama betiğini yazdır", + "fish": "fish otomatik tamamlama betiğini yazdır", + "install": "Otomatik tamamlama betiğini algılanan kabuk için sistem genelinde yükle", + "refresh": "Kombinasyonların/sağlayıcıların/modellerin önbelleğini yenile" + }, + "logs": { + "description": "İstek günlüklerini gerçek zamanlı aktar veya dışa aktar", + "follow": "Günlükleri gerçek zamanlı aktar", + "filter": "Düzeye göre filtrele (error,warn,info) — virgülle ayrılmış", + "lines": "Getirilecek satır sayısı", + "timeout": "Bağlantı zaman aşımı (ms)", + "baseUrl": "OmniRoute API temel URL'si", + "requestId": "İstek kimliğine göre filtrele", + "apiKey": "API anahtarına göre filtrele", + "combo": "Kombinasyon adına göre filtrele", + "status": "HTTP durum koduna göre filtrele", + "durationMin": "Minimum istek süresi (ms)", + "durationMax": "Maksimum istek süresi (ms)", + "export": "Günlükleri dosyaya kaydet (json/jsonl/csv)", + "exported": "Günlükler {path} konumuna kaydedildi", + "stopped": "Günlük akışı durduruldu.", + "streamError": "Günlük akışı hatası: {message}" + }, + "tray": { + "description": "Sistem tepsisi simgesini kontrol et", + "show": "Tepsi simgesini göster (sunucu --tray ile çalışıyorsa)", + "hide": "Tepsi simgesini gizle", + "quit": "OmniRoute'tan tepsi üzerinden çık" + }, + "autostart": { + "description": "OmniRoute'un açılışta otomatik başlatılmasını yönet (Linux: systemd kullanıcı hizmeti)", + "enable": "Açılışta otomatik başlatmayı etkinleştir", + "disable": "Açılışta otomatik başlatmayı devre dışı bırak", + "toggle": "Açılışta otomatik başlatmayı aç/kapat", + "status": "Otomatik başlatma durumunu göster" + }, + "runtime": { + "description": "Yerel çalışma zamanı bağımlılıklarını yönet", + "check": "Çalışma zamanı dizinindeki yerel bağımlılıkların durumunu kontrol et", + "repair": "Çalışma zamanı dizinindeki yerel bağımlılıkları yeniden yükle", + "repair_force": "Geçerli olsalar bile yeniden yüklemeyi zorla", + "clean": "Çalışma zamanı dizinini kaldır (disk alanı açar)", + "clean_yes": "Onayı atla" + }, + "repl": { + "description": "LLM ile etkileşimli, çok turlu REPL", + "model": "Kullanılacak model (varsayılan: auto)", + "combo": "Kullanılacak kombinasyon adı", + "system": "Sistem istemi", + "resume": "Kaydedilmiş bir oturumu adına göre sürdür" + }, + "plugin": { + "description": "CLI eklentilerini (omniroute-cmd-*) yönet", + "list": "Yüklü eklentileri listele", + "install": "npm'den veya yerel yoldan bir eklenti yükle", + "remove": "Yüklü bir eklentiyi kaldır", + "info": "Yüklü bir eklentinin ayrıntılarını göster", + "search": "Kullanılabilir eklentiler için npm kayıt defterinde ara", + "update": "Yüklü eklentileri güncelle", + "scaffold": "Yeni bir eklenti için başlangıç şablonu oluştur" + }, + "launch": { + "description": "OmniRoute'u hedefleyen Claude Code'u başlat (yerel veya uzak, --profile ile)", + "token": "Claude istemcisinin göndermesi gereken token (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute'a {port} üzerinden erişilemiyor. 'omniroute serve' ile başlatın.", + "notFound": "'claude' CLI, PATH içinde bulunamadı." + }, + "run": { + "description": "Desteklenen bir CLI hedefini OmniRoute üzerinden başlat" + }, + "setupClaude": { + "description": "OmniRoute model kataloğundan ~/.claude/profiles Claude Code profilleri oluştur" + }, + "connect": { + "description": "Uzak bir OmniRoute sunucusuna bağlan ve uzak moda geç" + }, + "tokens": { + "description": "Kapsamlı CLI erişim token'larını yönet (uzak mod)" + }, + "configure": { + "description": "Etkin sunucudan bir sağlayıcı+model seç ve desteklenen bir yerel CLI'ı yapılandır" + }, + "launchCodex": { + "description": "OmniRoute'u hedefleyen Codex CLI'ı başlat (yerel veya uzak VPS)" + }, + "setupCodex": { + "description": "OmniRoute canlı model kataloğundan ~/.codex profil dosyaları oluştur" + }, + "packs": { + "description": "İsteğe bağlı çalışma zamanı paketlerini yönet (ML / tarayıcı otomasyonu)", + "listDescription": "İsteğe bağlı paketleri ve yüklenme durumlarını listele", + "installDescription": "İsteğe bağlı bir paketi DATA_DIR içine yükle", + "verifyDescription": "Yüklü paketleri dağıtımla gelen sağlama toplamı dizinine göre doğrula", + "removeDescription": "Yüklü bir isteğe bağlı paketi kaldır", + "sourceOpt": "Paket içeriklerini ve paket dizinini barındıran dizin", + "warnNoIndex": "optional-packs.index.json bulunamadı — bu sürümde yükleme/doğrulama kullanılamıyor (masaüstü paketleri bu dosyayı içerir)", + "errUnknown": "bilinmeyen paket: {name}", + "errNoIndex": "paket dizini bulunamadı; paket içeriğini barındıran --source parametresini iletin (masaüstü paketleri bunu uygulamanın yanında içerir)", + "installed": "\"{name}\" paketi {dir} konumuna yüklendi ve doğrulandı", + "restartHint": "çalışma zamanının paketi algılaması için OmniRoute sunucusunu (veya masaüstü uygulamasını) yeniden başlatın", + "removed": "\"{name}\" paketi kaldırıldı", + "notInstalled": "\"{name}\" paketi yüklü değildi", + "verifyOk": "yüklü tüm paketler doğrulandı", + "verifyFailed": "{count} paket doğrulamadan geçemedi", + "noneInstalled": "isteğe bağlı paket yüklü değil" } } diff --git a/bin/cli/locales/uk-UA.json b/bin/cli/locales/uk-UA.json index b0d615037f..10718f8b0f 100644 --- a/bin/cli/locales/uk-UA.json +++ b/bin/cli/locales/uk-UA.json @@ -14,6 +14,812 @@ "jsonOpt": "Вивести у форматі JSON", "yesOpt": "Пропустити підтвердження" }, + "setup": { + "title": "Налаштування OmniRoute", + "passwordPrompt": "Пароль адміністратора", + "providerPrompt": "Постачальник за замовчуванням (залиште порожнім, щоб пропустити)", + "done": "Налаштування завершено", + "passwordSet": "Пароль адміністратора налаштовано", + "providerSet": "Постачальника налаштовано: {name}", + "testingProvider": "Перевірка підключення до постачальника: {name}", + "testPassed": "Перевірку постачальника пройдено", + "testFailed": "Не вдалося перевірити постачальника: {error}", + "loginEnabled": "Вхід: увімкнено (пароль оновлено)", + "loginDisabled": "Вхід: вимкнено", + "providerInfo": "Постачальник: {info}", + "opencode": "Установити й налаштувати вбудований @omniroute/opencode-plugin для OpenCode" + }, + "doctor": { + "title": "Діагностика OmniRoute", + "dbOk": "База даних: OK ({path})", + "dbMissing": "Базу даних не ініціалізовано — виконайте `omniroute setup`", + "portOk": "Порт {port}: доступний", + "portConflict": "Порт {port}: використовується іншим процесом", + "encryptionOk": "Ключ шифрування: налаштовано", + "encryptionMissing": "Ключ шифрування відсутній — виконайте `omniroute setup`", + "allGood": "Усі перевірки пройдено.", + "warnings": "Попереджень: {count} — див. вище." + }, + "providers": { + "title": "Постачальники", + "noProviders": "Жодного постачальника не налаштовано. Виконайте: omniroute setup", + "testing": "Перевірка {name}...", + "available": "Доступно постачальників: {count}", + "connected": "Підключено", + "disconnected": "Відключено", + "validationFailed": "Помилка перевірки: {error}", + "metrics": { + "description": "Показати показники продуктивності постачальника (затримка, частота успішних запитів, вартість)", + "provider": "Фільтрувати за ID постачальника", + "connection_id": "Фільтрувати за ID підключення", + "period": "Період часу: 1h|6h|24h|7d|30d (за замовчуванням: 24h)", + "metric": "Зосередитися на певному полі показника", + "sort": "Сортувати за полем (за спаданням)", + "limit": "Максимальна кількість рядків (за замовчуванням: 50)", + "watch": "Оновлювати кожні 5 с (режим реального часу)", + "compare": "ID постачальників, розділені комами, для паралельного порівняння" + }, + "metric_single": { + "description": "Отримати одне значення показника для певного підключення" + }, + "rotate": { + "description": "Замінити API-ключ зовнішнього сервісу для підключення постачальника", + "newKeyOpt": "Нове значення API-ключа (не рекомендовано: краще використовуйте --from-env)", + "fromEnvOpt": "Зчитати новий ключ зі змінної середовища VAR", + "oauthOpt": "Натомість запустити процес повторної автентифікації OAuth", + "skipTestOpt": "Пропустити перевірку з’єднання після ротації", + "dryRunOpt": "Показати, що зміниться, без запису змін", + "confirmPrompt": "Замінити API-ключ для з’єднання «{name}» ({id})? [y/N]", + "dryRunResult": "[dry-run] Було б виконано ротацію ключа для «{name}» ({id}). Змін не внесено.", + "oauthHint": "З’єднання OAuth — виконайте: omniroute oauth {provider}", + "envVarEmpty": "Змінну середовища {var} не задано або вона порожня.", + "success": "Ключ для «{name}» ротовано. Виконайте `providers test {id}` для перевірки.", + "testPassed": "Перевірку після ротації пройдено.", + "testFailed": "Помилка перевірки після ротації: {error}" + }, + "status": { + "description": "Показати стан ключів для всіх з’єднань із провайдерами (вік, термін дії, період очікування)", + "providerOpt": "Фільтрувати за назвою провайдера", + "header": "ID Провайдер Назва Термін дії Стан Стан перевірки Очікування до", + "noData": "Дані про з’єднання з провайдерами відсутні.", + "requiresServer": "Для виконання providers status сервер OmniRoute має бути запущений." + } + }, + "keys": { + "title": "API-ключі", + "addDescription": "Додати або оновити API-ключ для провайдера", + "listDescription": "Показати всі налаштовані API-ключі", + "removeDescription": "Видалити API-ключ для провайдера", + "regenerateDescription": "Повторно згенерувати API-ключ OmniRoute", + "revokeDescription": "Відкликати API-ключ OmniRoute", + "revealDescription": "Показати незамасковане значення API-ключа", + "usageDescription": "Показати нещодавнє використання API-ключа", + "usageLimitOpt": "Кількість нещодавніх запитів", + "rotateDescription": "Згенерувати новий ключ і зробити старий недійсним", + "graceOpt": "Пільговий період (мс) до анулювання старого ключа", + "stdinOpt": "Зчитати API-ключ зі stdin замість аргументу", + "added": "Ключ для {provider} додано.", + "removed": "Ключ видалено.", + "listed": "Кількість ключів: {count}.", + "noKeys": "Жодного ключа не налаштовано.", + "noUsage": "Дані про використання не знайдено.", + "confirmRemove": "Видалити ключ {id}?", + "confirmRegenerate": "Повторно згенерувати ключ {id}?", + "confirmRevoke": "Відкликати ключ {id}?", + "confirmRotate": "Виконати ротацію ключа {id}? (старий ключ буде анульовано після завершення пільгового періоду)", + "regenerated": "Повторно згенеровано. Новий ключ: {key}", + "revoked": "Ключ {id} відкликано.", + "rotated": "Ключ {id} ротовано. Новий ідентифікатор ключа: {newId}", + "revealWarning": "⚠ Буде показано повний немаскований ключ. Переконайтеся, що ваш екран недоступний стороннім.", + "providerRequired": "Потрібно вказати провайдера.", + "keyRequired": "Потрібно вказати ключ API.", + "stdinEmpty": "Ключ API не надано через stdin.", + "unknownProvider": "Невідомий провайдер: {provider}", + "policy": { + "title": "Політика ключа", + "showDescription": "Показати політику обмеження запитів/вартості для ключа", + "setDescription": "Установити політику обмеження запитів/вартості для ключа", + "rateLimitOpt": "Максимальна кількість запитів за хвилину", + "maxCostOpt": "Максимальна вартість на день (USD)", + "allowedModelsOpt": "Список дозволених моделей, розділених комами", + "nothingToSet": "Поля політики не надано. Використовуйте --rate-limit, --max-cost або --allowed-models.", + "updated": "Політику оновлено." + }, + "expiration": { + "title": "Термін дії ключа", + "listDescription": "Показати ключі, термін дії яких незабаром завершиться", + "daysOpt": "Показати ключі, термін дії яких завершиться протягом N днів", + "none": "Немає ключів, термін дії яких завершиться протягом {days} днів.", + "listTitle": "Ключі, термін дії яких завершиться протягом {days} днів:" + } + }, + "authExport": { + "description": "Експортувати РОЗШИФРОВАНІ облікові дані провайдера (лише локально, виведення відкритим текстом)", + "idOpt": "Експортувати лише підключення, що відповідає цьому ідентифікатору/імені/провайдеру", + "formatOpt": "Формат виведення: json або env", + "outOpt": "Записати результат у файл замість stdout (із правами доступу 0600)", + "forceOpt": "Підтвердити, що ви розумієте: це виведе/запише секрети відкритим текстом", + "warning": "⚠ Це виведе/запише РОЗШИФРОВАНІ ключі API й токени OAuth відкритим текстом. Переконайтеся, що ваш екран, історія команд оболонки та будь-який вихідний файл недоступні стороннім.", + "confirmHeading": "⚠ ПОПЕРЕДЖЕННЯ: ця команда експортує РОЗШИФРОВАНІ облікові дані провайдера відкритим текстом", + "confirmBody": "Ця команда розшифровує та виводить/записує apiKey, accessToken, refreshToken і\nidToken для вибраних підключень. Вважайте ці дані секретними.", + "confirmFooter": "Щоб підтвердити, виконайте:\n omniroute auth export --force", + "missingKey": "Для експорту облікових даних потрібен STORAGE_ENCRYPTION_KEY.", + "notFound": "Підключення не знайдено: {id}", + "invalidFormat": "Неприпустимий формат: {format}. Використовуйте json або env." + }, + "stream": { + "description": "Потоково передавати відповідь чату з режимами перевірки SSE", + "file": "Прочитати запит із файлу", + "stdin": "Прочитати запит зі stdin", + "model": "Ідентифікатор моделі (за замовчуванням: auto)", + "system": "Системний запит", + "combo": "Примусово вибрати певну комбінацію за назвою", + "max_tokens": "Максимальна кількість токенів у відповіді", + "responses_api": "Використовувати /v1/responses замість /v1/chat/completions", + "raw": "Виводити необроблені рядки SSE у міру отримання", + "debug": "Виводити інформацію про час обробки кожного фрагмента в stderr", + "save": "Зберігати всі події SSE у файл .jsonl", + "error": { + "empty_prompt": "Помилка: запит є обов’язковим (позиційний аргумент, --file або --stdin)" + } + }, + "usage": { + "description": "Аналітика використання, бюджети, квоти та журнали", + "analytics": { + "description": "Показати агреговану аналітику використання", + "period": "Період: 1d|7d|30d|90d|ytd|all (за замовчуванням: 30d)", + "provider": "Фільтрувати за ID провайдера" + }, + "budget": { + "description": "Керувати бюджетами витрат", + "set": { + "scope": "Область дії бюджету (за замовчуванням: global)", + "period": "Період бюджету: daily|weekly|monthly (за замовчуванням: monthly)" + } + }, + "quota": { + "description": "Показати використання квоти провайдера", + "provider": "Фільтрувати за ID провайдера", + "check": "Показати, чи доступна квота для нового запиту" + }, + "logs": { + "description": "Показати журнали викликів запитів", + "limit": "Кількість записів журналу для повернення (за замовчуванням: 100)", + "search": "Пошуковий запит для фільтрування журналів", + "since": "Повернути журнали, починаючи з цієї часової позначки", + "follow": "Безперервно відстежувати нові записи журналу", + "api_key": "Фільтрувати журнали за ключем API" + }, + "utilization": { + "description": "Показати показники використання ключів API", + "api_key": "Фільтрувати за ключем API" + }, + "history": { + "description": "Показати історію запитів", + "limit": "Кількість записів історії (за замовчуванням: 100)" + }, + "proxy_logs": { + "description": "Показати журнали запитів на рівні проксі", + "limit": "Кількість записів журналу проксі (за замовчуванням: 100)" + } + }, + "cost": { + "description": "Показати звіт про витрати з розподілом за провайдером, моделлю, комбінацією або ключем API", + "period": "Період: 1d|7d|30d|90d|ytd|all (за замовчуванням: 30d)", + "since": "Дата початку (формат ISO, наприклад 2026-01-01) — перевизначає --period", + "until": "Дата завершення (формат ISO)", + "group_by": "Групувати результати за: provider|model|api-key|combo|day (за замовчуванням: provider)", + "api_key_filter": "Фільтрувати за певним ключем API", + "limit": "Максимальна кількість рядків для показу (за замовчуванням: 100)" + }, + "simulate": { + "description": "Імітація маршрутизації без виконання запиту — показати, яких провайдерів було б вибрано, не звертаючись до висхідного сервера", + "file": "Завантажити повне тіло запиту з файлу JSON", + "model": "ID моделі (за замовчуванням: auto)", + "combo": "Примусово вибрати певну комбінацію за назвою", + "reasoning": "Рівень зусиль для міркування (low|medium|high)", + "thinking": "Бюджет токенів для розширеного міркування", + "explain": "Вивести дерево резервних варіантів і діапазон вартості в stderr", + "noCombo": "Відповідної комбінації не знайдено. Налаштуйте її за допомогою: omniroute combo create" + }, + "chat": { + "description": "Надіслати одноразовий запит чату до OmniRoute", + "file": "Прочитати запит із файлу", + "stdin": "Прочитати запит зі стандартного вводу", + "system": "Системний запит", + "model": "Ідентифікатор моделі (типово: auto)", + "max_tokens": "Максимальна кількість токенів у відповіді", + "temperature": "Температура вибірки (0–2)", + "top_p": "Ядерна вибірка Top-p", + "reasoning_effort": "Рівень зусиль для міркування (low|medium|high)", + "thinking_budget": "Бюджет токенів для розширеного мислення", + "combo": "Примусово використати певну комбінацію за назвою", + "responses_api": "Використовувати /v1/responses замість /v1/chat/completions", + "stream": "Передавати відповідь поступово", + "no_history": "Не зберігати в ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Помилка: запит є обов’язковим (позиційний аргумент, --file або --stdin)" + } + }, + "serve": { + "description": "Запустити сервер OmniRoute (типова дія)", + "starting": "Запуск сервера OmniRoute на порту {port}...", + "ready": "Готово за адресою http://localhost:{port}", + "stopping": "Зупинка сервера (PID {pid})...", + "stopped": "Сервер зупинено.", + "notRunning": "Сервер не запущено.", + "port": "Порт для прослуховування (типово: 20128)", + "no_open": "Не відкривати браузер автоматично", + "daemon": "Запустити сервер як фоновий демон", + "log": "Показувати журнали сервера безпосередньо", + "no_recovery": "Вимкнути автоматичний перезапуск у разі аварійного завершення (режим налагодження)", + "max_restarts": "Максимальна кількість перезапусків після аварійного завершення протягом 30 с, перш ніж припинити спроби (типово: 2)", + "tray": "Запустити в системному треї (лише для настільних систем, за бажанням)", + "no_tray": "Вимкнути значок у системному треї", + "ready_timeout": "Час очікування перевірки готовності в мс (також OMNIROUTE_READY_TIMEOUT_MS, типово: 60000)", + "tls_cert": "Шлях до сертифіката TLS (PEM) для обслуговування HTTPS (також OMNIROUTE_TLS_CERT)", + "tls_key": "Шлях до закритого ключа TLS (PEM) для обслуговування HTTPS (також OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Резервне копіювання", + "description": "Створити резервну копію даних OmniRoute", + "creating": "Створення резервної копії...", + "done": "Резервну копію збережено до {path}", + "noFiles": "Немає файлів для резервного копіювання (базу даних не ініціалізовано)", + "failed": "Не вдалося створити резервну копію: {error}", + "restoring": "Відновлення з {path}...", + "restored": "Відновлення завершено.", + "restoreDescription": "Відновити з резервної копії", + "listTitle": "Доступні резервні копії", + "noBackups": "Резервних копій не знайдено.", + "notFound": "Резервну копію не знайдено: {name}", + "confirmRestore": "Перезаписати поточні дані резервною копією від {ts}?", + "createDescription": "Створити резервну копію даних OmniRoute", + "nameOpt": "Власна назва резервної копії", + "cloudOpt": "Завантажити резервну копію до хмарного сховища", + "encryptOpt": "Зашифрувати резервну копію за допомогою AES-256-GCM", + "keyFileOpt": "Шлях до файлу, що містить парольну фразу для шифрування", + "excludeOpt": "Виключити файли, що відповідають шаблону (можна вказувати кілька разів)", + "retentionOpt": "Зберігати лише останні N резервних копій", + "passphrasePrompt": "Парольна фраза для шифрування:", + "noPassphrase": "Для зашифрованої резервної копії потрібна парольна фраза.", + "cloudFailed": "Попередження: не вдалося завантажити до хмарного сховища. Локальну резервну копію збережено.", + "cloudUploaded": "Резервну копію завантажено до хмарного сховища: {url}", + "auto": { + "title": "Розклад резервного копіювання", + "enableDescription": "Увімкнути автоматичне резервне копіювання за розкладом", + "disableDescription": "Вимкнути автоматичне резервне копіювання за розкладом", + "statusDescription": "Показати поточний стан розкладу резервного копіювання", + "cronOpt": "Cron-вираз для розкладу (за замовчуванням: щодня о 3:00)", + "enabled": "Автоматичне резервне копіювання ввімкнено (cron: {cron}).", + "hint": "Розклад зчитується командою omniroute serve під час запуску.", + "disabled": "Автоматичне резервне копіювання вимкнено.", + "notConfigured": "Розклад резервного копіювання не налаштовано." + } + }, + "health": { + "description": "Перевірити працездатність сервера та стан компонентів", + "noServer": "Сервер не запущено. Запустіть його командою: omniroute serve", + "title": "Працездатність", + "status": "Стан: {status}", + "uptime": "Час роботи: {uptime}", + "requests": "Запити (24 год): {count}", + "cost": "Вартість (24 год): ${cost}" + }, + "quota": { + "description": "Показати використання квоти провайдера", + "noServer": "Сервер не запущено. Запустіть його командою: omniroute serve", + "noData": "Інформація про квоту недоступна." + }, + "cache": { + "description": "Керувати кешем відповідей", + "noServer": "Сервер не запущено. Запустіть його командою: omniroute serve", + "cleared": "Кеш очищено.", + "clearFailed": "Не вдалося очистити кеш." + }, + "redis": { + "description": "Запустити локальний контейнер Redis одним натисканням (Podman або Docker) для кешування та відстеження квот OmniRoute" + }, + "test": { + "description": "Перевірити з’єднання з провайдером", + "noServer": "Сервер не запущено. Запустіть його командою: omniroute serve", + "testing": "Тестування {provider} / {model}...", + "passed": "З’єднання успішне!", + "failed": "Не вдалося встановити з’єднання: {error}", + "allProvidersOpt": "Протестувати всіх налаштованих постачальників", + "latencyOpt": "Показати вимірювання затримки (сер./мін./макс. мс)", + "repeatOpt": "Повторити тест N разів і узагальнити результати", + "compareOpt": "Моделі для порівняння, розділені комами (наприклад, gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Зберегти результати у файл JSON", + "saved": "Результати збережено до {path}", + "compareTitle": "Порівняння моделей", + "compareMinTwo": "Для --compare потрібні щонайменше дві моделі (розділені комами)", + "noProviders": "Немає налаштованих постачальників. Додайте постачальника командою: omniroute keys add" + }, + "update": { + "checking": "Перевірка оновлень...", + "upToDate": "Уже встановлено найновішу версію ({version}).", + "available": "Доступне оновлення: {current} → {latest}", + "installing": "Установлення {latest}...", + "done": "Оновлено до {latest}. Перезапустіть сервер, щоб застосувати оновлення." + }, + "mcp": { + "title": "Сервер MCP", + "running": "Сервер MCP працює ({transport})", + "stopped": "Сервер MCP зупинено.", + "restarted": "Сервер MCP перезапущено.", + "stoppedHint": "Виконайте `omniroute mcp enable`, щоб увімкнути його.", + "enabled": "Сервер MCP увімкнено.", + "disabled": "Сервер MCP вимкнено.", + "enable": { + "description": "Увімкнути сервер MCP", + "transport": "Транспорт для використання: stdio|sse|streamable-http" + }, + "disable": { + "description": "Вимкнути сервер MCP" + }, + "call": { + "description": "Безпосередньо викликати інструмент MCP", + "args": "Об’єкт аргументів JSON (вбудований)", + "args_file": "Шлях до файлу аргументів JSON", + "stream": "Використовувати потокову кінцеву точку (/api/mcp/stream)", + "scope": "Необхідна область доступу (можна повторювати, наприклад read:health)" + }, + "scopes": { + "description": "Показати доступні області доступу MCP", + "tool": "Показати області доступу, необхідні для певного інструмента" + }, + "tools": { + "description": "Переглянути інструменти MCP", + "list": { + "description": "Показати всі інструменти MCP", + "scope": "Фільтрувати за областю доступу" + }, + "info": { + "description": "Показати метадані інструмента MCP" + }, + "schema": { + "description": "Показати схему JSON вхідних і вихідних даних для інструмента MCP", + "io": "Тип схеми: input|output (за замовчуванням: input)" + } + }, + "audit": { + "description": "Журнал аудиту MCP (псевдонім для audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Показати доступні навички A2A з картки агента" + }, + "invoke": { + "description": "Викликати навичку A2A та повернути ідентифікатор завдання", + "input": "Вхідний об’єкт JSON", + "input_file": "Шлях до вхідного файлу JSON", + "wait": "Очікувати завершення завдання перед поверненням", + "timeout": "Час очікування завершення в мс (за замовчуванням: 60000)" + }, + "tasks": { + "description": "Керувати завданнями A2A", + "list": { + "status": "Фільтрувати за статусом", + "skill": "Фільтрувати за ідентифікатором навички" + }, + "watch": { + "description": "Опитувати статус завдання до завершення" + }, + "stream": { + "description": "Транслювати події виконання завдання через SSE" + }, + "logs": { + "description": "Показати повідомлення та артефакти завдання" + } + } + }, + "policy": { + "description": "Керувати політиками авторизації OmniRoute", + "list": { + "description": "Показати список політик", + "kind": "Фільтрувати за типом (allow|deny|rate-limit|cost-cap)", + "scope": "Фільтрувати за областю дії (global|api-key|provider)" + }, + "get": { + "description": "Отримати відомості про політику за ідентифікатором" + }, + "create": { + "description": "Створити політику з файлу JSON", + "file": "Шлях до файлу JSON політики" + }, + "update": { + "description": "Оновити політику з файлу JSON", + "file": "Шлях до файлу JSON політики" + }, + "delete": { + "description": "Видалити політику за ідентифікатором", + "yes": "Пропустити запит на підтвердження" + }, + "evaluate": { + "description": "Пробне оцінювання політики (код виходу 0=дозволено, 4=заборонено)", + "api_key": "Ключ API для оцінювання", + "action": "Дія для перевірки (наприклад, chat, embed, admin)", + "resource": "Шлях до ресурсу або ідентифікатор", + "context": "Додатковий контекст як об’єкт JSON" + }, + "export": { + "description": "Експортувати всі політики у файл JSON" + }, + "import": { + "description": "Імпортувати політики з файлу JSON", + "overwrite": "Перезаписати наявні політики з таким самим ідентифікатором" + } + }, + "compression": { + "description": "Налаштувати та перевірити конвеєр стиснення OmniRoute", + "status": { + "description": "Показати поточний стан і налаштування стиснення" + }, + "configure": { + "description": "Налаштувати параметри стиснення", + "engine": "Рушій стиснення (caveman|rtk|hybrid|none)", + "caveman_agg": "Агресивність Caveman 0.0–1.0", + "rtk_budget": "Бюджет токенів RTK", + "language_pack": "Мовний пакет для активації" + }, + "engine": { + "description": "Отримати або встановити активний рушій стиснення" + }, + "combos": { + "description": "Керувати статистикою комбінацій стиснення" + }, + "rules": { + "description": "Керувати правилами стиснення", + "add": { + "pattern": "Шаблон для зіставлення (regex або поле:шаблон)", + "action": "Дія: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Показати доступні мовні пакети стиснення" + }, + "preview": { + "description": "Попередньо переглянути ефект стиснення для запиту", + "file": "Шлях до JSON-файлу запиту" + } + }, + "tunnel": { + "title": "Тунелі", + "listDescription": "Показати активні тунелі", + "createDescription": "Створити тунель", + "created": "Тунель створено: {url}", + "stopped": "Тунель зупинено.", + "confirmStop": "Зупинити тунель {id}?", + "stopDescription": "Зупинити тунель", + "statusDescription": "Показати докладний стан тунелю", + "logsDescription": "Показати журнали тунелю", + "infoDescription": "Показати відомості про конфігурацію тунелю", + "rotateDescription": "Згенерувати нову URL-адресу тунелю", + "tailOpt": "Кількість рядків журналу для показу", + "typeRequired": "Потрібно вказати тип тунелю.", + "noLogs": "Журнали недоступні.", + "notAvailable": "Інформація про тунель недоступна.", + "noTunnels": "Немає активних тунелів.", + "infoTitle": "Інформація про тунель: {type}", + "rotated": "URL-адресу тунелю оновлено: {url}", + "confirmRotate": "Оновити URL-адресу тунелю {type}? (буде згенеровано нову URL-адресу)" + }, + "stop": { + "description": "Зупинити сервер OmniRoute", + "stopping": "Зупинення сервера (PID {pid})...", + "stopped": "Сервер зупинено.", + "notRunning": "Жоден сервер не запущено.", + "portFallback": "Файл PID не знайдено, спроба зупинення за портом..." + }, + "restart": { + "description": "Перезапустити сервер OmniRoute", + "restarting": "Перезапуск сервера OmniRoute..." + }, + "dashboard": { + "description": "Відкрити панель керування OmniRoute у браузері", + "opening": "Відкриття панелі керування за адресою {url}", + "urlOnly": "Вивести URL-адресу панелі керування, не відкриваючи браузер", + "tui": "Відкрити інтерактивну панель керування TUI (термінальний інтерфейс, 7 вкладок)" + }, + "models": { + "description": "Показати доступні моделі (потрібен сервер)", + "search": "Фільтрувати моделі за ідентифікатором, назвою, провайдером або описом", + "noServer": "Сервер не запущено. Запустіть командою: omniroute serve", + "noModels": "Моделей не знайдено." + }, + "audit": { + "description": "Доступ до журналів аудиту відповідності та MCP", + "source": "Джерело журналу: all|compliance|mcp (за замовчуванням: all)", + "since": "Повернути записи, починаючи з цієї часової мітки (ISO 8601)", + "until": "Повернути записи до цієї часової мітки (ISO 8601)", + "tail": { + "description": "Показати останні записи журналу аудиту", + "follow": "Безперервно відстежувати нові записи (опитування кожні 2 с)", + "limit": "Максимальна кількість записів для показу (за замовчуванням: 100)" + }, + "search": { + "description": "Шукати записи журналу аудиту за ключовим словом", + "limit": "Максимальна кількість результатів (за замовчуванням: 200)", + "actor": "Фільтрувати за ідентифікатором виконавця", + "action": "Фільтрувати за назвою дії" + }, + "export": { + "description": "Експортувати журнал аудиту у файл", + "format": "Формат виведення: jsonl|csv (за замовчуванням: jsonl)" + }, + "stats": { + "description": "Показати статистику журналу аудиту", + "period": "Період часу: 1d|7d|30d (за замовчуванням: 7d)" + }, + "get": { + "description": "Отримати один запис журналу аудиту за ідентифікатором" + } + }, + "skills": { + "description": "Керувати навичками OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Показати список установлених навичок", + "type": "Фільтрувати за типом (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Показати лише ввімкнені навички", + "disabled": "Показати лише вимкнені навички", + "api_key": "Фільтрувати за ключем API" + }, + "get": { + "description": "Отримати докладні відомості про навичку за ідентифікатором" + }, + "install": { + "description": "Установити навичку з файлу або URL", + "from_file": "Шлях до файлу визначення навички у форматі JSON", + "from_url": "URL віддаленого визначення навички", + "type": "Тип навички (sandbox|custom|hybrid)", + "enable": "Увімкнути навичку після встановлення" + }, + "enable": { + "description": "Увімкнути навичку за ідентифікатором" + }, + "disable": { + "description": "Вимкнути навичку за ідентифікатором", + "yes": "Пропустити запит на підтвердження" + }, + "delete": { + "description": "Видалити навичку за ідентифікатором", + "yes": "Пропустити запит на підтвердження" + }, + "execute": { + "description": "Виконати навичку за ідентифікатором", + "input": "Вхідний об’єкт JSON", + "input_file": "Шлях до вхідного файлу JSON", + "timeout": "Час очікування виконання в мс (за замовчуванням: 30000)" + }, + "executions": { + "description": "Показати історію виконання навичок", + "skill": "Фільтрувати за ID навички", + "limit": "Максимальна кількість результатів (за замовчуванням: 50)", + "status": "Фільтрувати за статусом (running|completed|failed)" + }, + "skillssh": { + "description": "Керувати навичками, установленими через SSH" + }, + "marketplace": { + "description": "Переглядати та встановлювати навички з маркетплейсу" + }, + "mp": { + "search": { + "description": "Шукати пакети в маркетплейсі", + "category": "Фільтрувати за категорією", + "tag": "Фільтрувати за тегом", + "limit": "Максимальна кількість результатів (за замовчуванням: 30)", + "sort": "Сортувати за: downloads|rating|recent" + }, + "info": { + "description": "Показати відомості про пакет і файл readme" + }, + "install": { + "description": "Установити пакет із маркетплейсу", + "version": "Версія пакета (за замовчуванням: latest)", + "enable": "Увімкнути після встановлення", + "yes": "Пропустити запит на підтвердження" + }, + "categories": { + "description": "Показати список категорій маркетплейсу" + }, + "featured": { + "description": "Показати рекомендовані пакети маркетплейсу" + } + } + }, + "memory": { + "description": "Керувати розмовною пам’яттю OmniRoute (FTS5 + вектор)", + "search": { + "description": "Шукати записи пам’яті за семантичним запитом", + "type": "Фільтрувати за типом пам’яті (user|feedback|project|reference)", + "limit": "Максимальна кількість результатів (за замовчуванням: 20)", + "api_key": "Фільтрувати за API key", + "token_budget": "Обмежити загальну кількість токенів у результатах" + }, + "add": { + "description": "Додати новий запис пам’яті", + "content": "Текстовий вміст пам’яті", + "file": "Прочитати вміст із файлу", + "type": "Тип пам’яті (за замовчуванням: user)", + "metadata": "Об’єкт метаданих JSON", + "api_key": "Пов’язати з API key" + }, + "clear": { + "description": "Видалити записи пам’яті, що відповідають фільтрам", + "type": "Фільтрувати за типом", + "older": "Видалити записи, старіші за вказаний період (30d, 6m, 1y)", + "api_key": "Фільтрувати за API key", + "yes": "Пропустити запит на підтвердження" + }, + "list": { + "description": "Показати список записів пам’яті без ранжування за пошуком", + "type": "Фільтрувати за типом", + "limit": "Максимальна кількість результатів (за замовчуванням: 100)", + "api_key": "Фільтрувати за API key" + }, + "get": { + "description": "Отримати окремий запис пам’яті за ID" + }, + "delete": { + "description": "Видалити запис пам’яті за ID", + "yes": "Пропустити запит на підтвердження" + }, + "health": { + "description": "Показати стан підсистеми пам’яті (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Керувати підключеннями постачальників OAuth", + "providers": { + "description": "Показати постачальників із підтримкою OAuth і типи їхніх потоків" + }, + "start": { + "description": "Розпочати потік авторизації OAuth для постачальника", + "provider": "Ідентифікатор постачальника (gemini, copilot, cursor, …)", + "no_browser": "Вивести лише URL — не відкривати браузер", + "import_system": "Автоматично імпортувати облікові дані з локальної конфігурації системи", + "social": "Постачальник входу через соцмережі (google|github) — обов’язковий для kiro", + "timeout": "Час очікування авторизації в мс (типово: 300000)" + }, + "status": { + "description": "Показати активні підключення OAuth", + "provider": "Фільтрувати за ідентифікатором постачальника" + }, + "revoke": { + "description": "Відкликати підключення OAuth", + "provider": "Ідентифікатор постачальника, підключення якого потрібно відкликати", + "connection_id": "Відкликати конкретне підключення за ідентифікатором", + "yes": "Пропустити запит на підтвердження" + } + }, + "cloud": { + "description": "Керувати завданнями хмарних ШІ-агентів (codex, devin, jules)", + "agents": { + "description": "Показати доступних хмарних агентів" + }, + "agent": { + "description": "Керувати завданнями хмарного агента {agent}", + "auth": { + "description": "Авторизувати {agent} через OAuth" + } + }, + "task": { + "description": "Керувати завданнями хмарного агента", + "create": { + "description": "Створити нове завдання агента", + "title": "Назва завдання (типово — перші 80 символів запиту)", + "prompt": "Текст запиту завдання", + "prompt_file": "Прочитати запит із файлу", + "repo": "URL репозиторію для клонування в межах завдання", + "branch": "Назва гілки для використання", + "metadata": "Об’єкт метаданих JSON" + }, + "list": { + "description": "Показати завдання агента", + "status": "Фільтрувати за статусом (running|completed|failed|cancelled)", + "limit": "Максимальна кількість результатів (типово: 50)" + }, + "get": { + "description": "Отримати відомості про завдання за ідентифікатором" + }, + "status": { + "description": "Вивести статус завдання (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Скасувати виконуване завдання", + "yes": "Пропустити запит на підтвердження" + }, + "approve": { + "description": "Схвалити план агента, щоб розпочати виконання" + }, + "message": { + "description": "Надіслати повідомлення виконуваному завданню" + } + }, + "sources": { + "description": "Показати вихідні файли, створені завданням" + } + }, + "eval": { + "description": "Керувати наборами і запусками оцінювання", + "suites": { + "description": "Керувати наборами оцінювання", + "list": { + "description": "Список наборів оцінювання" + }, + "get": { + "description": "Отримати відомості про набір оцінювання за ID" + }, + "create": { + "description": "Створити набір оцінювання з JSON-файлу", + "file": "Шлях до JSON-файлу з визначенням набору" + } + }, + "run": { + "description": "Запустити оцінювання для набору", + "model": "ID моделі для оцінювання (за замовчуванням: auto)", + "combo": "Примусово вибрати певну комбінацію за назвою", + "concurrency": "Кількість одночасно оброблюваних зразків (за замовчуванням: 4)", + "tag": "Додати тег до цього запуску для подальшої фільтрації", + "watch": "Відстежувати перебіг запуску до завершення" + }, + "list": { + "description": "Список запусків оцінювання", + "suite": "Фільтрувати за ID набору", + "status": "Фільтрувати за статусом", + "since": "Повернути запуски, починаючи з цієї часової позначки", + "limit": "Максимальна кількість результатів (за замовчуванням: 50)" + }, + "get": { + "description": "Отримати відомості про запуск оцінювання за ID" + }, + "results": { + "description": "Показати результати зразків для запуску оцінювання", + "failed": "Показати лише зразки з помилками" + }, + "cancel": { + "description": "Скасувати поточний запуск оцінювання", + "yes": "Пропустити запит на підтвердження" + }, + "scorecard": { + "description": "Показати таблицю оцінок для завершеного запуску оцінювання" + } + }, + "webhooks": { + "description": "Керувати вебхуками OmniRoute", + "events": { + "description": "Показати всі доступні типи подій вебхуків" + }, + "list": { + "description": "Показати налаштовані вебхуки" + }, + "get": { + "description": "Отримати відомості про вебхук за ID" + }, + "add": { + "description": "Зареєструвати новий вебхук", + "url": "URL призначення", + "events": "Список типів подій, розділених комами", + "secret": "Секретний ключ для підпису HMAC", + "header": "Додатковий заголовок у форматі key=value (можна вказувати кілька разів)", + "no_enabled": "Створити вебхук у вимкненому стані" + }, + "update": { + "description": "Оновити наявний вебхук", + "enabled": "Установити стан увімкнення (true|false)" + }, + "remove": { + "description": "Видалити вебхук", + "yes": "Пропустити запит на підтвердження" + }, + "test": { + "description": "Надіслати тестову подію до вебхука", + "event": "Тип події для імітації (за замовчуванням: request.completed)" + } + }, "program": { "description": "OmniRoute — Розумний AI-маршрутизатор з автоматичним перемиканням", "version": "Вивести версію та вийти", @@ -26,7 +832,509 @@ "context": "Контекст/профіль сервера для цієї команди", "lang": "Встановити мову відображення CLI (замінює OMNIROUTE_LANG)" }, - "redis": { - "description": "Запустити локальний контейнер Redis одним натисканням (Podman або Docker) для кешування та відстеження квот OmniRoute" + "files": { + "description": "Керувати файлами (завантаження, список, отримання, завантаження на пристрій, видалення)", + "list": { + "purpose": "Фільтрувати за призначенням", + "limit": "Максимальна кількість результатів" + }, + "get": { + "description": "Отримати метадані файлу" + }, + "upload": { + "description": "Завантажити файл", + "purpose": "Призначення файлу (batch, assistants, fine-tune)" + }, + "content": { + "description": "Завантажити вміст файлу", + "out": "Зберегти за шляхом (за замовчуванням: stdout)" + }, + "delete": { + "yes": "Пропустити підтвердження" + } + }, + "batches": { + "description": "Керування пакетними завданнями, сумісними з OpenAI", + "list": { + "status": "Фільтрувати за статусом", + "limit": "Максимальна кількість результатів" + }, + "create": { + "description": "Створити пакетне завдання", + "inputFile": "Ідентифікатор вхідного файлу", + "endpoint": "Цільова кінцева точка", + "window": "Вікно виконання", + "metadata": "Додати метадані key=value" + }, + "submit": { + "description": "Завантажити файл JSONL і створити пакетне завдання", + "jsonl": "Шлях до файлу JSONL", + "endpoint": "Цільова кінцева точка", + "wait": "Очікувати на завершення" + }, + "cancel": { + "yes": "Пропустити підтвердження" + }, + "wait": { + "timeout": "Час очікування в мс" + }, + "output": { + "out": "Зберегти результат за шляхом" + }, + "errors": { + "out": "Зберегти помилки за шляхом" + } + }, + "translator": { + "description": "Перетворювати тіла запитів між форматами LLM", + "detect": { + "description": "Визначити формат тіла запиту" + }, + "translate": { + "description": "Перетворити тіло запиту з одного формату в інший" + }, + "send": { + "description": "Перетворити й надіслати до upstream-сервера" + }, + "stream": { + "description": "Перетворювати тіло потокового запиту" + }, + "from": "Вихідний формат (openai|anthropic|gemini|cohere)", + "to": "Цільовий формат (openai|anthropic|gemini|cohere)", + "file": "Шлях до JSON-файлу з тілом запиту", + "out": "Зберегти результат у файл", + "model": "Перевизначити модель", + "history": { + "limit": "Максимальна кількість результатів" + } + }, + "pricing": { + "description": "Керування даними про ціни для моделей", + "sync": { + "description": "Синхронізувати ціни з upstream-джерел", + "provider": "Фільтрувати за провайдером", + "force": "Примусово повторити синхронізацію" + }, + "list": { + "provider": "Фільтрувати за провайдером", + "model": "Фільтрувати за моделлю", + "limit": "Максимальна кількість результатів" + }, + "defaults": { + "description": "Керувати цінами за замовчуванням", + "input": "Вартість вхідних даних за 1 млн токенів (USD)", + "output": "Вартість вихідних даних за 1 млн токенів (USD)", + "cacheRead": "Вартість читання кешу за 1 млн токенів (USD)", + "cacheWrite": "Вартість запису в кеш за 1 млн токенів (USD)" + }, + "diff": { + "description": "Показувати відхилення від цін вищого рівня", + "model": "Фільтрувати за моделлю" + } + }, + "radar": { + "description": "Перевіряти та синхронізувати локальні канали каталогу Radar", + "status": "Показувати локальні налаштування Radar і стан кешу каналів", + "sync": "Синхронізувати каталог, реферальні дані, пропозиції та Intel через локальний сервер" + }, + "resilience": { + "description": "Перевіряти механізми відмовостійкості та керувати ними", + "status": { + "provider": "Фільтрувати за провайдером" + }, + "breakers": { + "provider": "Фільтрувати за провайдером" + }, + "cooldowns": { + "provider": "Фільтрувати за провайдером", + "connectionId": "Фільтрувати за ідентифікатором підключення" + }, + "lockouts": { + "provider": "Фільтрувати за провайдером", + "model": "Фільтрувати за моделлю" + }, + "reset": { + "description": "Скинути стан запобіжника/періоду очікування", + "provider": "Провайдер для скидання", + "connectionId": "Ідентифікатор підключення для скидання", + "model": "Модель для скидання блокування", + "allCooldowns": "Скинути всі періоди очікування для провайдера", + "yes": "Пропустити підтвердження" + }, + "profile": { + "description": "Керувати профілем відмовостійкості", + "name": "Назва профілю" + }, + "config": { + "description": "Керувати конфігурацією відмовостійкості", + "threshold": "Порогове значення збоїв", + "resetTimeout": "Час очікування до скидання в мс", + "baseCooldown": "Базовий період очікування в мс" + } + }, + "nodes": { + "description": "Керувати вузлами провайдерів (кінцевими точками)", + "list": { + "provider": "Фільтрувати за провайдером", + "enabled": "Показувати лише ввімкнені вузли" + }, + "add": { + "provider": "Назва провайдера", + "baseUrl": "Базова URL-адреса вузла", + "name": "Назва вузла", + "weight": "Вага балансування навантаження", + "region": "Тег регіону", + "authHeader": "Власний заголовок автентифікації (key=value)" + }, + "update": { + "baseUrl": "Нова базова URL-адреса", + "name": "Нова назва", + "weight": "Нова вага", + "region": "Новий регіон", + "enabled": "Увімкнути або вимкнути (true|false)" + }, + "remove": { + "yes": "Пропустити підтвердження" + }, + "validate": { + "baseUrl": "URL для перевірки", + "provider": "Провайдер, за яким виконувати перевірку" + }, + "test": { + "description": "Надіслати тестовий запит до вузла" + }, + "metrics": { + "description": "Показати метрики вузла", + "period": "Період часу (наприклад, 24h, 7d)" + } + }, + "context": { + "description": "Налаштувати конвеєр контекстної інженерії (Caveman, RTK)", + "analytics": { + "period": "Період часу (наприклад, 7d, 30d)" + }, + "caveman": { + "description": "Керувати компресором контексту Caveman", + "config": { + "description": "Показати або оновити конфігурацію Caveman", + "aggressiveness": "Агресивність 0.0–1.0", + "maxShrinkPct": "Максимальний відсоток скорочення", + "preserveTags": "Розділені комами теги, які потрібно зберегти" + } + }, + "rtk": { + "description": "Керувати оптимізатором контексту RTK", + "config": { + "description": "Показати або оновити конфігурацію RTK", + "tokenBudget": "Бюджет токенів для RTK", + "reservePct": "Відсоток резерву" + }, + "filters": { + "description": "Керувати фільтрами RTK", + "pattern": "Шаблон фільтра (регулярний вираз)", + "priority": "Пріоритет фільтра (за замовчуванням: 100)", + "action": "Дія фільтра: drop|shrink|replace", + "yes": "Пропустити підтвердження" + }, + "test": { + "file": "Шлях до JSON-файлу запиту" + } + }, + "combos": { + "description": "Контекстно-залежне керування комбінаціями" + } + }, + "sessions": { + "description": "Переглядати активні сеанси та керувати ними", + "list": { + "user": "Фільтрувати за користувачем", + "kind": "Фільтрувати за типом (dashboard|api-key|mcp|a2a)", + "active": "Показувати лише активні сеанси", + "limit": "Максимальна кількість результатів (за замовчуванням: 100)" + }, + "expire": { + "yes": "Пропустити підтвердження" + }, + "expireAll": { + "user": "Користувач, чиї сеанси потрібно завершити", + "yes": "Пропустити підтвердження" + } + }, + "tags": { + "description": "Керувати тегами ресурсів", + "add": { + "color": "Колір тегу (шістнадцятковий код або назва)", + "description": "Опис тегу" + }, + "remove": { + "yes": "Пропустити підтвердження" + }, + "assign": { + "tag": "Назва тегу", + "to": "Цільовий ресурс у форматі type:id (наприклад, provider:openai)" + }, + "unassign": { + "tag": "Назва тегу", + "from": "Вихідний ресурс у форматі type:id" + } + }, + "openapi": { + "description": "Отримати доступ до специфікації OmniRoute OpenAPI та протестувати її", + "dump": { + "description": "Вивести специфікацію OpenAPI у stdout або файл", + "format": "Формат виведення: yaml|json (за замовчуванням: yaml)", + "out": "Зберегти за шляхом до файлу" + }, + "validate": { + "description": "Перевірити специфікацію OpenAPI" + }, + "try": { + "description": "Протестувати кінцеву точку API за допомогою специфікації", + "method": "Метод HTTP (за замовчуванням: GET)", + "body": "Шлях до JSON-файлу з тілом запиту", + "query": "Параметр запиту у форматі key=value (можна повторювати)", + "header": "Заголовок у форматі key=value (можна повторювати)" + }, + "endpoints": { + "description": "Перелічити всі кінцеві точки API", + "search": "Фільтрувати за шляхом або описом" + }, + "paths": { + "description": "Перелічити всі шляхи API" + } + }, + "combo": { + "title": "Комбінації", + "switched": "Активна комбінація: {name}", + "created": "Комбінацію створено: {name}", + "deleted": "Комбінацію видалено: {name}", + "noCombos": "Комбінації не налаштовано.", + "confirmDelete": "Видалити комбінацію {name}?", + "suggest": { + "description": "Запропонувати найкращу комбінацію для завдання за допомогою оцінювання ШІ", + "task": "Опис завдання", + "maxCost": "Максимальна вартість одного запиту в USD", + "maxLatencyMs": "Максимальна затримка в мілісекундах", + "weights": "Ваги оцінювання у форматі JSON, наприклад {\"latency\":0.7,\"cost\":0.3}", + "top": "Кількість найкращих кандидатів для показу (за замовчуванням: 5)", + "explain": "Вивести обґрунтування у stderr", + "switch": "Активувати комбінацію з найвищим рейтингом" + } + }, + "oneproxy": { + "description": "Керувати пулом висхідних проксі-серверів OneProxy", + "stats": { + "provider": "Фільтрувати за провайдером", + "period": "Період часу (за замовчуванням: 24h)" + }, + "fetch": { + "description": "Отримати проксі-сервери з пулу", + "count": "Кількість проксі-серверів для отримання (за замовчуванням: 1)", + "type": "Тип проксі: http|socks5 (за замовчуванням: http)" + }, + "rotate": { + "description": "Примусово змінити проксі-сервер", + "provider": "Провайдер, для якого потрібно виконати зміну", + "connectionId": "Ідентифікатор конкретного з’єднання для зміни" + }, + "config": { + "description": "Показати або оновити конфігурацію OneProxy", + "enabled": "Увімкнути пул проксі (true|false)", + "poolSize": "Розмір пулу", + "providerSource": "URL постачальника проксі", + "rotationPolicy": "Політика ротації: sticky|per-request|periodic" + }, + "pool": { + "description": "Показати поточний пул проксі з метриками" + } + }, + "open": { + "description": "Відкрити певну сторінку панелі OmniRoute у браузері", + "url": "Лише вивести URL, не відкривати браузер" + }, + "telemetry": { + "description": "Отримати доступ до агрегованих даних телеметрії", + "summary": { + "description": "Показати зведення агрегованої телеметрії", + "period": "Період часу: 24h|7d|30d (за замовчуванням: 24h)", + "compareTo": "Порівняти з попереднім періодом" + }, + "export": { + "description": "Експортувати події телеметрії у JSONL", + "out": "Шлях до вихідного файлу (за замовчуванням: telemetry.jsonl)", + "period": "Період часу для експорту (за замовчуванням: 7d)" + } + }, + "sync": { + "description": "Синхронізувати конфігурацію між екземплярами OmniRoute", + "push": { + "description": "Надіслати конфігурацію до хмари або віддаленого екземпляра", + "target": "Ціль (cloud або context:name)", + "bundle": "Частини пакета для синхронізації", + "dryRun": "Попередній перегляд без застосування" + }, + "pull": { + "description": "Отримати конфігурацію з хмари або віддаленого екземпляра", + "source": "Джерело (cloud або context:name)", + "merge": "Об’єднати з наявною конфігурацією", + "replace": "Замінити наявну конфігурацію", + "dryRun": "Попередній перегляд без застосування" + }, + "diff": { + "source": "Вихідний контекст", + "target": "Цільовий контекст" + }, + "bundle": { + "description": "Експортувати конфігурацію як файл пакета", + "include": "Частини для включення (через кому)" + }, + "import": { + "description": "Імпортувати файл пакета", + "dryRun": "Перевірити без застосування" + }, + "initialize": { + "fromCloud": "Ініціалізувати з хмарної резервної копії" + }, + "tokens": { + "description": "Керувати токенами синхронізації", + "create": { + "name": "Назва токена", + "scope": "Область дії токена", + "ttl": "Термін дії токена (наприклад, 30d)" + }, + "revoke": { + "yes": "Пропустити підтвердження" + } + }, + "resolve": { + "description": "Розв’язати конфлікти синхронізації в інтерактивному режимі" + } + }, + "config": { + "contexts": { + "description": "Керувати контекстами/профілями сервера (додати, використати, перелічити, показати, видалити, перейменувати, експортувати, імпортувати)" + }, + "lang": { + "description": "Керувати мовою інтерфейсу CLI", + "getDescription": "Показати код поточної активної мови", + "setDescription": "Установити мову інтерфейсу та зберегти її в конфігурації", + "listDescription": "Показати список усіх доступних мов", + "listTitle": "Доступні мови", + "current": "Мова: {code} ({name})", + "saved": "Установлено мову {code} ({name}).", + "noCode": "Потрібно вказати код мови. Виконайте 'omniroute config lang list', щоб переглянути доступні коди.", + "unknown": "Невідомий код мови: {code}. Виконайте 'omniroute config lang list', щоб переглянути доступні коди.", + "alreadySet": "Мову вже встановлено на {code}.", + "envHint": "Порада: ви також можете встановити OMNIROUTE_LANG={code} у своєму середовищі." + } + }, + "completion": { + "description": "Згенерувати або встановити скрипти автодоповнення для оболонки", + "zsh": "Вивести скрипт автодоповнення для zsh", + "bash": "Вивести скрипт автодоповнення для bash", + "fish": "Вивести скрипт автодоповнення для fish", + "install": "Глобально встановити скрипт автодоповнення для виявленої оболонки", + "refresh": "Оновити кеш комбінацій, провайдерів і моделей" + }, + "logs": { + "description": "Транслювати або експортувати журнали запитів", + "follow": "Транслювати журнали в реальному часі", + "filter": "Фільтрувати за рівнем (error,warn,info) — значення через кому", + "lines": "Кількість рядків для отримання", + "timeout": "Час очікування з’єднання в мс", + "baseUrl": "Базова URL-адреса API OmniRoute", + "requestId": "Фільтрувати за ідентифікатором запиту", + "apiKey": "Фільтрувати за ключем API", + "combo": "Фільтрувати за назвою комбінації", + "status": "Фільтрувати за кодом стану HTTP", + "durationMin": "Мінімальна тривалість запиту в мс", + "durationMax": "Максимальна тривалість запиту в мс", + "export": "Зберегти журнали у файл (json/jsonl/csv)", + "exported": "Журнали збережено до {path}", + "stopped": "Трансляцію журналів зупинено.", + "streamError": "Помилка трансляції журналів: {message}" + }, + "tray": { + "description": "Керувати піктограмою в системному треї", + "show": "Показати піктограму в треї (якщо сервер запущено з --tray)", + "hide": "Приховати піктограму в треї", + "quit": "Завершити роботу OmniRoute через трей" + }, + "autostart": { + "description": "Керувати автозапуском OmniRoute під час завантаження (Linux: служба користувача systemd)", + "enable": "Увімкнути автозапуск під час завантаження", + "disable": "Вимкнути автозапуск під час завантаження", + "toggle": "Перемкнути автозапуск під час завантаження", + "status": "Показати стан автозапуску" + }, + "runtime": { + "description": "Керування нативними залежностями середовища виконання", + "check": "Перевірити стан нативних залежностей у каталозі середовища виконання", + "repair": "Перевстановити нативні залежності в каталозі середовища виконання", + "repair_force": "Примусово перевстановити, навіть якщо вони справні", + "clean": "Видалити каталог середовища виконання (звільняє місце на диску)", + "clean_yes": "Пропустити підтвердження" + }, + "repl": { + "description": "Інтерактивний багатокроковий REPL з LLM", + "model": "Модель для використання (за замовчуванням: auto)", + "combo": "Назва комбінації для використання", + "system": "Системний промпт", + "resume": "Відновити збережений сеанс за назвою" + }, + "plugin": { + "description": "Керування плагінами CLI (omniroute-cmd-*)", + "list": "Показати встановлені плагіни", + "install": "Установити плагін із npm або локального шляху", + "remove": "Видалити встановлений плагін", + "info": "Показати відомості про встановлений плагін", + "search": "Шукати доступні плагіни в реєстрі npm", + "update": "Оновити встановлені плагіни", + "scaffold": "Створити каркас нового плагіна" + }, + "launch": { + "description": "Запустити Claude Code, спрямований на OmniRoute (локальний або віддалений, із --profile)", + "token": "Токен, який має надсилати клієнт Claude (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute недоступний на порту {port}. Запустіть його командою 'omniroute serve'.", + "notFound": "CLI 'claude' не знайдено в PATH." + }, + "run": { + "description": "Запустити підтримувану ціль CLI через OmniRoute" + }, + "setupClaude": { + "description": "Згенерувати профілі Claude Code у ~/.claude/profiles із каталогу моделей OmniRoute" + }, + "connect": { + "description": "Підключитися до віддаленого сервера OmniRoute і перейти у віддалений режим" + }, + "tokens": { + "description": "Керування токенами доступу CLI з обмеженою областю дії (віддалений режим)" + }, + "configure": { + "description": "Вибрати провайдера й модель з активного сервера та налаштувати підтримуваний локальний CLI" + }, + "launchCodex": { + "description": "Запустити Codex CLI, спрямований на OmniRoute (локальний або віддалений VPS)" + }, + "setupCodex": { + "description": "Згенерувати файли профілів у ~/.codex з актуального каталогу моделей OmniRoute" + }, + "packs": { + "description": "Керування необов’язковими пакетами середовища виконання (ML / автоматизація браузера)", + "listDescription": "Показати необов’язкові пакети та стан їх установлення", + "installDescription": "Установити необов’язковий пакет у DATA_DIR", + "verifyDescription": "Перевірити встановлені пакети за наданим індексом контрольних сум", + "removeDescription": "Видалити встановлений необов’язковий пакет", + "sourceOpt": "Каталог, що містить вміст пакетів та їхній індекс", + "warnNoIndex": "optional-packs.index.json не знайдено — установлення та перевірка недоступні в цій робочій копії (він постачається в пакетах для настільних систем)", + "errUnknown": "невідомий пакет: {name}", + "errNoIndex": "індекс пакетів не знайдено; передайте --source із каталогом, що містить пакет (у пакетах для настільних систем він постачається поруч із застосунком)", + "installed": "пакет \"{name}\" установлено та перевірено в {dir}", + "restartHint": "перезапустіть сервер OmniRoute (або настільний застосунок), щоб середовище виконання підхопило пакет", + "removed": "пакет «{name}» видалено", + "notInstalled": "пакет «{name}» не було встановлено", + "verifyOk": "усі встановлені пакети перевірено", + "verifyFailed": "не вдалося перевірити пакетів: {count}", + "noneInstalled": "не встановлено жодного необов’язкового пакета" } } diff --git a/bin/cli/locales/ur.json b/bin/cli/locales/ur.json index ff74de653d..af3cb36efe 100644 --- a/bin/cli/locales/ur.json +++ b/bin/cli/locales/ur.json @@ -1,5 +1,1340 @@ { + "common": { + "error": "خرابی: {message}", + "serverOffline": "OmniRoute سرور آف لائن ہے۔ اسے اس کمانڈ سے شروع کریں: omniroute serve", + "authRequired": "توثیق درکار ہے۔ OMNIROUTE_API_KEY سیٹ کریں یا یہ کمانڈ چلائیں: omniroute setup", + "rateLimited": "شرح کی حد تجاوز ہو گئی۔ {seconds} سیکنڈ بعد دوبارہ کوشش کریں۔", + "timeout": "درخواست کا وقت {ms} ملی سیکنڈ کے بعد ختم ہو گیا۔", + "success": "مکمل ہو گیا۔", + "yes": "ہاں", + "no": "نہیں", + "confirm": "کیا آپ کو یقین ہے؟ (ہاں/نہیں)", + "dryRun": "[آزمائشی اجرا] {action} کیا جاتا", + "cancelled": "منسوخ کر دیا گیا۔", + "jsonOpt": "JSON کی صورت میں آؤٹ پٹ دیں", + "yesOpt": "تصدیقی پیغام کو چھوڑ دیں" + }, + "setup": { + "title": "OmniRoute سیٹ اپ", + "passwordPrompt": "ایڈمن پاس ورڈ", + "providerPrompt": "ڈیفالٹ پرووائیڈر (چھوڑنے کے لیے خالی رہنے دیں)", + "done": "سیٹ اپ مکمل ہو گیا", + "passwordSet": "ایڈمن پاس ورڈ کنفیگر کر دیا گیا", + "providerSet": "پرووائیڈر کنفیگر کر دیا گیا: {name}", + "testingProvider": "پرووائیڈر کنکشن کی جانچ ہو رہی ہے: {name}", + "testPassed": "پرووائیڈر کی جانچ کامیاب رہی", + "testFailed": "پرووائیڈر کی جانچ ناکام رہی: {error}", + "loginEnabled": "لاگ اِن: فعال (پاس ورڈ اپ ڈیٹ کر دیا گیا)", + "loginDisabled": "لاگ اِن: غیر فعال", + "providerInfo": "پرووائیڈر: {info}", + "opencode": "OpenCode کے لیے شامل شدہ @omniroute/opencode-plugin انسٹال اور کنفیگر کریں" + }, + "doctor": { + "title": "OmniRoute تشخیص", + "dbOk": "ڈیٹابیس: درست ({path})", + "dbMissing": "ڈیٹابیس: شروع نہیں کیا گیا — `omniroute setup` چلائیں", + "portOk": "پورٹ {port}: دستیاب ہے", + "portConflict": "پورٹ {port}: کسی دوسرے پراسیس کے زیر استعمال ہے", + "encryptionOk": "انکرپشن کلید: کنفیگر شدہ", + "encryptionMissing": "انکرپشن کلید موجود نہیں — `omniroute setup` چلائیں", + "allGood": "تمام جانچیں کامیاب رہیں۔", + "warnings": "{count} انتباہ — اوپر دیکھیں۔" + }, + "providers": { + "title": "پرووائیڈرز", + "noProviders": "کوئی پرووائیڈر کنفیگر نہیں کیا گیا۔ چلائیں: omniroute setup", + "testing": "{name} کی جانچ ہو رہی ہے...", + "available": "{count} پرووائیڈر دستیاب ہیں", + "connected": "منسلک", + "disconnected": "منقطع", + "validationFailed": "توثیق ناکام ہوئی: {error}", + "metrics": { + "description": "فراہم کنندہ کی کارکردگی کے اشاریے دکھائیں (تاخیر، کامیابی کی شرح، لاگت)", + "provider": "فراہم کنندہ ID کے لحاظ سے فلٹر کریں", + "connection_id": "کنکشن ID کے لحاظ سے فلٹر کریں", + "period": "مدت: 1h|6h|24h|7d|30d (پہلے سے طے شدہ: 24h)", + "metric": "کسی مخصوص اشاریاتی فیلڈ پر توجہ مرکوز کریں", + "sort": "فیلڈ کے لحاظ سے ترتیب دیں (نزولی)", + "limit": "قطاروں کی زیادہ سے زیادہ تعداد (پہلے سے طے شدہ: 50)", + "watch": "ہر 5s بعد تازہ کریں (لائیو موڈ)", + "compare": "ساتھ ساتھ موازنہ کرنے کے لیے کوما سے علیحدہ فراہم کنندہ IDs" + }, + "metric_single": { + "description": "کسی مخصوص کنکشن کے لیے ایک اشاریاتی قدر حاصل کریں" + }, + "rotate": { + "description": "فراہم کنندہ کنکشن کے لیے اپ اسٹریم API کلید تبدیل کریں", + "newKeyOpt": "نئی API کلید کی قدر (گریز کریں: ترجیحاً --from-env استعمال کریں)", + "fromEnvOpt": "ماحولیاتی متغیر VAR سے نئی کلید پڑھیں", + "oauthOpt": "اس کے بجائے OAuth کی دوبارہ توثیق کا عمل شروع کریں", + "skipTestOpt": "کلید کی تبدیلی کے بعد کنیکٹیویٹی ٹیسٹ چھوڑ دیں", + "dryRunOpt": "لکھے بغیر دکھائیں کہ کیا تبدیل ہوگا", + "confirmPrompt": "کنکشن \"{name}\" ({id}) کے لیے API کلید تبدیل کریں؟ [y/N]", + "dryRunResult": "[dry-run] \"{name}\" ({id}) کے لیے کلید تبدیل کی جاتی۔ کوئی تبدیلی نہیں کی گئی۔", + "oauthHint": "OAuth کنکشن — چلائیں: omniroute oauth {provider}", + "envVarEmpty": "ماحولیاتی متغیر {var} سیٹ نہیں ہے یا خالی ہے۔", + "success": "\"{name}\" کے لیے کلید تبدیل کر دی گئی۔ تصدیق کے لیے `providers test {id}` چلائیں۔", + "testPassed": "تبدیلی کے بعد کا ٹیسٹ کامیاب رہا۔", + "testFailed": "تبدیلی کے بعد کا ٹیسٹ ناکام ہوا: {error}" + }, + "status": { + "description": "تمام فراہم کنندہ کنکشنز کے لیے کلید کی حالت دکھائیں (عمر، میعاد، وقفۂ انتظار)", + "providerOpt": "فراہم کنندہ کے نام کے لحاظ سے فلٹر کریں", + "header": "ID فراہم کنندہ نام میعاد کی حالت ٹیسٹ کی حالت وقفۂ انتظار تا", + "noData": "فراہم کنندہ کنکشن کا کوئی ڈیٹا دستیاب نہیں۔", + "requiresServer": "providers status کے لیے OmniRoute سرور کا چلنا ضروری ہے۔" + } + }, + "keys": { + "title": "API کلیدیں", + "addDescription": "فراہم کنندہ کے لیے API کلید شامل یا اپ ڈیٹ کریں", + "listDescription": "تمام ترتیب شدہ API کلیدوں کی فہرست دکھائیں", + "removeDescription": "فراہم کنندہ کی API کلید ہٹائیں", + "regenerateDescription": "OmniRoute API کلید دوبارہ بنائیں", + "revokeDescription": "OmniRoute API کلید منسوخ کریں", + "revealDescription": "چھپائی گئی API کلید کی قدر ظاہر کریں", + "usageDescription": "API کلید کا حالیہ استعمال دکھائیں", + "usageLimitOpt": "حالیہ درخواستوں کی تعداد", + "rotateDescription": "نئی کلید بنائیں اور پرانی کو غیر مؤثر کریں", + "graceOpt": "پرانی کلید کو غیر مؤثر کرنے سے پہلے مہلت کی مدت (ms)", + "stdinOpt": "کلید کو آرگیومنٹ کے بجائے stdin سے پڑھیں", + "added": "{provider} کے لیے کلید شامل کر دی گئی۔", + "removed": "کلید ہٹا دی گئی۔", + "listed": "{count} کلید(یں)۔", + "noKeys": "کوئی کلید ترتیب نہیں دی گئی۔", + "noUsage": "استعمال کا کوئی ڈیٹا نہیں ملا۔", + "confirmRemove": "کلید {id} ہٹائیں؟", + "confirmRegenerate": "کلید {id} دوبارہ بنائیں؟", + "confirmRevoke": "کلید {id} منسوخ کریں؟", + "confirmRotate": "کلید {id} تبدیل کریں؟ (پرانی کلید مہلت کی مدت کے بعد غیر مؤثر ہو جائے گی)", + "regenerated": "دوبارہ بنا دی گئی۔ نئی کلید: {key}", + "revoked": "کلید {id} منسوخ کر دی گئی۔", + "rotated": "کلید {id} تبدیل کر دی گئی۔ نئی کلید کی ID: {newId}", + "revealWarning": "⚠ اس سے مکمل غیر مخفی کلید دکھائی جائے گی۔ یقینی بنائیں کہ آپ کی اسکرین نجی ہے۔", + "providerRequired": "فراہم کنندہ درکار ہے۔", + "keyRequired": "API کلید درکار ہے۔", + "stdinEmpty": "stdin کے ذریعے کوئی API کلید فراہم نہیں کی گئی۔", + "unknownProvider": "نامعلوم فراہم کنندہ: {provider}", + "policy": { + "title": "کلید کی پالیسی", + "showDescription": "کسی کلید کے لیے شرح/لاگت کی پالیسی دکھائیں", + "setDescription": "کسی کلید کے لیے شرح/لاگت کی پالیسی مقرر کریں", + "rateLimitOpt": "فی منٹ درخواستوں کی زیادہ سے زیادہ تعداد", + "maxCostOpt": "فی دن زیادہ سے زیادہ لاگت (USD)", + "allowedModelsOpt": "اجازت یافتہ ماڈلز کی کاما سے جدا فہرست", + "nothingToSet": "پالیسی کا کوئی فیلڈ فراہم نہیں کیا گیا۔ --rate-limit، --max-cost، یا --allowed-models استعمال کریں۔", + "updated": "پالیسی اپ ڈیٹ کر دی گئی۔" + }, + "expiration": { + "title": "کلید کی میعاد", + "listDescription": "جلد میعاد ختم ہونے والی کلیدوں کی فہرست دکھائیں", + "daysOpt": "N دنوں کے اندر میعاد ختم ہونے والی کلیدیں دکھائیں", + "none": "{days} دنوں کے اندر کسی کلید کی میعاد ختم نہیں ہو رہی۔", + "listTitle": "{days} دنوں کے اندر میعاد ختم ہونے والی کلیدیں:" + } + }, + "authExport": { + "description": "ڈکرپٹ شدہ فراہم کنندہ اسناد برآمد کریں (صرف مقامی، سادہ متن میں آؤٹ پٹ)", + "idOpt": "صرف اس id/نام/فراہم کنندہ سے مماثل کنکشن برآمد کریں", + "formatOpt": "آؤٹ پٹ فارمیٹ: json یا env", + "outOpt": "آؤٹ پٹ کو stdout کے بجائے فائل میں لکھیں (0600 اجازتوں کے ساتھ لکھا جائے گا)", + "forceOpt": "تصدیق کریں کہ آپ سمجھتے ہیں کہ اس سے سادہ متن کے راز پرنٹ/تحریر ہوں گے", + "warning": "⚠ اس سے ڈکرپٹ شدہ سادہ متن کی API کلیدیں اور OAuth ٹوکنز پرنٹ/تحریر ہوں گے۔ یقینی بنائیں کہ آپ کی اسکرین، شیل ہسٹری اور کوئی بھی آؤٹ پٹ فائل نجی رہیں۔", + "confirmHeading": "⚠ انتباہ: یہ ڈکرپٹ شدہ فراہم کنندہ اسناد کو سادہ متن میں برآمد کرتا ہے", + "confirmBody": "یہ کمانڈ منتخب کنکشن(ز) کے لیے apiKey، accessToken، refreshToken، اور\nidToken کو ڈکرپٹ کرکے پرنٹ/تحریر کرتی ہے۔ آؤٹ پٹ کو راز سمجھیں۔", + "confirmFooter": "تصدیق کے لیے، چلائیں:\n omniroute auth export --force", + "missingKey": "اسناد برآمد کرنے کے لیے STORAGE_ENCRYPTION_KEY درکار ہے۔", + "notFound": "کنکشن نہیں ملا: {id}", + "invalidFormat": "غلط فارمیٹ: {format}۔ json یا env استعمال کریں۔" + }, + "stream": { + "description": "SSE معائنے کے طریقوں کے ساتھ چیٹ کا جواب اسٹریم کریں", + "file": "فائل سے پرامپٹ پڑھیں", + "stdin": "stdin سے پرامپٹ پڑھیں", + "model": "ماڈل ID (ڈیفالٹ: auto)", + "system": "سسٹم پرامپٹ", + "combo": "نام کے ذریعے مخصوص کومبو لازمی استعمال کریں", + "max_tokens": "جواب میں ٹوکنز کی زیادہ سے زیادہ تعداد", + "responses_api": "/v1/chat/completions کے بجائے /v1/responses استعمال کریں", + "raw": "موصول ہونے والی خام SSE لائنیں پرنٹ کریں", + "debug": "ہر چنک کی ٹائمنگ کی معلومات stderr پر پرنٹ کریں", + "save": "تمام SSE ایونٹس ایک .jsonl فائل میں محفوظ کریں", + "error": { + "empty_prompt": "خرابی: پرامپٹ درکار ہے (پوزیشنل آرگ، --file، یا --stdin)" + } + }, + "usage": { + "description": "استعمال کے تجزیات، بجٹس، کوٹے، اور لاگز", + "analytics": { + "description": "مجموعی استعمال کے تجزیات دکھائیں", + "period": "مدت: 1d|7d|30d|90d|ytd|all (ڈیفالٹ: 30d)", + "provider": "فراہم کنندہ ID کے لحاظ سے فلٹر کریں" + }, + "budget": { + "description": "لاگت کے بجٹس کا نظم کریں", + "set": { + "scope": "بجٹ کا دائرۂ کار (ڈیفالٹ: global)", + "period": "بجٹ کی مدت: daily|weekly|monthly (ڈیفالٹ: monthly)" + } + }, + "quota": { + "description": "فراہم کنندہ کے کوٹے کا استعمال دکھائیں", + "provider": "فراہم کنندہ ID کے لحاظ سے فلٹر کریں", + "check": "دکھائیں کہ آیا نئی درخواست کے لیے کوٹا دستیاب ہے" + }, + "logs": { + "description": "درخواست کال لاگز دکھائیں", + "limit": "واپس کی جانے والی لاگ انٹریز کی تعداد (ڈیفالٹ: 100)", + "search": "لاگز فلٹر کرنے کے لیے تلاش کا استفسار", + "since": "اس ٹائم اسٹیمپ کے بعد کے لاگز واپس کریں", + "follow": "نئی لاگ انٹریز مسلسل دکھاتے رہیں", + "api_key": "API کلید کے لحاظ سے لاگز فلٹر کریں" + }, + "utilization": { + "description": "API کلید کے استعمال کے میٹرکس دکھائیں", + "api_key": "API کلید کے لحاظ سے فلٹر کریں" + }, + "history": { + "description": "درخواستوں کی تاریخ دکھائیں", + "limit": "ہسٹری انٹریز کی تعداد (ڈیفالٹ: 100)" + }, + "proxy_logs": { + "description": "پراکسی سطح کے درخواست لاگز دکھائیں", + "limit": "پراکسی لاگ انٹریز کی تعداد (ڈیفالٹ: 100)" + } + }, + "cost": { + "description": "فراہم کنندہ، ماڈل، کومبو، یا API کلید کے لحاظ سے تفصیل کے ساتھ لاگت کی رپورٹ دکھائیں", + "period": "مدت: 1d|7d|30d|90d|ytd|all (ڈیفالٹ: 30d)", + "since": "آغاز کی تاریخ (ISO فارمیٹ، مثلاً 2026-01-01) — --period کو اوور رائیڈ کرتی ہے", + "until": "اختتام کی تاریخ (ISO فارمیٹ)", + "group_by": "نتائج کو اس لحاظ سے گروپ کریں: provider|model|api-key|combo|day (ڈیفالٹ: provider)", + "api_key_filter": "کسی مخصوص API کلید کے لحاظ سے فلٹر کریں", + "limit": "دکھائی جانے والی قطاروں کی زیادہ سے زیادہ تعداد (ڈیفالٹ: 100)" + }, + "simulate": { + "description": "ڈرائی رَن روٹنگ سیمولیشن — upstream کو کال کیے بغیر دکھائیں کہ کون سے providers منتخب ہوں گے", + "file": "JSON فائل سے مکمل درخواست کا متن لوڈ کریں", + "model": "ماڈل ID (ڈیفالٹ: auto)", + "combo": "نام کے ذریعے کسی مخصوص combo کو لازمی استعمال کریں", + "reasoning": "استدلال کی کوشش کی سطح (low|medium|high)", + "thinking": "توسیعی سوچ کا ٹوکن بجٹ", + "explain": "fallback ٹری اور لاگت کی حد stderr پر پرنٹ کریں", + "noCombo": "کوئی مماثل combo نہیں ملا۔ اس کمانڈ سے ایک ترتیب دیں: omniroute combo create" + }, + "chat": { + "description": "OmniRoute کو ایک بار کا چیٹ پرامپٹ بھیجیں", + "file": "فائل سے پرامپٹ پڑھیں", + "stdin": "stdin سے پرامپٹ پڑھیں", + "system": "سسٹم پرامپٹ", + "model": "ماڈل ID (ڈیفالٹ: auto)", + "max_tokens": "جواب میں ٹوکنز کی زیادہ سے زیادہ تعداد", + "temperature": "سیمپلنگ ٹمپریچر (0–2)", + "top_p": "Top-p نیوکلیئس سیمپلنگ", + "reasoning_effort": "استدلال کی کوشش کی سطح (low|medium|high)", + "thinking_budget": "توسیعی سوچ کا ٹوکن بجٹ", + "combo": "نام کے ذریعے کسی مخصوص combo کو لازمی استعمال کریں", + "responses_api": "/v1/chat/completions کے بجائے /v1/responses استعمال کریں", + "stream": "جواب کو بتدریج اسٹریم کریں", + "no_history": "~/.omniroute/cli-history.jsonl میں محفوظ نہ کریں", + "error": { + "empty_prompt": "خرابی: پرامپٹ درکار ہے (positional arg، --file، یا --stdin)" + } + }, + "serve": { + "description": "OmniRoute سرور شروع کریں (ڈیفالٹ عمل)", + "starting": "پورٹ {port} پر OmniRoute سرور شروع ہو رہا ہے...", + "ready": "http://localhost:{port} پر تیار ہے", + "stopping": "سرور (PID {pid}) روکا جا رہا ہے...", + "stopped": "سرور روک دیا گیا۔", + "notRunning": "سرور چل نہیں رہا۔", + "port": "سننے کے لیے پورٹ (ڈیفالٹ: 20128)", + "no_open": "براؤزر خودکار طور پر نہ کھولیں", + "daemon": "سرور کو پسِ منظر daemon کے طور پر چلائیں", + "log": "سرور لاگز inline دکھائیں", + "no_recovery": "کریش ہونے پر خودکار دوبارہ آغاز غیر فعال کریں (debugging موڈ)", + "max_restarts": "ہار ماننے سے پہلے 30s کے اندر کریش کے بعد دوبارہ آغاز کی زیادہ سے زیادہ تعداد (ڈیفالٹ: 2)", + "tray": "سسٹم ٹرے میں شروع کریں (صرف ڈیسک ٹاپ، اختیاری)", + "no_tray": "سسٹم ٹرے آئیکن غیر فعال کریں", + "ready_timeout": "ریڈینس پروب کا ٹائم آؤٹ ملی سیکنڈ میں (OMNIROUTE_READY_TIMEOUT_MS بھی، ڈیفالٹ 60000)", + "tls_cert": "HTTPS فراہم کرنے کے لیے TLS سرٹیفکیٹ (PEM) کا پاتھ (OMNIROUTE_TLS_CERT بھی)", + "tls_key": "HTTPS فراہم کرنے کے لیے TLS نجی کلید (PEM) کا پاتھ (OMNIROUTE_TLS_KEY بھی)" + }, + "backup": { + "title": "بیک اپ", + "description": "OmniRoute ڈیٹا کا بیک اپ بنائیں", + "creating": "بیک اپ بنایا جا رہا ہے...", + "done": "بیک اپ {path} پر محفوظ ہو گیا", + "noFiles": "بیک اپ کے لیے کوئی فائل نہیں (ڈیٹابیس کی ابتدا نہیں ہوئی)", + "failed": "بیک اپ ناکام رہا: {error}", + "restoring": "{path} سے بحال کیا جا رہا ہے...", + "restored": "بحالی مکمل ہو گئی۔", + "restoreDescription": "بیک اپ سے بحال کریں", + "listTitle": "دستیاب بیک اپس", + "noBackups": "کوئی بیک اپ نہیں ملا۔", + "notFound": "بیک اپ نہیں ملا: {name}", + "confirmRestore": "کیا موجودہ ڈیٹا کو {ts} کے بیک اپ سے اوور رائٹ کر دیں؟", + "createDescription": "OmniRoute ڈیٹا کا بیک اپ بنائیں", + "nameOpt": "حسبِ ضرورت بیک اپ نام", + "cloudOpt": "بیک اپ کو کلاؤڈ اسٹوریج پر اپ لوڈ کریں", + "encryptOpt": "بیک اپ کو AES-256-GCM کے ساتھ انکرپٹ کریں", + "keyFileOpt": "انکرپشن پاس فریز والی فائل کا پاتھ", + "excludeOpt": "پیٹرن سے مماثل فائل خارج کریں (قابلِ تکرار)", + "retentionOpt": "صرف آخری N بیک اپس رکھیں", + "passphrasePrompt": "انکرپشن پاس فریز:", + "noPassphrase": "انکرپٹڈ بیک اپ کے لیے پاس فریز درکار ہے۔", + "cloudFailed": "انتباہ: کلاؤڈ اپ لوڈ ناکام رہا۔ مقامی بیک اپ محفوظ کر لیا گیا۔", + "cloudUploaded": "کلاؤڈ بیک اپ اپ لوڈ ہو گیا: {url}", + "auto": { + "title": "بیک اپ شیڈول", + "enableDescription": "شیڈول شدہ خودکار بیک اپس فعال کریں", + "disableDescription": "شیڈول شدہ خودکار بیک اپس غیر فعال کریں", + "statusDescription": "موجودہ بیک اپ شیڈول کی حیثیت دکھائیں", + "cronOpt": "شیڈول کے لیے Cron ایکسپریشن (ڈیفالٹ: روزانہ صبح 3 بجے)", + "enabled": "خودکار بیک اپ فعال ہے (cron: {cron})۔", + "hint": "شیڈول کو omniroute serve آغاز پر پڑھتا ہے۔", + "disabled": "خودکار بیک اپ غیر فعال ہے۔", + "notConfigured": "کوئی بیک اپ شیڈول ترتیب نہیں دیا گیا۔" + } + }, + "health": { + "description": "سرور کی صحت اور اجزاء کی حیثیت چیک کریں", + "noServer": "سرور چل نہیں رہا۔ اس سے شروع کریں: omniroute serve", + "title": "صحت", + "status": "حالت: {status}", + "uptime": "اپ ٹائم: {uptime}", + "requests": "درخواستیں (24 گھنٹے): {count}", + "cost": "لاگت (24 گھنٹے): ${cost}" + }, + "quota": { + "description": "فراہم کنندہ کے کوٹے کا استعمال دکھائیں", + "noServer": "سرور چل نہیں رہا۔ اسے اس کمانڈ سے شروع کریں: omniroute serve", + "noData": "کوٹے کی کوئی معلومات دستیاب نہیں۔" + }, + "cache": { + "description": "رسپانس کیش کا نظم کریں", + "noServer": "سرور چل نہیں رہا۔ اسے اس کمانڈ سے شروع کریں: omniroute serve", + "cleared": "کیش صاف کر دیا گیا۔", + "clearFailed": "کیش صاف کرنے میں ناکامی ہوئی۔" + }, "redis": { "description": "OmniRoute کیشنگ اور کوٹہ ٹریکنگ کے لیے ایک کلک میں مقامی Redis کنٹینر (Podman یا Docker) لانچ کریں" + }, + "test": { + "description": "فراہم کنندہ کے کنکشن کی جانچ کریں", + "noServer": "سرور چل نہیں رہا۔ اسے اس کمانڈ سے شروع کریں: omniroute serve", + "testing": "{provider} / {model} کی جانچ جاری ہے...", + "passed": "کنکشن کامیاب رہا!", + "failed": "کنکشن ناکام ہوا: {error}", + "allProvidersOpt": "تمام تشکیل شدہ فراہم کنندگان کی جانچ کریں", + "latencyOpt": "تاخیر کی پیمائشیں دکھائیں (اوسط/کم از کم/زیادہ سے زیادہ ms)", + "repeatOpt": "جانچ N بار دہرائیں اور نتائج یکجا کریں", + "compareOpt": "موازنے کے لیے کوما سے جدا کردہ ماڈلز (مثلاً gpt-4o,claude-3-5-sonnet)", + "saveOpt": "نتائج کو JSON فائل میں محفوظ کریں", + "saved": "نتائج {path} میں محفوظ کر دیے گئے", + "compareTitle": "ماڈلز کا موازنہ", + "compareMinTwo": "--compare کے لیے کم از کم دو ماڈلز درکار ہیں (کوما سے جدا کردہ)", + "noProviders": "کوئی فراہم کنندہ تشکیل نہیں دیا گیا۔ اس کمانڈ سے ایک شامل کریں: omniroute keys add" + }, + "update": { + "checking": "اپ ڈیٹس کی جانچ جاری ہے...", + "upToDate": "پہلے ہی تازہ ترین ہے ({version})۔", + "available": "اپ ڈیٹ دستیاب ہے: {current} → {latest}", + "installing": "{latest} انسٹال کیا جا رہا ہے...", + "done": "{latest} پر اپ ڈیٹ ہو گیا۔ لاگو کرنے کے لیے سرور دوبارہ شروع کریں۔" + }, + "mcp": { + "title": "MCP سرور", + "running": "MCP سرور چل رہا ہے ({transport})", + "stopped": "MCP سرور رک گیا۔", + "restarted": "MCP سرور دوبارہ شروع ہو گیا۔", + "stoppedHint": "اسے فعال کرنے کے لیے `omniroute mcp enable` چلائیں۔", + "enabled": "MCP سرور فعال کر دیا گیا۔", + "disabled": "MCP سرور غیر فعال کر دیا گیا۔", + "enable": { + "description": "MCP سرور کو فعال کریں", + "transport": "استعمال کے لیے ٹرانسپورٹ: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP سرور کو غیر فعال کریں" + }, + "call": { + "description": "کسی MCP ٹول کو براہِ راست استعمال کریں", + "args": "JSON آرگیومنٹس آبجیکٹ (اِن لائن)", + "args_file": "JSON آرگیومنٹس فائل کا پاتھ", + "stream": "اسٹریمنگ اینڈپوائنٹ استعمال کریں (/api/mcp/stream)", + "scope": "مطلوبہ اسکوپ (قابلِ تکرار، مثلاً read:health)" + }, + "scopes": { + "description": "دستیاب MCP اسکوپس کی فہرست دکھائیں", + "tool": "کسی مخصوص ٹول کے لیے مطلوبہ اسکوپس دکھائیں" + }, + "tools": { + "description": "MCP ٹولز کا معائنہ کریں", + "list": { + "description": "تمام MCP ٹولز کی فہرست دکھائیں", + "scope": "اسکوپ کے لحاظ سے فلٹر کریں" + }, + "info": { + "description": "کسی MCP ٹول کا میٹا ڈیٹا دکھائیں" + }, + "schema": { + "description": "کسی MCP ٹول کا اِن پٹ/آؤٹ پٹ JSON اسکیما دکھائیں", + "io": "اسکیما کی قسم: input|output (ڈیفالٹ: input)" + } + }, + "audit": { + "description": "MCP آڈٹ لاگ (audit --source mcp کا عرف)" + } + }, + "a2a": { + "skills": { + "description": "ایجنٹ کارڈ سے دستیاب A2A اسکلز کی فہرست دکھائیں" + }, + "invoke": { + "description": "کسی A2A اسکل کو استعمال کریں اور ٹاسک ID واپس کریں", + "input": "JSON اِن پٹ آبجیکٹ", + "input_file": "JSON اِن پٹ فائل کا پاتھ", + "wait": "واپس آنے سے پہلے ٹاسک کی تکمیل کا انتظار کریں", + "timeout": "تکمیل کے انتظار کا ٹائم آؤٹ، ms میں (ڈیفالٹ: 60000)" + }, + "tasks": { + "description": "A2A ٹاسکس کا نظم کریں", + "list": { + "status": "اسٹیٹس کے لحاظ سے فلٹر کریں", + "skill": "اسکل ID کے لحاظ سے فلٹر کریں" + }, + "watch": { + "description": "تکمیل تک ٹاسک اسٹیٹس چیک کرتے رہیں" + }, + "stream": { + "description": "SSE کے ذریعے ٹاسک پر عمل درآمد کے ایونٹس اسٹریم کریں" + }, + "logs": { + "description": "ٹاسک کے پیغامات اور آرٹیفیکٹس دکھائیں" + } + } + }, + "policy": { + "description": "OmniRoute کی اجازت دہی کی پالیسیوں کا نظم کریں", + "list": { + "description": "پالیسیوں کی فہرست دکھائیں", + "kind": "قسم کے لحاظ سے فلٹر کریں (allow|deny|rate-limit|cost-cap)", + "scope": "اسکوپ کے لحاظ سے فلٹر کریں (global|api-key|provider)" + }, + "get": { + "description": "ID کے ذریعے پالیسی کی تفصیلات حاصل کریں" + }, + "create": { + "description": "JSON فائل سے پالیسی بنائیں", + "file": "پالیسی کی JSON فائل کا پاتھ" + }, + "update": { + "description": "JSON فائل سے پالیسی اپ ڈیٹ کریں", + "file": "پالیسی کی JSON فائل کا پاتھ" + }, + "delete": { + "description": "ID کے ذریعے پالیسی حذف کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "evaluate": { + "description": "پالیسی کی ڈرائی رَن جانچ کریں (exit 0=allowed, 4=denied)", + "api_key": "جانچ کے لیے API کلید", + "action": "چیک کرنے کی کارروائی (مثلاً chat، embed، admin)", + "resource": "وسیلے کا راستہ یا شناخت کنندہ", + "context": "JSON آبجیکٹ کی صورت میں اضافی سیاق و سباق" + }, + "export": { + "description": "تمام پالیسیوں کو JSON فائل میں برآمد کریں" + }, + "import": { + "description": "JSON فائل سے پالیسیاں درآمد کریں", + "overwrite": "ایک ہی ID والی موجودہ پالیسیوں کو اوور رائٹ کریں" + } + }, + "compression": { + "description": "OmniRoute کمپریشن پائپ لائن کو ترتیب دیں اور معائنہ کریں", + "status": { + "description": "کمپریشن کی موجودہ حالت اور ترتیبات دکھائیں" + }, + "configure": { + "description": "کمپریشن کی ترتیبات تشکیل دیں", + "engine": "کمپریشن انجن (caveman|rtk|hybrid|none)", + "caveman_agg": "Caveman کی شدت 0.0–1.0", + "rtk_budget": "RTK ٹوکن بجٹ", + "language_pack": "فعال کرنے کے لیے زبان کا پیک" + }, + "engine": { + "description": "فعال کمپریشن انجن حاصل یا مقرر کریں" + }, + "combos": { + "description": "کمپریشن کومبو کے اعداد و شمار کا نظم کریں" + }, + "rules": { + "description": "کمپریشن قواعد کا نظم کریں", + "add": { + "pattern": "مماثلت کے لیے پیٹرن (regex یا field:pattern)", + "action": "کارروائی: drop|shrink|replace" + } + }, + "language_packs": { + "description": "دستیاب کمپریشن زبان پیکس کی فہرست دکھائیں" + }, + "preview": { + "description": "درخواست پر کمپریشن کے اثر کا پیش منظر دکھائیں", + "file": "درخواست کی JSON فائل کا راستہ" + } + }, + "tunnel": { + "title": "ٹنلز", + "listDescription": "فعال ٹنلز کی فہرست دکھائیں", + "createDescription": "ٹنل بنائیں", + "created": "ٹنل بنا دیا گیا: {url}", + "stopped": "ٹنل روک دیا گیا۔", + "confirmStop": "ٹنل {id} روکیں؟", + "stopDescription": "ٹنل روکیں", + "statusDescription": "ٹنل کی تفصیلی حالت دکھائیں", + "logsDescription": "ٹنل کے لاگز دکھائیں", + "infoDescription": "ٹنل کی کنفیگریشن کی تفصیلات دکھائیں", + "rotateDescription": "نیا ٹنل URL بنائیں", + "tailOpt": "دکھائی جانے والی لاگ لائنوں کی تعداد", + "typeRequired": "ٹنل کی قسم درکار ہے۔", + "noLogs": "کوئی لاگز دستیاب نہیں ہیں۔", + "notAvailable": "ٹنل کی معلومات دستیاب نہیں ہیں۔", + "noTunnels": "کوئی فعال ٹنلز نہیں ہیں۔", + "infoTitle": "ٹنل کی معلومات: {type}", + "rotated": "ٹنل URL تبدیل کر دیا گیا: {url}", + "confirmRotate": "ٹنل {type} کا URL تبدیل کریں؟ (ایک نیا URL بنایا جائے گا)" + }, + "stop": { + "description": "OmniRoute سرور بند کریں", + "stopping": "سرور بند کیا جا رہا ہے (PID {pid})...", + "stopped": "سرور بند کر دیا گیا۔", + "notRunning": "کوئی سرور نہیں چل رہا۔", + "portFallback": "کوئی PID فائل نہیں ملی، پورٹ کی بنیاد پر بند کرنے کی کوشش کی جا رہی ہے..." + }, + "restart": { + "description": "OmniRoute سرور دوبارہ شروع کریں", + "restarting": "OmniRoute سرور دوبارہ شروع کیا جا رہا ہے..." + }, + "dashboard": { + "description": "OmniRoute ڈیش بورڈ کو براؤزر میں کھولیں", + "opening": "ڈیش بورڈ {url} پر کھولا جا رہا ہے", + "urlOnly": "براؤزر کھولے بغیر ڈیش بورڈ URL پرنٹ کریں", + "tui": "انٹرایکٹو TUI ڈیش بورڈ کھولیں (ٹرمینل UI، 7 ٹیبز)" + }, + "models": { + "description": "دستیاب ماڈلز کی فہرست دکھائیں (سرور درکار ہے)", + "search": "ماڈلز کو id، نام، provider، یا تفصیل کے لحاظ سے فلٹر کریں", + "noServer": "سرور نہیں چل رہا۔ اس کے ساتھ شروع کریں: omniroute serve", + "noModels": "کوئی ماڈل نہیں ملا۔" + }, + "audit": { + "description": "تعمیل اور MCP آڈٹ لاگز تک رسائی حاصل کریں", + "source": "لاگ کا ماخذ: all|compliance|mcp (طے شدہ: all)", + "since": "اس ٹائم اسٹیمپ کے بعد کی اندراجات واپس کریں (ISO 8601)", + "until": "اس ٹائم اسٹیمپ تک کی اندراجات واپس کریں (ISO 8601)", + "tail": { + "description": "حالیہ آڈٹ لاگ اندراجات دکھائیں", + "follow": "نئی اندراجات مسلسل دکھاتے رہیں (ہر 2s بعد جانچ)", + "limit": "دکھائی جانے والی اندراجات کی زیادہ سے زیادہ تعداد (طے شدہ: 100)" + }, + "search": { + "description": "کلیدی لفظ کے ذریعے آڈٹ لاگ اندراجات تلاش کریں", + "limit": "نتائج کی زیادہ سے زیادہ تعداد (طے شدہ: 200)", + "actor": "actor ID کے لحاظ سے فلٹر کریں", + "action": "کارروائی کے نام کے لحاظ سے فلٹر کریں" + }, + "export": { + "description": "آڈٹ لاگ کو فائل میں برآمد کریں", + "format": "آؤٹ پٹ فارمیٹ: jsonl|csv (طے شدہ: jsonl)" + }, + "stats": { + "description": "آڈٹ لاگ کے اعداد و شمار دکھائیں", + "period": "مدت: 1d|7d|30d (طے شدہ: 7d)" + }, + "get": { + "description": "ID کے ذریعے ایک آڈٹ لاگ اندراج حاصل کریں" + } + }, + "skills": { + "description": "OmniRoute اسکلز کا نظم کریں (sandbox، builtin، custom، hybrid، skillssh)", + "list": { + "description": "انسٹال شدہ اسکلز کی فہرست دکھائیں", + "type": "قسم کے لحاظ سے فلٹر کریں (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "صرف فعال اسکلز دکھائیں", + "disabled": "صرف غیر فعال اسکلز دکھائیں", + "api_key": "API key کے لحاظ سے فلٹر کریں" + }, + "get": { + "description": "ID کے ذریعے کسی اسکل کی تفصیلات حاصل کریں" + }, + "install": { + "description": "فائل یا URL سے اسکل انسٹال کریں", + "from_file": "اسکل کی JSON تعریفی فائل کا پاتھ", + "from_url": "ریموٹ اسکل کی تعریف کا URL", + "type": "اسکل کی قسم (sandbox|custom|hybrid)", + "enable": "انسٹالیشن کے بعد اسکل فعال کریں" + }, + "enable": { + "description": "ID کے ذریعے اسکل فعال کریں" + }, + "disable": { + "description": "ID کے ذریعے اسکل غیر فعال کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "delete": { + "description": "ID کے ذریعے اسکل حذف کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "execute": { + "description": "ID کے ذریعے اسکل چلائیں", + "input": "JSON اِن پٹ آبجیکٹ", + "input_file": "JSON اِن پٹ فائل کا پاتھ", + "timeout": "عمل درآمد کا ٹائم آؤٹ ملی سیکنڈ میں (ڈیفالٹ: 30000)" + }, + "executions": { + "description": "اسکل چلانے کی تاریخ کی فہرست دکھائیں", + "skill": "اسکل ID کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج (ڈیفالٹ: 50)", + "status": "اسٹیٹس کے لحاظ سے فلٹر کریں (running|completed|failed)" + }, + "skillssh": { + "description": "SSH کے ذریعے انسٹال کردہ اسکلز کا نظم کریں" + }, + "marketplace": { + "description": "مارکیٹ پلیس سے اسکلز براؤز اور انسٹال کریں" + }, + "mp": { + "search": { + "description": "مارکیٹ پلیس پیکیجز تلاش کریں", + "category": "زمرے کے لحاظ سے فلٹر کریں", + "tag": "ٹیگ کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج (ڈیفالٹ: 30)", + "sort": "ترتیب دیں بذریعہ: downloads|rating|recent" + }, + "info": { + "description": "پیکیج کی تفصیلات اور readme دکھائیں" + }, + "install": { + "description": "مارکیٹ پلیس پیکیج انسٹال کریں", + "version": "پیکیج ورژن (ڈیفالٹ: latest)", + "enable": "انسٹالیشن کے بعد فعال کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "categories": { + "description": "مارکیٹ پلیس کے زمروں کی فہرست دکھائیں" + }, + "featured": { + "description": "نمایاں مارکیٹ پلیس پیکیجز دکھائیں" + } + } + }, + "memory": { + "description": "OmniRoute کی مکالماتی میموری (FTS5 + vector) کا نظم کریں", + "search": { + "description": "معنوی استفسار کے ذریعے میموری اندراجات تلاش کریں", + "type": "میموری کی قسم کے لحاظ سے فلٹر کریں (user|feedback|project|reference)", + "limit": "زیادہ سے زیادہ نتائج (ڈیفالٹ: 20)", + "api_key": "API کلید کے لحاظ سے فلٹر کریں", + "token_budget": "نتائج میں کُل ٹوکنز محدود کریں" + }, + "add": { + "description": "نیا میموری اندراج شامل کریں", + "content": "میموری کا متنی مواد", + "file": "فائل سے مواد پڑھیں", + "type": "میموری کی قسم (ڈیفالٹ: user)", + "metadata": "JSON میٹا ڈیٹا آبجیکٹ", + "api_key": "API کلید کے ساتھ منسلک کریں" + }, + "clear": { + "description": "فلٹرز سے مماثل میموری اندراجات حذف کریں", + "type": "قسم کے لحاظ سے فلٹر کریں", + "older": "مقررہ مدت سے پرانے اندراجات حذف کریں (30d, 6m, 1y)", + "api_key": "API کلید کے لحاظ سے فلٹر کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "list": { + "description": "تلاش کی درجہ بندی کے بغیر میموری اندراجات کی فہرست دکھائیں", + "type": "قسم کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج (ڈیفالٹ: 100)", + "api_key": "API کلید کے لحاظ سے فلٹر کریں" + }, + "get": { + "description": "ID کے ذریعے ایک میموری اندراج حاصل کریں" + }, + "delete": { + "description": "ID کے ذریعے میموری اندراج حذف کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "health": { + "description": "میموری ذیلی نظام کی صحت دکھائیں (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "OAuth فراہم کنندہ کنکشنز کا نظم کریں", + "providers": { + "description": "OAuth کی صلاحیت رکھنے والے فراہم کنندگان اور ان کے فلو کی اقسام کی فہرست دکھائیں" + }, + "start": { + "description": "کسی فراہم کنندہ کے لیے OAuth اجازت دہی کا فلو شروع کریں", + "provider": "فراہم کنندہ ID (gemini, copilot, cursor, …)", + "no_browser": "صرف URL پرنٹ کریں — براؤزر نہ کھولیں", + "import_system": "مقامی سسٹم کنفیگ سے اسناد خودکار طور پر درآمد کریں", + "social": "سوشل لاگ اِن فراہم کنندہ (google|github) — kiro کے لیے درکار", + "timeout": "اجازت دہی کے انتظار کا ٹائم آؤٹ، ms میں (ڈیفالٹ: 300000)" + }, + "status": { + "description": "فعال OAuth کنکشنز کی فہرست دکھائیں", + "provider": "فراہم کنندہ ID کے لحاظ سے فلٹر کریں" + }, + "revoke": { + "description": "OAuth کنکشن منسوخ کریں", + "provider": "منسوخ کرنے کے لیے فراہم کنندہ ID", + "connection_id": "ID کے ذریعے مخصوص کنکشن منسوخ کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + } + }, + "cloud": { + "description": "کلاؤڈ AI ایجنٹ ٹاسکس کا نظم کریں (codex, devin, jules)", + "agents": { + "description": "دستیاب کلاؤڈ ایجنٹس کی فہرست دکھائیں" + }, + "agent": { + "description": "{agent} کلاؤڈ ایجنٹ ٹاسکس کا نظم کریں", + "auth": { + "description": "OAuth کے ذریعے {agent} کو اجازت دیں" + } + }, + "task": { + "description": "کلاؤڈ ایجنٹ ٹاسکس کا نظم کریں", + "create": { + "description": "نیا ایجنٹ ٹاسک بنائیں", + "title": "ٹاسک کا عنوان (ڈیفالٹ: پرامپٹ کے پہلے 80 حروف)", + "prompt": "ٹاسک پرامپٹ کا متن", + "prompt_file": "فائل سے پرامپٹ پڑھیں", + "repo": "ٹاسک کے لیے کلون کرنے کی ریپوزٹری کا URL", + "branch": "استعمال کرنے کے لیے برانچ کا نام", + "metadata": "JSON میٹا ڈیٹا آبجیکٹ" + }, + "list": { + "description": "ایجنٹ کے کاموں کی فہرست دکھائیں", + "status": "حالت کے لحاظ سے فلٹر کریں (running|completed|failed|cancelled)", + "limit": "زیادہ سے زیادہ نتائج (طے شدہ: 50)" + }, + "get": { + "description": "ID کے ذریعے کام کی تفصیلات حاصل کریں" + }, + "status": { + "description": "کام کی حالت پرنٹ کریں (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "جاری کام منسوخ کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "approve": { + "description": "عمل درآمد شروع کرنے کے لیے ایجنٹ کے منصوبے کی منظوری دیں" + }, + "message": { + "description": "جاری کام کو پیغام بھیجیں" + } + }, + "sources": { + "description": "کسی کام کے ذریعے تیار کردہ سورس فائلوں کی فہرست دکھائیں" + } + }, + "eval": { + "description": "ایویل سوٹس اور رنز کا نظم کریں", + "suites": { + "description": "ایویل سوٹس کا نظم کریں", + "list": { + "description": "ایویل سوٹس کی فہرست دکھائیں" + }, + "get": { + "description": "ID کے ذریعے ایویل سوٹ کی تفصیلات حاصل کریں" + }, + "create": { + "description": "JSON فائل سے ایویل سوٹ بنائیں", + "file": "سوٹ کی تعریف والی JSON فائل کا پاتھ" + } + }, + "run": { + "description": "کسی سوٹ کے لیے ایویل رن شروع کریں", + "model": "جانچنے کے لیے ماڈل ID (طے شدہ: auto)", + "combo": "نام کے ذریعے مخصوص کومبو کو لازمی منتخب کریں", + "concurrency": "بیک وقت چلنے والے نمونوں کی تعداد (طے شدہ: 4)", + "tag": "بعد میں فلٹر کرنے کے لیے اس رن کو ٹیگ کریں", + "watch": "تکمیل تک رن کی پیش رفت دیکھیں" + }, + "list": { + "description": "ایویل رنز کی فہرست دکھائیں", + "suite": "سوٹ ID کے لحاظ سے فلٹر کریں", + "status": "حالت کے لحاظ سے فلٹر کریں", + "since": "اس ٹائم اسٹیمپ کے بعد کے رنز واپس کریں", + "limit": "زیادہ سے زیادہ نتائج (طے شدہ: 50)" + }, + "get": { + "description": "ID کے ذریعے ایویل رن کی تفصیلات حاصل کریں" + }, + "results": { + "description": "ایویل رن کے نمونوں کے نتائج دکھائیں", + "failed": "صرف ناکام نمونے دکھائیں" + }, + "cancel": { + "description": "جاری ایویل منسوخ کریں", + "yes": "تصدیقی پرامپٹ چھوڑ دیں" + }, + "scorecard": { + "description": "مکمل شدہ ایویل رن کا اسکور کارڈ دکھائیں" + } + }, + "webhooks": { + "description": "OmniRoute ویب ہُکس کا نظم کریں", + "events": { + "description": "دستیاب تمام ویب ہُک ایونٹ اقسام کی فہرست دکھائیں" + }, + "list": { + "description": "ترتیب دیے گئے ویب ہُکس کی فہرست دکھائیں" + }, + "get": { + "description": "ID کے ذریعے ویب ہُک کی تفصیلات حاصل کریں" + }, + "add": { + "description": "نیا ویب ہُک رجسٹر کریں", + "url": "منزل کا URL", + "events": "ایونٹ کی اقسام کی کوما سے جدا فہرست", + "secret": "HMAC دستخطی راز", + "header": "key=value فارمیٹ میں اضافی ہیڈر (قابلِ تکرار)", + "no_enabled": "ویب ہُک کو غیر فعال حالت میں بنائیں" + }, + "update": { + "description": "موجودہ ویب ہُک کو اپ ڈیٹ کریں", + "enabled": "فعال حالت مقرر کریں (true|false)" + }, + "remove": { + "description": "ویب ہُک حذف کریں", + "yes": "تصدیقی پرامپٹ کو چھوڑ دیں" + }, + "test": { + "description": "ویب ہُک کو آزمائشی ایونٹ بھیجیں", + "event": "نقل کرنے کے لیے ایونٹ کی قسم (طے شدہ: request.completed)" + } + }, + "program": { + "description": "OmniRoute — خودکار فال بیک کے ساتھ اسمارٹ AI راؤٹر", + "version": "ورژن پرنٹ کریں اور باہر نکلیں", + "output": "آؤٹ پٹ فارمیٹ (table, json, jsonl, csv)", + "quiet": "غیر ضروری آؤٹ پٹ روکیں", + "no_color": "رنگین آؤٹ پٹ غیر فعال کریں", + "timeout": "HTTP درخواست کا ٹائم آؤٹ ملی سیکنڈز میں", + "api_key": "OmniRoute سرور کے لیے API کلید", + "base_url": "OmniRoute سرور کا بنیادی URL", + "context": "اس کمانڈ کے لیے استعمال ہونے والا سرور کانٹیکسٹ/پروفائل", + "lang": "CLI کی ڈسپلے زبان مقرر کریں (OMNIROUTE_LANG کو اوور رائیڈ کرتا ہے)" + }, + "files": { + "description": "فائلوں کا نظم کریں (اپ لوڈ، فہرست، حاصل کریں، ڈاؤن لوڈ، حذف کریں)", + "list": { + "purpose": "مقصد کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج" + }, + "get": { + "description": "فائل کا میٹا ڈیٹا حاصل کریں" + }, + "upload": { + "description": "فائل اپ لوڈ کریں", + "purpose": "فائل کا مقصد (batch, assistants, fine-tune)" + }, + "content": { + "description": "فائل کا مواد ڈاؤن لوڈ کریں", + "out": "پاتھ پر محفوظ کریں (طے شدہ: stdout)" + }, + "delete": { + "yes": "تصدیق چھوڑ دیں" + } + }, + "batches": { + "description": "OpenAI سے ہم آہنگ بیچ جابز کا نظم کریں", + "list": { + "status": "حالت کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج" + }, + "create": { + "description": "بیچ جاب بنائیں", + "inputFile": "ان پٹ فائل ID", + "endpoint": "ہدف اینڈ پوائنٹ", + "window": "تکمیل کی مدت", + "metadata": "میٹا ڈیٹا key=value شامل کریں" + }, + "submit": { + "description": "JSONL فائل اپ لوڈ کریں اور بیچ بنائیں", + "jsonl": "JSONL فائل کا پاتھ", + "endpoint": "ہدف اینڈ پوائنٹ", + "wait": "تکمیل کا انتظار کریں" + }, + "cancel": { + "yes": "تصدیق کو چھوڑ دیں" + }, + "wait": { + "timeout": "ٹائم آؤٹ، ملی سیکنڈ میں" + }, + "output": { + "out": "آؤٹ پٹ کو پاتھ پر محفوظ کریں" + }, + "errors": { + "out": "خرابیوں کو پاتھ پر محفوظ کریں" + } + }, + "translator": { + "description": "درخواست کی باڈیز کا LLM فارمیٹس کے درمیان ترجمہ کریں", + "detect": { + "description": "باڈی کا فارمیٹ معلوم کریں" + }, + "translate": { + "description": "باڈی کو ایک فارمیٹ سے دوسرے میں تبدیل کریں" + }, + "send": { + "description": "ترجمہ کرکے اپ اسٹریم بھیجیں" + }, + "stream": { + "description": "درخواست کی باڈی کا اسٹریم کے دوران ترجمہ کریں" + }, + "from": "ماخذ فارمیٹ (openai|anthropic|gemini|cohere)", + "to": "ہدف فارمیٹ (openai|anthropic|gemini|cohere)", + "file": "درخواست کی باڈی کی JSON فائل کا پاتھ", + "out": "آؤٹ پٹ کو فائل میں محفوظ کریں", + "model": "ماڈل کو اوور رائیڈ کریں", + "history": { + "limit": "زیادہ سے زیادہ نتائج" + } + }, + "pricing": { + "description": "ماڈلز کے لیے قیمتوں کے ڈیٹا کا نظم کریں", + "sync": { + "description": "اپ اسٹریم ذرائع سے قیمتیں ہم وقت کریں", + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "force": "دوبارہ ہم وقت سازی لازماً کریں" + }, + "list": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "model": "ماڈل کے لحاظ سے فلٹر کریں", + "limit": "زیادہ سے زیادہ نتائج" + }, + "defaults": { + "description": "طے شدہ قیمتوں کا نظم کریں", + "input": "فی 1M ٹوکنز ان پٹ لاگت (USD)", + "output": "فی 1M ٹوکنز آؤٹ پٹ لاگت (USD)", + "cacheRead": "فی 1M ٹوکنز کیش پڑھنے کی لاگت (USD)", + "cacheWrite": "فی 1M ٹوکنز کیش لکھنے کی لاگت (USD)" + }, + "diff": { + "description": "اپ اسٹریم قیمتوں سے انحراف دکھائیں", + "model": "ماڈل کے لحاظ سے فلٹر کریں" + } + }, + "radar": { + "description": "مقامی Radar کیٹلاگ فیڈز کا معائنہ اور ہم وقت سازی کریں", + "status": "مقامی Radar ترتیبات اور فیڈ کیش کی حالت دکھائیں", + "sync": "مقامی سرور کے ذریعے کیٹلاگ، ریفرلز، آفرز اور Intel کو ہم وقت کریں" + }, + "resilience": { + "description": "لچک پذیری کے طریقہ کار کا معائنہ اور نظم کریں", + "status": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں" + }, + "breakers": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں" + }, + "cooldowns": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "connectionId": "کنکشن ID کے لحاظ سے فلٹر کریں" + }, + "lockouts": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "model": "ماڈل کے لحاظ سے فلٹر کریں" + }, + "reset": { + "description": "بریکر/کول ڈاؤن کی حالت ری سیٹ کریں", + "provider": "ری سیٹ کرنے کے لیے فراہم کنندہ", + "connectionId": "ری سیٹ کرنے کے لیے کنکشن ID", + "model": "لاک آؤٹ ری سیٹ کرنے کے لیے ماڈل", + "allCooldowns": "فراہم کنندہ کے تمام کول ڈاؤنز ری سیٹ کریں", + "yes": "تصدیق چھوڑ دیں" + }, + "profile": { + "description": "لچک پذیری کی پروفائل کا نظم کریں", + "name": "پروفائل کا نام" + }, + "config": { + "description": "لچک پذیری کی کنفیگریشن کا نظم کریں", + "threshold": "ناکامی کی حد", + "resetTimeout": "ری سیٹ ٹائم آؤٹ، ms میں", + "baseCooldown": "بنیادی کول ڈاؤن، ms میں" + } + }, + "nodes": { + "description": "فراہم کنندہ نوڈز (اینڈ پوائنٹس) کا نظم کریں", + "list": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "enabled": "صرف فعال نوڈز دکھائیں" + }, + "add": { + "provider": "فراہم کنندہ کا نام", + "baseUrl": "نوڈ کے لیے بنیادی URL", + "name": "نوڈ کا نام", + "weight": "لوڈ بیلنسنگ کا وزن", + "region": "علاقائی ٹیگ", + "authHeader": "حسبِ ضرورت توثیقی ہیڈر (key=value)" + }, + "update": { + "baseUrl": "نیا بنیادی URL", + "name": "نیا نام", + "weight": "نیا وزن", + "region": "نیا علاقہ", + "enabled": "فعال یا غیر فعال کریں (true|false)" + }, + "remove": { + "yes": "تصدیق چھوڑ دیں" + }, + "validate": { + "baseUrl": "توثیق کرنے کے لیے URL", + "provider": "جس فراہم کنندہ کے مقابل توثیق کرنی ہے" + }, + "test": { + "description": "نوڈ کو آزمائشی درخواست بھیجیں" + }, + "metrics": { + "description": "نوڈ کے میٹرکس دکھائیں", + "period": "مدت (مثلاً 24h، 7d)" + } + }, + "context": { + "description": "کانٹیکسٹ انجینئرنگ پائپ لائن (Caveman، RTK) کنفیگر کریں", + "analytics": { + "period": "مدت (مثلاً 7d، 30d)" + }, + "caveman": { + "description": "Caveman کانٹیکسٹ کمپریسر کا نظم کریں", + "config": { + "description": "Caveman کی کنفیگریشن دکھائیں یا اپ ڈیٹ کریں", + "aggressiveness": "شدت 0.0–1.0", + "maxShrinkPct": "سکیڑنے کا زیادہ سے زیادہ فیصد", + "preserveTags": "محفوظ رکھنے کے لیے کوما سے علیحدہ ٹیگز" + } + }, + "rtk": { + "description": "RTK کانٹیکسٹ آپٹیمائزر کا نظم کریں", + "config": { + "description": "RTK کنفیگریشن دکھائیں یا اپ ڈیٹ کریں", + "tokenBudget": "RTK کے لیے ٹوکن بجٹ", + "reservePct": "محفوظ فیصد" + }, + "filters": { + "description": "RTK فلٹرز کا نظم کریں", + "pattern": "فلٹر پیٹرن (regex)", + "priority": "فلٹر کی ترجیح (ڈیفالٹ: 100)", + "action": "فلٹر ایکشن: drop|shrink|replace", + "yes": "تصدیق چھوڑ دیں" + }, + "test": { + "file": "درخواست کی JSON فائل کا پاتھ" + } + }, + "combos": { + "description": "سیاق سے آگاہ کومبو مینجمنٹ" + } + }, + "sessions": { + "description": "فعال سیشنز کا معائنہ اور نظم کریں", + "list": { + "user": "صارف کے لحاظ سے فلٹر کریں", + "kind": "قسم کے لحاظ سے فلٹر کریں (dashboard|api-key|mcp|a2a)", + "active": "صرف فعال سیشنز دکھائیں", + "limit": "زیادہ سے زیادہ نتائج (ڈیفالٹ: 100)" + }, + "expire": { + "yes": "تصدیق چھوڑ دیں" + }, + "expireAll": { + "user": "وہ صارف جس کے سیشنز ختم کرنے ہیں", + "yes": "تصدیق چھوڑ دیں" + } + }, + "tags": { + "description": "وسائل کے ٹیگز کا نظم کریں", + "add": { + "color": "ٹیگ کا رنگ (hex یا نام)", + "description": "ٹیگ کی تفصیل" + }, + "remove": { + "yes": "تصدیق چھوڑ دیں" + }, + "assign": { + "tag": "ٹیگ کا نام", + "to": "ہدف وسیلہ بطور type:id (مثلاً provider:openai)" + }, + "unassign": { + "tag": "ٹیگ کا نام", + "from": "ماخذ وسیلہ بطور type:id" + } + }, + "openapi": { + "description": "OmniRoute OpenAPI اسپیک تک رسائی حاصل کریں اور اسے ٹیسٹ کریں", + "dump": { + "description": "OpenAPI اسپیک کو stdout یا فائل میں ڈمپ کریں", + "format": "آؤٹ پٹ فارمیٹ: yaml|json (ڈیفالٹ: yaml)", + "out": "فائل پاتھ میں محفوظ کریں" + }, + "validate": { + "description": "OpenAPI اسپیک کی توثیق کریں" + }, + "try": { + "description": "اسپیک کے ذریعے API اینڈ پوائنٹ ٹیسٹ کریں", + "method": "HTTP میتھڈ (ڈیفالٹ: GET)", + "body": "درخواست کی باڈی کی JSON فائل کا پاتھ", + "query": "کوئری پیرامیٹر بطور key=value (قابل تکرار)", + "header": "ہیڈر بطور key=value (قابل تکرار)" + }, + "endpoints": { + "description": "تمام API اینڈ پوائنٹس کی فہرست دکھائیں", + "search": "پاتھ یا خلاصے کے لحاظ سے فلٹر کریں" + }, + "paths": { + "description": "تمام API پاتھز کی فہرست دکھائیں" + } + }, + "combo": { + "title": "کومبوز", + "switched": "فعال کومبو: {name}", + "created": "کومبو بنا دیا گیا: {name}", + "deleted": "کومبو حذف کر دیا گیا: {name}", + "noCombos": "کوئی کومبو ترتیب نہیں دیا گیا۔", + "confirmDelete": "کیا کومبو {name} حذف کر دیا جائے؟", + "suggest": { + "description": "AI اسکورنگ استعمال کرتے ہوئے کسی کام کے لیے بہترین کومبو تجویز کریں", + "task": "کام کی تفصیل", + "maxCost": "فی درخواست زیادہ سے زیادہ لاگت، USD میں", + "maxLatencyMs": "زیادہ سے زیادہ تاخیر، ملی سیکنڈ میں", + "weights": "JSON اسکورنگ کے اوزان، مثلاً {\"latency\":0.7,\"cost\":0.3}", + "top": "دکھائے جانے والے بہترین امیدواروں کی تعداد (ڈیفالٹ: 5)", + "explain": "وجہ stderr پر پرنٹ کریں", + "switch": "سب سے اعلیٰ درجہ یافتہ کومبو فعال کریں" + } + }, + "oneproxy": { + "description": "OneProxy اپ اسٹریم پول کا نظم کریں", + "stats": { + "provider": "فراہم کنندہ کے لحاظ سے فلٹر کریں", + "period": "مدتِ وقت (ڈیفالٹ: 24h)" + }, + "fetch": { + "description": "پول سے پراکسیاں حاصل کریں", + "count": "حاصل کی جانے والی پراکسیوں کی تعداد (ڈیفالٹ: 1)", + "type": "پراکسی کی قسم: http|socks5 (ڈیفالٹ: http)" + }, + "rotate": { + "description": "پراکسی کی روٹیشن لازمی کریں", + "provider": "وہ فراہم کنندہ جس کے لیے روٹیشن کرنی ہے", + "connectionId": "روٹیشن کے لیے مخصوص کنکشن ID" + }, + "config": { + "description": "OneProxy کی کنفیگریشن دکھائیں یا اپ ڈیٹ کریں", + "enabled": "پراکسی پول فعال کریں (true|false)", + "poolSize": "پول کا حجم", + "providerSource": "پراکسی فراہم کنندہ کا URL", + "rotationPolicy": "روٹیشن پالیسی: sticky|per-request|periodic" + }, + "pool": { + "description": "میٹرکس کے ساتھ موجودہ پراکسی پول کی فہرست دکھائیں" + } + }, + "open": { + "description": "براؤزر میں OmniRoute ڈیش بورڈ کا مخصوص صفحہ کھولیں", + "url": "صرف URL پرنٹ کریں، براؤزر نہ کھولیں" + }, + "telemetry": { + "description": "مجموعی ٹیلی میٹری ڈیٹا تک رسائی حاصل کریں", + "summary": { + "description": "مجموعی ٹیلی میٹری کا خلاصہ دکھائیں", + "period": "مدتِ وقت: 24h|7d|30d (ڈیفالٹ: 24h)", + "compareTo": "پچھلی مدت سے موازنہ کریں" + }, + "export": { + "description": "ٹیلی میٹری ایونٹس کو JSONL میں ایکسپورٹ کریں", + "out": "آؤٹ پٹ فائل کا پاتھ (ڈیفالٹ: telemetry.jsonl)", + "period": "ایکسپورٹ کے لیے مدتِ وقت (ڈیفالٹ: 7d)" + } + }, + "sync": { + "description": "OmniRoute انسٹینسز کے درمیان کنفیگریشن ہم وقت کریں", + "push": { + "description": "کنفیگریشن کو کلاؤڈ یا ریموٹ انسٹینس پر پُش کریں", + "target": "ہدف (cloud یا context:name)", + "bundle": "ہم وقت کرنے کے لیے بنڈل کے حصے", + "dryRun": "لاگو کیے بغیر پیش منظر دیکھیں" + }, + "pull": { + "description": "کلاؤڈ یا ریموٹ سے کنفیگ حاصل کریں", + "source": "ماخذ (cloud یا context:name)", + "merge": "موجودہ کنفیگ کے ساتھ ضم کریں", + "replace": "موجودہ کنفیگ تبدیل کریں", + "dryRun": "لاگو کیے بغیر پیش منظر دیکھیں" + }, + "diff": { + "source": "ماخذ کا سیاق", + "target": "ہدف کا سیاق" + }, + "bundle": { + "description": "کنفیگ کو بنڈل فائل کے طور پر برآمد کریں", + "include": "شامل کیے جانے والے حصے (کاما سے علیحدہ)" + }, + "import": { + "description": "بنڈل فائل درآمد کریں", + "dryRun": "لاگو کیے بغیر توثیق کریں" + }, + "initialize": { + "fromCloud": "کلاؤڈ بیک اپ سے ابتدائی ترتیب بنائیں" + }, + "tokens": { + "description": "ہم وقتی ٹوکنز کا نظم کریں", + "create": { + "name": "ٹوکن کا نام", + "scope": "ٹوکن کا دائرۂ کار", + "ttl": "ٹوکن TTL (مثلاً 30d)" + }, + "revoke": { + "yes": "تصدیق چھوڑ دیں" + } + }, + "resolve": { + "description": "ہم وقتی تنازعات کو متعامل طور پر حل کریں" + } + }, + "config": { + "contexts": { + "description": "سرور کے سیاقات/پروفائلز کا نظم کریں (شامل کریں، استعمال کریں، فہرست بنائیں، دکھائیں، ہٹائیں، نام بدلیں، برآمد کریں، درآمد کریں)" + }, + "lang": { + "description": "CLI کی ڈسپلے زبان کا نظم کریں", + "getDescription": "فی الحال فعال زبان کا کوڈ دکھائیں", + "setDescription": "ڈسپلے زبان مقرر کریں اور اسے کنفیگ میں محفوظ کریں", + "listDescription": "تمام دستیاب زبانوں کی فہرست دکھائیں", + "listTitle": "دستیاب زبانیں", + "current": "زبان: {code} ({name})", + "saved": "زبان {code} ({name}) پر مقرر کر دی گئی۔", + "noCode": "زبان کا کوڈ درکار ہے۔ دستیاب کوڈز دیکھنے کے لیے 'omniroute config lang list' چلائیں۔", + "unknown": "نامعلوم زبان کا کوڈ: {code}۔ دستیاب کوڈز دیکھنے کے لیے 'omniroute config lang list' چلائیں۔", + "alreadySet": "زبان پہلے ہی {code} پر مقرر ہے۔", + "envHint": "مشورہ: آپ اپنے ماحول میں OMNIROUTE_LANG={code} بھی مقرر کر سکتے ہیں۔" + } + }, + "completion": { + "description": "شیل تکمیل اسکرپٹس بنائیں یا انسٹال کریں", + "zsh": "zsh تکمیل اسکرپٹ پرنٹ کریں", + "bash": "bash تکمیل اسکرپٹ پرنٹ کریں", + "fish": "fish تکمیل اسکرپٹ پرنٹ کریں", + "install": "شناخت شدہ شیل کے لیے تکمیل اسکرپٹ عالمی طور پر انسٹال کریں", + "refresh": "combos/providers/models کا کیش تازہ کریں" + }, + "logs": { + "description": "درخواست کے لاگز کو اسٹریم یا برآمد کریں", + "follow": "لاگز کو حقیقی وقت میں اسٹریم کریں", + "filter": "سطح کے لحاظ سے فلٹر کریں (error,warn,info) — کاما سے جدا", + "lines": "حاصل کی جانے والی سطروں کی تعداد", + "timeout": "کنکشن ٹائم آؤٹ، ms میں", + "baseUrl": "OmniRoute API کا بنیادی URL", + "requestId": "درخواست ID کے لحاظ سے فلٹر کریں", + "apiKey": "API کلید کے لحاظ سے فلٹر کریں", + "combo": "کامبو نام کے لحاظ سے فلٹر کریں", + "status": "HTTP اسٹیٹس کوڈ کے لحاظ سے فلٹر کریں", + "durationMin": "درخواست کا کم از کم دورانیہ، ms میں", + "durationMax": "درخواست کا زیادہ سے زیادہ دورانیہ، ms میں", + "export": "لاگز کو فائل میں محفوظ کریں (json/jsonl/csv)", + "exported": "لاگز {path} میں محفوظ کر دیے گئے", + "stopped": "لاگ اسٹریم رک گئی۔", + "streamError": "لاگ اسٹریم کی خرابی: {message}" + }, + "tray": { + "description": "سسٹم ٹرے آئیکن کو کنٹرول کریں", + "show": "ٹرے آئیکن دکھائیں (اگر سرور --tray کے ساتھ چل رہا ہو)", + "hide": "ٹرے آئیکن چھپائیں", + "quit": "ٹرے کے ذریعے OmniRoute بند کریں" + }, + "autostart": { + "description": "بوٹ پر OmniRoute کا خودکار آغاز منظم کریں (Linux: systemd صارف سروس)", + "enable": "بوٹ پر خودکار آغاز فعال کریں", + "disable": "بوٹ پر خودکار آغاز غیر فعال کریں", + "toggle": "بوٹ پر خودکار آغاز ٹوگل کریں", + "status": "خودکار آغاز کی حالت دکھائیں" + }, + "runtime": { + "description": "مقامی رَن ٹائم انحصارات منظم کریں", + "check": "رَن ٹائم ڈائریکٹری میں مقامی انحصارات کی حالت چیک کریں", + "repair": "رَن ٹائم ڈائریکٹری میں مقامی انحصارات دوبارہ انسٹال کریں", + "repair_force": "درست ہونے کے باوجود زبردستی دوبارہ انسٹال کریں", + "clean": "رَن ٹائم ڈائریکٹری ہٹائیں (ڈسک کی جگہ خالی ہوتی ہے)", + "clean_yes": "تصدیق چھوڑ دیں" + }, + "repl": { + "description": "LLM کے ساتھ انٹرایکٹو کثیر باری REPL", + "model": "استعمال کیا جانے والا ماڈل (طے شدہ: auto)", + "combo": "استعمال کیا جانے والا کامبو نام", + "system": "سسٹم پرامپٹ", + "resume": "نام کے ذریعے محفوظ کردہ سیشن دوبارہ شروع کریں" + }, + "plugin": { + "description": "CLI پلگ اِنز منظم کریں (omniroute-cmd-*)", + "list": "انسٹال شدہ پلگ اِنز کی فہرست دکھائیں", + "install": "npm یا مقامی پاتھ سے پلگ اِن انسٹال کریں", + "remove": "انسٹال شدہ پلگ اِن ہٹائیں", + "info": "انسٹال شدہ پلگ اِن کی تفصیلات دکھائیں", + "search": "دستیاب پلگ اِنز کے لیے npm رجسٹری میں تلاش کریں", + "update": "انسٹال شدہ پلگ اِن اپ ڈیٹ کریں", + "scaffold": "ایک نئے پلگ اِن کا بنیادی ڈھانچہ تیار کریں" + }, + "launch": { + "description": "OmniRoute کی جانب اشارہ کرتے ہوئے Claude Code چلائیں (مقامی یا ریموٹ، --profile کے ساتھ)", + "token": "وہ ٹوکن جو Claude کلائنٹ کو بھیجنا چاہیے (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "OmniRoute سے {port} پر رابطہ نہیں ہو پا رہا۔ اسے 'omniroute serve' کے ساتھ شروع کریں۔", + "notFound": "'claude' CLI، PATH میں نہیں ملا۔" + }, + "run": { + "description": "OmniRoute کے ذریعے ایک معاونت یافتہ CLI ہدف چلائیں" + }, + "setupClaude": { + "description": "OmniRoute ماڈل کیٹلاگ سے ~/.claude/profiles میں Claude Code پروفائلز بنائیں" + }, + "connect": { + "description": "ریموٹ OmniRoute سرور سے منسلک ہوں اور ریموٹ موڈ میں داخل ہوں" + }, + "tokens": { + "description": "دائرۂ کار والے CLI رسائی ٹوکنز کا نظم کریں (ریموٹ موڈ)" + }, + "configure": { + "description": "فعال سرور سے فراہم کنندہ اور ماڈل منتخب کریں اور معاونت یافتہ مقامی CLI کو تشکیل دیں" + }, + "launchCodex": { + "description": "OmniRoute کی جانب اشارہ کرتے ہوئے Codex CLI چلائیں (مقامی یا ریموٹ VPS)" + }, + "setupCodex": { + "description": "OmniRoute کے براہِ راست ماڈل کیٹلاگ سے ~/.codex پروفائل فائلیں بنائیں" + }, + "packs": { + "description": "اختیاری رَن ٹائم پیکس (ML / براؤزر آٹومیشن) کا نظم کریں", + "listDescription": "اختیاری پیکس اور ان کی تنصیب کی حالت درج کریں", + "installDescription": "DATA_DIR میں اختیاری پیک انسٹال کریں", + "verifyDescription": "انسٹال شدہ پیکس کی فراہم کردہ چیک سم انڈیکس کے مقابل تصدیق کریں", + "removeDescription": "انسٹال شدہ اختیاری پیک ہٹائیں", + "sourceOpt": "پیک کے مواد اور پیک انڈیکس پر مشتمل ڈائریکٹری", + "warnNoIndex": "optional-packs.index.json نہیں ملا — اس چیک آؤٹ میں انسٹال/تصدیق دستیاب نہیں ہیں (ڈیسک ٹاپ بنڈلز میں یہ شامل ہوتا ہے)", + "errUnknown": "نامعلوم پیک: {name}", + "errNoIndex": "پیک انڈیکس نہیں ملا؛ پیک کا مواد رکھنے والی ڈائریکٹری کے لیے --source دیں (ڈیسک ٹاپ بنڈلز میں یہ ایپ کے ساتھ موجود ہوتا ہے)", + "installed": "پیک \"{name}\"، {dir} میں انسٹال اور تصدیق ہو گیا", + "restartHint": "OmniRoute سرور (یا ڈیسک ٹاپ ایپ) دوبارہ شروع کریں تاکہ رَن ٹائم پیک کو شناخت کر سکے", + "removed": "پیک \"{name}\" ہٹا دیا گیا", + "notInstalled": "پیک \"{name}\" انسٹال نہیں تھا", + "verifyOk": "تمام انسٹال شدہ پیکس کی تصدیق ہو گئی", + "verifyFailed": "{count} پیک کی تصدیق ناکام ہوئی", + "noneInstalled": "کوئی اختیاری پیک انسٹال نہیں ہے" } } diff --git a/bin/cli/locales/uz.json b/bin/cli/locales/uz.json index db81777d54..51de018daa 100644 --- a/bin/cli/locales/uz.json +++ b/bin/cli/locales/uz.json @@ -256,6 +256,7 @@ "max_restarts": "Taslim bo‘lishdan oldin 30 soniya ichidagi nosozlikdan keyingi qayta ishga tushirishlarning maksimal soni (standart: 2)", "tray": "Tizim treyida ishga tushirish (faqat ish stoli versiyasida, ixtiyoriy)", "no_tray": "Tizim treyi belgisini o‘chirish", + "ready_timeout": "Tayyorlik tekshiruvi uchun kutish vaqti, ms (shuningdek OMNIROUTE_READY_TIMEOUT_MS, standart qiymat 60000)", "tls_cert": "HTTPS orqali xizmat ko‘rsatish uchun TLS sertifikati (PEM) yo‘li (shuningdek, OMNIROUTE_TLS_CERT)", "tls_key": "HTTPS orqali xizmat ko‘rsatish uchun TLS maxfiy kaliti (PEM) yo‘li (shuningdek, OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "MCP serveri ishlamoqda ({transport})", "stopped": "MCP serveri toʻxtatildi.", "restarted": "MCP serveri qayta ishga tushirildi.", + "stoppedHint": "Uni yoqish uchun `omniroute mcp enable` buyrugʻini ishga tushiring.", + "enabled": "MCP serveri yoqildi.", + "disabled": "MCP serveri oʻchirildi.", + "enable": { + "description": "MCP serverini yoqish", + "transport": "Foydalaniladigan transport: stdio|sse|streamable-http" + }, + "disable": { + "description": "MCP serverini oʻchirish" + }, "call": { "description": "MCP vositasini bevosita chaqirish", "args": "JSON argumentlar obyekti (ichki)", diff --git a/bin/cli/locales/vi.json b/bin/cli/locales/vi.json index 67bc596874..276b0b727b 100644 --- a/bin/cli/locales/vi.json +++ b/bin/cli/locales/vi.json @@ -14,6 +14,812 @@ "jsonOpt": "Xuất dưới dạng JSON", "yesOpt": "Bỏ qua xác nhận" }, + "setup": { + "title": "Thiết lập OmniRoute", + "passwordPrompt": "Mật khẩu quản trị viên", + "providerPrompt": "Nhà cung cấp mặc định (để trống để bỏ qua)", + "done": "Thiết lập hoàn tất", + "passwordSet": "Đã cấu hình mật khẩu quản trị viên", + "providerSet": "Đã cấu hình nhà cung cấp: {name}", + "testingProvider": "Đang kiểm tra kết nối với nhà cung cấp: {name}", + "testPassed": "Kiểm tra nhà cung cấp thành công", + "testFailed": "Kiểm tra nhà cung cấp thất bại: {error}", + "loginEnabled": "Đăng nhập: đã bật (đã cập nhật mật khẩu)", + "loginDisabled": "Đăng nhập: đã tắt", + "providerInfo": "Nhà cung cấp: {info}", + "opencode": "Cài đặt và cấu hình @omniroute/opencode-plugin đi kèm cho OpenCode" + }, + "doctor": { + "title": "Chẩn đoán OmniRoute", + "dbOk": "Cơ sở dữ liệu: OK ({path})", + "dbMissing": "Cơ sở dữ liệu: chưa được khởi tạo — hãy chạy `omniroute setup`", + "portOk": "Cổng {port}: khả dụng", + "portConflict": "Cổng {port}: đang được một tiến trình khác sử dụng", + "encryptionOk": "Khóa mã hóa: đã cấu hình", + "encryptionMissing": "Thiếu khóa mã hóa — hãy chạy `omniroute setup`", + "allGood": "Tất cả các bước kiểm tra đều đạt.", + "warnings": "{count} cảnh báo — xem ở trên." + }, + "providers": { + "title": "Nhà cung cấp", + "noProviders": "Chưa cấu hình nhà cung cấp nào. Chạy: omniroute setup", + "testing": "Đang kiểm tra {name}...", + "available": "Có {count} nhà cung cấp khả dụng", + "connected": "Đã kết nối", + "disconnected": "Đã ngắt kết nối", + "validationFailed": "Xác thực thất bại: {error}", + "metrics": { + "description": "Hiển thị các chỉ số hiệu suất của nhà cung cấp (độ trễ, tỷ lệ thành công, chi phí)", + "provider": "Lọc theo ID nhà cung cấp", + "connection_id": "Lọc theo ID kết nối", + "period": "Khoảng thời gian: 1h|6h|24h|7d|30d (mặc định: 24h)", + "metric": "Tập trung vào một trường chỉ số cụ thể", + "sort": "Sắp xếp theo trường (giảm dần)", + "limit": "Số hàng tối đa (mặc định: 50)", + "watch": "Làm mới mỗi 5 giây (chế độ trực tiếp)", + "compare": "Các ID nhà cung cấp, phân tách bằng dấu phẩy, để so sánh song song" + }, + "metric_single": { + "description": "Lấy một giá trị chỉ số duy nhất cho một kết nối cụ thể" + }, + "rotate": { + "description": "Thay khóa API thượng nguồn cho một kết nối nhà cung cấp", + "newKeyOpt": "Giá trị khóa API mới (nên tránh: ưu tiên --from-env)", + "fromEnvOpt": "Đọc khóa mới từ biến môi trường VAR", + "oauthOpt": "Thay vào đó, kích hoạt quy trình xác thực lại OAuth", + "skipTestOpt": "Bỏ qua kiểm tra kết nối sau khi xoay vòng", + "dryRunOpt": "Hiển thị những thay đổi dự kiến mà không ghi", + "confirmPrompt": "Thay thế khóa API cho kết nối \"{name}\" ({id})? [y/N]", + "dryRunResult": "[dry-run] Sẽ xoay vòng khóa cho \"{name}\" ({id}). Không có thay đổi nào được thực hiện.", + "oauthHint": "Kết nối OAuth — chạy: omniroute oauth {provider}", + "envVarEmpty": "Biến môi trường {var} chưa được đặt hoặc đang trống.", + "success": "Đã xoay vòng khóa cho \"{name}\". Chạy `providers test {id}` để xác minh.", + "testPassed": "Kiểm tra sau khi xoay vòng đã thành công.", + "testFailed": "Kiểm tra sau khi xoay vòng không thành công: {error}" + }, + "status": { + "description": "Hiển thị trạng thái khóa cho tất cả kết nối nhà cung cấp (tuổi, thời hạn, thời gian chờ)", + "providerOpt": "Lọc theo tên nhà cung cấp", + "header": "ID Nhà cung cấp Tên Trạng thái hết hạn Trạng thái kiểm tra Chờ đến", + "noData": "Không có dữ liệu kết nối nhà cung cấp.", + "requiresServer": "providers status yêu cầu máy chủ OmniRoute đang chạy." + } + }, + "keys": { + "title": "Khóa API", + "addDescription": "Thêm hoặc cập nhật khóa API cho một nhà cung cấp", + "listDescription": "Liệt kê tất cả khóa API đã cấu hình", + "removeDescription": "Xóa khóa API của một nhà cung cấp", + "regenerateDescription": "Tạo lại khóa API OmniRoute", + "revokeDescription": "Thu hồi khóa API OmniRoute", + "revealDescription": "Hiển thị giá trị khóa API không bị che", + "usageDescription": "Hiển thị hoạt động sử dụng gần đây của một khóa API", + "usageLimitOpt": "Số lượng yêu cầu gần đây", + "rotateDescription": "Tạo khóa mới và vô hiệu hóa khóa cũ", + "graceOpt": "Thời gian gia hạn (ms) trước khi khóa cũ bị vô hiệu hóa", + "stdinOpt": "Đọc khóa API từ stdin thay vì đối số", + "added": "Đã thêm khóa cho {provider}.", + "removed": "Đã xóa khóa.", + "listed": "{count} khóa.", + "noKeys": "Chưa cấu hình khóa nào.", + "noUsage": "Không tìm thấy dữ liệu sử dụng.", + "confirmRemove": "Xóa khóa {id}?", + "confirmRegenerate": "Tạo lại khóa {id}?", + "confirmRevoke": "Thu hồi khóa {id}?", + "confirmRotate": "Xoay vòng khóa {id}? (khóa cũ sẽ bị vô hiệu hóa sau thời gian gia hạn)", + "regenerated": "Đã tạo lại. Khóa mới: {key}", + "revoked": "Đã thu hồi khóa {id}.", + "rotated": "Khóa {id} đã được luân chuyển. ID khóa mới: {newId}", + "revealWarning": "⚠ Thao tác này sẽ hiển thị toàn bộ khóa không che giấu. Hãy đảm bảo màn hình của bạn được giữ riêng tư.", + "providerRequired": "Nhà cung cấp là bắt buộc.", + "keyRequired": "Khóa API là bắt buộc.", + "stdinEmpty": "Không có khóa API nào được cung cấp qua stdin.", + "unknownProvider": "Nhà cung cấp không xác định: {provider}", + "policy": { + "title": "Chính sách khóa", + "showDescription": "Hiển thị chính sách giới hạn tốc độ/chi phí của một khóa", + "setDescription": "Thiết lập chính sách giới hạn tốc độ/chi phí cho một khóa", + "rateLimitOpt": "Số yêu cầu tối đa mỗi phút", + "maxCostOpt": "Chi phí tối đa mỗi ngày (USD)", + "allowedModelsOpt": "Danh sách các mô hình được phép, phân tách bằng dấu phẩy", + "nothingToSet": "Chưa cung cấp trường chính sách nào. Hãy sử dụng --rate-limit, --max-cost hoặc --allowed-models.", + "updated": "Đã cập nhật chính sách." + }, + "expiration": { + "title": "Thời hạn khóa", + "listDescription": "Liệt kê các khóa sắp hết hạn", + "daysOpt": "Hiển thị các khóa sẽ hết hạn trong vòng N ngày", + "none": "Không có khóa nào hết hạn trong vòng {days} ngày.", + "listTitle": "Các khóa hết hạn trong vòng {days} ngày:" + } + }, + "authExport": { + "description": "Xuất thông tin xác thực nhà cung cấp ĐÃ GIẢI MÃ (chỉ cục bộ, đầu ra văn bản thuần)", + "idOpt": "Chỉ xuất kết nối khớp với id/tên/nhà cung cấp này", + "formatOpt": "Định dạng đầu ra: json hoặc env", + "outOpt": "Ghi đầu ra vào tệp thay vì stdout (được ghi với quyền 0600)", + "forceOpt": "Xác nhận rằng bạn hiểu thao tác này sẽ in/ghi các bí mật dưới dạng văn bản thuần", + "warning": "⚠ Thao tác này sẽ in/ghi các khóa API và token OAuth ĐÃ GIẢI MÃ dưới dạng văn bản thuần. Hãy đảm bảo màn hình, lịch sử shell và mọi tệp đầu ra của bạn đều được giữ riêng tư.", + "confirmHeading": "⚠ CẢNH BÁO: thao tác này xuất thông tin xác thực nhà cung cấp ĐÃ GIẢI MÃ dưới dạng văn bản thuần", + "confirmBody": "Lệnh này giải mã và in/ghi apiKey, accessToken, refreshToken và\nidToken cho (các) kết nối đã chọn. Hãy coi đầu ra là thông tin bí mật.", + "confirmFooter": "Để xác nhận, hãy chạy:\n omniroute auth export --force", + "missingKey": "Cần có STORAGE_ENCRYPTION_KEY để xuất thông tin xác thực.", + "notFound": "Không tìm thấy kết nối: {id}", + "invalidFormat": "Định dạng không hợp lệ: {format}. Hãy sử dụng json hoặc env." + }, + "stream": { + "description": "Truyền phát phản hồi trò chuyện với các chế độ kiểm tra SSE", + "file": "Đọc lời nhắc từ tệp", + "stdin": "Đọc lời nhắc từ stdin", + "model": "ID mô hình (mặc định: auto)", + "system": "Lời nhắc hệ thống", + "combo": "Buộc sử dụng một tổ hợp cụ thể theo tên", + "max_tokens": "Số token tối đa trong phản hồi", + "responses_api": "Sử dụng /v1/responses thay cho /v1/chat/completions", + "raw": "In các dòng SSE thô ngay khi nhận được", + "debug": "In thông tin thời gian của từng phần lên stderr", + "save": "Lưu tất cả sự kiện SSE vào tệp .jsonl", + "error": { + "empty_prompt": "Lỗi: bắt buộc phải có prompt (đối số vị trí, --file hoặc --stdin)" + } + }, + "usage": { + "description": "Phân tích mức sử dụng, ngân sách, hạn ngạch và nhật ký", + "analytics": { + "description": "Hiển thị phân tích tổng hợp về mức sử dụng", + "period": "Khoảng thời gian: 1d|7d|30d|90d|ytd|all (mặc định: 30d)", + "provider": "Lọc theo ID nhà cung cấp" + }, + "budget": { + "description": "Quản lý ngân sách chi phí", + "set": { + "scope": "Phạm vi ngân sách (mặc định: global)", + "period": "Chu kỳ ngân sách: daily|weekly|monthly (mặc định: monthly)" + } + }, + "quota": { + "description": "Hiển thị mức sử dụng hạn ngạch của nhà cung cấp", + "provider": "Lọc theo ID nhà cung cấp", + "check": "Hiển thị hạn ngạch có khả dụng cho yêu cầu mới hay không" + }, + "logs": { + "description": "Hiển thị nhật ký các lệnh gọi yêu cầu", + "limit": "Số mục nhật ký cần trả về (mặc định: 100)", + "search": "Truy vấn tìm kiếm để lọc nhật ký", + "since": "Trả về nhật ký kể từ dấu thời gian này", + "follow": "Liên tục theo dõi các mục nhật ký mới", + "api_key": "Lọc nhật ký theo khóa API" + }, + "utilization": { + "description": "Hiển thị chỉ số sử dụng khóa API", + "api_key": "Lọc theo khóa API" + }, + "history": { + "description": "Hiển thị lịch sử yêu cầu", + "limit": "Số mục lịch sử (mặc định: 100)" + }, + "proxy_logs": { + "description": "Hiển thị nhật ký yêu cầu ở cấp proxy", + "limit": "Số mục nhật ký proxy (mặc định: 100)" + } + }, + "cost": { + "description": "Hiển thị báo cáo chi phí với phân tích chi tiết theo nhà cung cấp, mô hình, combo hoặc khóa API", + "period": "Khoảng thời gian: 1d|7d|30d|90d|ytd|all (mặc định: 30d)", + "since": "Ngày bắt đầu (định dạng ISO, ví dụ: 2026-01-01) — ghi đè --period", + "until": "Ngày kết thúc (định dạng ISO)", + "group_by": "Nhóm kết quả theo: provider|model|api-key|combo|day (mặc định: provider)", + "api_key_filter": "Lọc theo một khóa API cụ thể", + "limit": "Số hàng tối đa cần hiển thị (mặc định: 100)" + }, + "simulate": { + "description": "Mô phỏng định tuyến chạy thử — hiển thị những nhà cung cấp sẽ được chọn mà không gọi dịch vụ thượng nguồn", + "file": "Tải toàn bộ nội dung yêu cầu từ tệp JSON", + "model": "ID mô hình (mặc định: auto)", + "combo": "Buộc sử dụng một combo cụ thể theo tên", + "reasoning": "Mức độ nỗ lực suy luận (low|medium|high)", + "thinking": "Ngân sách token cho quá trình suy nghĩ mở rộng", + "explain": "In cây dự phòng và khoảng chi phí lên stderr", + "noCombo": "Không tìm thấy combo phù hợp. Hãy cấu hình một combo bằng lệnh: omniroute combo create" + }, + "chat": { + "description": "Gửi một lời nhắc trò chuyện dùng một lần đến OmniRoute", + "file": "Đọc lời nhắc từ tệp", + "stdin": "Đọc lời nhắc từ stdin", + "system": "Lời nhắc hệ thống", + "model": "ID mô hình (mặc định: auto)", + "max_tokens": "Số token tối đa trong phản hồi", + "temperature": "Nhiệt độ lấy mẫu (0–2)", + "top_p": "Lấy mẫu hạt nhân top-p", + "reasoning_effort": "Mức độ nỗ lực suy luận (low|medium|high)", + "thinking_budget": "Ngân sách token cho suy nghĩ mở rộng", + "combo": "Buộc sử dụng một tổ hợp cụ thể theo tên", + "responses_api": "Sử dụng /v1/responses thay cho /v1/chat/completions", + "stream": "Truyền phát phản hồi theo từng phần", + "no_history": "Không lưu vào ~/.omniroute/cli-history.jsonl", + "error": { + "empty_prompt": "Lỗi: bắt buộc phải có lời nhắc (đối số vị trí, --file hoặc --stdin)" + } + }, + "serve": { + "description": "Khởi động máy chủ OmniRoute (hành động mặc định)", + "starting": "Đang khởi động máy chủ OmniRoute trên cổng {port}...", + "ready": "Sẵn sàng tại http://localhost:{port}", + "stopping": "Đang dừng máy chủ (PID {pid})...", + "stopped": "Máy chủ đã dừng.", + "notRunning": "Máy chủ hiện không chạy.", + "port": "Cổng để lắng nghe (mặc định: 20128)", + "no_open": "Không tự động mở trình duyệt", + "daemon": "Chạy máy chủ dưới dạng tiến trình nền", + "log": "Hiển thị nhật ký máy chủ trực tiếp", + "no_recovery": "Tắt tự động khởi động lại khi gặp sự cố (chế độ gỡ lỗi)", + "max_restarts": "Số lần khởi động lại tối đa do sự cố trong vòng 30 giây trước khi từ bỏ (mặc định: 2)", + "tray": "Khởi động trong khay hệ thống (chỉ dành cho máy tính để bàn, phải chủ động bật)", + "no_tray": "Tắt biểu tượng khay hệ thống", + "ready_timeout": "Thời gian chờ của phép kiểm tra trạng thái sẵn sàng tính bằng ms (cũng có thể dùng OMNIROUTE_READY_TIMEOUT_MS, mặc định 60000)", + "tls_cert": "Đường dẫn đến chứng chỉ TLS (PEM) để cung cấp HTTPS (cũng có thể dùng OMNIROUTE_TLS_CERT)", + "tls_key": "Đường dẫn đến khóa riêng TLS (PEM) để cung cấp HTTPS (cũng có thể dùng OMNIROUTE_TLS_KEY)" + }, + "backup": { + "title": "Sao lưu", + "description": "Tạo bản sao lưu dữ liệu OmniRoute", + "creating": "Đang tạo bản sao lưu...", + "done": "Bản sao lưu đã được lưu vào {path}", + "noFiles": "Không có tệp nào để sao lưu (cơ sở dữ liệu chưa được khởi tạo)", + "failed": "Sao lưu thất bại: {error}", + "restoring": "Đang khôi phục từ {path}...", + "restored": "Khôi phục hoàn tất.", + "restoreDescription": "Khôi phục từ bản sao lưu", + "listTitle": "Các bản sao lưu khả dụng", + "noBackups": "Không tìm thấy bản sao lưu nào.", + "notFound": "Không tìm thấy bản sao lưu: {name}", + "confirmRestore": "Ghi đè dữ liệu hiện tại bằng bản sao lưu từ {ts}?", + "createDescription": "Tạo bản sao lưu dữ liệu OmniRoute", + "nameOpt": "Tên bản sao lưu tùy chỉnh", + "cloudOpt": "Tải bản sao lưu lên bộ nhớ đám mây", + "encryptOpt": "Mã hóa bản sao lưu bằng AES-256-GCM", + "keyFileOpt": "Đường dẫn đến tệp chứa mật khẩu mã hóa", + "excludeOpt": "Loại trừ tệp khớp với mẫu (có thể lặp lại)", + "retentionOpt": "Chỉ giữ lại N bản sao lưu gần nhất", + "passphrasePrompt": "Mật khẩu mã hóa:", + "noPassphrase": "Cần có mật khẩu cho bản sao lưu được mã hóa.", + "cloudFailed": "Cảnh báo: tải lên đám mây không thành công. Bản sao lưu cục bộ đã được lưu.", + "cloudUploaded": "Đã tải bản sao lưu lên đám mây: {url}", + "auto": { + "title": "Lịch sao lưu", + "enableDescription": "Bật sao lưu tự động theo lịch", + "disableDescription": "Tắt sao lưu tự động theo lịch", + "statusDescription": "Hiển thị trạng thái lịch sao lưu hiện tại", + "cronOpt": "Biểu thức cron cho lịch (mặc định: hằng ngày lúc 3 giờ sáng)", + "enabled": "Đã bật sao lưu tự động (cron: {cron}).", + "hint": "Lịch được omniroute serve đọc khi khởi động.", + "disabled": "Đã tắt sao lưu tự động.", + "notConfigured": "Chưa cấu hình lịch sao lưu." + } + }, + "health": { + "description": "Kiểm tra tình trạng máy chủ và trạng thái các thành phần", + "noServer": "Máy chủ không chạy. Khởi động bằng: omniroute serve", + "title": "Tình trạng", + "status": "Trạng thái: {status}", + "uptime": "Thời gian hoạt động: {uptime}", + "requests": "Yêu cầu (24 giờ): {count}", + "cost": "Chi phí (24 giờ): ${cost}" + }, + "quota": { + "description": "Hiển thị mức sử dụng hạn ngạch của nhà cung cấp", + "noServer": "Máy chủ không chạy. Khởi động bằng: omniroute serve", + "noData": "Không có thông tin về hạn ngạch." + }, + "cache": { + "description": "Quản lý bộ nhớ đệm phản hồi", + "noServer": "Máy chủ không chạy. Khởi động bằng: omniroute serve", + "cleared": "Đã xóa bộ nhớ đệm.", + "clearFailed": "Không thể xóa bộ nhớ đệm." + }, + "redis": { + "description": "Khởi chạy bộ chứa Redis cục bộ bằng một cú nhấp chuột (Podman hoặc Docker) để lưu bộ đệm và theo dõi hạn ngạch của OmniRoute" + }, + "test": { + "description": "Kiểm tra kết nối với nhà cung cấp", + "noServer": "Máy chủ chưa chạy. Khởi động bằng: omniroute serve", + "testing": "Đang kiểm tra {provider} / {model}...", + "passed": "Kết nối thành công!", + "failed": "Kết nối thất bại: {error}", + "allProvidersOpt": "Kiểm tra tất cả nhà cung cấp đã cấu hình", + "latencyOpt": "Hiển thị số đo độ trễ (trung bình/tối thiểu/tối đa, ms)", + "repeatOpt": "Lặp lại kiểm tra N lần và tổng hợp kết quả", + "compareOpt": "Các mô hình cần so sánh, phân tách bằng dấu phẩy (ví dụ: gpt-4o,claude-3-5-sonnet)", + "saveOpt": "Lưu kết quả vào tệp JSON", + "saved": "Đã lưu kết quả vào {path}", + "compareTitle": "So sánh mô hình", + "compareMinTwo": "Cần ít nhất hai mô hình cho --compare (phân tách bằng dấu phẩy)", + "noProviders": "Chưa cấu hình nhà cung cấp nào. Thêm một nhà cung cấp bằng: omniroute keys add" + }, + "update": { + "checking": "Đang kiểm tra bản cập nhật...", + "upToDate": "Đã là phiên bản mới nhất ({version}).", + "available": "Có bản cập nhật: {current} → {latest}", + "installing": "Đang cài đặt {latest}...", + "done": "Đã cập nhật lên {latest}. Khởi động lại máy chủ để áp dụng." + }, + "mcp": { + "title": "Máy chủ MCP", + "running": "Máy chủ MCP đang chạy ({transport})", + "stopped": "Máy chủ MCP đã dừng.", + "restarted": "Máy chủ MCP đã khởi động lại.", + "stoppedHint": "Chạy `omniroute mcp enable` để bật.", + "enabled": "Đã bật máy chủ MCP.", + "disabled": "Đã tắt máy chủ MCP.", + "enable": { + "description": "Bật máy chủ MCP", + "transport": "Phương thức truyền tải cần dùng: stdio|sse|streamable-http" + }, + "disable": { + "description": "Tắt máy chủ MCP" + }, + "call": { + "description": "Gọi trực tiếp một công cụ MCP", + "args": "Đối tượng đối số JSON (nội tuyến)", + "args_file": "Đường dẫn đến tệp đối số JSON", + "stream": "Sử dụng điểm cuối phát trực tiếp (/api/mcp/stream)", + "scope": "Phạm vi bắt buộc (có thể lặp lại, ví dụ: read:health)" + }, + "scopes": { + "description": "Liệt kê các phạm vi MCP khả dụng", + "tool": "Hiển thị các phạm vi mà một công cụ cụ thể yêu cầu" + }, + "tools": { + "description": "Kiểm tra các công cụ MCP", + "list": { + "description": "Liệt kê tất cả công cụ MCP", + "scope": "Lọc theo phạm vi" + }, + "info": { + "description": "Hiển thị siêu dữ liệu của một công cụ MCP" + }, + "schema": { + "description": "Hiển thị lược đồ JSON đầu vào/đầu ra của một công cụ MCP", + "io": "Loại lược đồ: input|output (mặc định: input)" + } + }, + "audit": { + "description": "Nhật ký kiểm tra MCP (bí danh của audit --source mcp)" + } + }, + "a2a": { + "skills": { + "description": "Liệt kê các kỹ năng A2A khả dụng từ thẻ tác nhân" + }, + "invoke": { + "description": "Gọi một kỹ năng A2A và trả về ID tác vụ", + "input": "Đối tượng đầu vào JSON", + "input_file": "Đường dẫn đến tệp đầu vào JSON", + "wait": "Chờ tác vụ hoàn tất trước khi trả về", + "timeout": "Thời gian chờ hoàn tất tính bằng mili giây (mặc định: 60000)" + }, + "tasks": { + "description": "Quản lý tác vụ A2A", + "list": { + "status": "Lọc theo trạng thái", + "skill": "Lọc theo ID kỹ năng" + }, + "watch": { + "description": "Thăm dò trạng thái tác vụ cho đến khi hoàn tất" + }, + "stream": { + "description": "Truyền trực tiếp các sự kiện thực thi tác vụ qua SSE" + }, + "logs": { + "description": "Hiển thị thông báo và thành phần tạo tác của tác vụ" + } + } + }, + "policy": { + "description": "Quản lý các chính sách ủy quyền của OmniRoute", + "list": { + "description": "Liệt kê các chính sách", + "kind": "Lọc theo loại (allow|deny|rate-limit|cost-cap)", + "scope": "Lọc theo phạm vi (global|api-key|provider)" + }, + "get": { + "description": "Lấy thông tin chi tiết về chính sách theo ID" + }, + "create": { + "description": "Tạo chính sách từ tệp JSON", + "file": "Đường dẫn đến tệp JSON của chính sách" + }, + "update": { + "description": "Cập nhật chính sách từ tệp JSON", + "file": "Đường dẫn đến tệp JSON của chính sách" + }, + "delete": { + "description": "Xóa chính sách theo ID", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "evaluate": { + "description": "Chạy thử việc đánh giá chính sách (mã thoát 0=được phép, 4=bị từ chối)", + "api_key": "Khóa API cần đánh giá", + "action": "Hành động cần kiểm tra (ví dụ: chat, embed, admin)", + "resource": "Đường dẫn hoặc mã định danh tài nguyên", + "context": "Ngữ cảnh bổ sung dưới dạng đối tượng JSON" + }, + "export": { + "description": "Xuất tất cả chính sách sang tệp JSON" + }, + "import": { + "description": "Nhập chính sách từ tệp JSON", + "overwrite": "Ghi đè các chính sách hiện có có cùng ID" + } + }, + "compression": { + "description": "Cấu hình và kiểm tra quy trình nén của OmniRoute", + "status": { + "description": "Hiển thị trạng thái và cài đặt nén hiện tại" + }, + "configure": { + "description": "Cấu hình cài đặt nén", + "engine": "Công cụ nén (caveman|rtk|hybrid|none)", + "caveman_agg": "Mức độ nén mạnh của Caveman từ 0.0–1.0", + "rtk_budget": "Ngân sách token RTK", + "language_pack": "Gói ngôn ngữ cần kích hoạt" + }, + "engine": { + "description": "Lấy hoặc đặt công cụ nén đang hoạt động" + }, + "combos": { + "description": "Quản lý thống kê tổ hợp nén" + }, + "rules": { + "description": "Quản lý các quy tắc nén", + "add": { + "pattern": "Mẫu cần khớp (regex hoặc trường:mẫu)", + "action": "Hành động: drop|shrink|replace" + } + }, + "language_packs": { + "description": "Liệt kê các gói ngôn ngữ nén có sẵn" + }, + "preview": { + "description": "Xem trước tác động nén đối với một yêu cầu", + "file": "Đường dẫn đến tệp JSON của yêu cầu" + } + }, + "tunnel": { + "title": "Đường hầm", + "listDescription": "Liệt kê các đường hầm đang hoạt động", + "createDescription": "Tạo đường hầm", + "created": "Đã tạo đường hầm: {url}", + "stopped": "Đã dừng đường hầm.", + "confirmStop": "Dừng đường hầm {id}?", + "stopDescription": "Dừng một đường hầm", + "statusDescription": "Hiển thị trạng thái chi tiết của một đường hầm", + "logsDescription": "Hiển thị nhật ký của một đường hầm", + "infoDescription": "Hiển thị chi tiết cấu hình của một đường hầm", + "rotateDescription": "Tạo URL đường hầm mới", + "tailOpt": "Số dòng nhật ký cần hiển thị", + "typeRequired": "Bắt buộc phải có loại đường hầm.", + "noLogs": "Không có nhật ký.", + "notAvailable": "Không có thông tin đường hầm.", + "noTunnels": "Không có đường hầm nào đang hoạt động.", + "infoTitle": "Thông tin đường hầm: {type}", + "rotated": "Đã thay đổi URL đường hầm: {url}", + "confirmRotate": "Thay đổi URL của đường hầm {type}? (một URL mới sẽ được tạo)" + }, + "stop": { + "description": "Dừng máy chủ OmniRoute", + "stopping": "Đang dừng máy chủ (PID {pid})...", + "stopped": "Đã dừng máy chủ.", + "notRunning": "Không có máy chủ nào đang chạy.", + "portFallback": "Không tìm thấy tệp PID, đang thử dừng dựa trên cổng..." + }, + "restart": { + "description": "Khởi động lại máy chủ OmniRoute", + "restarting": "Đang khởi động lại máy chủ OmniRoute..." + }, + "dashboard": { + "description": "Mở bảng điều khiển OmniRoute trong trình duyệt", + "opening": "Đang mở bảng điều khiển tại {url}", + "urlOnly": "In URL của bảng điều khiển mà không mở trình duyệt", + "tui": "Mở bảng điều khiển TUI tương tác (giao diện đầu cuối, 7 thẻ)" + }, + "models": { + "description": "Liệt kê các mô hình có sẵn (yêu cầu máy chủ)", + "search": "Lọc mô hình theo id, tên, nhà cung cấp hoặc mô tả", + "noServer": "Máy chủ chưa chạy. Khởi động bằng: omniroute serve", + "noModels": "Không tìm thấy mô hình nào." + }, + "audit": { + "description": "Truy cập nhật ký kiểm toán tuân thủ và MCP", + "source": "Nguồn nhật ký: all|compliance|mcp (mặc định: all)", + "since": "Trả về các mục kể từ dấu thời gian này (ISO 8601)", + "until": "Trả về các mục cho đến dấu thời gian này (ISO 8601)", + "tail": { + "description": "Hiển thị các mục nhật ký kiểm toán gần đây", + "follow": "Liên tục theo dõi các mục mới (thăm dò mỗi 2 giây)", + "limit": "Số mục tối đa cần hiển thị (mặc định: 100)" + }, + "search": { + "description": "Tìm kiếm các mục nhật ký kiểm toán theo từ khóa", + "limit": "Số kết quả tối đa (mặc định: 200)", + "actor": "Lọc theo ID tác nhân", + "action": "Lọc theo tên hành động" + }, + "export": { + "description": "Xuất nhật ký kiểm toán ra tệp", + "format": "Định dạng đầu ra: jsonl|csv (mặc định: jsonl)" + }, + "stats": { + "description": "Hiển thị số liệu thống kê nhật ký kiểm toán", + "period": "Khoảng thời gian: 1d|7d|30d (mặc định: 7d)" + }, + "get": { + "description": "Lấy một mục nhật ký kiểm toán theo ID" + } + }, + "skills": { + "description": "Quản lý các skill của OmniRoute (sandbox, builtin, custom, hybrid, skillssh)", + "list": { + "description": "Liệt kê các skill đã cài đặt", + "type": "Lọc theo loại (sandbox|custom|builtin|hybrid|skillssh)", + "enabled": "Chỉ hiển thị các skill đã bật", + "disabled": "Chỉ hiển thị các skill đã tắt", + "api_key": "Lọc theo khóa API" + }, + "get": { + "description": "Lấy thông tin chi tiết của skill theo ID" + }, + "install": { + "description": "Cài đặt skill từ tệp hoặc URL", + "from_file": "Đường dẫn đến tệp định nghĩa skill dạng JSON", + "from_url": "URL của định nghĩa skill từ xa", + "type": "Loại skill (sandbox|custom|hybrid)", + "enable": "Bật skill sau khi cài đặt" + }, + "enable": { + "description": "Bật skill theo ID" + }, + "disable": { + "description": "Tắt skill theo ID", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "delete": { + "description": "Xóa skill theo ID", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "execute": { + "description": "Thực thi skill theo ID", + "input": "Đối tượng đầu vào JSON", + "input_file": "Đường dẫn đến tệp đầu vào JSON", + "timeout": "Thời gian chờ thực thi tính bằng ms (mặc định: 30000)" + }, + "executions": { + "description": "Liệt kê lịch sử thực thi skill", + "skill": "Lọc theo ID kỹ năng", + "limit": "Số kết quả tối đa (mặc định: 50)", + "status": "Lọc theo trạng thái (running|completed|failed)" + }, + "skillssh": { + "description": "Quản lý các kỹ năng được cài đặt qua SSH" + }, + "marketplace": { + "description": "Duyệt và cài đặt kỹ năng từ marketplace" + }, + "mp": { + "search": { + "description": "Tìm kiếm các gói trên marketplace", + "category": "Lọc theo danh mục", + "tag": "Lọc theo thẻ", + "limit": "Số kết quả tối đa (mặc định: 30)", + "sort": "Sắp xếp theo: downloads|rating|recent" + }, + "info": { + "description": "Hiển thị chi tiết gói và tệp readme" + }, + "install": { + "description": "Cài đặt một gói từ marketplace", + "version": "Phiên bản gói (mặc định: latest)", + "enable": "Bật sau khi cài đặt", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "categories": { + "description": "Liệt kê các danh mục trên marketplace" + }, + "featured": { + "description": "Hiển thị các gói nổi bật trên marketplace" + } + } + }, + "memory": { + "description": "Quản lý bộ nhớ hội thoại của OmniRoute (FTS5 + vector)", + "search": { + "description": "Tìm kiếm các mục bộ nhớ bằng truy vấn ngữ nghĩa", + "type": "Lọc theo loại bộ nhớ (user|feedback|project|reference)", + "limit": "Số kết quả tối đa (mặc định: 20)", + "api_key": "Lọc theo khóa API", + "token_budget": "Giới hạn tổng số token trong kết quả" + }, + "add": { + "description": "Thêm mục bộ nhớ mới", + "content": "Nội dung văn bản của bộ nhớ", + "file": "Đọc nội dung từ tệp", + "type": "Loại bộ nhớ (mặc định: user)", + "metadata": "Đối tượng siêu dữ liệu JSON", + "api_key": "Liên kết với khóa API" + }, + "clear": { + "description": "Xóa các mục bộ nhớ khớp với bộ lọc", + "type": "Lọc theo loại", + "older": "Xóa các mục cũ hơn khoảng thời gian (30d, 6m, 1y)", + "api_key": "Lọc theo khóa API", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "list": { + "description": "Liệt kê các mục bộ nhớ không xếp hạng tìm kiếm", + "type": "Lọc theo loại", + "limit": "Số kết quả tối đa (mặc định: 100)", + "api_key": "Lọc theo khóa API" + }, + "get": { + "description": "Lấy một mục bộ nhớ theo ID" + }, + "delete": { + "description": "Xóa một mục bộ nhớ theo ID", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "health": { + "description": "Hiển thị tình trạng hệ thống con bộ nhớ (FTS5 + Qdrant)" + } + }, + "oauth": { + "description": "Quản lý các kết nối nhà cung cấp OAuth", + "providers": { + "description": "Liệt kê các nhà cung cấp hỗ trợ OAuth và loại luồng của họ" + }, + "start": { + "description": "Bắt đầu luồng ủy quyền OAuth cho một nhà cung cấp", + "provider": "ID nhà cung cấp (gemini, copilot, cursor, …)", + "no_browser": "Chỉ in URL — không mở trình duyệt", + "import_system": "Tự động nhập thông tin xác thực từ cấu hình hệ thống cục bộ", + "social": "Nhà cung cấp đăng nhập mạng xã hội (google|github) — bắt buộc đối với kiro", + "timeout": "Thời gian chờ ủy quyền tính bằng ms (mặc định: 300000)" + }, + "status": { + "description": "Liệt kê các kết nối OAuth đang hoạt động", + "provider": "Lọc theo ID nhà cung cấp" + }, + "revoke": { + "description": "Thu hồi một kết nối OAuth", + "provider": "ID nhà cung cấp cần thu hồi", + "connection_id": "Thu hồi một kết nối cụ thể theo ID", + "yes": "Bỏ qua lời nhắc xác nhận" + } + }, + "cloud": { + "description": "Quản lý các tác vụ tác nhân AI đám mây (codex, devin, jules)", + "agents": { + "description": "Liệt kê các tác nhân đám mây có sẵn" + }, + "agent": { + "description": "Quản lý các tác vụ tác nhân đám mây {agent}", + "auth": { + "description": "Ủy quyền cho {agent} qua OAuth" + } + }, + "task": { + "description": "Quản lý các tác vụ tác nhân đám mây", + "create": { + "description": "Tạo tác vụ tác nhân mới", + "title": "Tiêu đề tác vụ (mặc định là 80 ký tự đầu tiên của lời nhắc)", + "prompt": "Nội dung lời nhắc tác vụ", + "prompt_file": "Đọc lời nhắc từ tệp", + "repo": "URL kho lưu trữ cần sao chép cho tác vụ", + "branch": "Tên nhánh cần sử dụng", + "metadata": "Đối tượng siêu dữ liệu JSON" + }, + "list": { + "description": "Liệt kê các tác vụ của tác nhân", + "status": "Lọc theo trạng thái (running|completed|failed|cancelled)", + "limit": "Số kết quả tối đa (mặc định: 50)" + }, + "get": { + "description": "Lấy thông tin chi tiết tác vụ theo ID" + }, + "status": { + "description": "In trạng thái tác vụ (running|completed|failed|cancelled)" + }, + "cancel": { + "description": "Hủy tác vụ đang chạy", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "approve": { + "description": "Phê duyệt kế hoạch của tác nhân để bắt đầu thực thi" + }, + "message": { + "description": "Gửi tin nhắn đến tác vụ đang chạy" + } + }, + "sources": { + "description": "Liệt kê các tệp nguồn do tác vụ tạo ra" + } + }, + "eval": { + "description": "Quản lý các bộ đánh giá và lượt chạy", + "suites": { + "description": "Quản lý các bộ đánh giá", + "list": { + "description": "Liệt kê các bộ đánh giá" + }, + "get": { + "description": "Lấy thông tin chi tiết về bộ đánh giá theo ID" + }, + "create": { + "description": "Tạo bộ đánh giá từ tệp JSON", + "file": "Đường dẫn đến tệp JSON định nghĩa bộ đánh giá" + } + }, + "run": { + "description": "Bắt đầu một lượt chạy đánh giá cho bộ đánh giá", + "model": "ID mô hình cần đánh giá (mặc định: auto)", + "combo": "Buộc sử dụng một tổ hợp cụ thể theo tên", + "concurrency": "Số mẫu chạy đồng thời (mặc định: 4)", + "tag": "Gắn thẻ lượt chạy này để lọc sau", + "watch": "Theo dõi tiến trình lượt chạy cho đến khi hoàn tất" + }, + "list": { + "description": "Liệt kê các lượt chạy đánh giá", + "suite": "Lọc theo ID bộ đánh giá", + "status": "Lọc theo trạng thái", + "since": "Trả về các lượt chạy kể từ dấu thời gian này", + "limit": "Số kết quả tối đa (mặc định: 50)" + }, + "get": { + "description": "Lấy thông tin chi tiết về lượt chạy đánh giá theo ID" + }, + "results": { + "description": "Hiển thị kết quả mẫu của một lượt chạy đánh giá", + "failed": "Chỉ hiển thị các mẫu thất bại" + }, + "cancel": { + "description": "Hủy một lượt đánh giá đang chạy", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "scorecard": { + "description": "Hiển thị bảng điểm của một lượt chạy đánh giá đã hoàn tất" + } + }, + "webhooks": { + "description": "Quản lý webhook của OmniRoute", + "events": { + "description": "Liệt kê tất cả các loại sự kiện webhook hiện có" + }, + "list": { + "description": "Liệt kê các webhook đã cấu hình" + }, + "get": { + "description": "Lấy thông tin chi tiết về webhook theo ID" + }, + "add": { + "description": "Đăng ký webhook mới", + "url": "URL đích", + "events": "Danh sách các loại sự kiện, phân tách bằng dấu phẩy", + "secret": "Khóa bí mật ký HMAC", + "header": "Tiêu đề bổ sung ở định dạng key=value (có thể lặp lại)", + "no_enabled": "Tạo webhook ở trạng thái vô hiệu hóa" + }, + "update": { + "description": "Cập nhật webhook hiện có", + "enabled": "Đặt trạng thái kích hoạt (true|false)" + }, + "remove": { + "description": "Xóa webhook", + "yes": "Bỏ qua lời nhắc xác nhận" + }, + "test": { + "description": "Gửi một sự kiện thử nghiệm đến webhook", + "event": "Loại sự kiện cần mô phỏng (mặc định: request.completed)" + } + }, "program": { "description": "OmniRoute — Bộ định tuyến AI thông minh với tự động chuyển đổi dự phòng", "version": "In phiên bản và thoát", @@ -26,7 +832,509 @@ "context": "Bối cảnh/hồ sơ máy chủ cho lệnh này", "lang": "Đặt ngôn ngữ hiển thị CLI (ghi đè OMNIROUTE_LANG)" }, - "redis": { - "description": "Khởi chạy bộ chứa Redis cục bộ bằng một cú nhấp chuột (Podman hoặc Docker) để lưu bộ đệm và theo dõi hạn ngạch của OmniRoute" + "files": { + "description": "Quản lý tệp (tải lên, liệt kê, lấy, tải xuống, xóa)", + "list": { + "purpose": "Lọc theo mục đích", + "limit": "Số kết quả tối đa" + }, + "get": { + "description": "Lấy siêu dữ liệu tệp" + }, + "upload": { + "description": "Tải tệp lên", + "purpose": "Mục đích của tệp (batch, assistants, fine-tune)" + }, + "content": { + "description": "Tải xuống nội dung tệp", + "out": "Lưu vào đường dẫn (mặc định: stdout)" + }, + "delete": { + "yes": "Bỏ qua xác nhận" + } + }, + "batches": { + "description": "Quản lý các tác vụ batch tương thích với OpenAI", + "list": { + "status": "Lọc theo trạng thái", + "limit": "Số kết quả tối đa" + }, + "create": { + "description": "Tạo tác vụ batch", + "inputFile": "ID tệp đầu vào", + "endpoint": "Điểm cuối đích", + "window": "Khoảng thời gian hoàn tất", + "metadata": "Thêm siêu dữ liệu key=value" + }, + "submit": { + "description": "Tải tệp JSONL lên và tạo tác vụ batch", + "jsonl": "Đường dẫn đến tệp JSONL", + "endpoint": "Điểm cuối đích", + "wait": "Chờ hoàn tất" + }, + "cancel": { + "yes": "Bỏ qua xác nhận" + }, + "wait": { + "timeout": "Thời gian chờ tính bằng ms" + }, + "output": { + "out": "Lưu đầu ra vào đường dẫn" + }, + "errors": { + "out": "Lưu lỗi vào đường dẫn" + } + }, + "translator": { + "description": "Chuyển đổi nội dung yêu cầu giữa các định dạng LLM", + "detect": { + "description": "Phát hiện định dạng nội dung" + }, + "translate": { + "description": "Chuyển đổi nội dung từ định dạng này sang định dạng khác" + }, + "send": { + "description": "Chuyển đổi và gửi yêu cầu đến máy chủ nguồn" + }, + "stream": { + "description": "Chuyển đổi nội dung yêu cầu theo luồng" + }, + "from": "Định dạng nguồn (openai|anthropic|gemini|cohere)", + "to": "Định dạng đích (openai|anthropic|gemini|cohere)", + "file": "Đường dẫn đến tệp JSON chứa nội dung yêu cầu", + "out": "Lưu đầu ra vào tệp", + "model": "Ghi đè mô hình", + "history": { + "limit": "Số kết quả tối đa" + } + }, + "pricing": { + "description": "Quản lý dữ liệu giá cho các mô hình", + "sync": { + "description": "Đồng bộ giá từ các nguồn thượng nguồn", + "provider": "Lọc theo nhà cung cấp", + "force": "Buộc đồng bộ lại" + }, + "list": { + "provider": "Lọc theo nhà cung cấp", + "model": "Lọc theo mô hình", + "limit": "Số kết quả tối đa" + }, + "defaults": { + "description": "Quản lý giá mặc định", + "input": "Chi phí đầu vào trên mỗi 1 triệu token (USD)", + "output": "Chi phí đầu ra trên mỗi 1 triệu token (USD)", + "cacheRead": "Chi phí đọc bộ nhớ đệm trên mỗi 1 triệu token (USD)", + "cacheWrite": "Chi phí ghi bộ nhớ đệm trên mỗi 1 triệu token (USD)" + }, + "diff": { + "description": "Hiển thị chênh lệch so với giá nguồn", + "model": "Lọc theo mô hình" + } + }, + "radar": { + "description": "Kiểm tra và đồng bộ hóa các nguồn cấp danh mục Radar cục bộ", + "status": "Hiển thị cài đặt Radar cục bộ và trạng thái bộ nhớ đệm nguồn cấp", + "sync": "Đồng bộ hóa danh mục, giới thiệu, ưu đãi và Intel thông qua máy chủ cục bộ" + }, + "resilience": { + "description": "Kiểm tra và quản lý các cơ chế phục hồi", + "status": { + "provider": "Lọc theo nhà cung cấp" + }, + "breakers": { + "provider": "Lọc theo nhà cung cấp" + }, + "cooldowns": { + "provider": "Lọc theo nhà cung cấp", + "connectionId": "Lọc theo ID kết nối" + }, + "lockouts": { + "provider": "Lọc theo nhà cung cấp", + "model": "Lọc theo mô hình" + }, + "reset": { + "description": "Đặt lại trạng thái bộ ngắt mạch/thời gian chờ", + "provider": "Nhà cung cấp cần đặt lại", + "connectionId": "ID kết nối cần đặt lại", + "model": "Mô hình cần đặt lại trạng thái khóa", + "allCooldowns": "Đặt lại tất cả thời gian chờ của nhà cung cấp", + "yes": "Bỏ qua xác nhận" + }, + "profile": { + "description": "Quản lý hồ sơ phục hồi", + "name": "Tên hồ sơ" + }, + "config": { + "description": "Quản lý cấu hình phục hồi", + "threshold": "Ngưỡng lỗi", + "resetTimeout": "Thời gian chờ đặt lại tính bằng ms", + "baseCooldown": "Thời gian chờ cơ sở tính bằng ms" + } + }, + "nodes": { + "description": "Quản lý các nút (điểm cuối) của nhà cung cấp", + "list": { + "provider": "Lọc theo nhà cung cấp", + "enabled": "Chỉ hiển thị các nút đã bật" + }, + "add": { + "provider": "Tên nhà cung cấp", + "baseUrl": "URL cơ sở của nút", + "name": "Tên nút", + "weight": "Trọng số cân bằng tải", + "region": "Thẻ khu vực", + "authHeader": "Tiêu đề xác thực tùy chỉnh (key=value)" + }, + "update": { + "baseUrl": "URL cơ sở mới", + "name": "Tên mới", + "weight": "Trọng số mới", + "region": "Khu vực mới", + "enabled": "Bật hoặc tắt (true|false)" + }, + "remove": { + "yes": "Bỏ qua xác nhận" + }, + "validate": { + "baseUrl": "URL cần xác thực", + "provider": "Nhà cung cấp dùng để xác thực" + }, + "test": { + "description": "Gửi yêu cầu kiểm thử đến nút" + }, + "metrics": { + "description": "Hiển thị số liệu của nút", + "period": "Khoảng thời gian (ví dụ: 24h, 7d)" + } + }, + "context": { + "description": "Cấu hình quy trình kỹ thuật ngữ cảnh (Caveman, RTK)", + "analytics": { + "period": "Khoảng thời gian (ví dụ: 7d, 30d)" + }, + "caveman": { + "description": "Quản lý trình nén ngữ cảnh Caveman", + "config": { + "description": "Hiển thị hoặc cập nhật cấu hình Caveman", + "aggressiveness": "Mức độ tích cực 0.0–1.0", + "maxShrinkPct": "Phần trăm thu gọn tối đa", + "preserveTags": "Các thẻ cần giữ lại, phân tách bằng dấu phẩy" + } + }, + "rtk": { + "description": "Quản lý trình tối ưu hóa ngữ cảnh RTK", + "config": { + "description": "Hiển thị hoặc cập nhật cấu hình RTK", + "tokenBudget": "Ngân sách token cho RTK", + "reservePct": "Phần trăm dự phòng" + }, + "filters": { + "description": "Quản lý bộ lọc RTK", + "pattern": "Mẫu bộ lọc (regex)", + "priority": "Mức ưu tiên của bộ lọc (mặc định: 100)", + "action": "Hành động của bộ lọc: drop|shrink|replace", + "yes": "Bỏ qua xác nhận" + }, + "test": { + "file": "Đường dẫn đến tệp JSON yêu cầu" + } + }, + "combos": { + "description": "Quản lý tổ hợp nhận biết ngữ cảnh" + } + }, + "sessions": { + "description": "Kiểm tra và quản lý các phiên đang hoạt động", + "list": { + "user": "Lọc theo người dùng", + "kind": "Lọc theo loại (dashboard|api-key|mcp|a2a)", + "active": "Chỉ hiển thị các phiên đang hoạt động", + "limit": "Số kết quả tối đa (mặc định: 100)" + }, + "expire": { + "yes": "Bỏ qua xác nhận" + }, + "expireAll": { + "user": "Người dùng có các phiên cần cho hết hạn", + "yes": "Bỏ qua xác nhận" + } + }, + "tags": { + "description": "Quản lý thẻ tài nguyên", + "add": { + "color": "Màu thẻ (mã hex hoặc tên)", + "description": "Mô tả thẻ" + }, + "remove": { + "yes": "Bỏ qua xác nhận" + }, + "assign": { + "tag": "Tên thẻ", + "to": "Tài nguyên đích theo định dạng type:id (ví dụ: provider:openai)" + }, + "unassign": { + "tag": "Tên thẻ", + "from": "Tài nguyên nguồn theo định dạng type:id" + } + }, + "openapi": { + "description": "Truy cập và kiểm thử đặc tả OpenAPI của OmniRoute", + "dump": { + "description": "Xuất đặc tả OpenAPI ra stdout hoặc tệp", + "format": "Định dạng đầu ra: yaml|json (mặc định: yaml)", + "out": "Lưu vào đường dẫn tệp" + }, + "validate": { + "description": "Xác thực đặc tả OpenAPI" + }, + "try": { + "description": "Kiểm thử một điểm cuối API thông qua đặc tả", + "method": "Phương thức HTTP (mặc định: GET)", + "body": "Đường dẫn đến tệp JSON chứa nội dung yêu cầu", + "query": "Tham số truy vấn theo định dạng key=value (có thể lặp lại)", + "header": "Tiêu đề theo định dạng key=value (có thể lặp lại)" + }, + "endpoints": { + "description": "Liệt kê tất cả điểm cuối API", + "search": "Lọc theo đường dẫn hoặc phần tóm tắt" + }, + "paths": { + "description": "Liệt kê tất cả đường dẫn API" + } + }, + "combo": { + "title": "Các tổ hợp", + "switched": "Tổ hợp đang hoạt động: {name}", + "created": "Đã tạo tổ hợp: {name}", + "deleted": "Đã xóa tổ hợp: {name}", + "noCombos": "Chưa cấu hình tổ hợp nào.", + "confirmDelete": "Xóa tổ hợp {name}?", + "suggest": { + "description": "Đề xuất tổ hợp tốt nhất cho một tác vụ bằng cách chấm điểm với AI", + "task": "Mô tả tác vụ", + "maxCost": "Chi phí tối đa cho mỗi yêu cầu, tính bằng USD", + "maxLatencyMs": "Độ trễ tối đa tính bằng mili giây", + "weights": "Trọng số chấm điểm JSON, ví dụ: {\"latency\":0.7,\"cost\":0.3}", + "top": "Số ứng viên hàng đầu cần hiển thị (mặc định: 5)", + "explain": "In lý do ra stderr", + "switch": "Kích hoạt tổ hợp được xếp hạng cao nhất" + } + }, + "oneproxy": { + "description": "Quản lý nhóm máy chủ thượng nguồn của OneProxy", + "stats": { + "provider": "Lọc theo nhà cung cấp", + "period": "Khoảng thời gian (mặc định: 24h)" + }, + "fetch": { + "description": "Lấy proxy từ nhóm", + "count": "Số lượng proxy cần lấy (mặc định: 1)", + "type": "Loại proxy: http|socks5 (mặc định: http)" + }, + "rotate": { + "description": "Buộc xoay vòng proxy", + "provider": "Nhà cung cấp cần xoay vòng", + "connectionId": "ID kết nối cụ thể cần xoay vòng" + }, + "config": { + "description": "Hiển thị hoặc cập nhật cấu hình OneProxy", + "enabled": "Bật nhóm proxy (true|false)", + "poolSize": "Kích thước nhóm", + "providerSource": "URL của nhà cung cấp proxy", + "rotationPolicy": "Chính sách luân chuyển: sticky|per-request|periodic" + }, + "pool": { + "description": "Liệt kê nhóm proxy hiện tại cùng các chỉ số" + } + }, + "open": { + "description": "Mở một trang bảng điều khiển OmniRoute cụ thể trong trình duyệt", + "url": "Chỉ in URL, không mở trình duyệt" + }, + "telemetry": { + "description": "Truy cập dữ liệu đo từ xa tổng hợp", + "summary": { + "description": "Hiển thị bản tóm tắt dữ liệu đo từ xa tổng hợp", + "period": "Khoảng thời gian: 24h|7d|30d (mặc định: 24h)", + "compareTo": "So sánh với khoảng thời gian trước" + }, + "export": { + "description": "Xuất các sự kiện đo từ xa sang JSONL", + "out": "Đường dẫn tệp đầu ra (mặc định: telemetry.jsonl)", + "period": "Khoảng thời gian xuất (mặc định: 7d)" + } + }, + "sync": { + "description": "Đồng bộ cấu hình giữa các phiên bản OmniRoute", + "push": { + "description": "Đẩy cấu hình lên đám mây hoặc phiên bản từ xa", + "target": "Đích (cloud hoặc context:name)", + "bundle": "Các phần của gói cần đồng bộ", + "dryRun": "Xem trước mà không áp dụng" + }, + "pull": { + "description": "Kéo cấu hình từ đám mây hoặc máy chủ từ xa", + "source": "Nguồn (cloud hoặc context:name)", + "merge": "Hợp nhất với cấu hình hiện có", + "replace": "Thay thế cấu hình hiện có", + "dryRun": "Xem trước mà không áp dụng" + }, + "diff": { + "source": "Ngữ cảnh nguồn", + "target": "Ngữ cảnh đích" + }, + "bundle": { + "description": "Xuất cấu hình dưới dạng tệp gói", + "include": "Các phần cần bao gồm (phân tách bằng dấu phẩy)" + }, + "import": { + "description": "Nhập tệp gói", + "dryRun": "Xác thực mà không áp dụng" + }, + "initialize": { + "fromCloud": "Khởi tạo từ bản sao lưu đám mây" + }, + "tokens": { + "description": "Quản lý token đồng bộ", + "create": { + "name": "Tên token", + "scope": "Phạm vi token", + "ttl": "TTL của token (ví dụ: 30d)" + }, + "revoke": { + "yes": "Bỏ qua bước xác nhận" + } + }, + "resolve": { + "description": "Giải quyết xung đột đồng bộ theo cách tương tác" + } + }, + "config": { + "contexts": { + "description": "Quản lý ngữ cảnh/hồ sơ máy chủ (add, use, list, show, remove, rename, export, import)" + }, + "lang": { + "description": "Quản lý ngôn ngữ hiển thị của CLI", + "getDescription": "Hiển thị mã ngôn ngữ hiện đang hoạt động", + "setDescription": "Đặt ngôn ngữ hiển thị và lưu vào cấu hình", + "listDescription": "Liệt kê tất cả ngôn ngữ có sẵn", + "listTitle": "Ngôn ngữ có sẵn", + "current": "Ngôn ngữ: {code} ({name})", + "saved": "Đã đặt ngôn ngữ thành {code} ({name}).", + "noCode": "Bắt buộc phải có mã ngôn ngữ. Chạy 'omniroute config lang list' để xem các mã có sẵn.", + "unknown": "Mã ngôn ngữ không xác định: {code}. Chạy 'omniroute config lang list' để xem các mã có sẵn.", + "alreadySet": "Ngôn ngữ đã được đặt thành {code}.", + "envHint": "Mẹo: bạn cũng có thể đặt OMNIROUTE_LANG={code} trong môi trường của mình." + } + }, + "completion": { + "description": "Tạo hoặc cài đặt tập lệnh tự động hoàn thành cho shell", + "zsh": "In tập lệnh tự động hoàn thành cho zsh", + "bash": "In tập lệnh tự động hoàn thành cho bash", + "fish": "In tập lệnh tự động hoàn thành cho fish", + "install": "Cài đặt tập lệnh tự động hoàn thành trên toàn hệ thống cho shell được phát hiện", + "refresh": "Làm mới bộ nhớ đệm của các tổ hợp/nhà cung cấp/mô hình" + }, + "logs": { + "description": "Truyền phát hoặc xuất nhật ký yêu cầu", + "follow": "Truyền phát nhật ký theo thời gian thực", + "filter": "Lọc theo cấp độ (error,warn,info) — phân tách bằng dấu phẩy", + "lines": "Số dòng cần lấy", + "timeout": "Thời gian chờ kết nối tính bằng ms", + "baseUrl": "URL cơ sở của API OmniRoute", + "requestId": "Lọc theo ID yêu cầu", + "apiKey": "Lọc theo khóa API", + "combo": "Lọc theo tên tổ hợp", + "status": "Lọc theo mã trạng thái HTTP", + "durationMin": "Thời lượng yêu cầu tối thiểu tính bằng ms", + "durationMax": "Thời lượng yêu cầu tối đa tính bằng ms", + "export": "Lưu nhật ký vào tệp (json/jsonl/csv)", + "exported": "Đã lưu nhật ký vào {path}", + "stopped": "Đã dừng luồng nhật ký.", + "streamError": "Lỗi luồng nhật ký: {message}" + }, + "tray": { + "description": "Điều khiển biểu tượng khay hệ thống", + "show": "Hiển thị biểu tượng khay (nếu máy chủ đang chạy với --tray)", + "hide": "Ẩn biểu tượng khay", + "quit": "Thoát OmniRoute qua khay hệ thống" + }, + "autostart": { + "description": "Quản lý tính năng tự động khởi động OmniRoute khi khởi động hệ thống (Linux: dịch vụ người dùng systemd)", + "enable": "Bật tự động khởi động khi khởi động hệ thống", + "disable": "Tắt tự động khởi động khi khởi động hệ thống", + "toggle": "Chuyển đổi trạng thái tự động khởi động khi khởi động hệ thống", + "status": "Hiển thị trạng thái tự động khởi động" + }, + "runtime": { + "description": "Quản lý các phần phụ thuộc runtime gốc", + "check": "Kiểm tra trạng thái của các phần phụ thuộc gốc trong thư mục runtime", + "repair": "Cài đặt lại các phần phụ thuộc gốc trong thư mục runtime", + "repair_force": "Buộc cài đặt lại ngay cả khi vẫn hợp lệ", + "clean": "Xóa thư mục runtime (giải phóng dung lượng ổ đĩa)", + "clean_yes": "Bỏ qua bước xác nhận" + }, + "repl": { + "description": "REPL tương tác nhiều lượt với LLM", + "model": "Mô hình cần dùng (mặc định: tự động)", + "combo": "Tên tổ hợp cần dùng", + "system": "Lời nhắc hệ thống", + "resume": "Tiếp tục một phiên đã lưu theo tên" + }, + "plugin": { + "description": "Quản lý plugin CLI (omniroute-cmd-*)", + "list": "Liệt kê các plugin đã cài đặt", + "install": "Cài đặt plugin từ npm hoặc đường dẫn cục bộ", + "remove": "Gỡ bỏ plugin đã cài đặt", + "info": "Hiển thị chi tiết về plugin đã cài đặt", + "search": "Tìm kiếm các plugin có sẵn trong sổ đăng ký npm", + "update": "Cập nhật (các) plugin đã cài đặt", + "scaffold": "Tạo khung mã mẫu cho plugin mới" + }, + "launch": { + "description": "Khởi chạy Claude Code trỏ đến OmniRoute (cục bộ hoặc từ xa, với --profile)", + "token": "Token mà ứng dụng Claude cần gửi (ANTHROPIC_AUTH_TOKEN)", + "notRunning": "Không thể truy cập OmniRoute tại {port}. Hãy khởi động bằng 'omniroute serve'.", + "notFound": "Không tìm thấy CLI 'claude' trong PATH." + }, + "run": { + "description": "Khởi chạy một CLI được hỗ trợ thông qua OmniRoute" + }, + "setupClaude": { + "description": "Tạo các hồ sơ Claude Code trong ~/.claude/profiles từ danh mục mô hình OmniRoute" + }, + "connect": { + "description": "Kết nối với máy chủ OmniRoute từ xa và vào chế độ từ xa" + }, + "tokens": { + "description": "Quản lý token truy cập CLI theo phạm vi (chế độ từ xa)" + }, + "configure": { + "description": "Chọn nhà cung cấp+mô hình từ máy chủ đang hoạt động và cấu hình một CLI cục bộ được hỗ trợ" + }, + "launchCodex": { + "description": "Khởi chạy Codex CLI trỏ đến OmniRoute (cục bộ hoặc VPS từ xa)" + }, + "setupCodex": { + "description": "Tạo các tệp hồ sơ ~/.codex từ danh mục mô hình trực tiếp của OmniRoute" + }, + "packs": { + "description": "Quản lý các gói runtime tùy chọn (ML / tự động hóa trình duyệt)", + "listDescription": "Liệt kê các gói tùy chọn và trạng thái cài đặt của chúng", + "installDescription": "Cài đặt một gói tùy chọn vào DATA_DIR", + "verifyDescription": "Xác minh các gói đã cài đặt dựa trên chỉ mục tổng kiểm được cung cấp", + "removeDescription": "Gỡ bỏ một gói tùy chọn đã cài đặt", + "sourceOpt": "Thư mục chứa nội dung các gói và chỉ mục gói", + "warnNoIndex": "Không tìm thấy optional-packs.index.json — tính năng cài đặt/xác minh không khả dụng trong bản mã nguồn này (các gói ứng dụng máy tính để bàn có kèm tệp đó)", + "errUnknown": "gói không xác định: {name}", + "errNoIndex": "không tìm thấy chỉ mục gói; hãy truyền --source trỏ đến thư mục chứa nội dung gói (các gói ứng dụng máy tính để bàn đặt tệp đó bên cạnh ứng dụng)", + "installed": "gói \"{name}\" đã được cài đặt và xác minh tại {dir}", + "restartHint": "khởi động lại máy chủ OmniRoute (hoặc ứng dụng máy tính) để môi trường chạy nhận gói", + "removed": "đã gỡ gói \"{name}\"", + "notInstalled": "gói \"{name}\" chưa được cài đặt", + "verifyOk": "đã xác minh tất cả các gói đã cài đặt", + "verifyFailed": "{count} gói không vượt qua bước xác minh", + "noneInstalled": "không có gói tùy chọn nào được cài đặt" } } diff --git a/bin/cli/locales/yo.json b/bin/cli/locales/yo.json index 443b93b975..9c4d0081a7 100644 --- a/bin/cli/locales/yo.json +++ b/bin/cli/locales/yo.json @@ -256,6 +256,7 @@ "max_restarts": "Iye ìtunbẹ̀rẹ̀ lẹ́yìn ìkọ̀lù tó pọ̀ jù láàárín 30s kí ó tó jáwọ́ (àìyípadà: 2)", "tray": "Bẹ̀rẹ̀ nínú atẹ eto (dẹ́sítọ́ọ̀pù nìkan, àṣàyàn ni)", "no_tray": "Pa àmì atẹ eto rẹ́", + "ready_timeout": "Àkókò ìdádúró tó pọ̀ jù fún àyẹ̀wò ìmúrasílẹ̀ ní ms (bákan náà OMNIROUTE_READY_TIMEOUT_MS, àìyípadà 60000)", "tls_cert": "Ọ̀nà sí ìwé-ẹ̀rí TLS kan (PEM) láti pèsè HTTPS (bákan náà OMNIROUTE_TLS_CERT)", "tls_key": "Ọ̀nà sí kọ́kọ́rọ́ àdáni TLS (PEM) láti pèsè HTTPS (bákan náà OMNIROUTE_TLS_KEY)" }, @@ -347,6 +348,16 @@ "running": "Olùpín MCP ń ṣiṣẹ́ ({transport})", "stopped": "Olùpín MCP ti dá iṣẹ́ dúró.", "restarted": "A ti tún olùpín MCP bẹ̀rẹ̀.", + "stoppedHint": "Ṣe `omniroute mcp enable` láti mú un ṣiṣẹ́.", + "enabled": "A ti mú olupin MCP ṣiṣẹ́.", + "disabled": "A ti pa olupin MCP.", + "enable": { + "description": "Mú olupin MCP ṣiṣẹ́", + "transport": "Ọ̀nà ìgbéṣùmọ̀ tí a ó lò: stdio|sse|streamable-http" + }, + "disable": { + "description": "Pa olupin MCP" + }, "call": { "description": "Pe ohun èlò MCP kan ní tààrà", "args": "Ohun àríyànjiyàn JSON (níbẹ̀-níbẹ̀)", diff --git a/bin/cli/locales/zh-CN.json b/bin/cli/locales/zh-CN.json index 78012ac950..03b2c54f56 100644 --- a/bin/cli/locales/zh-CN.json +++ b/bin/cli/locales/zh-CN.json @@ -14,18 +14,6 @@ "jsonOpt": "以 JSON 格式输出", "yesOpt": "跳过确认" }, - "program": { - "description": "OmniRoute — 具有自动故障转移的智能 AI 路由器", - "version": "打印版本并退出", - "output": "输出格式(table, json, jsonl, csv)", - "quiet": "禁止非必要输出", - "no_color": "禁用彩色输出", - "timeout": "HTTP 请求超时(毫秒)", - "api_key": "OmniRoute 服务器的 API 密钥", - "base_url": "OmniRoute 服务器的基础 URL", - "context": "此命令使用的服务器上下文/配置文件", - "lang": "设置 CLI 显示语言(覆盖 OMNIROUTE_LANG)" - }, "setup": { "title": "OmniRoute 设置", "passwordPrompt": "管理员密码", @@ -145,6 +133,20 @@ "listTitle": "{days} 天内过期的密钥:" } }, + "authExport": { + "description": "导出已解密的提供者凭据(仅限本地,明文输出)", + "idOpt": "仅导出与此 id/名称/提供者匹配的连接", + "formatOpt": "输出格式:json 或 env", + "outOpt": "将输出写入文件而非标准输出(以 0600 权限写入)", + "forceOpt": "确认你了解此操作会打印/写入明文密钥", + "warning": "⚠ 此操作会打印/写入已解密的明文 API 密钥和 OAuth 令牌。请确保你的屏幕、shell 历史记录以及任何输出文件保持私密。", + "confirmHeading": "⚠ 警告:此操作会以明文导出已解密的提供者凭据", + "confirmBody": "此命令会为所选连接解密并打印/写入 apiKey、accessToken、refreshToken 和\nidToken。请将输出视为机密。", + "confirmFooter": "如需确认,请运行:\n omniroute auth export --force", + "missingKey": "导出凭据需要 STORAGE_ENCRYPTION_KEY。", + "notFound": "未找到连接:{id}", + "invalidFormat": "无效格式:{format}。请使用 json 或 env。" + }, "stream": { "description": "使用 SSE 检查模式流式传输聊天响应", "file": "从文件读取提示", @@ -302,7 +304,7 @@ "status": "状态:{status}", "uptime": "运行时间:{uptime}", "requests": "请求数(24h):{count}", - "cost": "成本(24h):" + "cost": "成本(24h):${cost}" }, "quota": { "description": "显示提供者配额使用情况", @@ -818,6 +820,18 @@ "event": "要模拟的事件类型(默认:request.completed)" } }, + "program": { + "description": "OmniRoute — 具有自动故障转移的智能 AI 路由器", + "version": "打印版本并退出", + "output": "输出格式(table, json, jsonl, csv)", + "quiet": "禁止非必要输出", + "no_color": "禁用彩色输出", + "timeout": "HTTP 请求超时(毫秒)", + "api_key": "OmniRoute 服务器的 API 密钥", + "base_url": "OmniRoute 服务器的基础 URL", + "context": "此命令使用的服务器上下文/配置文件", + "lang": "设置 CLI 显示语言(覆盖 OMNIROUTE_LANG)" + }, "files": { "description": "管理文件(上传、列出、获取、下载、删除)", "list": { @@ -918,6 +932,11 @@ "model": "按模型筛选" } }, + "radar": { + "description": "检查并同步本地 Radar 目录订阅源", + "status": "显示本地 Radar 设置和订阅源缓存状态", + "sync": "通过本地服务器同步目录、推荐、优惠和 Intel" + }, "resilience": { "description": "检查和管理弹性机制", "status": { @@ -1245,8 +1264,8 @@ "description": "管理 OmniRoute 开机自启(Linux:systemd 用户服务)", "enable": "启用开机自启", "disable": "禁用开机自启", - "status": "显示自启状态", - "toggle": "切换开机自启" + "toggle": "切换开机自启", + "status": "显示自启状态" }, "runtime": { "description": "管理本地运行时依赖", @@ -1273,25 +1292,6 @@ "update": "更新已安装的插件", "scaffold": "搭建新的插件模板" }, - "authExport": { - "description": "导出已解密的提供者凭据(仅限本地,明文输出)", - "idOpt": "仅导出与此 id/名称/提供者匹配的连接", - "formatOpt": "输出格式:json 或 env", - "outOpt": "将输出写入文件而非标准输出(以 0600 权限写入)", - "forceOpt": "确认你了解此操作会打印/写入明文密钥", - "warning": "⚠ 此操作会打印/写入已解密的明文 API 密钥和 OAuth 令牌。请确保你的屏幕、shell 历史记录以及任何输出文件保持私密。", - "confirmHeading": "⚠ 警告:此操作会以明文导出已解密的提供者凭据", - "confirmBody": "此命令会为所选连接解密并打印/写入 apiKey、accessToken、refreshToken 和\nidToken。请将输出视为机密。", - "confirmFooter": "如需确认,请运行:\n omniroute auth export --force", - "missingKey": "导出凭据需要 STORAGE_ENCRYPTION_KEY。", - "notFound": "未找到连接:{id}", - "invalidFormat": "无效格式:{format}。请使用 json 或 env。" - }, - "radar": { - "description": "检查并同步本地 Radar 目录订阅源", - "status": "显示本地 Radar 设置和订阅源缓存状态", - "sync": "通过本地服务器同步目录、推荐、优惠和 Intel" - }, "launch": { "description": "启动指向 OmniRoute 的 Claude Code(本地或远程,使用 --profile)", "token": "Claude 客户端应发送的令牌(ANTHROPIC_AUTH_TOKEN)", diff --git a/bin/cli/locales/zh-TW.json b/bin/cli/locales/zh-TW.json index 79128cf49f..af2c808472 100644 --- a/bin/cli/locales/zh-TW.json +++ b/bin/cli/locales/zh-TW.json @@ -14,18 +14,6 @@ "jsonOpt": "以 JSON 格式輸出", "yesOpt": "跳過確認" }, - "program": { - "description": "OmniRoute — 具有自動故障轉移的智慧 AI 路由器", - "version": "列印版本並退出", - "output": "輸出格式(table, json, jsonl, csv)", - "quiet": "禁止非必要輸出", - "no_color": "停用彩色輸出", - "timeout": "HTTP 請求超時(毫秒)", - "api_key": "OmniRoute 伺服器的 API 金鑰", - "base_url": "OmniRoute 伺服器的基礎 URL", - "context": "此命令使用的伺服器上下文/配置檔案", - "lang": "設定 CLI 顯示語言(覆蓋 OMNIROUTE_LANG)" - }, "setup": { "title": "OmniRoute 設定", "passwordPrompt": "管理員密碼", @@ -145,6 +133,20 @@ "listTitle": "{days} 天內過期的金鑰:" } }, + "authExport": { + "description": "匯出已解密的提供者憑據(僅限本機,明文輸出)", + "idOpt": "僅匯出與此 id/名稱/提供者相符的連線", + "formatOpt": "輸出格式:json 或 env", + "outOpt": "將輸出寫入檔案而非標準輸出(以 0600 權限寫入)", + "forceOpt": "確認你了解此操作會列印/寫入明文密鑰", + "warning": "⚠ 此操作會列印/寫入已解密的明文 API 金鑰和 OAuth 令牌。請確保你的螢幕、shell 歷史記錄以及任何輸出檔案保持私密。", + "confirmHeading": "⚠ 警告:此操作會以明文匯出已解密的提供者憑據", + "confirmBody": "此命令會為所選連線解密並列印/寫入 apiKey、accessToken、refreshToken 和\nidToken。請將輸出視為機密。", + "confirmFooter": "如需確認,請執行:\n omniroute auth export --force", + "missingKey": "匯出憑據需要 STORAGE_ENCRYPTION_KEY。", + "notFound": "找不到連線:{id}", + "invalidFormat": "無效格式:{format}。請使用 json 或 env。" + }, "stream": { "description": "使用 SSE 檢查模式流式傳輸聊天響應", "file": "從檔案讀取提示", @@ -302,7 +304,7 @@ "status": "狀態:{status}", "uptime": "執行時間:{uptime}", "requests": "請求數(24h):{count}", - "cost": "成本(24h):" + "cost": "成本(24h):${cost}" }, "quota": { "description": "顯示提供者配額使用情況", @@ -818,6 +820,18 @@ "event": "要模擬的事件型別(預設:request.completed)" } }, + "program": { + "description": "OmniRoute — 具有自動故障轉移的智慧 AI 路由器", + "version": "列印版本並退出", + "output": "輸出格式(table, json, jsonl, csv)", + "quiet": "禁止非必要輸出", + "no_color": "停用彩色輸出", + "timeout": "HTTP 請求超時(毫秒)", + "api_key": "OmniRoute 伺服器的 API 金鑰", + "base_url": "OmniRoute 伺服器的基礎 URL", + "context": "此命令使用的伺服器上下文/配置檔案", + "lang": "設定 CLI 顯示語言(覆蓋 OMNIROUTE_LANG)" + }, "files": { "description": "管理檔案(上傳、列出、獲取、下載、刪除)", "list": { @@ -918,6 +932,11 @@ "model": "按模型篩選" } }, + "radar": { + "description": "檢查並同步本機 Radar 目錄訂閱來源", + "status": "顯示本機 Radar 設定和訂閱來源快取狀態", + "sync": "透過本機伺服器同步目錄、推薦、優惠和 Intel" + }, "resilience": { "description": "檢查和管理彈性機制", "status": { @@ -1245,8 +1264,8 @@ "description": "管理 OmniRoute 開機自啟(Linux:systemd 使用者服務)", "enable": "啟用開機自啟", "disable": "停用開機自啟", - "status": "顯示自啟狀態", - "toggle": "切換開機自啟" + "toggle": "切換開機自啟", + "status": "顯示自啟狀態" }, "runtime": { "description": "管理本地執行時依賴", @@ -1273,25 +1292,6 @@ "update": "更新已安裝的外掛", "scaffold": "搭建新的外掛模板" }, - "authExport": { - "description": "匯出已解密的提供者憑據(僅限本機,明文輸出)", - "idOpt": "僅匯出與此 id/名稱/提供者相符的連線", - "formatOpt": "輸出格式:json 或 env", - "outOpt": "將輸出寫入檔案而非標準輸出(以 0600 權限寫入)", - "forceOpt": "確認你了解此操作會列印/寫入明文密鑰", - "warning": "⚠ 此操作會列印/寫入已解密的明文 API 金鑰和 OAuth 令牌。請確保你的螢幕、shell 歷史記錄以及任何輸出檔案保持私密。", - "confirmHeading": "⚠ 警告:此操作會以明文匯出已解密的提供者憑據", - "confirmBody": "此命令會為所選連線解密並列印/寫入 apiKey、accessToken、refreshToken 和\nidToken。請將輸出視為機密。", - "confirmFooter": "如需確認,請執行:\n omniroute auth export --force", - "missingKey": "匯出憑據需要 STORAGE_ENCRYPTION_KEY。", - "notFound": "找不到連線:{id}", - "invalidFormat": "無效格式:{format}。請使用 json 或 env。" - }, - "radar": { - "description": "檢查並同步本機 Radar 目錄訂閱來源", - "status": "顯示本機 Radar 設定和訂閱來源快取狀態", - "sync": "透過本機伺服器同步目錄、推薦、優惠和 Intel" - }, "launch": { "description": "啟動指向 OmniRoute 的 Claude Code(本機或遠端,使用 --profile)", "token": "Claude 用戶端應傳送的令牌(ANTHROPIC_AUTH_TOKEN)", diff --git a/changelog.d/fixes/13892-cli-catalogs-all-locales.md b/changelog.d/fixes/13892-cli-catalogs-all-locales.md new file mode 100644 index 0000000000..0dbdaa6166 --- /dev/null +++ b/changelog.d/fixes/13892-cli-catalogs-all-locales.md @@ -0,0 +1 @@ +- **fix(cli):** translate the CLI for every locale — 38 catalogs carried 1–24 of 830 keys and fell back to English; `sync-ui-keys --catalog=cli` fills them (52,000 strings) and a completeness gate keeps them full. (#13892) diff --git a/docs/architecture/QUALITY_GATES.md b/docs/architecture/QUALITY_GATES.md index d3f053e28d..c48b7636a0 100644 --- a/docs/architecture/QUALITY_GATES.md +++ b/docs/architecture/QUALITY_GATES.md @@ -551,6 +551,8 @@ key itself, so both siblings stayed silent when batch 1 (#13044) landed 43 keys locales and batch 2 (#13660) 10 keys short in eight (2026-09-15). Fix a red with `node scripts/i18n/sync-ui-keys.mjs --locale= --translate-markers`; an `extra` leaf means the source dropped it — delete it from the locale. `--warn` reports without failing. +`--catalog=cli` runs the same comparison over `bin/cli/locales` (`npm run i18n:check-keys:cli`); +both steps live in job `i18n-ui-coverage`. #### `check-new-key-coverage` — new-key i18n gate diff --git a/docs/guides/I18N.md b/docs/guides/I18N.md index 627ff57162..9559c93d23 100644 --- a/docs/guides/I18N.md +++ b/docs/guides/I18N.md @@ -220,6 +220,7 @@ Three gates guard the catalogs, and they see different things: | `npm run i18n:check-ui-coverage` | ≥ 80 % of leaves translated per locale | | `npm run i18n:check-new-keys` | a key the PR adds to `en.json` reached every locale | | `npm run i18n:check-keys` | every locale carries exactly the key set of `en.json`, whatever the age | +| `npm run i18n:check-keys:cli` | the CLI catalogs carry exactly the key set of `bin/cli/locales/en.json` | | `npm run i18n:check-ratio` | share of leaves still identical to English may only fall (ratchet) | **After every merge of the base into a locale branch**, re-sync the locales the branch owns — diff --git a/package.json b/package.json index 0964ce8be7..935359f6d6 100644 --- a/package.json +++ b/package.json @@ -287,7 +287,8 @@ "alibaba:sync-allowlist": "node --import tsx/esm scripts/ops/sync-alibaba-allowlist.mjs", "check:vitest-exclusions": "node scripts/check/check-vitest-exclusions.mjs", "i18n:check-new-keys": "node scripts/i18n/check-new-key-coverage.mjs", - "i18n:check-keys": "node scripts/i18n/check-key-completeness.mjs" + "i18n:check-keys": "node scripts/i18n/check-key-completeness.mjs", + "i18n:check-keys:cli": "node scripts/i18n/check-key-completeness.mjs --catalog=cli" }, "dependencies": { "@aws-sdk/client-bedrock-runtime": "^3.1120.0", diff --git a/scripts/i18n/check-key-completeness.mjs b/scripts/i18n/check-key-completeness.mjs index bd9e006c3e..e4dd3da527 100644 --- a/scripts/i18n/check-key-completeness.mjs +++ b/scripts/i18n/check-key-completeness.mjs @@ -18,9 +18,11 @@ * This gate is absolute, not diff-based: it compares the tree as it is. * * Usage: - * node scripts/i18n/check-key-completeness.mjs # blocking - * node scripts/i18n/check-key-completeness.mjs --warn # report only, exit 0 + * node scripts/i18n/check-key-completeness.mjs # blocking (dashboard catalogs) + * node scripts/i18n/check-key-completeness.mjs --warn # report only, exit 0 + * node scripts/i18n/check-key-completeness.mjs --catalog=cli # same gate over bin/cli/locales * npm run i18n:check-keys + * npm run i18n:check-keys:cli */ import { promises as fs } from "node:fs"; @@ -30,9 +32,19 @@ import { fileURLToPath, pathToFileURL } from "node:url"; const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.resolve(SCRIPT_DIR, "..", ".."); -const MESSAGES_DIR = path.join(ROOT, "src", "i18n", "messages"); +const CATALOG_DIRS = { + ui: path.join(ROOT, "src", "i18n", "messages"), + cli: path.join(ROOT, "bin", "cli", "locales"), +}; const SOURCE_LOCALE = "en"; +/** Absolute directory of a flat-JSON catalog family: the dashboard (`ui`) or the CLI (`cli`). */ +export function catalogDir(name = "ui") { + const dir = CATALOG_DIRS[name]; + if (!dir) throw new Error(`unknown catalog "${name}" (expected ui or cli)`); + return dir; +} + function isPlainObject(value) { return value !== null && typeof value === "object" && !Array.isArray(value); } @@ -66,17 +78,17 @@ export function findIncompleteLocales({ en, locales }) { return gaps; } -async function readCatalogs() { - const files = (await fs.readdir(MESSAGES_DIR)).filter((f) => f.endsWith(".json")).sort(); +async function readCatalogs(dir) { + const files = (await fs.readdir(dir)).filter((f) => f.endsWith(".json")).sort(); const locales = {}; let en = null; for (const file of files) { const code = file.slice(0, -".json".length); - const parsed = JSON.parse(await fs.readFile(path.join(MESSAGES_DIR, file), "utf8")); + const parsed = JSON.parse(await fs.readFile(path.join(dir, file), "utf8")); if (code === SOURCE_LOCALE) en = parsed; else locales[code] = parsed; } - if (!en) throw new Error(`[i18n-keys] ${SOURCE_LOCALE}.json not found in ${MESSAGES_DIR}`); + if (!en) throw new Error(`${SOURCE_LOCALE}.json not found in ${dir}`); return { en, locales }; } @@ -101,24 +113,26 @@ function formatReport(gaps, sample = 5) { async function main() { const warnOnly = process.argv.includes("--warn"); - const { en, locales } = await readCatalogs(); + const catalogArg = process.argv.find((a) => a.startsWith("--catalog=")); + const catalog = catalogArg ? catalogArg.slice(10) : "ui"; + const dir = catalogDir(catalog); + const tag = `[i18n-keys:${catalog}]`; + const { en, locales } = await readCatalogs(dir); const gaps = findIncompleteLocales({ en, locales }); const total = leafPaths(en).size; const count = Object.keys(locales).length; if (gaps.length === 0) { - console.log( - `[i18n-keys] OK — ${count} locales carry all ${total} keys of en.json, none extra.` - ); + console.log(`${tag} OK — ${count} locales carry all ${total} keys of en.json, none extra.`); return; } const missingTotal = gaps.reduce((s, g) => s + g.missing.length, 0); const extraTotal = gaps.reduce((s, g) => s + g.extra.length, 0); console.error( - `[i18n-keys] ${warnOnly ? "WARN" : "FAIL"} — ${gaps.length}/${count} locales differ from en.json (${missingTotal} missing, ${extraTotal} extra leaves):` + `${tag} ${warnOnly ? "WARN" : "FAIL"} — ${gaps.length}/${count} locales differ from en.json (${missingTotal} missing, ${extraTotal} extra leaves):` ); console.error(formatReport(gaps)); console.error( - "[i18n-keys] Fix: node scripts/i18n/sync-ui-keys.mjs --locale= --translate-markers (adds the missing keys and translates them); extra keys mean the source dropped them — remove them from the locale." + `${tag} Fix: node scripts/i18n/sync-ui-keys.mjs --catalog=${catalog} --locale= --translate-markers (adds the missing keys and translates them); extra keys mean the source dropped them — remove them from the locale.` ); if (!warnOnly) process.exitCode = 1; } diff --git a/scripts/i18n/sync-ui-keys.mjs b/scripts/i18n/sync-ui-keys.mjs index b0c61a718c..6c4f162897 100755 --- a/scripts/i18n/sync-ui-keys.mjs +++ b/scripts/i18n/sync-ui-keys.mjs @@ -72,7 +72,28 @@ import { backendConfig, translateBatch, translateString } from "./lib/translate- const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.resolve(SCRIPT_DIR, "..", ".."); const CONFIG_PATH = path.join(ROOT, "config", "i18n.json"); -const MESSAGES_DIR = path.join(ROOT, "src", "i18n", "messages"); + +const CATALOGS = { + ui: { + name: "ui", + dir: path.join(ROOT, "src", "i18n", "messages"), + allowlistPath: path.join(SCRIPT_DIR, "untranslatable-keys.json"), + }, + cli: { + name: "cli", + dir: path.join(ROOT, "bin", "cli", "locales"), + allowlistPath: path.join(SCRIPT_DIR, "untranslatable-cli-keys.json"), + }, +}; + +/** Which flat-JSON catalog family a run targets: the dashboard (`ui`) or the CLI (`cli`). */ +export function resolveCatalog(name = "ui") { + const catalog = CATALOGS[name]; + if (!catalog) throw new Error(`unknown catalog "${name}" (expected ui or cli)`); + return catalog; +} + +let MESSAGES_DIR = CATALOGS.ui.dir; // reassigned in main() from --catalog const SOURCE_LOCALE = "en"; const PLACEHOLDER_PREFIX = "__MISSING__:"; @@ -96,11 +117,13 @@ function parseArgs(argv) { retranslateIdentical: false, concurrency: null, batchSize: 1, + catalog: "ui", }; 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("--catalog=")) opts.catalog = arg.slice(10).trim(); else if (arg.startsWith("--locale=")) { opts.locales = arg .slice(9) @@ -125,6 +148,7 @@ function parseArgs(argv) { "Usage: node scripts/i18n/sync-ui-keys.mjs [options]", "", " --locale= Target locales (default: all except `en`)", + " --catalog=ui|cli Catalog family (default ui = src/i18n/messages; cli = bin/cli/locales)", " --retranslate-identical Flag leaves still identical to English (outside", " untranslatable-keys.json) as __MISSING__ so they get", " retranslated — only meaningful with --translate-markers", @@ -391,9 +415,7 @@ 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 allow = new Set((await loadJson(resolveCatalog(opts.catalog).allowlistPath)).keys ?? []); const flagged = markIdenticalAsMissing(merged, source, allow); logInfo(`${locale}: ${flagged} English leaves flagged for retranslation`); } @@ -442,6 +464,9 @@ async function processLocale(locale, source, config, opts, backend) { async function main() { const opts = parseArgs(process.argv); + const catalog = resolveCatalog(opts.catalog); + MESSAGES_DIR = catalog.dir; + logInfo(`catalog: ${catalog.name} (${path.relative(ROOT, catalog.dir)})`); const config = await loadConfig(); const sourcePath = path.join(MESSAGES_DIR, `${SOURCE_LOCALE}.json`); diff --git a/scripts/i18n/untranslatable-cli-keys.json b/scripts/i18n/untranslatable-cli-keys.json new file mode 100644 index 0000000000..283df3ee05 --- /dev/null +++ b/scripts/i18n/untranslatable-cli-keys.json @@ -0,0 +1,4 @@ +{ + "description": "CLI keys that must stay in English (brand names, command names, protocol identifiers). Same shape as untranslatable-keys.json; consumed by sync-ui-keys --catalog=cli --retranslate-identical and check-translation-ratio --catalog=cli.", + "keys": [] +} diff --git a/tests/unit/i18n-key-completeness.test.ts b/tests/unit/i18n-key-completeness.test.ts index bda8b71c12..1150203574 100644 --- a/tests/unit/i18n-key-completeness.test.ts +++ b/tests/unit/i18n-key-completeness.test.ts @@ -1,6 +1,10 @@ import { test } from "node:test"; import assert from "node:assert/strict"; -import { findIncompleteLocales, leafPaths } from "../../scripts/i18n/check-key-completeness.mjs"; +import { + catalogDir, + findIncompleteLocales, + leafPaths, +} from "../../scripts/i18n/check-key-completeness.mjs"; // Absolute key-set parity between en.json and every locale catalog. Unlike the new-key gate // (diff-based) and the coverage gate (80 % floor), this one names an ABSENT key regardless of @@ -61,3 +65,9 @@ test("leaves the source dropped are reported as extra, and a wrong shape counts { locale: "fr", missing: ["home.legend.active"], extra: ["common.cancel", "home.legend"] }, ]); }); + +test("catalogDir resolves the dashboard and CLI catalog directories", () => { + assert.ok(catalogDir("ui").endsWith("src/i18n/messages")); + assert.ok(catalogDir("cli").endsWith("bin/cli/locales")); + assert.throws(() => catalogDir("nope"), /unknown catalog/); +}); diff --git a/tests/unit/i18n-sync-ui-keys-catalog.test.ts b/tests/unit/i18n-sync-ui-keys-catalog.test.ts new file mode 100644 index 0000000000..64037aace3 --- /dev/null +++ b/tests/unit/i18n-sync-ui-keys-catalog.test.ts @@ -0,0 +1,22 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import path from "node:path"; +import { resolveCatalog } from "../../scripts/i18n/sync-ui-keys.mjs"; + +test("resolveCatalog: ui is the default and points at the dashboard messages", () => { + const ui = resolveCatalog("ui"); + assert.equal(ui.name, "ui"); + assert.ok(ui.dir.endsWith(path.join("src", "i18n", "messages"))); + assert.ok(ui.allowlistPath.endsWith("untranslatable-keys.json")); +}); + +test("resolveCatalog: cli points at the CLI locales and its own allowlist", () => { + const cli = resolveCatalog("cli"); + assert.equal(cli.name, "cli"); + assert.ok(cli.dir.endsWith(path.join("bin", "cli", "locales"))); + assert.ok(cli.allowlistPath.endsWith("untranslatable-cli-keys.json")); +}); + +test("resolveCatalog: anything else is rejected loudly", () => { + assert.throws(() => resolveCatalog("docs"), /unknown catalog/); +});