diff --git a/web/frontend/src/components/app-header.tsx b/web/frontend/src/components/app-header.tsx index 30c05ee45..eb90881fb 100644 --- a/web/frontend/src/components/app-header.tsx +++ b/web/frontend/src/components/app-header.tsx @@ -291,6 +291,9 @@ export function AppHeader() { i18n.changeLanguage("pt-BR")}> Português (Brasil) + i18n.changeLanguage("bn-IN")}> + বাংলা + i18n.changeLanguage("zh")}> 简体中文 diff --git a/web/frontend/src/i18n/index.ts b/web/frontend/src/i18n/index.ts index 8c0248915..7eefd943f 100644 --- a/web/frontend/src/i18n/index.ts +++ b/web/frontend/src/i18n/index.ts @@ -1,4 +1,5 @@ import dayjs from "dayjs" +import "dayjs/locale/bn" import "dayjs/locale/cs" import "dayjs/locale/en" import "dayjs/locale/pt-br" @@ -11,6 +12,7 @@ import { initReactI18next } from "react-i18next" import en from "./locales/en.json" import ptBr from "./locales/pt-br.json" +import bnIn from "./locales/bn-in.json" import zh from "./locales/zh.json" import cs from "./locales/cs.json" @@ -33,6 +35,9 @@ i18n "pt-BR": { translation: ptBr, }, + "bn-IN": { + translation: bnIn, + }, zh: { translation: zh, }, @@ -53,6 +58,8 @@ i18n.on("languageChanged", (lng) => { dayjs.locale("zh-cn") } else if (lng.startsWith("pt")) { dayjs.locale("pt-br") + } else if (lng.startsWith("bn")) { + dayjs.locale("bn") } else if (lng.startsWith("cs")) { dayjs.locale("cs") } else { diff --git a/web/frontend/src/i18n/locales/bn-in.json b/web/frontend/src/i18n/locales/bn-in.json new file mode 100644 index 000000000..c9a7249bf --- /dev/null +++ b/web/frontend/src/i18n/locales/bn-in.json @@ -0,0 +1,960 @@ +{ + "navigation": { + "chat": "চ্যাট", + "model_group": "মডেল", + "models": "মডেল", + "credentials": "ক্রেডেনশিয়াল", + "agent_group": "এজেন্ট", + "hub": "Hub", + "skills": "দক্ষতা", + "tools": "সরঞ্জাম", + "services": "সার্ভিস", + "channels_group": "চ্যানেল", + "show_more_channels": "আরও", + "show_less_channels": "কম", + "config": "কনফিগ", + "logs": "লগ" + }, + "launcherLogin": { + "title": "সাইন ইন", + "description": "চালিয়ে যেতে ড্যাশবোর্ড পাসওয়ার্ড দিন।", + "passwordLabel": "পাসওয়ার্ড", + "passwordPlaceholder": "পাসওয়ার্ড লিখুন", + "submit": "সাইন ইন", + "errorInvalid": "ভুল পাসওয়ার্ড। আবার চেষ্টা করুন।", + "errorNetwork": "নেটওয়ার্ক ত্রুটি। আবার চেষ্টা করুন।" + }, + "launcherSetup": { + "title": "ড্যাশবোর্ড পাসওয়ার্ড সেট করুন", + "description": "এই ড্যাশবোর্ডে অ্যাক্সেস সুরক্ষিত রাখতে একটি পাসওয়ার্ড বেছে নিন। প্রতিবার সাইন ইনের সময় এটি ব্যবহার করতে হবে।", + "passwordLabel": "পাসওয়ার্ড", + "passwordPlaceholder": "কমপক্ষে ৮ অক্ষর", + "confirmLabel": "পাসওয়ার্ড নিশ্চিত করুন", + "confirmPlaceholder": "পাসওয়ার্ড আবার লিখুন", + "submit": "পাসওয়ার্ড সেট করুন", + "errorMismatch": "পাসওয়ার্ড মিলছে না।", + "errorNetwork": "নেটওয়ার্ক ত্রুটি। আবার চেষ্টা করুন।" + }, + "chat": { + "welcome": "আজ আমি আপনাকে কীভাবে সাহায্য করতে পারি?", + "welcomeDesc": "আবহাওয়া, সেটিংস বা অন্য যেকোনো কাজ সম্পর্কে আমাকে জিজ্ঞাসা করুন। আমি সাহায্যের জন্য এখানে আছি।", + "placeholder": "একটি নতুন বার্তা শুরু করুন...", + "disabledPlaceholder": { + "gatewayUnknown": "চ্যাট করা যাচ্ছে না: গেটওয়ের স্ট্যাটাস এখনও পরীক্ষা করা হচ্ছে। অনুগ্রহ করে অপেক্ষা করুন, তারপর পৃষ্ঠাটি রিফ্রেশ করুন অথবা প্রয়োজনে লঞ্চার পুনরায় চালু করুন।", + "gatewayStarting": "চ্যাট করা যাচ্ছে না: গেটওয়ে চালু হচ্ছে। চালু হওয়া শেষ হওয়া পর্যন্ত অপেক্ষা করুন, তারপর আবার চেষ্টা করুন।", + "gatewayRestarting": "চ্যাট করা যাচ্ছে না: গেটওয়ে পুনরায় চালু হচ্ছে। অনুগ্রহ করে পুনরায় চালু হওয়া শেষ হওয়া পর্যন্ত অপেক্ষা করুন।", + "gatewayStopping": "চ্যাট করা যাচ্ছে না: গেটওয়ে বন্ধ হচ্ছে। বন্ধ হওয়া পর্যন্ত অপেক্ষা করুন, তারপর গেটওয়ে আবার চালু করুন।", + "gatewayStopped": "চ্যাট করা যাচ্ছে না: গেটওয়ে শুরু করা হয়নি। উপরের বারে স্টার্ট গেটওয়েতে ক্লিক করুন, তারপর পুনরায় চেষ্টা করুন।", + "gatewayError": "চ্যাট করা যাচ্ছে না: গেটওয়ে ত্রুটি অবস্থায় রয়েছে। লগ পরীক্ষা করুন, তারপর গেটওয়ে বা লঞ্চার পুনরায় চালু করুন।", + "websocketConnecting": "চ্যাট সার্ভিসের সাথে সংযোগ স্থাপন হচ্ছে... অনুগ্রহ করে অপেক্ষা করুন।", + "websocketDisconnected": "চ্যাট করা যাচ্ছে না: WebSocket সংযোগ বিচ্ছিন্ন। নেটওয়ার্ক এবং গেটওয়ের অবস্থা পরীক্ষা করুন, তারপর পৃষ্ঠাটি রিফ্রেশ করুন বা লঞ্চার পুনরায় চালু করুন।", + "websocketError": "চ্যাট করা যাচ্ছে না: WebSocket সংযোগ ব্যর্থ হয়েছে। নেটওয়ার্ক এবং গেটওয়ের অবস্থা পরীক্ষা করুন, তারপর পুনরায় চেষ্টা করুন।", + "noDefaultModel": "চ্যাট করা যাচ্ছে না: কোনো ডিফল্ট মডেল নির্বাচিত নেই। মডেল পৃষ্ঠায় একটি ডিফল্ট মডেল সেট করুন।" + }, + "newChat": "নতুন চ্যাট", + "notConnected": "গেটওয়ে চলছে না। চ্যাট করতে এটি চালু করুন।", + "thinking": { + "step1": "চিন্তা করা হচ্ছে...", + "step2": "আপনার অনুরোধ বিশ্লেষণ করা হচ্ছে...", + "step3": "উত্তর প্রস্তুত করা হচ্ছে...", + "step4": "প্রায় শেষ..." + }, + "reasoningLabel": "যুক্তি", + "toolCallsLabel": "টুল কল", + "toolCallExplanationLabel": "কল নোট", + "toolCallFunctionLabel": "কল সারাংশ", + "toolCallArgumentsLabel": "আর্গুমেন্ট", + "showAssistantDetails": "যুক্তি এবং টুল কল", + "assistantDetailVisibility": { + "none": "কোনোটিই দেখাবেন না", + "thought": "শুধু যুক্তি দেখান", + "toolCalls": "শুধু টুল কল দেখান", + "all": "উভয়ই দেখান" + }, + "toolLabel": "টুল", + "codeLabel": "কোড", + "copyMessage": "বার্তা কপি করুন", + "copyCode": "কোড কপি করুন", + "copiedLabel": "কপি করা হয়েছে", + "enableCodeWrap": "লাইন র‍্যাপ করুন", + "disableCodeWrap": "র‍্যাপ নিষ্ক্রিয় করুন", + "expandCode": "কোড প্রসারিত করুন", + "collapseCode": "কোড সংকুচিত করুন", + "history": "ইতিহাস", + "noHistory": "এখনও কোনো চ্যাট ইতিহাস নেই", + "historyLoadFailed": "চ্যাট ইতিহাস লোড করতে ব্যর্থ", + "historyOpenFailed": "এই চ্যাট ইতিহাস খুলতে ব্যর্থ", + "loadingMore": "আরও লোড হচ্ছে...", + "deleteSession": "সেশন মুছুন", + "messagesCount": "{{count}}টি বার্তা", + "noModel": "মডেল নির্বাচন করুন", + "inputDisabled": { + "notConnected": "গেটওয়ে চলছে না। চ্যাট করতে এটি চালু করুন।", + "noModel": "কোনো ডিফল্ট মডেল কনফিগার করা নেই। একটি সেট করতে মডেল পৃষ্ঠায় যান।" + }, + "sendMessage": "বার্তা পাঠান", + "sendHint": "পাঠাতে Enter চাপুন\nনতুন লাইনের জন্য Shift + Enter", + "contextTitle": "প্রসঙ্গ", + "contextDetail": "বিস্তারিত দেখুন", + "attachImage": "ছবি যোগ করুন", + "removeImage": "ছবি সরান", + "uploadedImage": "আপলোড করা ছবি", + "invalidImage": "\"{{name}}\" একটি সমর্থিত ছবি ফাইল নয়।", + "imageTooLarge": "\"{{name}}\" {{size}} সীমা অতিক্রম করেছে।", + "imageReadFailed": "\"{{name}}\" পড়তে ব্যর্থ হয়েছে।", + "empty": { + "noConfiguredModel": "কোনো মডেল কনফিগার করা নেই", + "noConfiguredModelDescription": "চ্যাট শুরু করার আগে আপনাকে কমপক্ষে একটি AI মডেল API কী দিয়ে কনফিগার করতে হবে।", + "goToModels": "মডেলে যান", + "noSelectedModel": "কোনো মডেল নির্বাচিত নেই", + "noSelectedModelDescription": "আপনি মডেল কনফিগার করেছেন, কিন্তু কোনোটি ডিফল্ট হিসেবে সেট করা নেই। চ্যাট শুরু করার আগে একটি মডেল নির্বাচন করুন।", + "notRunning": "গেটওয়ে চলছে না", + "notRunningDescription": "চ্যাট শুরু করতে গেটওয়ে সার্ভিস চালু করুন। উপরের বারে স্টার্ট গেটওয়ে বোতাম ব্যবহার করুন।" + }, + "modelGroup": { + "apikey": "API Key", + "oauth": "OAuth", + "local": "লোকাল" + } + }, + "header": { + "logout": { + "tooltip": "সাইন আউট", + "confirm": "সাইন আউট", + "description": "আপনি কি ড্যাশবোর্ড থেকে সাইন আউট করতে চান?" + }, + "gateway": { + "stopDialog": { + "title": "গেটওয়ে সার্ভিস বন্ধ করবেন?", + "description": "আপনি কি গেটওয়ে বন্ধ করতে চান? এটি আপনার সক্রিয় চ্যাট সেশন বিচ্ছিন্ন করবে এবং ইনফারেন্স থামাবে।", + "confirm": "গেটওয়ে বন্ধ করুন" + }, + "action": { + "start": "গেটওয়ে চালু করুন", + "stop": "গেটওয়ে বন্ধ করুন", + "restart": "গেটওয়ে পুনরায় চালু করুন" + }, + "status": { + "starting": "গেটওয়ে চালু হচ্ছে...", + "restarting": "গেটওয়ে পুনরায় চালু হচ্ছে...", + "stopping": "গেটওয়ে বন্ধ হচ্ছে..." + }, + "restartRequired": "কনফিগারেশনের পরিবর্তন কার্যকর হতে গেটওয়ে পুনরায় চালু করা প্রয়োজন।" + } + }, + "common": { + "cancel": "বাতিল", + "close": "বন্ধ করুন", + "save": "সংরক্ষণ করুন", + "saving": "সংরক্ষণ করা হচ্ছে...", + "reset": "রিসেট", + "confirm": "নিশ্চিত করুন", + "fix": "ঠিক করুন", + "saveChangesTitle": "আপনার অসংরক্ষিত কনফিগারেশন পরিবর্তন রয়েছে", + "restartRequiredTitle": "গেটওয়ে পুনরায় চালু করা প্রয়োজন", + "restartRequiredDesc": "সর্বশেষ {{name}} কনফিগারেশন সংরক্ষিত হয়েছে। কার্যকর হতে গেটওয়ে পুনরায় চালু করুন।" + }, + "labels": { + "loading": "লোড হচ্ছে..." + }, + "footer": { + "version": "সংস্করণ", + "commit": "কমিট", + "build": "বিল্ড", + "version_unknown": "অজানা" + }, + "credentials": { + "description": "সমর্থিত প্রোভাইডারদের জন্য OAuth এবং টোকেন-ভিত্তিক ক্রেডেনশিয়াল পরিচালনা করুন।", + "loading": "ক্রেডেনশিয়াল লোড হচ্ছে...", + "providers": { + "openai": { + "description": "ব্রাউজার OAuth, ডিভাইস কোড এবং টোকেন লগইন সমর্থন করে।" + }, + "anthropic": { + "description": "Claude অ্যাক্সেসের জন্য টোকেন লগইন ব্যবহার করে।" + }, + "antigravity": { + "description": "Google Cloud Code Assist-এর জন্য ব্রাউজার OAuth ব্যবহার করে।" + } + }, + "status": { + "connected": "সংযুক্ত", + "needsRefresh": "রিফ্রেশ প্রয়োজন", + "expired": "মেয়াদ শেষ", + "notLoggedIn": "লগ ইন করা নেই" + }, + "actions": { + "browser": "ব্রাউজার OAuth", + "deviceCode": "ডিভাইস কোড", + "stopLoading": "লোডিং বন্ধ করুন", + "saveToken": "সংরক্ষণ করুন", + "logout": "লগআউট" + }, + "logoutDialog": { + "title": "প্রোভাইডার থেকে লগআউট করবেন?", + "description": "এটি {{provider}}-এর জন্য সংরক্ষিত আপনার ক্রেডেনশিয়াল মুছে ফেলবে।" + }, + "fields": { + "openaiToken": "OpenAI টোকেন", + "anthropicToken": "Anthropic টোকেন" + }, + "labels": { + "account": "অ্যাকাউন্ট", + "email": "ইমেল", + "project": "প্রকল্প" + }, + "errors": { + "loadFailed": "ক্রেডেনশিয়াল লোড করতে ব্যর্থ", + "flowFailed": "প্রমাণীকরণ প্রবাহ পরীক্ষা করতে ব্যর্থ", + "loginFailed": "লগইন ব্যর্থ", + "logoutFailed": "লগআউট ব্যর্থ", + "invalidBrowserResponse": "ব্রাউজার লগইন প্রতিক্রিয়া অবৈধ", + "invalidDeviceResponse": "ডিভাইস কোড প্রতিক্রিয়া অবৈধ", + "popupBlocked": "নতুন ট্যাব খোলা যাচ্ছে না। অনুগ্রহ করে পপআপ অনুমতি দিন এবং আবার চেষ্টা করুন।" + }, + "flow": { + "current": "বর্তমান প্রমাণীকরণ অবস্থা", + "pending": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "success": "প্রমাণীকরণ সফল", + "error": "প্রমাণীকরণ ব্যর্থ", + "expired": "প্রমাণীকরণ সেশনের মেয়াদ শেষ" + }, + "device": { + "title": "OpenAI ডিভাইস লগইন", + "description": "যাচাইকরণ পৃষ্ঠা খুলুন এবং নিচের কোডটি লিখুন। এই পৃষ্ঠাটি স্বয়ংক্রিয়ভাবে রিফ্রেশ হবে।", + "code": "ইউজার কোড", + "url": "যাচাইকরণ URL", + "polling": "লগইন অবস্থা পোলিং করা হচ্ছে...", + "open": "যাচাইকরণ পৃষ্ঠা খুলুন" + } + }, + "models": { + "description": "AI প্রোভাইডারদের জন্য API কী কনফিগার করুন। শুধুমাত্র কনফিগার করা মডেলগুলি চ্যাটের জন্য উপলব্ধ।", + "defaultChangeSuccess": "ডিফল্ট মডেল আপডেট করা হয়েছে।", + "unsavedPrompt": "এই পরিবর্তন এখনও সংরক্ষিত হয়নি। মডেল কনফিগারেশনে লিখতে সংরক্ষণ করুন।", + "restartHint": "মডেল কনফিগারেশনের পরিবর্তন গেটওয়ে পুনরায় চালু হওয়ার পরে কার্যকর হয়।", + "loadError": "মডেল লোড করতে ব্যর্থ", + "retry": "পুনরায় চেষ্টা করুন", + "providerCatalogUnavailable": "ব্যাকএন্ড প্রোভাইডার ক্যাটালগ অনুপলব্ধ। মডেল API সফলভাবে লোড না হওয়া পর্যন্ত নতুন প্রোভাইডার নির্বাচন নিষ্ক্রিয়।", + "noDefaultHintPrefix": "এখনও কোনো ডিফল্ট মডেল সেট করা নেই। সেট করতে ক্লিক করুন", + "noDefaultHintSuffix": "এটি সেট করতে।", + "status": { + "available": "উপলব্ধ", + "unconfigured": "কনফিগার করা নেই", + "unreachable": "সার্ভিস অপ্রাপ্য" + }, + "badge": { + "default": "ডিফল্ট", + "virtual": "ভার্চুয়াল" + }, + "action": { + "edit": "API কী সম্পাদনা করুন", + "setDefault": "ডিফল্ট হিসেবে সেট করুন", + "delete": "মডেল মুছুন", + "setDefaultDisabled": { + "setting": "ডিফল্ট হিসেবে সেট করা হচ্ছে...", + "unavailable": "অনুপলব্ধ মডেলকে ডিফল্ট হিসেবে সেট করা যাবে না", + "isDefault": "ইতিমধ্যে ডিফল্ট মডেল", + "isVirtual": "ভার্চুয়াল মডেলকে ডিফল্ট হিসেবে সেট করা যাবে না", + "unsupportedProvider": "এই প্রোভাইডারকে ডিফল্ট চ্যাট মডেল হিসেবে ব্যবহার করা যাবে না।" + }, + "deleteDisabled": { + "isDefault": "ডিফল্ট মডেল মুছে ফেলা যাবে না" + } + }, + "defaultOnSave": { + "label": "ডিফল্ট মডেল", + "description": "সংরক্ষণের পরে স্বয়ংক্রিয়ভাবে এই মডেলটিকে ডিফল্ট হিসেবে সেট করুন।", + "unsupportedProvider": "এই প্রোভাইডারকে মডেল তালিকায় সংরক্ষণ করা যাবে কিন্তু ডিফল্ট চ্যাট মডেল হিসেবে ব্যবহার করা যাবে না।" + }, + "add": { + "button": "মডেল যোগ করুন", + "title": "কাস্টম মডেল যোগ করুন", + "description": "একটি OpenAI-সামঞ্জস্যপূর্ণ বা নেটিভ মডেল এন্ডপয়েন্ট যোগ করুন।", + "modelName": "মডেল এলিয়াস", + "modelNamePlaceholder": "যেমন my-gpt4", + "modelNameHint": "কথোপকথনে এই মডেলটি চিহ্নিত করতে ব্যবহৃত একটি ছোট নাম।", + "modelId": "মডেল শনাক্তকারী", + "modelIdPlaceholder": "যেমন gpt-4o বা openai/gpt-4o", + "modelIdHint": "এই ক্ষেত্রটি নির্বাচিত প্রোভাইডারের জন্য canonical মডেল ID হিসেবে বিবেচিত হয়। যদি শনাক্তকারীতে নিজেই একটি স্ল্যাশ থাকে (উদাহরণস্বরূপ openai/gpt-5.4), তবে এটি অপরিবর্তিত রাখা হয় এবং আবার বিভক্ত করা হয় না।", + "errorRequired": "এই ক্ষেত্রটি প্রয়োজনীয়।", + "errorDuplicateModelName": "মডেল এলিয়াস ইতিমধ্যে বিদ্যমান। অনুগ্রহ করে একটি ভিন্ন নাম ব্যবহার করুন।", + "saveError": "মডেল যোগ করতে ব্যর্থ", + "saveSuccess": "মডেল যোগ করা হয়েছে।", + "confirm": "মডেল যোগ করুন" + }, + "delete": { + "title": "মডেল মুছবেন?", + "description": "\"{{name}}\" আপনার মডেল তালিকা থেকে স্থায়ীভাবে সরানো হবে। এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "confirm": "মুছুন" + }, + "advanced": { + "toggle": "উন্নত বিকল্প" + }, + "field": { + "provider": "Provider", + "providerPlaceholder": "একটি প্রোভাইডার নির্বাচন করুন", + "providerHint": "ব্যাকএন্ড ক্যাটালগ থেকে একটি প্রোভাইডার নির্বাচন করুন; মডেল শনাক্তকারীকে সেই প্রোভাইডারের canonical মডেল ID হিসেবে ব্যাখ্যা করা হবে।", + "providerInvalid": "বর্তমান প্রোভাইডার অবৈধ। অনুগ্রহ করে একটি সমর্থিত প্রোভাইডার নির্বাচন করুন।", + "selectProviderFirst": "প্রথমে একটি প্রোভাইডার নির্বাচন করুন", + "apiBase": "API Base URL", + "apiKey": "API Key", + "apiKeyPlaceholder": "আপনার API কী লিখুন", + "apiKeyPlaceholderSet": "বিদ্যমান কী রাখতে খালি রাখুন", + "proxy": "HTTP প্রক্সি", + "proxyHint": "ঐচ্ছিক। যেমন http://127.0.0.1:7890", + "authMethod": "প্রমাণীকরণ পদ্ধতি", + "authMethodHint": "প্রমাণীকরণ পদ্ধতি: oauth, token। API কী প্রমাণীকরণের জন্য খালি রাখুন।", + "authMethodManagedHint": "এই প্রোভাইডারের প্রমাণীকরণ পদ্ধতি সিস্টেম দ্বারা পরিচালিত।", + "connectMode": "সংযোগ মোড", + "connectModeHint": "CLI-ভিত্তিক প্রোভাইডারদের জন্য সংযোগ মোড: stdio বা grpc।", + "workspace": "ওয়ার্কস্পেস পাথ", + "workspaceHint": "CLI-ভিত্তিক প্রোভাইডারদের জন্য কাজের ডিরেক্টরি (যেমন GitHub Copilot)।", + "requestTimeout": "অনুরোধ টাইমআউট (সেকেন্ড)", + "requestTimeoutHint": "উত্তরের জন্য অপেক্ষা করার সর্বাধিক সেকেন্ড। 0 = ডিফল্ট ব্যবহার করুন।", + "rpm": "রেট সীমা (RPM)", + "rpmHint": "প্রতি মিনিটে সর্বাধিক অনুরোধ। 0 = কোনো সীমা নেই।", + "thinkingLevel": "চিন্তার স্তর", + "thinkingLevelHint": "thinking_level বাদ দিতে এবং প্রোভাইডার ডিফল্ট ব্যবহার করতে খালি রাখুন। মান: off, low, medium, high, xhigh, adaptive।", + "providerDefault": "প্রোভাইডার ডিফল্ট", + "maxTokensField": "ম্যাক্স টোকেন ফিল্ড", + "maxTokensFieldHint": "ম্যাক্স টোকেনের জন্য অনুরোধ ক্ষেত্রের নাম ওভাররাইড করুন, যেমন max_completion_tokens।", + "toolSchemaTransform": "টুল স্কিমা ট্রান্সফর্ম", + "toolSchemaTransformHint": "টুল JSON স্কিমার জন্য ঐচ্ছিক সামঞ্জস্যতা ট্রান্সফর্ম। নেটিভ আচরণের জন্য খালি রাখুন। সমর্থিত মান: simple।", + "streamingEnabled": "স্ট্রিমিং আউটপুট", + "streamingEnabledHint": "এই মডেল এন্ট্রিকে প্রোভাইডার স্ট্রিমিং অনুরোধ চেষ্টা করার অনুমতি দিন। বর্তমান চ্যানেল স্ট্রিমিং সুইচও সক্ষম থাকতে হবে।", + "extraBody": "Extra Body", + "extraBodyHint": "অনুরোধ বডিতে ইনজেক্ট করার অতিরিক্ত JSON ক্ষেত্র, যেমন {\"reasoning_split\": true}।", + "customHeaders": "Custom Headers", + "customHeadersHint": "প্রতিটি অনুরোধে ইনজেক্ট করার অতিরিক্ত HTTP হেডার, যেমন {\"X-Source\": \"coding-plan\"}।", + "invalidJson": "অবৈধ JSON ফর্ম্যাট" + }, + "edit": { + "title": "{{name}} কনফিগার করুন", + "apiKeyHint": "একটি কী ইতিমধ্যে সেট করা হয়েছে। অপরিবর্তিত রাখতে খালি রাখুন।", + "oauthNote": "এই প্রোভাইডার OAuth ব্যবহার করে — কোনো API কী প্রয়োজন নেই।", + "saveError": "সংরক্ষণ করতে ব্যর্থ", + "saveSuccess": "মডেল কনফিগারেশন সংরক্ষিত হয়েছে।" + }, + "fetch": { + "title": "উপলব্ধ মডেল আনুন", + "description": "আপস্ট্রিম প্রোভাইডার থেকে মডেল তালিকা আনুন।", + "providerLabel": "প্রোভাইডার:", + "needApiKey": "মডেল আনতে অনুগ্রহ করে প্রথমে একটি API কী লিখুন।", + "fetching": "মডেল আনা হচ্ছে...", + "retry": "পুনরায় চেষ্টা করুন", + "filterPlaceholder": "মডেল ফিল্টার করুন...", + "found": "{{count}}টি মডেল পাওয়া গেছে", + "found_plural": "{{count}}টি মডেল পাওয়া গেছে", + "shown": "({{count}}টি দেখানো হয়েছে)", + "selectAll": "সব নির্বাচন করুন", + "deselectAll": "সব নির্বাচন বাতিল করুন", + "fill": "{{count}}টি নির্বাচিত মডেল পূরণ করুন", + "fill_plural": "{{count}}টি নির্বাচিত মডেল পূরণ করুন", + "failed": "মডেল আনতে ব্যর্থ" + }, + "catalog": { + "button": "সংরক্ষিত ক্যাটালগ", + "title": "সংরক্ষিত মডেল ক্যাটালগ", + "description": "পূর্বে আনা মডেল তালিকা, প্রতি API কী অনুযায়ী সংরক্ষিত। আপনার কনফিগারেশনে যোগ করতে মডেল নির্বাচন করুন।", + "loading": "ক্যাটালগ লোড হচ্ছে...", + "empty": "এখনও কোনো সংরক্ষিত ক্যাটালগ নেই। একটি ক্যাটালগ সংরক্ষণ করতে প্রোভাইডার থেকে মডেল আনুন।", + "filterPlaceholder": "মডেল ফিল্টার করুন...", + "models": "মডেল", + "fetchedAt": "আনা হয়েছে", + "delete": "ক্যাটালগ মুছুন", + "refresh": "আপস্ট্রিম থেকে রিফ্রেশ করুন", + "found": "{{count}}টি মডেল পাওয়া গেছে", + "found_plural": "{{count}}টি মডেল পাওয়া গেছে", + "selectAll": "সব নির্বাচন করুন", + "deselectAll": "সব নির্বাচন বাতিল করুন", + "addSelected": "{{count}}টি নির্বাচিত যোগ করুন", + "addSuccess": "কনফিগারেশনে {{count}}টি মডেল যোগ করা হয়েছে।", + "needApiKey": "এই মডেলগুলির একটি API কী প্রয়োজন। আমদানির পরে আপনাকে ক্রেডেনশিয়াল কনফিগার করতে হবে।" + }, + "test": { + "title": "মডেল সংযোগ পরীক্ষা করুন", + "description": "যাচাই করুন যে মডেল এন্ডপয়েন্টটি অ্যাক্সেসযোগ্য এবং সঠিকভাবে কনফিগার করা হয়েছে।", + "modelLabel": "মডেল:", + "identifierLabel": "শনাক্তকারী:", + "endpointLabel": "এন্ডপয়েন্ট:", + "testConnection": "সংযোগ পরীক্ষা করুন", + "testing": "সংযোগ পরীক্ষা করা হচ্ছে...", + "success": "সংযোগ সফল", + "responseTime": "প্রতিক্রিয়া সময়: {{ms}}ms", + "failed": "সংযোগ ব্যর্থ", + "status": "স্ট্যাটাস: {{status}}", + "testFailed": "পরীক্ষা ব্যর্থ", + "testAgain": "আবার পরীক্ষা করুন" + }, + "validation": { + "whitespace": "মডেল শনাক্তকারীতে স্পেস থাকতে পারবে না", + "leadingSlash": "/ দিয়ে শুরু হওয়া উচিত নয়", + "consecutiveSlash": "পরপর / থাকা উচিত নয়", + "useProvider": "প্রোভাইডার হিসেবে \"{{provider}}\" ব্যবহার করা হবে", + "defaultToOpenAI": "কোনো প্রোভাইডার নির্দিষ্ট করা নেই, ডিফল্ট OpenAI", + "emptyModel": "মডেলের নাম খালি হতে পারবে না", + "shouldUse": "\"{{provider}}\" এর \"{{alias}}\" ব্যবহার করা উচিত", + "didYouMean": "আপনি কি \"{{closest}}\" বোঝাতে চেয়েছেন?", + "unknownProvider": "অজানা প্রোভাইডার \"{{provider}}\"", + "parsed": "প্রোভাইডার={{provider}}, মডেল={{model}}" + }, + "combobox": { + "selectProvider": "প্রোভাইডার নির্বাচন করুন...", + "searchProvider": "প্রোভাইডার অনুসন্ধান করুন...", + "noProvider": "কোনো প্রোভাইডার পাওয়া যায়নি।", + "noCatalog": "প্রোভাইডার ক্যাটালগ অনুপলব্ধ।", + "local": "লোকাল" + } + }, + "channels": { + "loadError": "চ্যানেল লোড করতে ব্যর্থ", + "name": { + "telegram": "Telegram", + "discord": "Discord", + "slack": "Slack", + "feishu": "ফেইশু", + "dingtalk": "ডিংটক", + "line": "LINE", + "qq": "QQ", + "onebot": "OneBot", + "wecom": "উইকম", + "whatsapp": "WhatsApp", + "whatsapp_native": "WhatsApp Native", + "pico": "Web", + "maixcam": "MaixCam", + "matrix": "Matrix", + "irc": "IRC", + "weixin": "উইচ্যাট", + "mqtt": "MQTT" + }, + "weixin": { + "bindTitle": "WeChat অ্যাকাউন্ট বাইন্ডিং", + "bindDesc": "আপনার ব্যক্তিগত অ্যাকাউন্ট বাইন্ড করতে WeChat দিয়ে QR কোড স্ক্যান করুন।", + "bind": "WeChat বাইন্ড করুন", + "rebind": "পুনরায় বাইন্ড করুন", + "bound": "WeChat বাইন্ড করা হয়েছে", + "notBound": "WeChat অ্যাকাউন্ট এখনও বাইন্ড করা হয়নি।", + "generating": "QR কোড তৈরি করা হচ্ছে...", + "scanHint": "WeChat খুলুন এবং QR কোড স্ক্যান করুন", + "scanned": "স্ক্যান করা হয়েছে — অনুগ্রহ করে WeChat-এ নিশ্চিত করুন", + "expired": "QR কোডের মেয়াদ শেষ", + "retry": "আবার চেষ্টা করুন", + "refresh": "QR রিফ্রেশ করুন", + "errorGeneric": "একটি ত্রুটি ঘটেছে। অনুগ্রহ করে আবার চেষ্টা করুন।" + }, + "wecom": { + "bindTitle": "WeCom বাইন্ডিং", + "bindDesc": "আপনার AI বট বাইন্ড করতে WeCom দিয়ে QR কোড স্ক্যান করুন।", + "bind": "WeCom বাইন্ড করুন", + "rebind": "পুনরায় বাইন্ড করুন", + "bound": "WeCom বাইন্ড করা হয়েছে", + "notBound": "WeCom AI বট এখনও বাইন্ড করা হয়নি।", + "generating": "QR কোড তৈরি করা হচ্ছে...", + "scanHint": "WeCom খুলুন এবং QR কোড স্ক্যান করুন", + "scanned": "স্ক্যান করা হয়েছে, অনুগ্রহ করে WeCom-এ নিশ্চিত করুন", + "expired": "QR কোডের মেয়াদ শেষ", + "retry": "আবার চেষ্টা করুন", + "refresh": "QR রিফ্রেশ করুন", + "errorGeneric": "একটি ত্রুটি ঘটেছে। অনুগ্রহ করে আবার চেষ্টা করুন।" + }, + "field": { + "token": "Bot Token", + "tokenPlaceholder": "বট টোকেন লিখুন", + "botToken": "Bot Token", + "appToken": "App Token", + "appId": "App ID", + "appSecret": "App Secret", + "verificationToken": "Verification Token", + "encryptKey": "Encrypt Key", + "baseUrl": "API Base URL", + "proxy": "HTTP প্রক্সি", + "mentionOnly": "শুধুমাত্র উল্লেখ করলে", + "typingEnabled": "টাইপিং সূচক", + "placeholderEnabled": "প্লেসহোল্ডার বার্তা", + "placeholderText": "প্লেসহোল্ডার টেক্সট", + "streamingEnabled": "স্ট্রিমিং আউটপুট", + "streamingThrottleSeconds": "আপডেট ব্যবধান (সেকেন্ড)", + "streamingMinGrowthChars": "ন্যূনতম বৃদ্ধির অক্ষর", + "groupTriggerMentionOnly": "গ্রুপে শুধুমাত্র উল্লেখ", + "groupTriggerPrefixes": "গ্রুপ ট্রিগার প্রিফিক্স", + "groupTriggerPrefixesPlaceholder": "যেমন /, !, ?", + "randomReactionEmoji": "র‍্যান্ডম প্রতিক্রিয়া ইমোজি", + "randomReactionEmojiPlaceholder": "যেমন THUMBSUP, HEART, SMILE", + "isLark": "Lark (আন্তর্জাতিক)", + "allowFrom": "যাদের থেকে অনুমতি", + "allowFromPlaceholder": "যেমন 123456, 789012", + "allowOrigins": "অনুমোদিত অরিজিন", + "allowOriginsPlaceholder": "যেমন https://example.com, http://localhost:5173", + "removeListItem": "{{value}} সরান", + "secretPlaceholder": "সিক্রেট লিখুন", + "secretHintSet": "একটি মান ইতিমধ্যে সেট করা হয়েছে। অপরিবর্তিত রাখতে খালি রাখুন।" + }, + "page": { + "notFound": "চ্যানেল \"{{name}}\" সমর্থিত নয়।", + "saveSuccess": "চ্যানেল কনফিগারেশন সংরক্ষিত হয়েছে।", + "saveError": "চ্যানেল কনফিগারেশন সংরক্ষণ করতে ব্যর্থ", + "savePrompt": "এই পরিবর্তন এখনও সংরক্ষিত হয়নি। চ্যানেল কনফিগারেশনে লিখতে সংরক্ষণ করুন।", + "docLink": "ডকুমেন্টেশন", + "enableLabel": "চ্যানেল সক্ষম করুন", + "restartRequiredTitle": "গেটওয়ে পুনরায় চালু করা প্রয়োজন", + "restartRequiredDesc": "সর্বশেষ {{name}} কনফিগারেশন সংরক্ষিত হয়েছে। কার্যকর হতে গেটওয়ে পুনরায় চালু করুন।" + }, + "form": { + "desc": { + "token": "প্ল্যাটফর্ম API-এর সাথে সংযোগের জন্য ব্যবহৃত বট অ্যাক্সেস টোকেন।", + "botToken": "বার্তা পাঠাতে এবং গ্রহণ করতে ব্যবহৃত বট টোকেন।", + "appToken": "Socket Mode সংযোগের জন্য ব্যবহৃত অ্যাপ টোকেন।", + "appId": "প্রমাণীকরণের জন্য ব্যবহৃত অনন্য অ্যাপ্লিকেশন ID।", + "appSecret": "স্বাক্ষর এবং প্রমাণীকরণের জন্য ব্যবহৃত অ্যাপ্লিকেশন সিক্রেট।", + "verificationToken": "ইভেন্ট কলব্যাকের জন্য যাচাইকরণ টোকেন।", + "encryptKey": "কলব্যাক পেলোড ডিক্রিপ্ট করতে ব্যবহৃত এনক্রিপশন কী।", + "baseUrl": "প্ল্যাটফর্ম API বেস URL। ডিফল্টরূপে অফিসিয়াল এন্ডপয়েন্ট ব্যবহৃত হয়।", + "proxy": "বহির্গামী নেটওয়ার্ক অ্যাক্সেসের জন্য HTTP প্রক্সি ঠিকানা।", + "mentionOnly": "গ্রুপ চ্যাটে শুধুমাত্র বটকে স্পষ্টভাবে উল্লেখ করলে প্রতিক্রিয়া জানান।", + "typingEnabled": "সহকারী প্রতিক্রিয়া তৈরি করার সময় টাইপিং স্ট্যাটাস প্রদর্শন করুন।", + "placeholderEnabled": "চূড়ান্ত উত্তর পাঠানোর আগে অস্থায়ী প্লেসহোল্ডার বার্তা সক্ষম করুন।", + "streamingEnabled": "এই চ্যানেলকে প্রোভাইডার স্ট্রিমিং আউটপুট প্রদর্শনের অনুমতি দিন। বর্তমান মডেল এন্ট্রি স্ট্রিমিং সুইচও সক্ষম থাকতে হবে।", + "streamingThrottleSeconds": "মধ্যবর্তী স্ট্রিমিং আপডেটগুলির মধ্যে ন্যূনতম ব্যবধান। 0 মানে ডিফল্ট ব্যবহার করুন। চূড়ান্ত উত্তরে থ্রটল করা হয় না।", + "streamingMinGrowthChars": "অন্য একটি মধ্যবর্তী স্ট্রিমিং আপডেট পাঠানোর আগে ন্যূনতম টেক্সট বৃদ্ধি। 0 মানে ডিফল্ট ব্যবহার করুন। চূড়ান্ত উত্তরে থ্রটল করা হয় না।", + "groupTriggerMentionOnly": "গ্রুপ চ্যাটে, শুধুমাত্র বটকে উল্লেখ করলেই প্রতিক্রিয়া জানান।", + "groupTriggerPrefixes": "কাস্টম গ্রুপ-চ্যাট ট্রিগার প্রিফিক্স। একে একে আইটেম যোগ করুন, অথবা একাধিক মান একবারে পেস্ট করুন।", + "randomReactionEmoji": "PicoClaw প্রাপ্তি নিশ্চিত করতে ব্যবহারকারীর বার্তায় ইমোজি প্রতিক্রিয়া যোগ করে। উদাহরণ: \"THUMBSUP\", \"HEART\", \"SMILE\"। ডিফল্ট \"Pin\" ইমোজি ব্যবহার করতে খালি রাখুন।", + "isLark": "Feishu ডোমেইন (open.feishu.cn) এর পরিবর্তে Lark আন্তর্জাতিক ডোমেইন (open.larksuite.com) ব্যবহার করুন।", + "allowFrom": "অনুমোদিত ব্যবহারকারী বা গ্রুপ ID। একে একে আইটেম যোগ করুন, অথবা একাধিক মান একবারে পেস্ট করুন।", + "allowOrigins": "অনুমোদিত অরিজিন ডোমেইন। একে একে আইটেম যোগ করুন, অথবা একাধিক মান একবারে পেস্ট করুন।", + "wsUrl": "WebSocket সার্ভিস URL।", + "reconnectInterval": "বিচ্ছিন্ন হওয়ার পরে পুনঃসংযোগের ব্যবধান (সেকেন্ড)।", + "bridgeUrl": "ব্রিজ সার্ভিস URL।", + "sessionStorePath": "সেশন স্টোরেজের জন্য লোকাল পাথ।", + "useNative": "নেটিভ ক্লায়েন্ট মোড ব্যবহার করবেন কিনা।", + "host": "সার্ভিস হোস্ট ঠিকানা।", + "port": "সার্ভিস পোর্ট।", + "homeserver": "Matrix হোমসার্ভার URL।", + "userId": "অ্যাকাউন্ট ইউজার ID।", + "deviceId": "ডিভাইস ID।", + "joinOnInvite": "আমন্ত্রিত হলে স্বয়ংক্রিয়ভাবে রুমে যোগ দিন।", + "clientId": "প্ল্যাটফর্ম প্রমাণীকরণের জন্য ব্যবহৃত ক্লায়েন্ট ID।", + "corpId": "এন্টারপ্রাইজ Corp ID।", + "agentId": "এন্টারপ্রাইজ অ্যাপ্লিকেশন এজেন্ট ID।", + "webhookUrl": "সম্পূর্ণ webhook URL।", + "webhookHost": "Webhook শোনার হোস্ট।", + "webhookPort": "Webhook শোনার পোর্ট।", + "webhookPath": "Webhook রুট পাথ।", + "replyTimeout": "সেকেন্ডে উত্তরের টাইমআউট।", + "maxSteps": "প্রক্রিয়াকরণ ধাপের সর্বাধিক সংখ্যা।", + "welcomeMessage": "নতুন সেশনের জন্য স্বাগত বার্তার বিষয়বস্তু।", + "allowTokenQuery": "URL কোয়েরি প্যারামিটারে টোকেন অনুমতি দিন।", + "pingInterval": "সেকেন্ডে সংযোগ হার্টবিট ব্যবধান।", + "readTimeout": "সেকেন্ডে রিড টাইমআউট।", + "writeTimeout": "সেকেন্ডে রাইট টাইমআউট।", + "maxConnections": "একযোগে সংযোগের সর্বাধিক সংখ্যা।", + "server": "IRC সার্ভার ঠিকানা।", + "tls": "TLS সক্ষম করবেন কিনা।", + "nick": "বট ডাকনাম।", + "user": "IRC ব্যবহারকারীর নাম।", + "realName": "প্রদর্শিত আসল নাম।", + "channels": "যোগ দিতে IRC চ্যানেল।", + "requestCaps": "সংযোগে অনুরোধ করা IRC ক্ষমতার তালিকা।", + "maxBase64FileSizeMiB": "আপলোডের আগে লোকাল ফাইল base64-এ রূপান্তরের জন্য MiB-এ সর্বাধিক আকার। 0 মানে সীমাহীন। শুধুমাত্র লোকাল ফাইলের জন্য প্রযোজ্য, URL আপলোডের জন্য নয়।", + "genericField": "{{field}} কনফিগার করতে ব্যবহৃত।", + "broker": "MQTT ব্রোকার ঠিকানা।", + "mqttAgentId": "এই ইনস্ট্যান্সের জন্য অনন্য শনাক্তকারী, টপিক পাথ তৈরিতে ব্যবহৃত।", + "topicPrefix": "টপিক প্রিফিক্স। ডিফল্ট /picoclaw।", + "mqttUsername": "ব্রোকার প্রমাণীকরণ ব্যবহারকারীর নাম (ঐচ্ছিক)।", + "mqttPassword": "ব্রোকার প্রমাণীকরণ পাসওয়ার্ড (ঐচ্ছিক)।", + "mqttClientId": "MQTT ক্লায়েন্ট ID। স্বয়ংক্রিয়ভাবে তৈরি করতে খালি রাখুন।", + "keepAlive": "সেকেন্ডে Keepalive ব্যবধান। ডিফল্ট 60।", + "qos": "বার্তার সেবার গুণমান স্তর: 0 = সর্বাধিক একবার, 1 = কমপক্ষে একবার, 2 = ঠিক একবার।" + } + }, + "validation": { + "requiredField": "এই ক্ষেত্রটি প্রয়োজনীয়।" + }, + "mqtt": { + "protocolTitle": "প্রোটোকল রেফারেন্স", + "protocolDesc": "ক্লায়েন্টরা নিম্নলিখিত টপিক এবং পেলোড ফর্ম্যাট ব্যবহার করে বার্তা পাঠায় এবং গ্রহণ করে।", + "uplink": "আপলিঙ্ক (ক্লায়েন্ট → এজেন্ট)", + "downlink": "ডাউনলিঙ্ক (এজেন্ট → ক্লায়েন্ট)", + "topicParams": "টপিক প্যারামিটার", + "fieldText": "text", + "uplinkTextDesc": "ব্যবহারকারীর কাছ থেকে প্রাকৃতিক ভাষার নির্দেশনা (প্রয়োজনীয়)।", + "downlinkTextDesc": "এজেন্টের উত্তর টেক্সট। স্ট্রিমিং মোডে, সম্পূর্ণ প্রতিক্রিয়ার জন্য একাধিক বার্তা ক্রমানুসারে যুক্ত করুন।", + "topicPrefixDesc": "টপিক প্রিফিক্স, উপরের কনফিগারেশনের সাথে মেলে।", + "agentIdDesc": "এজেন্ট ID, উপরের কনফিগারেশনের সাথে মেলে।", + "clientIdDesc": "ক্লায়েন্ট-সংজ্ঞায়িত শনাক্তকারী। সুপারিশ: প্রথম চালু হওয়ার সময় একটি UUID তৈরি করুন এবং এটি সংরক্ষণ করুন যাতে একই ডিভাইস সবসময় একই ID ব্যবহার করে।", + "clientIdPlaceholder": "খালি থাকলে স্বয়ংক্রিয়ভাবে তৈরি", + "secretSet": "ইতিমধ্যে কনফিগার করা হয়েছে। অপরিবর্তিত রাখতে খালি রাখুন।", + "secretEmpty": "কনফিগার করা নেই" + } + }, + "pages": { + "agent": { + "load_error": "এজেন্ট সমর্থন তথ্য লোড করতে ব্যর্থ।", + "skills": { + "empty": "বর্তমানে কোনো দক্ষতা উপলব্ধ নেই।", + "install_success": "{{name}} ইনস্টল করা হয়েছে।", + "install_error": "দক্ষতা ইনস্টল করতে ব্যর্থ।", + "search_placeholder": "নাম, বিবরণ বা রেজিস্ট্রি দ্বারা অনুসন্ধান করুন", + "source_label": "প্রকার", + "sort_label": "সাজান", + "import": "দক্ষতা আমদানি করুন", + "import_success": "দক্ষতা আমদানি করা হয়েছে।", + "import_error": "দক্ষতা আমদানি করতে ব্যর্থ।", + "import_invalid_type": "শুধুমাত্র Markdown বা ZIP দক্ষতা ফাইল সমর্থিত।", + "import_invalid_size": "দক্ষতা ফাইল 1 MB বা ছোট হতে হবে।", + "import_constraints": "1 MB পর্যন্ত একটি Markdown বা ZIP দক্ষতা ফাইল আমদানি করুন", + "view": "দেখুন", + "delete": "মুছুন", + "delete_title": "দক্ষতা মুছবেন?", + "delete_description": "\"{{name}}\" ওয়ার্কস্পেস দক্ষতা থেকে সরানো হবে।", + "delete_confirm": "মুছুন", + "delete_success": "দক্ষতা মুছে ফেলা হয়েছে।", + "delete_error": "দক্ষতা মুছতে ব্যর্থ।", + "viewer_title": "দক্ষতার বিষয়বস্তু", + "viewer_description": "এখানে বর্তমানে কার্যকর SKILL.md বিষয়বস্তু পড়ুন।", + "load_detail_error": "দক্ষতার বিষয়বস্তু লোড করতে ব্যর্থ।", + "no_description": "কোনো বিবরণ প্রদান করা হয়নি।", + "no_results": "বর্তমান ফিল্টারের সাথে কোনো দক্ষতা মেলেনি।", + "dropzone_title": "ওয়ার্কস্পেসে আমদানি করুন", + "dropzone_description": "এখানে একটি দক্ষতা ফাইল টেনে আনুন বা ডিস্ক থেকে নির্বাচন করুন।", + "dropzone_label": "এখানে একটি দক্ষতা ফাইল ফেলুন", + "dropzone_active": "এই দক্ষতাটি আমদানি করতে ছাড়ুন", + "dropzone_release": "দক্ষতাটি স্বাভাবিকীকরণ করা হবে এবং ওয়ার্কস্পেস দক্ষতা ডিরেক্টরিতে সংরক্ষণ করা হবে।", + "marketplace_title": "দক্ষতা আবিষ্কার করুন", + "marketplace_description": "দক্ষতা রেজিস্ট্রি অনুসন্ধান করুন এবং এই ওয়ার্কস্পেসে দরকারী দক্ষতা ইনস্টল করুন", + "marketplace_search_placeholder": "github, docker, database এর মতো ক্ষমতার জন্য অনুসন্ধান করুন...", + "marketplace_search_action": "অনুসন্ধান", + "marketplace_search_status": "অনুসন্ধান স্ট্যাটাস", + "marketplace_install_status": "ইনস্টল স্ট্যাটাস", + "marketplace_notice_title": "নিরাপত্তা বিজ্ঞপ্তি", + "marketplace_notice_body": "রেজিস্ট্রি দক্ষতা তৃতীয় পক্ষের বিষয়বস্তু। ইনস্টল করার আগে লেখক, পৃষ্ঠার URL, নির্দেশাবলী এবং প্রয়োজনীয় কোড বা ক্রেডেনশিয়াল পর্যালোচনা করুন।", + "marketplace_status_disabled": "নিষ্ক্রিয়। প্রথমে টুল পৃষ্ঠায় সংশ্লিষ্ট টুল সক্ষম করুন।", + "marketplace_status_enable_hint": "প্রথমে টুল পৃষ্ঠায় সম্পর্কিত টুল সক্ষম করুন।", + "marketplace_search_error": "রেজিস্ট্রি অনুসন্ধান করতে ব্যর্থ।", + "marketplace_loading_results": "দক্ষতা অনুসন্ধান করা হচ্ছে...", + "marketplace_loading_more": "আরও দক্ষতা লোড করা হচ্ছে...", + "marketplace_results_title": "“{{query}}”-এর জন্য {{count}}টি ফলাফল", + "marketplace_results_hint": "রেজিস্ট্রি ফলাফল বর্তমান ওয়ার্কস্পেসে ইনস্টল হয়।", + "marketplace_install_action": "ইনস্টল", + "marketplace_installed": "ইনস্টল করা হয়েছে", + "marketplace_view_installed": "লোকাল দেখুন", + "marketplace_installed_hint": "“{{name}}” হিসেবে এই ওয়ার্কস্পেসে ইতিমধ্যে উপলব্ধ।", + "marketplace_empty_results": "“{{query}}”-এর সাথে কোনো ইনস্টলযোগ্য দক্ষতা মেলেনি।", + "marketplace_idle": "কনফিগার করা রেজিস্ট্রি থেকে ইনস্টলযোগ্য দক্ষতা আবিষ্কার করতে একটি ক্ষমতার জন্য অনুসন্ধান করুন।", + "marketplace_unavailable": "রেজিস্ট্রি অনুসন্ধান বর্তমানে অনুপলব্ধ। দক্ষতা টুল কনফিগারেশন পরীক্ষা করুন।", + "sort": { + "name_asc": "নাম (A-Z)", + "name_desc": "নাম (Z-A)", + "source": "প্রকার" + }, + "origin": { + "all": "সব প্রকার", + "builtin": "বিল্টইন", + "third_party": "তৃতীয় পক্ষ", + "manual": "ম্যানুয়াল" + }, + "summary": { + "total": "মোট দক্ষতা" + }, + "detail_tabs": { + "preview": "প্রিভিউ", + "raw": "র", + "meta": "মেটাডেটা" + }, + "metadata": { + "name": "নাম", + "description": "বিবরণ", + "registry": "রেজিস্ট্রি", + "url": "লিঙ্ক ঠিকানা", + "version": "ইনস্টল করা সংস্করণ", + "lines": "লাইন সংখ্যা", + "characters": "অক্ষর সংখ্যা" + }, + "marketplace_installDisabled": { + "installing": "ইনস্টল করা হচ্ছে...", + "installed": "ইতিমধ্যে ইনস্টল করা হয়েছে", + "cannotInstall": "ইনস্টল করা যাবে না: সম্পর্কিত টুল সক্ষম নয়" + } + }, + "tools": { + "search_placeholder": "টুল অনুসন্ধান করুন...", + "no_results": "আপনার মানদণ্ডের সাথে কোনো টুল মেলেনি।", + "filter": { + "all": "সব স্ট্যাটাস", + "enabled": "সক্ষম", + "disabled": "নিষ্ক্রিয়", + "blocked": "ব্লক করা" + }, + "empty": "কোনো টুল উপলব্ধ নেই।", + "enable_success": "টুল সক্ষম করা হয়েছে।", + "disable_success": "টুল নিষ্ক্রিয় করা হয়েছে।", + "toggle_error": "টুলের অবস্থা আপডেট করতে ব্যর্থ।", + "library_title": "টুল লাইব্রেরি", + "library_description": "আপনার AI এজেন্টদের জন্য উপলব্ধ টুলসেট ব্রাউজ এবং পরিচালনা করুন।", + "web_search": { + "title": "ওয়েব অনুসন্ধান", + "description": "এজেন্টদের সর্বশেষ বাস্তব-বিশ্বের তথ্য খুঁজে পেতে ওয়েব অনুসন্ধান ক্ষমতা প্রদান করুন। স্বয়ংক্রিয়ভাবে সর্বোত্তম সক্রিয় প্রোভাইডারে রুট করে।", + "unsaved_prompt": "এই পরিবর্তন এখনও সংরক্ষিত হয়নি। ওয়েব অনুসন্ধান কনফিগারেশনে লিখতে সংরক্ষণ করুন।", + "global_settings": "সাধারণ", + "providers_config": "ইন্টিগ্রেশন", + "load_error": "ওয়েব অনুসন্ধান কনফিগারেশন লোড করতে ব্যর্থ।", + "save": "পরিবর্তন সংরক্ষণ করুন", + "open_settings": "সেটিংস খুলুন", + "save_success": "সেটিংস সফলভাবে সংরক্ষিত হয়েছে।", + "save_error": "সেটিংস সংরক্ষণ করতে ব্যর্থ।", + "provider": "প্রাথমিক প্রোভাইডার", + "provider_description": "ওয়েব অনুসন্ধান টুল একটি অনুরোধ পরিচালনা করার সময় ব্যবহার করার জন্য ডিফল্ট প্রোভাইডার নির্বাচন করুন।", + "proxy": "HTTPS প্রক্সি", + "proxy_description": "অন্তর্নিহিত ওয়েব অনুরোধের জন্য ঐচ্ছিক বৈশ্বিক HTTP/S প্রক্সি।", + "prefer_native": "নেটিভ অনুসন্ধান পছন্দ করুন", + "prefer_native_hint": "সক্ষম থাকলে, মডেলটি কনফিগার করা প্রোভাইডার তালিকার পরিবর্তে তার বিল্ট-ইন অনুসন্ধান ক্ষমতা ব্যবহার করতে পারে।", + "provider_hint": "এই প্রোভাইডারকে সক্ষম করুন এবং কোনো প্রয়োজনীয় সংযোগ সেটিংস পূরণ করুন।", + "max_results": "সর্বাধিক ফলাফল", + "base_url": "বেস URL", + "base_url_placeholder": "ঐচ্ছিক এন্ডপয়েন্ট ওভাররাইড", + "api_key": "API কী / টোকেন", + "api_key_placeholder": "API কী লিখুন, আসল কী রাখতে এটি খালি রাখুন", + "none": "অনুপলব্ধ" + }, + "status": { + "enabled": "সক্ষম", + "disabled": "নিষ্ক্রিয়", + "blocked": "ব্লক করা" + }, + "categories": { + "automation": "অটোমেশন", + "filesystem": "ফাইলসিস্টেম", + "web": "ওয়েব", + "communication": "যোগাযোগ", + "skills": "দক্ষতা", + "agents": "এজেন্ট", + "hardware": "হার্ডওয়্যার", + "discovery": "আবিষ্কার" + }, + "reasons": { + "requires_linux": "এই টুল শুধুমাত্র Linux হোস্টে কাজ করে যেখানে প্রয়োজনীয় ডিভাইস ফাইল উন্মুক্ত আছে।", + "requires_serial_platform": "এই টুল বর্তমানে অ্যাক্সেসযোগ্য সিরিয়াল পোর্ট সহ Linux, macOS এবং Windows হোস্ট সমর্থন করে।", + "requires_skills": "এই দক্ষতা-রেজিস্ট্রি টুল ব্যবহার করার আগে `tools.skills` সক্ষম করুন।", + "requires_subagent": "স্প্যান টুল কাজ অর্পণ করার আগে `tools.subagent` সক্ষম করুন।", + "requires_mcp_discovery": "MCP আবিষ্কার টুল উপলব্ধ হওয়ার আগে `tools.mcp.discovery` সক্ষম করুন।", + "requires_web_search_provider": "কমপক্ষে একটি প্রস্তুত বাহ্যিক ওয়েব-অনুসন্ধান প্রোভাইডার কনফিগার করুন।" + } + } + }, + "config": { + "load_error": "কনফিগারেশন লোড করতে ব্যর্থ। অনুগ্রহ করে রিফ্রেশ করুন এবং আবার চেষ্টা করুন।", + "workspace": "ওয়ার্কস্পেস ডিরেক্টরি", + "workspace_hint": "এজেন্ট ফাইল অপারেশনের জন্য বেস ডিরেক্টরি।", + "restrict_workspace": "ওয়ার্কস্পেসে সীমাবদ্ধ করুন", + "restrict_workspace_hint": "শুধুমাত্র ওয়ার্কস্পেসের ভিতরে ফাইল অপারেশন অনুমতি দিন।", + "split_on_marker": "চ্যাটি মোড", + "split_on_marker_hint": "বাস্তব মানুষের চ্যাটিংয়ের মতো দীর্ঘ বার্তাগুলিকে ছোট বার্তায় বিভক্ত করুন।", + "tool_feedback_enabled": "টুল ফিডব্যাক", + "tool_feedback_enabled_hint": "প্রতিটি টুল চালানোর আগে বর্তমান চ্যাটে একটি সংক্ষিপ্ত নির্বাহ নোট পাঠান।", + "tool_feedback_separate_messages": "পৃথক ফিডব্যাক বার্তা", + "tool_feedback_separate_messages_hint": "একটি একক প্লেসহোল্ডার/প্রগ্রেস বার্তা পুনরায় ব্যবহার করার পরিবর্তে প্রতিটি টুল ফিডব্যাক আপডেটকে তার নিজস্ব চ্যাট বার্তা হিসেবে রাখুন।", + "tool_feedback_max_args_length": "টুল আর্গস প্রিভিউ দৈর্ঘ্য", + "tool_feedback_max_args_length_hint": "প্রতিটি টুল আর্গুমেন্ট প্রিভিউতে দেখানো অক্ষরের সর্বাধিক সংখ্যা। ডিফল্ট ব্যবহার করতে 0 সেট করুন।", + "exec_enabled": "কমান্ড অনুমতি দিন", + "exec_enabled_hint": "অ্যাপের জন্য কমান্ড নির্বাহ সক্ষম বা নিষ্ক্রিয় করুন। নিষ্ক্রিয় থাকলে, কোনো কমান্ড অনুরোধ চলবে না।", + "allow_remote": "রিমোট কমান্ড অনুমতি দিন", + "allow_remote_hint": "সক্ষম থাকলে, রিমোট সেশন বা নন-লোকাল প্রসঙ্গও কমান্ড চালাতে পারে। নিষ্ক্রিয় থাকলে, কমান্ড নির্বাহ স্থানীয় নিরাপদ প্রসঙ্গে সীমাবদ্ধ থাকে।", + "enable_deny_patterns": "ব্ল্যাকলিস্ট সক্ষম করুন", + "enable_deny_patterns_hint": "সক্ষম থাকলে, অ্যাপ্লিকেশন তার বিল্ট-ইন বিপজ্জনক প্যাটার্ন এবং নিচের কাস্টম কমান্ড ব্ল্যাকলিস্টের সাথে মিলে যাওয়া কমান্ডগুলি ব্লক করে।", + "exec_timeout_seconds": "কমান্ড টাইমআউট (সেকেন্ড)", + "exec_timeout_seconds_hint": "কমান্ড অনুরোধের জন্য সর্বাধিক রানটাইম। ডিফল্ট টাইমআউট ব্যবহার করতে 0 সেট করুন।", + "custom_deny_patterns": "কমান্ড ব্ল্যাকলিস্ট", + "custom_deny_patterns_hint": "অতিরিক্ত কমান্ড-ব্লকিং নিয়ম যোগ করুন, প্রতি লাইনে একটি রেগুলার এক্সপ্রেশন। এখানের কোনো নিয়মের সাথে মেলে এমন একটি কমান্ড ব্লক করা হবে।", + "custom_allow_patterns": "কমান্ড হোয়াইটলিস্ট", + "custom_allow_patterns_hint": "অতিরিক্ত কমান্ড-অনুমতি নিয়ম যোগ করুন, প্রতি লাইনে একটি রেগুলার এক্সপ্রেশন। এখানের কোনো নিয়মের সাথে মেলে এমন একটি কমান্ড ব্ল্যাকলিস্ট মিল এড়িয়ে যায়, তবে অন্যান্য নিরাপত্তা সীমা এখনও প্রযোজ্য।", + "custom_patterns_placeholder": "^rm\\s+-rf\\b\n^git\\s+push\\b", + "pattern_detector_title": "প্যাটার্ন সনাক্তকরণ টুল", + "pattern_detector_hint": "যেকোনো ব্ল্যাকলিস্ট বা হোয়াইটলিস্ট প্যাটার্নের সাথে মেলে কিনা তা পরীক্ষা করতে একটি কমান্ড লিখুন।", + "pattern_detector_input_placeholder": "পরীক্ষার জন্য একটি কমান্ড লিখুন, যেমন rm -rf /tmp", + "pattern_detector_test_button": "পরীক্ষা", + "pattern_detector_result_allowed": "অনুমোদিত (হোয়াইটলিস্টের সাথে মেলে)", + "pattern_detector_result_blocked": "ব্লক করা (ব্ল্যাকলিস্টের সাথে মেলে)", + "pattern_detector_result_no_match": "কোনো মিল নেই (ডিফল্ট নিয়ম ব্যবহার করবে)", + "allow_shell_execution": "সময়সূচী কমান্ড অনুমতি দিন", + "allow_shell_execution_hint": "ডিফল্টরূপে সময়সূচী কাজগুলিকে কমান্ড চালানোর অনুমতি দিন। নিষ্ক্রিয় থাকলে, ব্যবহারকারীদের একটি কমান্ড কাজের সময়সূচী করতে command_confirm=true পাস করতে হবে।", + "cron_exec_timeout": "সময়সূচী কমান্ড টাইমআউট (মিনিট)", + "cron_exec_timeout_hint": "সময়সূচী কমান্ডের জন্য সর্বাধিক রানটাইম। টাইমআউট নিষ্ক্রিয় করতে 0 সেট করুন।", + "max_tokens": "ম্যাক্স টোকেন", + "max_tokens_hint": "প্রতি মডেল প্রতিক্রিয়ার জন্য উপরের টোকেন সীমা।", + "context_window": "প্রসঙ্গ উইন্ডো", + "context_window_hint": "টোকেনে মডেল ইনপুট প্রসঙ্গ ধারণক্ষমতা। ডিফল্ট ব্যবহার করতে খালি রাখুন (4x ম্যাক্স টোকেন)।", + "max_tool_iterations": "ম্যাক্স টুল ইটারেশন", + "max_tool_iterations_hint": "একটি একক কাজের মধ্যে সর্বাধিক টুল-কল লুপ।", + "summarize_threshold": "সংক্ষিপ্তসারের বার্তা থ্রেশহোল্ড", + "summarize_threshold_hint": "এই সংখ্যক বার্তার পরে সংক্ষিপ্তসার শুরু করুন।", + "summarize_token_percent": "সংক্ষিপ্তসারের টোকেন শতাংশ", + "summarize_token_percent_hint": "কথোপকথন সংক্ষিপ্তসার ট্রিগার হলে ব্যবহৃত।", + "turn_profile": "অনুরোধ প্রসঙ্গ নীতি", + "turn_profile_hint": "প্রতিটি অনুরোধে কী প্রসঙ্গ বহন করে তা নিয়ন্ত্রণ করে। স্বাভাবিক চ্যাট আচরণ রাখতে নিষ্ক্রিয় রাখুন।", + "turn_profile_enabled": "নীতি সক্ষম করুন", + "turn_profile_enabled_hint": "সক্ষম থাকলে, এই নীতি প্রতিটি নতুন টার্নে প্রযোজ্য। নিষ্ক্রিয় থাকলে, PicoClaw মূল প্রসঙ্গ আচরণ ব্যবহার করে।", + "turn_profile_mode_default": "ডিফল্ট", + "turn_profile_mode_off": "বন্ধ", + "turn_profile_mode_custom": "অনুমোদিত তালিকা", + "turn_profile_history": "ইতিহাস প্রসঙ্গ", + "turn_profile_history_hint": "ডিফল্ট এই সেশনের পূর্ববর্তী বার্তা অন্তর্ভুক্ত করে। বন্ধ করলে টার্নটি একটি নতুন চ্যাটের মতো আচরণ করে এবং তার ফলাফল ইতিহাসে সংরক্ষণ করা এড়িয়ে যায়।", + "turn_profile_system_prompt": "সিস্টেম প্রসঙ্গ", + "turn_profile_system_prompt_hint": "ডিফল্ট PicoClaw পরিচয়, ওয়ার্কস্পেস, মেমরি এবং রানটাইম নির্দেশাবলী অন্তর্ভুক্ত করে। বন্ধ করলে অনুরোধ দ্বারা স্পষ্টভাবে সরবরাহিত সিস্টেম প্রম্পটগুলিই রাখা হয়।", + "turn_profile_skills": "দক্ষতা প্রম্পট", + "turn_profile_skills_hint": "ডিফল্ট উপলব্ধ দক্ষতা এবং সক্রিয় দক্ষতা নির্দেশাবলী অন্তর্ভুক্ত করে। বন্ধ করলে সেগুলি লুকায়। অনুমোদিত তালিকা প্রতি লাইনে এক করে প্রবেশ করানো দক্ষতার নামগুলিই রাখে।", + "turn_profile_skills_allow_placeholder": "skill-name\nanother-skill", + "turn_profile_tools": "কলযোগ্য টুল", + "turn_profile_tools_hint": "ডিফল্ট স্বাভাবিক টুল উন্মুক্ত করে। বন্ধ টুল কলগুলি প্রতিরোধ করে। অনুমোদিত তালিকা প্রতি লাইনে এক করে প্রবেশ করানো টুলের নামগুলিই রাখে, যেমন web_search।", + "turn_profile_tools_allow_placeholder": "web_search\nweb_fetch", + "session_scope": "সেশন স্কোপ", + "session_scope_hint": "পিয়ার/চ্যানেল জুড়ে চ্যাট প্রসঙ্গ কীভাবে বিচ্ছিন্ন করা হয়।", + "session_scope_per_channel_peer": "প্রতি চ্যানেল + পিয়ার", + "session_scope_per_channel_peer_desc": "প্রতিটি চ্যানেলে প্রতিটি ব্যবহারকারীর জন্য আলাদা প্রসঙ্গ।", + "session_scope_per_channel": "প্রতি চ্যানেল", + "session_scope_per_channel_desc": "প্রতি চ্যানেলে একটি শেয়ার করা প্রসঙ্গ।", + "session_scope_per_peer": "প্রতি পিয়ার", + "session_scope_per_peer_desc": "চ্যানেল জুড়ে প্রতি ব্যবহারকারীর জন্য একটি প্রসঙ্গ।", + "session_scope_global": "গ্লোবাল", + "session_scope_global_desc": "সব বার্তা একটি গ্লোবাল প্রসঙ্গ শেয়ার করে।", + "heartbeat_enabled": "হার্টবিট", + "heartbeat_enabled_hint": "পর্যায়ক্রমিক হার্টবিট বার্তা পাঠান।", + "heartbeat_interval": "হার্টবিট ব্যবধান (মিনিট)", + "heartbeat_interval_hint": "হার্টবিট সংকেতের মধ্যে মিনিটে ব্যবধান।", + "devices_enabled": "ডিভাইস সক্ষম করুন", + "devices_enabled_hint": "হার্ডওয়্যার-ডিভাইস ইন্টিগ্রেশন সক্ষম করুন।", + "monitor_usb": "USB মনিটর করুন", + "monitor_usb_hint": "ডিভাইস সক্ষম থাকলে USB প্লাগ/আনপ্লাগ ইভেন্ট দেখুন।", + "autostart_label": "লগইনে চালু করুন", + "autostart_hint": "লগ ইন করার সময় স্বয়ংক্রিয়ভাবে PicoClaw Web চালু করুন।", + "autostart_unsupported": "এই প্ল্যাটফর্মে লগইনে চালু করা সমর্থিত নয়।", + "autostart_load_error": "লগইনে চালু করার স্ট্যাটাস লোড করতে ব্যর্থ।", + "server_port": "সার্ভিস পোর্ট", + "server_port_hint": "PicoClaw Web দ্বারা ব্যবহৃত HTTP পোর্ট।", + "launcher_section_hint": "এই বিভাগের পরিবর্তন লঞ্চার পুনরায় চালু হওয়ার পরে কার্যকর হয়।", + "gateway_restart_hint": "এই বিভাগের পরিবর্তন গেটওয়ে পুনরায় চালু হওয়ার পরে কার্যকর হয়।", + "dashboard_password": "লগইন পাসওয়ার্ড", + "dashboard_password_hint": "একটি নতুন লগইন পাসওয়ার্ড সেট করুন।", + "dashboard_password_placeholder": "কমপক্ষে ৮ অক্ষর", + "dashboard_password_confirm": "নতুন পাসওয়ার্ড নিশ্চিত করুন", + "dashboard_password_confirm_hint": "নতুন লগইন পাসওয়ার্ড আবার লিখুন।", + "dashboard_password_confirm_placeholder": "পাসওয়ার্ড আবার লিখুন", + "dashboard_password_required": "নতুন লগইন পাসওয়ার্ড লিখুন এবং নিশ্চিত করুন।", + "dashboard_password_mismatch": "লগইন পাসওয়ার্ড মিলছে না।", + "dashboard_password_min_length": "লগইন পাসওয়ার্ড কমপক্ষে ৮ অক্ষরের হতে হবে।", + "lan_access": "LAN অ্যাক্সেস সক্ষম করুন", + "lan_access_hint": "আপনার স্থানীয় নেটওয়ার্কের অন্যান্য ডিভাইস থেকে অ্যাক্সেসের অনুমতি দিন।", + "allowed_cidrs": "অনুমোদিত নেটওয়ার্ক CIDR", + "allowed_cidrs_hint": "শুধুমাত্র এই CIDR পরিসরের ক্লায়েন্টরা সার্ভিস অ্যাক্সেস করতে পারে। প্রতি লাইনে একটি বা কমা দিয়ে আলাদা। সবাইকে অনুমতি দিতে খালি রাখুন।", + "allowed_cidrs_placeholder": "192.168.1.0/24\n10.0.0.0/8", + "evolution_section_hint": "এজেন্টকে সম্পন্ন টার্ন থেকে শিখতে দিন এবং দক্ষতার উন্নতি প্রস্তুত করুন।", + "evolution_enabled": "ইভোলিউশন সক্ষম করুন", + "evolution_enabled_hint": "সম্পন্ন টার্নের জন্য শেখার ডেটা রেকর্ড করুন। ড্রাফ্ট এবং অ্যাপ্লাই মোড দক্ষতা আপডেটও তৈরি করতে পারে।", + "evolution_mode": "ইভোলিউশন মোড", + "evolution_mode_hint": "Observe শুধু ডেটা রেকর্ড করে, Draft প্রার্থী দক্ষতা প্রস্তুত করে, Apply ওয়ার্কস্পেস দক্ষতায় গৃহীত ড্রাফ্ট লিখতে পারে।", + "evolution_mode_observe": "পর্যবেক্ষণ", + "evolution_mode_draft": "ড্রাফ্ট", + "evolution_mode_apply": "প্রয়োগ", + "evolution_state_dir": "স্টেট ডিরেক্টরি", + "evolution_state_dir_hint": "ইভোলিউশন স্টেটের জন্য ঐচ্ছিক ডিরেক্টরি। ওয়ার্কস্পেস ডিফল্ট ব্যবহার করতে খালি রাখুন।", + "evolution_min_task_count": "ন্যূনতম কাজ গণনা", + "evolution_min_task_count_hint": "একটি প্যাটার্ন একটি ড্রাফ্ট তৈরি করার আগে প্রয়োজনীয় ন্যূনতম সম্পর্কিত কাজ।", + "evolution_min_success_ratio": "ন্যূনতম সাফল্যের অনুপাত", + "evolution_min_success_ratio_hint": "ক্লাস্টার্ড কাজের জন্য প্রয়োজনীয় সাফল্যের অনুপাত। 0 এর চেয়ে বড় এবং 1 পর্যন্ত একটি মান ব্যবহার করুন।", + "evolution_cold_path_trigger": "কোল্ড পাথ ট্রিগার", + "evolution_cold_path_trigger_hint": "যোগ্য শেখার রেকর্ডের জন্য ড্রাফ্ট জেনারেশন কখন চলবে তা চয়ন করুন।", + "evolution_cold_path_after_turn": "প্রতিটি টার্নের পরে", + "evolution_cold_path_scheduled": "সময়সূচী", + "evolution_cold_path_manual": "বন্ধ", + "evolution_cold_path_times": "সময়সূচী সময়", + "evolution_cold_path_times_hint": "সময়সূচী কোল্ড-পাথ প্রক্রিয়াকরণের জন্য চালানোর সময়। প্রতি লাইনে একটি HH:MM মান লিখুন।", + "mcp_section_hint": "ম্যানুয়ালি config.json সম্পাদনা না করে MCP সার্ভার কনফিগার করুন।", + "mcp_enabled": "MCP সক্ষম করুন", + "mcp_enabled_hint": "MCP সার্ভার ইন্টিগ্রেশন চালু বা বন্ধ করুন।", + "mcp_discovery_enabled": "MCP আবিষ্কার সক্ষম করুন", + "mcp_discovery_enabled_hint": "MCP আবিষ্কার টুলকে নিবন্ধিত MCP সার্ভার অনুসন্ধান করার অনুমতি দিন।", + "mcp_discovery_ttl": "আবিষ্কৃত টুল আনলক TTL", + "mcp_discovery_ttl_hint": "অনুসন্ধানের পরে আবিষ্কৃত টুলগুলি কত টুল-নির্বাহ TTL টিক উপলব্ধ থাকবে।", + "mcp_discovery_max_results": "আবিষ্কার সর্বাধিক ফলাফল", + "mcp_discovery_max_results_hint": "প্রতি কোয়েরিতে ফিরিয়ে দেওয়া সর্বাধিক MCP আবিষ্কার মিল।", + "mcp_discovery_use_bm25": "BM25 র‍্যাঙ্কিং ব্যবহার করুন", + "mcp_discovery_use_bm25_hint": "MCP আবিষ্কার ফলাফলের জন্য BM25 লেক্সিকাল স্কোরিং ব্যবহার করুন।", + "mcp_discovery_use_regex": "রেগেক্স অনুসন্ধান সক্ষম করুন", + "mcp_discovery_use_regex_hint": "MCP আবিষ্কারে রেগেক্স-ভিত্তিক মিলের অনুমতি দিন।", + "mcp_servers": "MCP সার্ভার", + "mcp_servers_hint": "MCP সার্ভার যোগ, সম্পাদনা বা সরান।", + "mcp_server_new": "নতুন MCP সার্ভার", + "mcp_server_add": "সার্ভার যোগ করুন", + "mcp_server_remove": "সরান", + "mcp_server_enabled": "সক্ষম", + "mcp_server_discovery_mode": "আবিষ্কার মোড", + "mcp_server_discovery_mode_inherit": "গ্লোবাল আবিষ্কার মোড অনুসরণ করুন", + "mcp_server_discovery_mode_deferred": "বিলম্বিত আবিষ্কার", + "mcp_server_discovery_mode_eager": "ইগার নিবন্ধন", + "mcp_server_name_placeholder": "সার্ভারের নাম (যেমন github)", + "mcp_server_url_placeholder": "সার্ভার URL (যেমন https://example.com/mcp)", + "mcp_server_command_placeholder": "কমান্ড (যেমন npx)", + "mcp_server_env_file_placeholder": "পরিবেশ ফাইল পাথ (ঐচ্ছিক)", + "mcp_server_args_placeholder": "আর্গস, প্রতি লাইনে একটি", + "mcp_server_env_placeholder": "পরিবেশ JSON অবজেক্ট", + "mcp_server_headers_placeholder": "হেডার JSON অবজেক্ট", + "sections": { + "agent": "এজেন্ট", + "runtime": "রানটাইম", + "evolution": "ইভোলিউশন", + "mcp": "MCP", + "exec": "কমান্ড চালান", + "cron": "ক্রন কাজ", + "launcher": "লঞ্চার", + "devices": "ডিভাইস" + }, + "open_raw": "র কনফিগ", + "back_to_visual": "ভিজ্যুয়াল কনফিগ", + "raw_json_title": "র JSON কনফিগারেশন", + "json_placeholder": "বৈধ JSON কনফিগারেশন লিখুন...", + "save_success": "কনফিগারেশন সফলভাবে সংরক্ষিত হয়েছে।", + "save_error": "কনফিগারেশন সংরক্ষণ করতে ব্যর্থ।", + "reset_confirm_title": "পরিবর্তন রিসেট করুন", + "reset_confirm_desc": "আপনি কি আপনার অসংরক্ষিত পরিবর্তনগুলি সর্বশেষ সংরক্ষিত অবস্থায় রিসেট করতে চান?", + "reset_success": "পরিবর্তনগুলি সর্বশেষ সংরক্ষিত অবস্থায় রিসেট করা হয়েছে।", + "invalid_json": "অবৈধ JSON ফর্ম্যাট।", + "format_success": "JSON সফলভাবে ফর্ম্যাট করা হয়েছে।", + "format_error": "অবৈধ JSON ফর্ম্যাট।", + "format": "ফর্ম্যাট", + "unsaved_changes": "আপনার অসংরক্ষিত পরিবর্তন রয়েছে।", + "factory_reset": "ফ্যাক্টরি রিসেট", + "factory_reset_confirm_title": "ফ্যাক্টরি ডিফল্টে রিসেট করুন", + "factory_reset_confirm_desc": "এটি সমস্ত কনফিগারেশন ফ্যাক্টরি ডিফল্টে রিসেট করবে। API কী এবং নিরাপত্তা ক্রেডেনশিয়াল সংরক্ষিত থাকবে। বর্তমান কনফিগারেশনের একটি ব্যাকআপ তৈরি করা হবে।", + "factory_reset_confirm": "ডিফল্টে রিসেট করুন", + "factory_reset_success": "কনফিগারেশন ফ্যাক্টরি ডিফল্টে রিসেট করা হয়েছে।", + "factory_reset_error": "কনফিগারেশন রিসেট করতে ব্যর্থ।" + }, + "logs": { + "log_level_error": "লগ লেভেল আপডেট করতে ব্যর্থ।", + "clear": "লগ পরিষ্কার করুন", + "empty": "লগের জন্য অপেক্ষা করা হচ্ছে..." + } + }, + "tour": { + "skip": "ট্যুর এড়িয়ে যান", + "prev": "পূর্ববর্তী", + "next": "পরবর্তী", + "finish": "শেষ করুন", + "welcome": { + "title": "PicoClaw-এ স্বাগতম", + "description": "PicoClaw একটি শক্তিশালী AI সহকারী প্ল্যাটফর্ম। মৌলিক সেটআপ সম্পন্ন করতে আপনাকে সাহায্য করতে কয়েক সেকেন্ড সময় নিই।" + }, + "models": { + "title": "মডেল কনফিগার করুন", + "description": "AI প্রোভাইডারদের জন্য API কী কনফিগার করতে বাঁ দিকের \"মডেল\" মেনুতে ক্লিক করুন। শুধুমাত্র কনফিগার করা মডেলগুলি চ্যাটের জন্য ব্যবহার করা যেতে পারে।" + }, + "gateway": { + "title": "গেটওয়ে চালু করুন", + "description": "মডেল কনফিগার করার পরে, AI-এর সাথে চ্যাট শুরু করতে উপরের \"গেটওয়ে চালু করুন\" বোতামে ক্লিক করুন।" + }, + "docs": { + "title": "ডকুমেন্টেশন দেখুন", + "description": "আরও সাহায্যের প্রয়োজন? বিস্তারিত গাইড এবং কনফিগারেশন ডকুমেন্ট দেখতে উপরের ডান কোণে ডকুমেন্টেশন বোতামে ক্লিক করুন।" + } + } +}