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": "আরও সাহায্যের প্রয়োজন? বিস্তারিত গাইড এবং কনফিগারেশন ডকুমেন্ট দেখতে উপরের ডান কোণে ডকুমেন্টেশন বোতামে ক্লিক করুন।"
+ }
+ }
+}