libre-webui 0.19.4 → 0.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/services/ollamaService.d.ts +8 -0
- package/backend/dist/services/ollamaService.d.ts.map +1 -1
- package/backend/dist/services/ollamaService.js +17 -12
- package/backend/dist/services/ollamaService.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/assets/{index-DrcHGnwk.js → index-yeE8bw17.js} +16 -58
- package/frontend/dist/index.html +9 -9
- package/frontend/dist/js/{ArtifactContainer-CEBbQqtg.js → ArtifactContainer-BRqFYglf.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-BDTtUPjk.js → ArtifactDemoPage-CQj2XRxx.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-DOQWmEAm.js → ArtifactSandboxFrame-BsrybHW3.js} +2 -2
- package/frontend/dist/js/{ArtifactSlideOutPanel-BMhWWM3P.js → ArtifactSlideOutPanel-BcDkHDZY.js} +1 -1
- package/frontend/dist/js/{ChatPage-B64xgIPZ.js → ChatPage-CtN25kO5.js} +1 -1
- package/frontend/dist/js/{FirstTimeSetup-1IqkWCsV.js → FirstTimeSetup-CX3zIxZR.js} +1 -1
- package/frontend/dist/js/{GalleryPage-CKgQAYmH.js → GalleryPage-Dv5IJVVY.js} +1 -1
- package/frontend/dist/js/{HomePage-aNO615Go.js → HomePage-C7JjQJSz.js} +1 -1
- package/frontend/dist/js/{LibreClawPage-DZqgIOgT.js → LibreClawPage-iEHU_8KO.js} +1 -1
- package/frontend/dist/js/{ModelSelector-DhmVTh2d.js → ModelSelector-DhRVhkDT.js} +1 -1
- package/frontend/dist/js/{ModelsPage-tzXaut3l.js → ModelsPage-BU-VYLs1.js} +1 -1
- package/frontend/dist/js/{NotesPage-Ciwrazz9.js → NotesPage-DKXMxPjC.js} +1 -1
- package/frontend/dist/js/{PersonasPage-C9Pkl4yH.js → PersonasPage-DnjO6raM.js} +1 -1
- package/frontend/dist/js/{PluginUsagePage-DPfyos1y.js → PluginUsagePage-DNihHooM.js} +1 -1
- package/frontend/dist/js/{RichMessageContent-CUcmvdXW.js → RichMessageContent-DDJDx7_n.js} +1 -1
- package/frontend/dist/js/SettingsModal-Djij7CKl.js +1 -0
- package/frontend/dist/js/{SystemPage-CkUsJ-UR.js → SystemPage-CDBXVff3.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-DClRsCeA.js → UserManagementPage-CZJLqvwO.js} +1 -1
- package/frontend/dist/js/{WorkPage-cJEe9LZ_.js → WorkPage-EpH5lfJx.js} +3 -3
- package/frontend/dist/js/{api-iDBo7I0x.js → api-DVeiqNG9.js} +2 -2
- package/frontend/dist/js/{appStore-BAFz_6aP.js → appStore-hNTtRnlO.js} +2 -2
- package/frontend/dist/js/{ar-D3PgKaYD.js → ar-ClMsdoTH.js} +1 -1
- package/frontend/dist/js/{authStore-2665PsVB.js → authStore-Cl_7F0Si.js} +1 -1
- package/frontend/dist/js/{bn-DJiNo5j1.js → bn-LyPol_AY.js} +1 -1
- package/frontend/dist/js/{chatStore-fX9gMb9B.js → chatStore-Bp5u1tTv.js} +2 -2
- package/frontend/dist/js/{config-CmH3hRFc.js → config-cqTxMjWo.js} +1 -1
- package/frontend/dist/js/{cs-BJ7pToPB.js → cs-D98fZaKF.js} +1 -1
- package/frontend/dist/js/{da-Cqw35YeI.js → da-M7ND0GQR.js} +1 -1
- package/frontend/dist/js/{de-DLw7O2DX.js → de-BV0q1kzb.js} +1 -1
- package/frontend/dist/js/{es-CLg6Zl_p.js → es-C7FvsVoN.js} +1 -1
- package/frontend/dist/js/{estree-63s2XfPj.js → estree-BAxGO-Uf.js} +1 -1
- package/frontend/dist/js/{fr-BUmG4BWs.js → fr-5SloN0ok.js} +1 -1
- package/frontend/dist/js/{hi-CGktbsaL.js → hi-C6VeRgeR.js} +1 -1
- package/frontend/dist/js/{html-CRbptZf3.js → html-DL8k6nha.js} +1 -1
- package/frontend/dist/js/{i18n-DFbHZ75-.js → i18n-CLd1FZPx.js} +2 -2
- package/frontend/dist/js/{id-C7FnPtw9.js → id-CkVp7Z1Z.js} +1 -1
- package/frontend/dist/js/{is-_FSS24Pj.js → is-DqxnBX4W.js} +1 -1
- package/frontend/dist/js/{it-DWTgF8my.js → it-CiW4_O5V.js} +1 -1
- package/frontend/dist/js/{ja-jYrlZiIs.js → ja-BZ3Sdund.js} +1 -1
- package/frontend/dist/js/{ko-3PZ87sc7.js → ko-CS7LAhfJ.js} +1 -1
- package/frontend/dist/js/{markdown-C23cybKA.js → markdown-CKunEqMI.js} +1 -1
- package/frontend/dist/js/{messageCodeStyles-BJVb4sK7.js → messageCodeStyles-Cva_Rdk3.js} +1 -1
- package/frontend/dist/js/{ms-BfySq07T.js → ms-URvcYqgz.js} +1 -1
- package/frontend/dist/js/{nl-DupdNsDK.js → nl-CQJpW7wK.js} +1 -1
- package/frontend/dist/js/{pl-DYoPcTNe.js → pl-DDMgPMAz.js} +1 -1
- package/frontend/dist/js/{pt-p_-S_r1k.js → pt-JCqqmGn_.js} +1 -1
- package/frontend/dist/js/{ru-CuJFlVPc.js → ru-C_dwMbiK.js} +1 -1
- package/frontend/dist/js/{standalone-BwzoPJoZ.js → standalone-qHCG6_XI.js} +1 -1
- package/frontend/dist/js/{sv-DyZJcYOQ.js → sv-CW3c9NGx.js} +1 -1
- package/frontend/dist/js/{th-Cd6fTxUn.js → th-9ARgClBr.js} +1 -1
- package/frontend/dist/js/{tr-BB1gefYF.js → tr-DNY5_DAg.js} +1 -1
- package/frontend/dist/js/{typescript-CS-sPC9m.js → typescript-ClQp1SgP.js} +1 -1
- package/frontend/dist/js/{ui-B-C2BCTb.js → ui-ChYGf2Rg.js} +2 -2
- package/frontend/dist/js/{uk-DFURilqa.js → uk-XDh4_7IL.js} +1 -1
- package/frontend/dist/js/{vi-BXclLwGp.js → vi-BaoJBXnt.js} +1 -1
- package/frontend/dist/js/{zh-BS8f68w1.js → zh-B202vYJt.js} +1 -1
- package/package.json +1 -1
- package/frontend/dist/js/SettingsModal-DhrjNMcd.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={common:{loading:`লোড হচ্ছে...`,save:`সংরক্ষণ`,saving:`সংরক্ষণ হচ্ছে...`,cancel:`বাতিল`,delete:`মুছুন`,edit:`সম্পাদনা`,close:`বন্ধ`,back:`পিছনে`,next:`পরবর্তী`,confirm:`নিশ্চিত করুন`,error:`ত্রুটি`,success:`সফল`,warning:`সতর্কতা`,or:`অথবা`,optional:`ঐচ্ছিক`,enabled:`সক্রিয়`,disabled:`নিষ্ক্রিয়`,on:`চালু`,off:`বন্ধ`,yes:`হ্যাঁ`,no:`না`,search:`অনুসন্ধান`,noResults:`কোনো ফলাফল পাওয়া যায়নি`,retry:`পুনরায় চেষ্টা করুন`,refresh:`রিফ্রেশ`,download:`ডাউনলোড`,upload:`আপলোড`,export:`এক্সপোর্ট`,import:`ইম্পোর্ট`,reset:`রিসেট`,apply:`প্রয়োগ করুন`,clear:`মুছুন`,all:`সব`,none:`কিছুই না`,default:`ডিফল্ট`,custom:`কাস্টম`,remove:`সরান`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`স্বাগতম`,subtitle:`আপনার অ্যাকাউন্টে সাইন ইন করুন`,username:`ব্যবহারকারীর নাম`,usernamePlaceholder:`আপনার ব্যবহারকারীর নাম লিখুন`,password:`পাসওয়ার্ড`,passwordPlaceholder:`আপনার পাসওয়ার্ড লিখুন`,signIn:`সাইন ইন`,signingIn:`সাইন ইন হচ্ছে...`,noAccount:`অ্যাকাউন্ট নেই?`,signUpHere:`এখানে সাইন আপ করুন`,loginSuccess:`লগইন সফল!`,loginFailed:`লগইন ব্যর্থ`,checkCredentials:`লগইন ব্যর্থ। আপনার তথ্য পরীক্ষা করুন।`,enterBoth:`অনুগ্রহ করে ব্যবহারকারীর নাম এবং পাসওয়ার্ড উভয়ই লিখুন`,githubSuccess:`GitHub লগইন সফল!`,githubFailed:`GitHub প্রমাণীকরণ ব্যর্থ`,githubVerifyFailed:`GitHub প্রমাণীকরণ যাচাই করতে ব্যর্থ`,approvalPending:`আপনার অ্যাকাউন্ট অ্যাডমিনিস্ট্রেটরের অনুমোদনের অপেক্ষায় আছে।`},signup:{title:`অ্যাকাউন্ট তৈরি করুন`,subtitle:`আপনার নতুন অ্যাকাউন্টের জন্য সাইন আপ করুন`,username:`ব্যবহারকারীর নাম`,usernamePlaceholder:`একটি ব্যবহারকারীর নাম বেছে নিন`,email:`ইমেইল`,emailPlaceholder:`your@email.com`,password:`পাসওয়ার্ড`,passwordPlaceholder:`একটি পাসওয়ার্ড বেছে নিন`,confirmPassword:`পাসওয়ার্ড নিশ্চিত করুন`,confirmPasswordPlaceholder:`আপনার পাসওয়ার্ড নিশ্চিত করুন`,createAccount:`অ্যাকাউন্ট তৈরি করুন`,creatingAccount:`অ্যাকাউন্ট তৈরি হচ্ছে...`,hasAccount:`ইতিমধ্যে অ্যাকাউন্ট আছে?`,signInHere:`এখানে সাইন ইন করুন`,signupSuccess:`অ্যাকাউন্ট সফলভাবে তৈরি হয়েছে!`,signupFailed:`সাইন আপ ব্যর্থ`,tryAgain:`সাইন আপ ব্যর্থ। অনুগ্রহ করে আবার চেষ্টা করুন।`,usernameRequired:`ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন`,passwordMismatch:`পাসওয়ার্ড মিলছে না`,passwordTooShort:`পাসওয়ার্ড কমপক্ষে ৬ অক্ষরের হতে হবে`,approvalPending:`নিবন্ধন গৃহীত হয়েছে। একজন অ্যাডমিনিস্ট্রেটরকে অবশ্যই আপনার অ্যাকাউন্ট অনুমোদন করতে হবে।`,awaitingApproval:`অনুমোদনের অপেক্ষায়`,awaitingApprovalDescription:`আপনার অ্যাকাউন্ট তৈরি করা হয়েছে, তবে সাইন ইন করার আগে একজন অ্যাডমিনিস্ট্রেটরকে অবশ্যই এটি সক্রিয় করতে হবে।`,backToSignIn:`সাইন ইনে ফিরে যান`},logout:{button:`লগ আউট`,success:`সফলভাবে লগ আউট হয়েছে`},oauth:{continueWith:`{{provider}} দিয়ে চালিয়ে যান`,connectingTo:`{{provider}} এ সংযোগ হচ্ছে...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`প্রমাণীকরণ যাচাই হচ্ছে...`,welcome:`স্বাগতম`,noEmail:`কোনো ইমেইল দেওয়া হয়নি`,role:`ভূমিকা`,id:`আইডি`,userId:`ইউজার আইডি`,signInDescription:`চালিয়ে যেতে আপনার GitHub অ্যাকাউন্ট দিয়ে সাইন ইন করুন`,signInWithGitHub:`GitHub দিয়ে সাইন ইন করুন`,jwtActive:`JWT প্রমাণীকরণ সক্রিয়`,jwtDescription:`GitHub OAuth সহ JWT প্রমাণীকরণ`,github:`GitHub`,provider:`প্রদানকারী`,tagline:`আপনার AI স্ট্যাক আপনার কাছে উত্তর দেওয়া উচিত।`,selfHosted:`সেলফ-হোস্টেড · Apache 2.0`,highlights:{local:{title:`লোকাল ফার্স্ট`,body:`আপনার কথোপকথন এবং ফাইলগুলি আপনি এটি চালানো মেশিনেই থাকে।`},providers:{title:`যেকোনো প্রোভাইডার`,body:`Ollama-এর মাধ্যমে লোকাল মডেল, পাশাপাশি আপনি যোগ করতে চয়ন করা রিমোট প্রোভাইডার।`},work:{title:`বিচ্ছিন্ন কাজ`,body:`একটি মডেলকে ফাইল, একটি টার্মিনাল এবং একটি প্রিভিউ সহ একটি স্যান্ডবক্সড ওয়ার্কস্পেস দিন।`}}},setup:{welcome:{title:`Libre WebUI তে স্বাগতম`,subtitle:`শুরু করা যাক`,description:`কয়েকটি ধাপে আপনার Libre WebUI সেট আপ করুন`,createAdmin:`অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,features:{secure:{title:`নিরাপদ এবং ব্যক্তিগত`,description:`আপনার কথোপকথন আপনার ডিভাইসে থাকে`},fast:{title:`দ্রুত এবং প্রতিক্রিয়াশীল`,description:`গতি এবং কর্মক্ষমতার জন্য অপ্টিমাইজ করা`},openSource:{title:`ওপেন সোর্স`,description:`বিনামূল্যে এবং ওপেন সোর্স সফটওয়্যার`}}},admin:{title:`অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,subtitle:`অ্যাডমিনিস্ট্রেটর সেটআপ`,description:`আপনার Libre WebUI এর জন্য প্রথম অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,usernamePlaceholder:`অ্যাডমিন ব্যবহারকারীর নাম লিখুন`,passwordPlaceholder:`পাসওয়ার্ড লিখুন (ন্যূনতম ৬ অক্ষর)`,confirmPlaceholder:`আপনার পাসওয়ার্ড নিশ্চিত করুন`,creating:`তৈরি হচ্ছে...`,createAdmin:`অ্যাডমিন তৈরি করুন`,success:`অ্যাডমিন অ্যাকাউন্ট সফলভাবে তৈরি হয়েছে!`,failed:`অ্যাডমিন অ্যাকাউন্ট তৈরি করতে ব্যর্থ`,fillAllFields:`অনুগ্রহ করে সব ফিল্ড পূরণ করুন`,note:`এটি আপনার Libre WebUI এর প্রাথমিক অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট হবে`,approvalUnexpected:`প্রাথমিক অ্যাডমিনিস্ট্রেটর সক্রিয় করা যায়নি। অনুগ্রহ করে আবার চেষ্টা করুন।`},encryptionKey:{title:`আপনার এনক্রিপশন কী সংরক্ষণ করুন`,subtitle:`গুরুত্বপূর্ণ: এই কী সংরক্ষণ করুন`,description:`এই এনক্রিপশন কী আপনার সংবেদনশীল ডেটা রক্ষা করে। এটি নিরাপদে সংরক্ষণ করুন - আপনার ডাটাবেস পুনরুদ্ধার করতে হলে এটি প্রয়োজন হবে।`,warning:`সতর্কতা`,warningText:`যদি আপনি এই কী হারান এবং ডাটাবেস পুনরুদ্ধার করতে হয়, আপনার এনক্রিপ্ট করা ডেটা (API কী, পছন্দসমূহ) পুনরুদ্ধার করা যাবে না।`,label:`আপনার এনক্রিপশন কী`,loading:`লোড হচ্ছে...`,copyToClipboard:`ক্লিপবোর্ডে কপি করুন`,copied:`এনক্রিপশন কী ক্লিপবোর্ডে কপি হয়েছে!`,copyFailed:`ক্লিপবোর্ডে কী কপি করতে ব্যর্থ`,envNote:`এই কী আপনার backend/.env ফাইলে ENCRYPTION_KEY হিসাবে সংরক্ষিত আছে`,acknowledgment:`আমি আমার এনক্রিপশন কী একটি নিরাপদ স্থানে সংরক্ষণ করেছি এবং বুঝতে পারছি যে এটি হারালে ডেটা ক্ষতি হতে পারে।`,confirmRequired:`অনুগ্রহ করে নিশ্চিত করুন যে আপনি এনক্রিপশন কী সংরক্ষণ করেছেন`,continue:`Libre WebUI তে চালিয়ে যান`}},chat:{greeting:{morning:`সুপ্রভাত`,afternoon:`শুভ অপরাহ্ন`,evening:`শুভ সন্ধ্যা`,night:`শুভ রাত্রি`},followUp:`ফলো-আপ`,welcome:{helpToday:`আজ আমি কীভাবে সাহায্য করতে পারি?`,helpTonight:`আজ রাতে আমি কীভাবে সাহায্য করতে পারি?`,variety:{create:{title:`আমরা কী বানাব?`,subtitle:`একটা ভাবনা, খসড়া, কিংবা সহজে না-মেটা সমস্যা দিয়ে শুরু করুন।`},explore:{title:`কোথা থেকে শুরু করব?`,subtitle:`যে প্রশ্নটা বারবার মনে ফিরে আসে, সেটাই নিয়ে আসুন।`},imagine:{title:`আপনি কী কল্পনা করছেন?`,subtitle:`আমরা একসঙ্গে তাকে রূপ দিতে পারি।`},focus:{title:`কোন বিষয়টা এখন মনোযোগ চায়?`,subtitle:`চলুন, পরের ধাপটা পরিষ্কার করি।`},untangle:{title:`কোথায় জট লেগেছে?`,subtitle:`আগে এলোমেলো অবস্থাতেই বলুন।`},momentum:{title:`আপনি তৈরি হলেই শুরু করি।`,subtitle:`কোনো ভাবনা, পরিকল্পনা বা অসমাপ্ত কথার সূত্র আবার ধরুন।`},open:{title:`আপনার মনে কী চলছে?`,subtitle:`ছোট্ট ভাবনা হোক বা বড় প্রকল্প—দুটোই চলবে।`},challenge:{title:`আমরা কী সমাধান করছি?`,subtitle:`এখনও কী ঠিকমতো কাজ করছে না, বলুন।`},draft:{title:`কোথাও থেকে শুরু করা যাক।`,subtitle:`এখনই নিখুঁত হতে হবে না।`},possibility:{title:`এটা কী হয়ে উঠতে পারে?`,subtitle:`কাঁচামালটুকুই আগে দেখান।`},unexpected:{title:`অপ্রত্যাশিত কিছু বানাই।`,subtitle:`একটা সীমা, একটা আবহ, কিংবা আধা-গড়া ভাবনা দিন।`}}},input:{placeholder:`একটি বার্তা পাঠান`,messagePlaceholder:`বার্তা...`,attachImages:`ছবি সংযুক্ত করুন`,attachments:`সংযুক্তি এবং উন্নত বৈশিষ্ট্য`,sendMessage:`বার্তা পাঠান`,stopGeneration:`জেনারেশন বন্ধ করুন`,menu:{uploadImages:`ছবি আপলোড করুন`,attachDocument:`নথি সংযুক্ত করুন`,attachWebpage:`ওয়েবপেজ সংযুক্ত করুন`,structuredOutput:`কাঠামোবদ্ধ আউটপুট`,attach:`সংযুক্ত করুন`,documentAttached:`নথি সংযুক্ত হয়েছে`,webpageAttached:`ওয়েবপেজ সংযুক্ত হয়েছে`,attachFailed:`সংযুক্ত করা যায়নি`,attachKnowledge:`জ্ঞান সংযুক্ত করুন`,noCollections:`এখনও কোনো সংগ্রহ নেই — সেটিংস → নথিতে তৈরি করুন`},voiceInput:`ভয়েস ইনপুট`,voiceStop:`শোনা বন্ধ করুন`},session:{new:`নতুন চ্যাট`,work:`কাজ`,chat:`চ্যাট`,private:`ব্যক্তিগত`,privateMode:`ব্যক্তিগত মোড`,privateDescription:`এই কথোপকথন সংরক্ষণ করা হবে না`,privateTooltip:`একটি ব্যক্তিগত কথোপকথন শুরু করুন যা সংরক্ষণ করা হবে না`,deleteConfirm:`আপনি কি এই চ্যাট মুছতে চান?`,generatingTitle:`শিরোনাম তৈরি হচ্ছে`,noChats:`এখনও কোনো চ্যাট নেই`,createFirst:`উপরে আপনার প্রথম চ্যাট তৈরি করুন`,chats:`চ্যাট`,renameChat:`চ্যাট পুনঃনামকরণ করুন`,deleteChat:`চ্যাট মুছুন`,incognito:`ইনকগনিটো চ্যাট`,archiveChat:`চ্যাট সংরক্ষণাগারে রাখুন`,groups:{today:`আজ`,yesterday:`গতকাল`,previous7Days:`গত ৭ দিন`,previous30Days:`গত ৩০ দিন`,older:`পুরানো`},folder:{new:`নতুন ফোল্ডার`,namePlaceholder:`ফোল্ডারের নাম`,move:`ফোল্ডারে সরান`,remove:`ফোল্ডার থেকে সরান`,delete:`ফোল্ডার মুছুন`,deleteConfirm:`এই ফোল্ডারটি মুছবেন? ভিতরের চ্যাটগুলি থাকবে।`}},persona:{applied:`পার্সোনা প্রয়োগ করা হয়েছে`,label:`পার্সোনা`,removeFailed:`পার্সোনা সরাতে ব্যর্থ হয়েছে`},model:{updated:`মডেল আপডেট হয়েছে`,noModels:`কোনো মডেল উপলব্ধ নেই`,noModelsDescription:`কোনো মডেল উপলব্ধ নেই। নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`কোনো মডেল উপলব্ধ নেই। অনুগ্রহ করে নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।`,selectBeforePrivateChat:`ব্যক্তিগত চ্যাট শুরু করার আগে একটি উপলব্ধ মডেল নির্বাচন করুন`,selectBeforeSending:`পাঠানোর আগে একটি উপলব্ধ মডেল নির্বাচন করুন`},footer:{disclaimer:`LLM ভুল করতে পারে - গুরুত্বপূর্ণ তথ্য যাচাই করুন`,images:`{{count}}টি ছবি`,images_plural:`{{count}}টি ছবি`,structuredOutput:`স্ট্রাকচার্ড আউটপুট`},mediaUpload:{dropImagesHere:`এখানে ছবি ছেড়ে দিন বা`,supportedFormats:`সমর্থিত: JPG, PNG, GIF, WebP (সর্বোচ্চ ১০MB প্রতিটি)`,browse:`ব্রাউজ করুন`},structuredOutput:{title:`রেসপন্স ফরম্যাট`,none:`কোনোটি নয় (প্রাকৃতিক ভাষা)`,noneDescription:`ডিফল্ট প্রাকৃতিক ভাষা প্রতিক্রিয়া`,json:`JSON`,jsonDescription:`স্ট্রাকচার্ড JSON ফরম্যাট`,list:`তালিকা`,listDescription:`আইটেমের অ্যারে`,summary:`সারাংশ`,summaryDescription:`মূল পয়েন্ট সহ ডকুমেন্ট সারাংশ`,analysis:`বিশ্লেষণ`,analysisDescription:`সুবিধা/অসুবিধা সহ স্ট্রাকচার্ড বিশ্লেষণ`,custom:`কাস্টম স্কিমা`,customDescription:`আপনার নিজের JSON স্কিমা সংজ্ঞায়িত করুন`,customSchema:`কাস্টম JSON স্কিমা`,schemaPreview:`স্কিমা প্রিভিউ`,applySchema:`স্কিমা প্রয়োগ করুন`,cancel:`বাতিল`,enabled:`স্ট্রাকচার্ড আউটপুট সক্রিয়`},controls:{title:`চ্যাট নিয়ন্ত্রণ`,systemPrompt:`সিস্টেম প্রম্পট`,systemPromptPlaceholder:`শুধু এই চ্যাটে প্রযোজ্য নির্দেশনা…`,advancedParams:`উন্নত প্যারামিটার`,advancedParamsDescription:`এই চ্যাটের জন্য ওভাররাইড। খালি ঘরে গ্লোবাল ডিফল্ট ব্যবহৃত হয়।`,fromModel:`মডেল থেকে`,fromModelHint:`এই মানটি মডেলের নিজস্ব প্রস্তাবিত সেটিংস থেকে এসেছে।`,contextCapped:`প্রসঙ্গ {{trained}}-এর মধ্যে {{context}}-এ সীমাবদ্ধ, যাতে মডেলটি লোড হতে পারে।`,saved:`নিয়ন্ত্রণ সংরক্ষিত হয়েছে`,saveFailed:`নিয়ন্ত্রণ সংরক্ষণ করা যায়নি`,params:{temperature:`তাপমাত্রা`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`সর্বোচ্চ টোকেন`,repeatPenalty:`পুনরাবৃত্তি জরিমানা`,seed:`সিড`,contextLength:`প্রসঙ্গ দৈর্ঘ্য`}}},sidebar:{navigation:{chat:`চ্যাট`,models:`মডেল`,personas:`পার্সোনা`,imagine:`ইমাজিন`,settings:`সেটিংস`,userManagement:`ব্যবহারকারী ব্যবস্থাপনা`,signOut:`সাইন আউট`,agents:`এজেন্ট`,work:`কাজ`,exploreLabel:`অন্বেষণ`,usageAnalytics:`প্রোভাইডার ব্যবহার`,system:`সিস্টেম`,notes:`নোট`},toggleSize:`সাইডবার সাইজ টগল করুন`,expandSidebar:`সাইডবার প্রসারিত করুন`},user:{menu:{changePicture:`ছবি পরিবর্তন করুন`,settings:`সেটিংস`,userManagement:`ব্যবহারকারী ব্যবস্থাপনা`,logout:`লগ আউট`,usageAnalytics:`প্রোভাইডার ব্যবহার`,system:`সিস্টেম`},avatar:{title:`প্রোফাইল ছবি পরিবর্তন করুন`,updated:`প্রোফাইল ছবি আপডেট হয়েছে`,updateFailed:`প্রোফাইল ছবি আপডেট করতে ব্যর্থ`,saving:`সংরক্ষণ হচ্ছে...`,label:`অবতার`,uploadAvatarImage:`অবতার ছবি আপলোড করুন`,dragAndDrop:`একটি ছবি টেনে আনুন বা ব্রাউজ করতে ক্লিক করুন`,chooseImage:`ছবি বাছুন`,uploading:`আপলোড হচ্ছে...`,enterImageUrl:`অথবা ছবির URL লিখুন`,supportedFormats:`সমর্থিত: JPG, PNG, GIF, WebP (সর্বোচ্চ 2MB)। বর্গাকার ছবি সবচেয়ে ভালো কাজ করে।`,customAvatar:`কাস্টম অবতার ছবি`,clickToChange:`পরিবর্তন বা সরাতে ক্লিক করুন`,removed:`অবতার সরানো হয়েছে`,uploaded:`অবতার সফলভাবে আপলোড হয়েছে`,invalidFile:`অনুগ্রহ করে একটি বৈধ ছবি ফাইল নির্বাচন করুন`,fileTooLarge:`অবতার ছবির আকার 2MB এর কম হতে হবে`,readFailed:`ছবি ফাইল পড়তে ব্যর্থ`,uploadFailed:`অবতার ছবি আপলোড করতে ব্যর্থ`},profile:{noEmail:`কোনো ইমেইল দেওয়া হয়নি`}},settings:JSON.parse(`{"title":"সেটিংস","tabs":{"appearance":"চেহারা","model":"মডেল","systemMessage":"সিস্টেম বার্তা","plugins":"প্লাগইন","generation":"জেনারেশন","documents":"ডকুমেন্ট","tts":"টেক্সট-টু-স্পিচ","imageGen":"ইমেজ জেনারেশন","data":"ডেটা","shortcuts":"শর্টকাট","about":"সম্পর্কে"},"appearance":{"title":"চেহারা","language":{"title":"ভাষা","description":"আপনার পছন্দের ভাষা নির্বাচন করুন"},"theme":{"title":"থিম","light":"লাইট","dark":"ডার্ক","amoled":"বিশুদ্ধ কালো","system":"সিস্টেম"},"accent":{"title":"অ্যাকসেন্ট রং","custom":"কাস্টম রং","useColor":"{{color}} অ্যাকসেন্ট ব্যবহার করুন","behaviorTitle":"ইন্টারফেস প্যালেট","behaviorDescription":"অ্যাকসেন্ট শুধু নিয়ন্ত্রণে থাকবে নাকি পুরো হালকা বা গাঢ় ইন্টারফেসে প্রয়োগ হবে তা বেছে নিন।","defaultStyle":"ডিফল্ট","defaultStyleDescription":"হালকা ও গাঢ় থিমের নিরপেক্ষ পৃষ্ঠগুলো রাখুন।","adaptedStyle":"অ্যাকসেন্টে মানিয়ে নিন","adaptedStyleDescription":"পৃষ্ঠ, সীমানা ও লেখাকে আপনার অ্যাকসেন্ট রঙে রাঙান।"},"chatInterface":{"title":"চ্যাট ইন্টারফেস","showUsername":"ব্যবহারকারীর নাম দেখান","showUsernameDescription":"চ্যাট বার্তায় ব্যবহারকারীর নাম প্রদর্শন করুন","followUpSuggestions":"ফলো-আপ পরামর্শ","followUpSuggestionsDescription":"প্রতিটি উত্তরের পরে দ্রুত জবাবের পরামর্শ দিন","hapticFeedback":"হ্যাপটিক প্রতিক্রিয়া (Android)","hapticFeedbackDescription":"গুরুত্বপূর্ণ মোবাইল কাজের জন্য সূক্ষ্ম কম্পন ব্যবহার করুন"},"background":{"title":"ব্যাকগ্রাউন্ড ইমেজ","enable":"ব্যাকগ্রাউন্ড ইমেজ সক্রিয় করুন","enableDescription":"ব্লার ইফেক্ট সহ কাস্টম ব্যাকগ্রাউন্ড দেখান","blur":"ব্লার","opacity":"অপাসিটি","upload":"ব্যাকগ্রাউন্ড ইমেজ আপলোড করুন","dragDrop":"একটি ছবি টেনে আনুন বা ব্রাউজ করতে ক্লিক করুন","chooseImage":"ছবি বেছে নিন"}},"saveSettings":"সেটিংস সংরক্ষণ করুন","model":{"title":"মডেল সেটিংস","defaultModel":"ডিফল্ট মডেল","defaultModelDescription":"নতুন কথোপকথনের জন্য এই মডেলটি ডিফল্টভাবে ব্যবহৃত হবে","selectModel":"একটি মডেল নির্বাচন করুন","updateAll":"সব মডেল আপডেট করুন","updateAllDescription":"আপডেট চেক করুন এবং সব ইনস্টল করা মডেলের সর্বশেষ সংস্করণ পুল করুন","updateAllButton":"সব আপডেট করুন","updating":"মডেল আপডেট হচ্ছে...","currentModelInfo":"বর্তমান মডেল তথ্য","name":"নাম","size":"সাইজ","family":"ফ্যামিলি","format":"ফরম্যাট","status":"স্ট্যাটাস","statusStarting":"শুরু হচ্ছে...","statusComplete":"সম্পূর্ণ","statusError":"ত্রুটি","bulkOperations":"বাল্ক অপারেশন","autoTitle":{"title":"স্বয়ংক্রিয় শিরোনাম জেনারেশন","enable":"স্বয়ংক্রিয় শিরোনাম সক্রিয় করুন","enableDescription":"নতুন কথোপকথনের জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করুন","taskModel":"টাস্ক মডেল","selectTaskModel":"টাস্ক মডেল নির্বাচন করুন","taskModelDescription":"কথোপকথনের শিরোনাম তৈরিতে ব্যবহৃত মডেল"},"persona":"পারসোনা","updatingModel":"{{name}} আপডেট হচ্ছে ({{current}}/{{total}})","modelsProgress":"{{total}} টি মডেলের মধ্যে {{current}} টি","specializedModels":"বিশেষ মডেল","visionModel":"ভিশন মডেল","selectVisionModel":"বর্তমান চ্যাট মডেল ব্যবহার করুন","visionModelDescription":"যখনই আউটগোয়িং চ্যাট কন্টেক্সটে ছবি থাকে তখনই স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়। এমন একটি মডেল বেছে নিন যা ছবি ইনপুট সমর্থন করে।","visionModelUpdateFailed":"ভিশন মডেল আপডেট করতে ব্যর্থ হয়েছে: {{error}}","visionModelNoProvider":"এই ভিশন মডেলের কোনো প্রোভাইডার পরিচয় নেই। একটি উপলব্ধ মডেল নির্বাচন করুন।"},"systemMessage":{"title":"সিস্টেম বার্তা","description":"একটি কাস্টম সিস্টেম বার্তা সেট করুন যা সব নতুন কথোপকথনের জন্য ব্যবহৃত হবে।","placeholder":"একটি সিস্টেম বার্তা লিখুন...","saved":"সিস্টেম বার্তা সংরক্ষিত","saveFailed":"সিস্টেম বার্তা সংরক্ষণ করতে ব্যর্থ"},"plugins":{"title":"প্লাগইন","description":"আপনার ইনস্টল করা প্লাগইন পরিচালনা করুন","addNew":"নতুন প্লাগইন যোগ করুন","upload":"প্লাগইন আপলোড করুন","addJson":"JSON যোগ করুন","uploading":"আপলোড হচ্ছে...","jsonPlaceholder":"প্লাগইন JSON কনফিগারেশন পেস্ট করুন...","install":"প্লাগইন ইনস্টল করুন","noPlugins":"কোনো প্লাগইন ইনস্টল করা নেই","noPluginsDescription":"কার্যকারিতা বাড়াতে একটি প্লাগইন যোগ করুন","loading":"প্লাগইন লোড হচ্ছে...","installed":"ইনস্টল করা প্লাগইন","active":"সক্রিয় প্লাগইন","activeLabel":"সক্রিয়","inactive":"নিষ্ক্রিয়","activate":"সক্রিয় করুন","deactivate":"নিষ্ক্রিয় করুন","models":"মডেল","apiKeySet":"API কী সেট","apiKeyConfiguration":"API কী কনফিগারেশন","apiKeyEnvAlternative":"বিকল্পভাবে, সেট করুন","environmentVariable":"এনভায়রনমেন্ট ভেরিয়েবল","apiKeyConfigured":"API কী কনফিগার করা হয়েছে","apiKeyPlaceholder":"আপনার API কী লিখুন...","saveApiKey":"API কী সংরক্ষণ করুন","apiKey":{"title":"API কী","placeholder":"API কী লিখুন","save":"কী সংরক্ষণ করুন","remove":"কী সরান","configured":"API কী কনফিগার করা হয়েছে","notConfigured":"API কী প্রয়োজন","saved":"API কী সফলভাবে সংরক্ষিত","removed":"API কী সরানো হয়েছে","saveFailed":"API কী সংরক্ষণ করতে ব্যর্থ","removeFailed":"API কী সরাতে ব্যর্থ","enterKey":"অনুগ্রহ করে একটি API কী লিখুন"},"variables":"Variables","providerConnections":"প্রোভাইডার সংযোগ","providerConnectionsDescription":"প্লাগইনগুলির মাধ্যমে মডেল প্রোভাইডার সংযোগ করুন, কনফিগার করুন এবং পরিদর্শন করুন।","providers":"প্রোভাইডার","searchProviders":"প্রোভাইডার খুঁজুন","noProvidersFound":"কোনো প্রোভাইডার আপনার সার্চের সাথে মেলে না।","selectProvider":"একটি প্রোভাইডার নির্বাচন করুন","selectProviderDescription":"এর সংযোগ এবং মডেল ক্যাটালগ পরিদর্শন করতে একটি প্রোভাইডার বেছে নিন।","apiKeyDescription":"{{name}}-এর জন্য একটি ব্যক্তিগত API কী সংরক্ষণ করুন।","showApiKey":"API কী দেখান","hideApiKey":"API কী লুকান","configure":"কনফিগার করুন","providerSettings":"প্রোভাইডার সেটিংস","status":"স্ট্যাটাস","defaultEndpoint":"ডিফল্ট এন্ডপয়েন্ট","modelCatalog":"মডেল ক্যাটালগ","modelCatalogDescription":"এই প্রোভাইডার এবং এর ক্ষমতার জন্য আবিষ্কৃত এবং কনফিগার করা মডেল।","refreshModels":"মডেল রিফ্রেশ করুন","noModelsConfigured":"এই প্রদানকারীর জন্য কোনো মডেল কনফিগার করা নেই।","modelId":"মডেল ID","capabilities":"ক্ষমতা","modelCatalogUpdated":"মডেল ক্যাটালগ আপডেট হয়েছে: {{count}}টি মডেল।","modelCatalogUnchanged":"মডেল ক্যাটালগ ইতিমধ্যেই আপ-টু-ডেট আছে।","modelCatalogNeedsApiKey":"এই প্রদানকারীর লাইভ মডেল তালিকা লোড করতে একটি বৈধ API কী যোগ করুন।","modelCatalogUnavailable":"প্রদানকারীর মডেল তালিকা লোড করা যায়নি।","modelCatalogRefreshFailed":"মডেল ক্যাটালগ রিফ্রেশ করতে ব্যর্থ","capability":{"chat":"চ্যাট","embedding":"এম্বেডিং","image":"চিত্র","speech":"বক্তৃতা","transcription":"ট্রান্সক্রিপশন"},"exportPlugin":"প্লাগইন রপ্তানি","deletePlugin":"প্লাগইন মুছুন"},"generation":{"title":"জেনারেশন অপশন","description":"AI কীভাবে প্রতিক্রিয়া তৈরি করে তা কনফিগার করুন","coreParameters":"কোর প্যারামিটার","temperature":"টেম্পারেচার","temperatureDescription":"র্যান্ডমনেস নিয়ন্ত্রণ করে। কম মান বেশি ফোকাসড, উচ্চ মান বেশি সৃজনশীল।","topP":"Top P","topPDescription":"নিউক্লিয়াস স্যাম্পলিং এর মাধ্যমে বৈচিত্র্য নিয়ন্ত্রণ করে। কম মান সম্ভাব্য টোকেনে ফোকাস করে।","topK":"Top K","topKDescription":"টোকেন নির্বাচন শীর্ষ K সর্বাধিক সম্ভাব্যতে সীমাবদ্ধ করে। নিষ্ক্রিয় করতে 0 সেট করুন।","minP":"Min P","minPDescription":"টোকেন নির্বাচনের জন্য ন্যূনতম সম্ভাব্যতা থ্রেশহোল্ড।","generationControl":"জেনারেশন কন্ট্রোল","maxTokens":"সর্বোচ্চ টোকেন","maxTokensDescription":"প্রতিক্রিয়ায় তৈরি করার সর্বোচ্চ টোকেন সংখ্যা।","repeatPenalty":"রিপিট পেনাল্টি","repeatPenaltyDescription":"পুনরাবৃত্ত টোকেনকে শাস্তি দেয়। উচ্চ মান পুনরাবৃত্তি কমায়।","contextLength":"কনটেক্সট লেংথ","contextLengthDescription":"কথোপকথনের জন্য সর্বোচ্চ কনটেক্সট উইন্ডো সাইজ।","seed":"সিড","optional":"ঐচ্ছিক","random":"র্যান্ডম","seedDescription":"পুনরুৎপাদনযোগ্য আউটপুটের জন্য একটি নির্দিষ্ট সিড সেট করুন।","advancedOptions":"উন্নত অপশন","presencePenalty":"প্রেজেন্স পেনাল্টি","presencePenaltyDescription":"কনটেক্সটে প্রদর্শিত টোকেনকে শাস্তি দেয়।","frequencyPenalty":"ফ্রিকোয়েন্সি পেনাল্টি","frequencyPenaltyDescription":"ঘন ঘন ব্যবহৃত টোকেনকে শাস্তি দেয়।","stopSequences":"স্টপ সিকোয়েন্স","commaSeparated":"কমা দ্বারা পৃথক","stopSequencesDescription":"কাস্টম টোকেন যা পাওয়া গেলে জেনারেশন বন্ধ হবে।","resetDefaults":"ডিফল্টে রিসেট করুন","saveOptions":"অপশন সংরক্ষণ করুন","embeddingSettings":"এমবেডিং সেটিংস","enableEmbeddings":"ডকুমেন্ট এমবেডিং সক্রিয় করুন","advancedSettings":"উন্নত জেনারেশন সেটিংস","advancedSettingsDescription":"স্যাম্পলিং, টোকেন সীমা, কন্টেক্সট, পেনাল্টি এবং স্টপ সিকোয়েন্স"},"documents":{"title":"ডকুমেন্ট সেটিংস","embeddings":{"title":"এমবেডিং","enable":"ডকুমেন্ট এমবেডিং সক্রিয় করুন","model":"এমবেডিং মডেল","modelDescription":"ডকুমেন্ট এমবেডিং এর জন্য ব্যবহৃত মডেল নির্বাচন করুন","chunkSize":"চাংক সাইজ","chunkSizeInTokens":"(টোকেনে)","chunkSizeDescription":"এমবেডিং এর জন্য টেক্সট চাংকের সাইজ","chunkOverlap":"চাংক ওভারল্যাপ","chunkOverlapInTokens":"(টোকেনে)","chunkOverlapDescription":"পরপর চাংকের মধ্যে ওভারল্যাপ","similarityThreshold":"সিমিলারিটি থ্রেশহোল্ড","similarityDescription":"ফলাফল অন্তর্ভুক্ত করার ন্যূনতম সিমিলারিটি স্কোর","status":"এমবেডিং স্ট্যাটাস","statusLabel":"স্ট্যাটাস","available":"উপলব্ধ","unavailable":"অনুপলব্ধ","chunksWithEmbeddings":"এমবেডিং সহ চাংক","coverage":"কভারেজ","regenerate":"এমবেডিং পুনরায় তৈরি করুন","regenerating":"পুনরায় তৈরি হচ্ছে..."},"collections":{"title":"জ্ঞান সংগ্রহ","description":"নথিগুলিকে সংগ্রহে ভাগ করুন এবং যেকোনো চ্যাটে সংযুক্ত করুন।","namePlaceholder":"সংগ্রহের নাম","create":"তৈরি করুন","none":"কোনো সংগ্রহ নেই","deleteConfirm":"এই সংগ্রহটি মুছবেন? ভিতরের নথিগুলি থাকবে।"}},"tts":{"title":"টেক্সট-টু-স্পিচ","description":"বার্তা জোরে পড়ার জন্য টেক্সট-টু-স্পিচ সেটিংস কনফিগার করুন","loadingProviders":"TTS প্রোভাইডার লোড হচ্ছে...","noProviders":"কোনো TTS প্রোভাইডার নেই","noProvidersDescription":"টেক্সট-টু-স্পিচ সক্রিয় করতে TTS সমর্থন সহ একটি প্লাগইন কনফিগার করুন","enable":"TTS সক্রিয় করুন","enableDescription":"সহকারী বার্তার জন্য টেক্সট-টু-স্পিচ অনুমতি দিন","autoPlay":"প্রতিক্রিয়া অটো-প্লে","autoPlayDescription":"স্বয়ংক্রিয়ভাবে নতুন সহকারী বার্তা জোরে পড়ুন","streamSentences":"বাক্য স্ট্রিম করুন","streamSentencesDescription":"সম্পূর্ণ বার্তার জন্য অপেক্ষা না করে বাক্য অনুযায়ী অডিও প্লে করুন। দীর্ঘ বার্তায় টাইমআউট এড়াতে স্থানীয় TTS-এর জন্য প্রস্তাবিত।","voiceConfiguration":"ভয়েস কনফিগারেশন","model":"TTS মডেল","modelDescription":"টেক্সট-টু-স্পিচ জেনারেশনের জন্য মডেল নির্বাচন করুন","voice":"ভয়েস","selectVoice":"একটি ভয়েস নির্বাচন করুন","voiceDescription":"টেক্সট-টু-স্পিচের জন্য ভয়েস বেছে নিন","speed":"গতি","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"উপলব্ধ প্রোভাইডার","models":"মডেল","test":"পরীক্ষা","testing":"পরীক্ষা হচ্ছে...","stop":"বন্ধ"},"imageGen":{"title":"ইমেজ জেনারেশন","description":"ইমেজ জেনারেশন সেটিংস এবং প্রোভাইডার কনফিগার করুন","loadingProviders":"ইমেজ জেনারেশন প্রোভাইডার লোড হচ্ছে...","noProviders":"কোনো ইমেজ জেনারেশন প্রোভাইডার নেই","noProvidersDescription":"ইমেজ জেনারেশন সমর্থন সহ একটি প্লাগইন কনফিগার করুন","enable":"ইমেজ জেনারেশন সক্রিয় করুন","enableDescription":"কথোপকথনে AI ইমেজ জেনারেশন অনুমতি দিন","configuration":"কনফিগারেশন","model":"মডেল","modelDescription":"ইমেজ জেনারেশনের জন্য মডেল নির্বাচন করুন","size":"সাইজ","sizeDescription":"তৈরি ইমেজের রেজোলিউশন","quality":"কোয়ালিটি","qualityDescription":"তৈরি ইমেজের কোয়ালিটি লেভেল","style":"স্টাইল","styleDescription":"তৈরি ইমেজের স্টাইল প্রিসেট","availableProviders":"উপলব্ধ প্রোভাইডার","models":"মডেল"},"data":{"title":"ডেটা ম্যানেজমেন্ট","export":"ডেটা এক্সপোর্ট","exportDescription":"পছন্দ, সেশন এবং ডকুমেন্ট সহ আপনার সব ডেটা ডাউনলোড করুন।","exportAll":"সব ডেটা এক্সপোর্ট করুন","import":"ডেটা ইম্পোর্ট","importDescription":"পূর্ববর্তী এক্সপোর্ট থেকে ডেটা ইম্পোর্ট করুন।","importData":"ডেটা ইম্পোর্ট করুন","importing":"ইম্পোর্ট হচ্ছে...","clearSessions":"সেশন মুছুন","clearSessionsDescription":"সব চ্যাট সেশন মুছুন। এই ক্রিয়া পূর্বাবস্থায় ফেরানো যাবে না।","clearAll":"সব মুছুন","clearing":"মোছা হচ্ছে...","importOptions":"ইম্পোর্ট অপশন","importOptionsDescription":"বিদ্যমান ডেটা কীভাবে হ্যান্ডেল করতে হবে তা বেছে নিন","skipDuplicates":"ডুপ্লিকেট স্কিপ করুন","overwrite":"বিদ্যমান ওভাররাইট করুন","importResults":"ইম্পোর্ট ফলাফল","preferences":"পছন্দসমূহ","imported":"ইম্পোর্ট করা হয়েছে","failed":"ব্যর্থ","sessions":"সেশন","importedLabel":"ইম্পোর্ট করা হয়েছে","skipped":"স্কিপ করা হয়েছে","documents":"ডকুমেন্ট","errors":"ত্রুটি","archivedChats":{"title":"সংরক্ষণাগারভুক্ত চ্যাট","empty":"কোনো সংরক্ষণাগারভুক্ত চ্যাট নেই","unarchive":"সংরক্ষণাগার থেকে সরান"}},"about":{"title":"সম্পর্কে","versionLabel":"সংস্করণ","ollama":{"title":"Ollama স্ট্যাটাস","version":"সংস্করণ","healthy":"সুস্থ","unhealthy":"অসুস্থ"},"stats":{"models":"মডেল","sessions":"সেশন"},"features":{"privacy":{"title":"গোপনীয়তা প্রথমে","description":"আপনার ডেটা আপনার ডিভাইসে থাকে"},"openSource":{"title":"ওপেন সোর্স","description":"বিনামূল্যে এবং ওপেন সোর্স সফটওয়্যার"},"localInference":{"title":"লোকাল ইনফারেন্স","description":"Ollama দিয়ে স্থানীয়ভাবে AI মডেল চালান"}},"openSourceBy":"{{company}} দ্বারা ওপেন সোর্স","links":{"title":"লিংক","github":"GitHub","githubDescription":"সোর্স কোড দেখুন এবং অবদান রাখুন","website":"ওয়েবসাইট","websiteDescription":"আমাদের ওয়েবসাইট দেখুন","ollama":"Ollama","ollamaDescription":"Ollama সম্পর্কে আরও জানুন","documentation":"Documentation","reportIssue":"সমস্যা রিপোর্ট করুন","reportIssueDescription":"বাগ রিপোর্ট এবং ফিচার অনুরোধ","gitlab":"GitLab Mirror","gitlabDescription":"Self-hosted GitLab repository","documentationDescription":"Guides, tutorials and API reference"},"version":"সংস্করণ {{version}}"},"groups":{"general":"সাধারণ","chat":"চ্যাট","media":"কণ্ঠ ও ছবি","connections":"সংযোগ"}}`),models:{title:`মডেল`,subtitle:`আপনার Ollama মডেল পুল, পরিচালনা এবং মনিটর করুন`,installed:`ইনস্টল করা মডেল`,available:`উপলব্ধ মডেল`,pull:`মডেল পুল করুন`,pulling:`পুল হচ্ছে...`,delete:`মডেল মুছুন`,deleting:`মোছা হচ্ছে...`,size:`সাইজ`,modified:`পরিবর্তিত`,family:`ফ্যামিলি`,parameters:`প্যারামিটার`,quantization:`কোয়ান্টাইজেশন`,noModels:`কোনো মডেল ইনস্টল করা নেই`,pullFirst:`শুরু করতে একটি মডেল পুল করুন`,noModelsFound:`কোনো মডেল পাওয়া যায়নি`},personas:{title:`পার্সোনা`,create:`পার্সোনা তৈরি করুন`,edit:`পার্সোনা সম্পাদনা করুন`,delete:`পার্সোনা মুছুন`,name:`নাম`,description:`বিবরণ`,systemPrompt:`সিস্টেম প্রম্পট`,model:`মডেল`,avatar:`অবতার`,background:`ব্যাকগ্রাউন্ড`,noPersonas:`কোনো পার্সোনা তৈরি করা হয়নি`,createFirst:`আপনার চ্যাট অভিজ্ঞতা কাস্টমাইজ করতে আপনার প্রথম পার্সোনা তৈরি করুন`},gallery:{title:`গ্যালারি`,subtitle:`আপনার AI-তৈরি ইমেজ গ্যালারি`,imageCount:`{{count}}টি ইমেজ`,generate:`ইমেজ তৈরি করুন`,generateDescription:`AI দিয়ে ইমেজ তৈরি করুন`,generating:`তৈরি হচ্ছে...`,prompt:`প্রম্পট`,promptPlaceholder:`আপনি যে ইমেজ তৈরি করতে চান তা বর্ণনা করুন...`,noImages:`এখনও কোনো ইমেজ তৈরি হয়নি`,download:`ডাউনলোড`,delete:`মুছুন`,regenerate:`পুনরায় তৈরি করুন`,model:`মডেল`,size:`সাইজ`,quality:`কোয়ালিটি`,created:`তৈরি করা হয়েছে`},errors:{generic:`একটি ত্রুটি ঘটেছে`,network:`নেটওয়ার্ক ত্রুটি। আপনার সংযোগ পরীক্ষা করুন।`,unauthorized:`এই ক্রিয়া সম্পাদন করার অনুমতি নেই।`,notFound:`অনুরোধকৃত রিসোর্স পাওয়া যায়নি।`,serverError:`সার্ভার ত্রুটি। পরে আবার চেষ্টা করুন।`,validation:`আপনার ইনপুট পরীক্ষা করুন এবং আবার চেষ্টা করুন।`},keyboard:{title:`কীবোর্ড শর্টকাট`,toggleSidebar:`সাইডবার টগল করুন`,openSettings:`সেটিংস খুলুন`,toggleDarkMode:`ডার্ক মোড টগল করুন`,showShortcuts:`কীবোর্ড শর্টকাট দেখান`,closeModals:`মোডাল বন্ধ করুন`,groups:{navigation:`নেভিগেশন`,general:`সাধারণ`,chat:`চ্যাট`,workspace:`ওয়ার্কস্পেস`},actions:{sendMessage:`বার্তা পাঠান`,newLine:`বার্তায় নতুন লাইন`,saveEdit:`সম্পাদিত বার্তা সংরক্ষণ করুন`,cancelEdit:`সম্পাদনা বাতিল করুন`,saveFile:`ফাইল সংরক্ষণ করুন`,formatCode:`কোড ফরম্যাট করুন`},description:`Libre WebUI-তে উপলব্ধ সব কীবোর্ড শর্টকাট।`,newChat:`নতুন চ্যাট`,newWork:`নতুন Work সেশন`,openPalette:`কমান্ড প্যালেট খুলুন`},modelManager:{title:`মডেল`,loading:`মডেল লোড হচ্ছে...`,systemStatus:{online:`Ollama অনলাইন`,offline:`Ollama অফলাইন`,models:`মডেল`,models_plural:`মডেল`,running:`চলমান`,vram:`VRAM`},sections:{pull:`নতুন মডেল পুল করুন`,library:`লাইব্রেরি ব্রাউজ করুন`,running:`চলমান মডেল`,local:`লোকাল মডেল`,advanced:`উন্নত অ্যাকশন`,huggingface:`HuggingFace Hub`},pull:{placeholder:`মডেলের নাম লিখুন (যেমন llama3.2:3b, deepseek-r1:14b)`,button:`পুল`,cancel:`বাতিল`,popular:`জনপ্রিয় মডেল:`,browseAll:`ollama.com এ সব মডেল ব্রাউজ করুন`,success:`মডেল {{name}} সফলভাবে পুল করা হয়েছে`,cancelled:`মডেল পুল বাতিল করা হয়েছে`,failed:`মডেল পুল করতে ব্যর্থ`,enterName:`অনুগ্রহ করে একটি মডেলের নাম লিখুন`,restricted:`এই ইনস্ট্যান্সে মডেল ইনস্টলেশন শুধুমাত্র অ্যাডমিনদের জন্য সীমাবদ্ধ।`},progress:{starting:`শুরু হচ্ছে...`,pulling:`মডেল ডাউনলোড হচ্ছে...`,pullingLayer:`ডাউনলোড হচ্ছে`,verifying:`অখণ্ডতা যাচাই হচ্ছে...`,verifyingDigest:`sha256 ডাইজেস্ট যাচাই হচ্ছে`,writing:`ম্যানিফেস্ট লেখা হচ্ছে...`,cleaning:`পরিষ্কার করা হচ্ছে...`},library:{available:`উপলব্ধ`,search:`মডেল অনুসন্ধান করুন...`,noResults:`আপনার মানদণ্ডের সাথে মিলে যায় এমন কোনো মডেল পাওয়া যায়নি`,installed:`ইনস্টল করা`,more:`+{{count}} আরও`,refresh:`লাইব্রেরি রিফ্রেশ করুন`},local:{noModels:`এখনও কোনো মডেল ইনস্টল করা হয়নি`,pullToStart:`শুরু করতে উপরে একটি মডেল পুল করুন`,installed:`ইনস্টল করা`,running:`চলমান`,info:`তথ্য`,copy:`কপি`,delete:`মুছুন`,deleteConfirm:`আপনি কি মডেল "{{name}}" মুছতে চান?`,deleteSuccess:`মডেল {{name}} সফলভাবে মোছা হয়েছে`,deleteFailed:`মডেল মুছতে ব্যর্থ`},advanced:{createModel:`মডেল তৈরি করুন`,fromModelfile:`Modelfile থেকে`,copyModel:`মডেল কপি করুন`,duplicateExisting:`বিদ্যমান ডুপ্লিকেট করুন`,testEmbeddings:`এমবেডিং পরীক্ষা করুন`,generateVectors:`ভেক্টর তৈরি করুন`,healthCheck:`হেলথ চেক`,testConnection:`সংযোগ পরীক্ষা করুন`,healthy:`Ollama সুস্থ!`},modals:{details:{title:`মডেল বিবরণ`,info:`মডেল তথ্য`,family:`ফ্যামিলি`,parameters:`প্যারামিটার`,quantization:`কোয়ান্টাইজেশন`,format:`ফরম্যাট`,systemPrompt:`সিস্টেম প্রম্পট`,template:`টেমপ্লেট`,license:`লাইসেন্স`,modelfile:`Modelfile`,noDetails:`কোনো বিবরণ উপলব্ধ নেই`},copy:{title:`মডেল কপি করুন`,source:`সোর্স মডেল`,selectModel:`একটি মডেল নির্বাচন করুন...`,newName:`নতুন মডেল নাম`,placeholder:`যেমন my-custom-model`,copying:`কপি হচ্ছে...`,button:`মডেল কপি করুন`,success:`মডেল {{name}} এ কপি করা হয়েছে`,failed:`মডেল কপি করতে ব্যর্থ`,enterBoth:`অনুগ্রহ করে সোর্স এবং ডেস্টিনেশন উভয় নাম লিখুন`},create:{title:`কাস্টম মডেল তৈরি করুন`,name:`মডেল নাম`,namePlaceholder:`যেমন my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
|
|
1
|
+
var e={common:{loading:`লোড হচ্ছে...`,save:`সংরক্ষণ`,saving:`সংরক্ষণ হচ্ছে...`,cancel:`বাতিল`,delete:`মুছুন`,edit:`সম্পাদনা`,close:`বন্ধ`,back:`পিছনে`,next:`পরবর্তী`,confirm:`নিশ্চিত করুন`,error:`ত্রুটি`,success:`সফল`,warning:`সতর্কতা`,or:`অথবা`,optional:`ঐচ্ছিক`,enabled:`সক্রিয়`,disabled:`নিষ্ক্রিয়`,on:`চালু`,off:`বন্ধ`,yes:`হ্যাঁ`,no:`না`,search:`অনুসন্ধান`,noResults:`কোনো ফলাফল পাওয়া যায়নি`,retry:`পুনরায় চেষ্টা করুন`,refresh:`রিফ্রেশ`,download:`ডাউনলোড`,upload:`আপলোড`,export:`এক্সপোর্ট`,import:`ইম্পোর্ট`,reset:`রিসেট`,apply:`প্রয়োগ করুন`,clear:`মুছুন`,all:`সব`,none:`কিছুই না`,default:`ডিফল্ট`,custom:`কাস্টম`,remove:`সরান`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`স্বাগতম`,subtitle:`আপনার অ্যাকাউন্টে সাইন ইন করুন`,username:`ব্যবহারকারীর নাম`,usernamePlaceholder:`আপনার ব্যবহারকারীর নাম লিখুন`,password:`পাসওয়ার্ড`,passwordPlaceholder:`আপনার পাসওয়ার্ড লিখুন`,signIn:`সাইন ইন`,signingIn:`সাইন ইন হচ্ছে...`,noAccount:`অ্যাকাউন্ট নেই?`,signUpHere:`এখানে সাইন আপ করুন`,loginSuccess:`লগইন সফল!`,loginFailed:`লগইন ব্যর্থ`,checkCredentials:`লগইন ব্যর্থ। আপনার তথ্য পরীক্ষা করুন।`,enterBoth:`অনুগ্রহ করে ব্যবহারকারীর নাম এবং পাসওয়ার্ড উভয়ই লিখুন`,githubSuccess:`GitHub লগইন সফল!`,githubFailed:`GitHub প্রমাণীকরণ ব্যর্থ`,githubVerifyFailed:`GitHub প্রমাণীকরণ যাচাই করতে ব্যর্থ`,approvalPending:`আপনার অ্যাকাউন্ট অ্যাডমিনিস্ট্রেটরের অনুমোদনের অপেক্ষায় আছে।`},signup:{title:`অ্যাকাউন্ট তৈরি করুন`,subtitle:`আপনার নতুন অ্যাকাউন্টের জন্য সাইন আপ করুন`,username:`ব্যবহারকারীর নাম`,usernamePlaceholder:`একটি ব্যবহারকারীর নাম বেছে নিন`,email:`ইমেইল`,emailPlaceholder:`your@email.com`,password:`পাসওয়ার্ড`,passwordPlaceholder:`একটি পাসওয়ার্ড বেছে নিন`,confirmPassword:`পাসওয়ার্ড নিশ্চিত করুন`,confirmPasswordPlaceholder:`আপনার পাসওয়ার্ড নিশ্চিত করুন`,createAccount:`অ্যাকাউন্ট তৈরি করুন`,creatingAccount:`অ্যাকাউন্ট তৈরি হচ্ছে...`,hasAccount:`ইতিমধ্যে অ্যাকাউন্ট আছে?`,signInHere:`এখানে সাইন ইন করুন`,signupSuccess:`অ্যাকাউন্ট সফলভাবে তৈরি হয়েছে!`,signupFailed:`সাইন আপ ব্যর্থ`,tryAgain:`সাইন আপ ব্যর্থ। অনুগ্রহ করে আবার চেষ্টা করুন।`,usernameRequired:`ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন`,passwordMismatch:`পাসওয়ার্ড মিলছে না`,passwordTooShort:`পাসওয়ার্ড কমপক্ষে ৬ অক্ষরের হতে হবে`,approvalPending:`নিবন্ধন গৃহীত হয়েছে। একজন অ্যাডমিনিস্ট্রেটরকে অবশ্যই আপনার অ্যাকাউন্ট অনুমোদন করতে হবে।`,awaitingApproval:`অনুমোদনের অপেক্ষায়`,awaitingApprovalDescription:`আপনার অ্যাকাউন্ট তৈরি করা হয়েছে, তবে সাইন ইন করার আগে একজন অ্যাডমিনিস্ট্রেটরকে অবশ্যই এটি সক্রিয় করতে হবে।`,backToSignIn:`সাইন ইনে ফিরে যান`},logout:{button:`লগ আউট`,success:`সফলভাবে লগ আউট হয়েছে`},oauth:{continueWith:`{{provider}} দিয়ে চালিয়ে যান`,connectingTo:`{{provider}} এ সংযোগ হচ্ছে...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`প্রমাণীকরণ যাচাই হচ্ছে...`,welcome:`স্বাগতম`,noEmail:`কোনো ইমেইল দেওয়া হয়নি`,role:`ভূমিকা`,id:`আইডি`,userId:`ইউজার আইডি`,signInDescription:`চালিয়ে যেতে আপনার GitHub অ্যাকাউন্ট দিয়ে সাইন ইন করুন`,signInWithGitHub:`GitHub দিয়ে সাইন ইন করুন`,jwtActive:`JWT প্রমাণীকরণ সক্রিয়`,jwtDescription:`GitHub OAuth সহ JWT প্রমাণীকরণ`,github:`GitHub`,provider:`প্রদানকারী`,tagline:`আপনার AI স্ট্যাক আপনার কাছে উত্তর দেওয়া উচিত।`,selfHosted:`সেলফ-হোস্টেড · Apache 2.0`,highlights:{local:{title:`লোকাল ফার্স্ট`,body:`আপনার কথোপকথন এবং ফাইলগুলি আপনি এটি চালানো মেশিনেই থাকে।`},providers:{title:`যেকোনো প্রোভাইডার`,body:`Ollama-এর মাধ্যমে লোকাল মডেল, পাশাপাশি আপনি যোগ করতে চয়ন করা রিমোট প্রোভাইডার।`},work:{title:`বিচ্ছিন্ন কাজ`,body:`একটি মডেলকে ফাইল, একটি টার্মিনাল এবং একটি প্রিভিউ সহ একটি স্যান্ডবক্সড ওয়ার্কস্পেস দিন।`}}},setup:{welcome:{title:`Libre WebUI তে স্বাগতম`,subtitle:`শুরু করা যাক`,description:`কয়েকটি ধাপে আপনার Libre WebUI সেট আপ করুন`,createAdmin:`অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,features:{secure:{title:`নিরাপদ এবং ব্যক্তিগত`,description:`আপনার কথোপকথন আপনার ডিভাইসে থাকে`},fast:{title:`দ্রুত এবং প্রতিক্রিয়াশীল`,description:`গতি এবং কর্মক্ষমতার জন্য অপ্টিমাইজ করা`},openSource:{title:`ওপেন সোর্স`,description:`বিনামূল্যে এবং ওপেন সোর্স সফটওয়্যার`}}},admin:{title:`অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,subtitle:`অ্যাডমিনিস্ট্রেটর সেটআপ`,description:`আপনার Libre WebUI এর জন্য প্রথম অ্যাডমিন অ্যাকাউন্ট তৈরি করুন`,usernamePlaceholder:`অ্যাডমিন ব্যবহারকারীর নাম লিখুন`,passwordPlaceholder:`পাসওয়ার্ড লিখুন (ন্যূনতম ৬ অক্ষর)`,confirmPlaceholder:`আপনার পাসওয়ার্ড নিশ্চিত করুন`,creating:`তৈরি হচ্ছে...`,createAdmin:`অ্যাডমিন তৈরি করুন`,success:`অ্যাডমিন অ্যাকাউন্ট সফলভাবে তৈরি হয়েছে!`,failed:`অ্যাডমিন অ্যাকাউন্ট তৈরি করতে ব্যর্থ`,fillAllFields:`অনুগ্রহ করে সব ফিল্ড পূরণ করুন`,note:`এটি আপনার Libre WebUI এর প্রাথমিক অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট হবে`,approvalUnexpected:`প্রাথমিক অ্যাডমিনিস্ট্রেটর সক্রিয় করা যায়নি। অনুগ্রহ করে আবার চেষ্টা করুন।`},encryptionKey:{title:`আপনার এনক্রিপশন কী সংরক্ষণ করুন`,subtitle:`গুরুত্বপূর্ণ: এই কী সংরক্ষণ করুন`,description:`এই এনক্রিপশন কী আপনার সংবেদনশীল ডেটা রক্ষা করে। এটি নিরাপদে সংরক্ষণ করুন - আপনার ডাটাবেস পুনরুদ্ধার করতে হলে এটি প্রয়োজন হবে।`,warning:`সতর্কতা`,warningText:`যদি আপনি এই কী হারান এবং ডাটাবেস পুনরুদ্ধার করতে হয়, আপনার এনক্রিপ্ট করা ডেটা (API কী, পছন্দসমূহ) পুনরুদ্ধার করা যাবে না।`,label:`আপনার এনক্রিপশন কী`,loading:`লোড হচ্ছে...`,copyToClipboard:`ক্লিপবোর্ডে কপি করুন`,copied:`এনক্রিপশন কী ক্লিপবোর্ডে কপি হয়েছে!`,copyFailed:`ক্লিপবোর্ডে কী কপি করতে ব্যর্থ`,envNote:`এই কী আপনার backend/.env ফাইলে ENCRYPTION_KEY হিসাবে সংরক্ষিত আছে`,acknowledgment:`আমি আমার এনক্রিপশন কী একটি নিরাপদ স্থানে সংরক্ষণ করেছি এবং বুঝতে পারছি যে এটি হারালে ডেটা ক্ষতি হতে পারে।`,confirmRequired:`অনুগ্রহ করে নিশ্চিত করুন যে আপনি এনক্রিপশন কী সংরক্ষণ করেছেন`,continue:`Libre WebUI তে চালিয়ে যান`}},chat:{greeting:{morning:`সুপ্রভাত`,afternoon:`শুভ অপরাহ্ন`,evening:`শুভ সন্ধ্যা`,night:`শুভ রাত্রি`},followUp:`ফলো-আপ`,welcome:{helpToday:`আজ আমি কীভাবে সাহায্য করতে পারি?`,helpTonight:`আজ রাতে আমি কীভাবে সাহায্য করতে পারি?`,variety:{create:{title:`আমরা কী বানাব?`,subtitle:`একটা ভাবনা, খসড়া, কিংবা সহজে না-মেটা সমস্যা দিয়ে শুরু করুন।`},explore:{title:`কোথা থেকে শুরু করব?`,subtitle:`যে প্রশ্নটা বারবার মনে ফিরে আসে, সেটাই নিয়ে আসুন।`},imagine:{title:`আপনি কী কল্পনা করছেন?`,subtitle:`আমরা একসঙ্গে তাকে রূপ দিতে পারি।`},focus:{title:`কোন বিষয়টা এখন মনোযোগ চায়?`,subtitle:`চলুন, পরের ধাপটা পরিষ্কার করি।`},untangle:{title:`কোথায় জট লেগেছে?`,subtitle:`আগে এলোমেলো অবস্থাতেই বলুন।`},momentum:{title:`আপনি তৈরি হলেই শুরু করি।`,subtitle:`কোনো ভাবনা, পরিকল্পনা বা অসমাপ্ত কথার সূত্র আবার ধরুন।`},open:{title:`আপনার মনে কী চলছে?`,subtitle:`ছোট্ট ভাবনা হোক বা বড় প্রকল্প—দুটোই চলবে।`},challenge:{title:`আমরা কী সমাধান করছি?`,subtitle:`এখনও কী ঠিকমতো কাজ করছে না, বলুন।`},draft:{title:`কোথাও থেকে শুরু করা যাক।`,subtitle:`এখনই নিখুঁত হতে হবে না।`},possibility:{title:`এটা কী হয়ে উঠতে পারে?`,subtitle:`কাঁচামালটুকুই আগে দেখান।`},unexpected:{title:`অপ্রত্যাশিত কিছু বানাই।`,subtitle:`একটা সীমা, একটা আবহ, কিংবা আধা-গড়া ভাবনা দিন।`}}},input:{placeholder:`একটি বার্তা পাঠান`,messagePlaceholder:`বার্তা...`,attachImages:`ছবি সংযুক্ত করুন`,attachments:`সংযুক্তি এবং উন্নত বৈশিষ্ট্য`,sendMessage:`বার্তা পাঠান`,stopGeneration:`জেনারেশন বন্ধ করুন`,menu:{uploadImages:`ছবি আপলোড করুন`,attachDocument:`নথি সংযুক্ত করুন`,attachWebpage:`ওয়েবপেজ সংযুক্ত করুন`,structuredOutput:`কাঠামোবদ্ধ আউটপুট`,attach:`সংযুক্ত করুন`,documentAttached:`নথি সংযুক্ত হয়েছে`,webpageAttached:`ওয়েবপেজ সংযুক্ত হয়েছে`,attachFailed:`সংযুক্ত করা যায়নি`,attachKnowledge:`জ্ঞান সংযুক্ত করুন`,noCollections:`এখনও কোনো সংগ্রহ নেই — সেটিংস → নথিতে তৈরি করুন`},voiceInput:`ভয়েস ইনপুট`,voiceStop:`শোনা বন্ধ করুন`},session:{new:`নতুন চ্যাট`,work:`কাজ`,chat:`চ্যাট`,private:`ব্যক্তিগত`,privateMode:`ব্যক্তিগত মোড`,privateDescription:`এই কথোপকথন সংরক্ষণ করা হবে না`,privateTooltip:`একটি ব্যক্তিগত কথোপকথন শুরু করুন যা সংরক্ষণ করা হবে না`,deleteConfirm:`আপনি কি এই চ্যাট মুছতে চান?`,generatingTitle:`শিরোনাম তৈরি হচ্ছে`,noChats:`এখনও কোনো চ্যাট নেই`,createFirst:`উপরে আপনার প্রথম চ্যাট তৈরি করুন`,chats:`চ্যাট`,renameChat:`চ্যাট পুনঃনামকরণ করুন`,deleteChat:`চ্যাট মুছুন`,incognito:`ইনকগনিটো চ্যাট`,archiveChat:`চ্যাট সংরক্ষণাগারে রাখুন`,groups:{today:`আজ`,yesterday:`গতকাল`,previous7Days:`গত ৭ দিন`,previous30Days:`গত ৩০ দিন`,older:`পুরানো`},folder:{new:`নতুন ফোল্ডার`,namePlaceholder:`ফোল্ডারের নাম`,move:`ফোল্ডারে সরান`,remove:`ফোল্ডার থেকে সরান`,delete:`ফোল্ডার মুছুন`,deleteConfirm:`এই ফোল্ডারটি মুছবেন? ভিতরের চ্যাটগুলি থাকবে।`}},persona:{applied:`পার্সোনা প্রয়োগ করা হয়েছে`,label:`পার্সোনা`,removeFailed:`পার্সোনা সরাতে ব্যর্থ হয়েছে`},model:{updated:`মডেল আপডেট হয়েছে`,noModels:`কোনো মডেল উপলব্ধ নেই`,noModelsDescription:`কোনো মডেল উপলব্ধ নেই। নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`কোনো মডেল উপলব্ধ নেই। অনুগ্রহ করে নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।`,selectBeforePrivateChat:`ব্যক্তিগত চ্যাট শুরু করার আগে একটি উপলব্ধ মডেল নির্বাচন করুন`,selectBeforeSending:`পাঠানোর আগে একটি উপলব্ধ মডেল নির্বাচন করুন`},footer:{disclaimer:`LLM ভুল করতে পারে - গুরুত্বপূর্ণ তথ্য যাচাই করুন`,images:`{{count}}টি ছবি`,images_plural:`{{count}}টি ছবি`,structuredOutput:`স্ট্রাকচার্ড আউটপুট`},mediaUpload:{dropImagesHere:`এখানে ছবি ছেড়ে দিন বা`,supportedFormats:`সমর্থিত: JPG, PNG, GIF, WebP (সর্বোচ্চ ১০MB প্রতিটি)`,browse:`ব্রাউজ করুন`},structuredOutput:{title:`রেসপন্স ফরম্যাট`,none:`কোনোটি নয় (প্রাকৃতিক ভাষা)`,noneDescription:`ডিফল্ট প্রাকৃতিক ভাষা প্রতিক্রিয়া`,json:`JSON`,jsonDescription:`স্ট্রাকচার্ড JSON ফরম্যাট`,list:`তালিকা`,listDescription:`আইটেমের অ্যারে`,summary:`সারাংশ`,summaryDescription:`মূল পয়েন্ট সহ ডকুমেন্ট সারাংশ`,analysis:`বিশ্লেষণ`,analysisDescription:`সুবিধা/অসুবিধা সহ স্ট্রাকচার্ড বিশ্লেষণ`,custom:`কাস্টম স্কিমা`,customDescription:`আপনার নিজের JSON স্কিমা সংজ্ঞায়িত করুন`,customSchema:`কাস্টম JSON স্কিমা`,schemaPreview:`স্কিমা প্রিভিউ`,applySchema:`স্কিমা প্রয়োগ করুন`,cancel:`বাতিল`,enabled:`স্ট্রাকচার্ড আউটপুট সক্রিয়`},controls:{title:`চ্যাট নিয়ন্ত্রণ`,systemPrompt:`সিস্টেম প্রম্পট`,systemPromptPlaceholder:`শুধু এই চ্যাটে প্রযোজ্য নির্দেশনা…`,advancedParams:`উন্নত প্যারামিটার`,advancedParamsDescription:`এই চ্যাটের জন্য ওভাররাইড। খালি ঘরে গ্লোবাল ডিফল্ট ব্যবহৃত হয়।`,fromModel:`মডেল থেকে`,fromModelHint:`এই মানটি মডেলের নিজস্ব প্রস্তাবিত সেটিংস থেকে এসেছে।`,contextCapped:`প্রসঙ্গ {{trained}}-এর মধ্যে {{context}}-এ সীমাবদ্ধ, যাতে মডেলটি লোড হতে পারে।`,saved:`নিয়ন্ত্রণ সংরক্ষিত হয়েছে`,saveFailed:`নিয়ন্ত্রণ সংরক্ষণ করা যায়নি`,params:{temperature:`তাপমাত্রা`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`সর্বোচ্চ টোকেন`,repeatPenalty:`পুনরাবৃত্তি জরিমানা`,seed:`সিড`,contextLength:`প্রসঙ্গ দৈর্ঘ্য`}}},sidebar:{navigation:{chat:`চ্যাট`,models:`মডেল`,personas:`পার্সোনা`,imagine:`ইমাজিন`,settings:`সেটিংস`,userManagement:`ব্যবহারকারী ব্যবস্থাপনা`,signOut:`সাইন আউট`,agents:`এজেন্ট`,work:`কাজ`,exploreLabel:`অন্বেষণ`,usageAnalytics:`প্রোভাইডার ব্যবহার`,system:`সিস্টেম`,notes:`নোট`},toggleSize:`সাইডবার সাইজ টগল করুন`,expandSidebar:`সাইডবার প্রসারিত করুন`},user:{menu:{changePicture:`ছবি পরিবর্তন করুন`,settings:`সেটিংস`,userManagement:`ব্যবহারকারী ব্যবস্থাপনা`,logout:`লগ আউট`,usageAnalytics:`প্রোভাইডার ব্যবহার`,system:`সিস্টেম`},avatar:{title:`প্রোফাইল ছবি পরিবর্তন করুন`,updated:`প্রোফাইল ছবি আপডেট হয়েছে`,updateFailed:`প্রোফাইল ছবি আপডেট করতে ব্যর্থ`,saving:`সংরক্ষণ হচ্ছে...`,label:`অবতার`,uploadAvatarImage:`অবতার ছবি আপলোড করুন`,dragAndDrop:`একটি ছবি টেনে আনুন বা ব্রাউজ করতে ক্লিক করুন`,chooseImage:`ছবি বাছুন`,uploading:`আপলোড হচ্ছে...`,enterImageUrl:`অথবা ছবির URL লিখুন`,supportedFormats:`সমর্থিত: JPG, PNG, GIF, WebP (সর্বোচ্চ 2MB)। বর্গাকার ছবি সবচেয়ে ভালো কাজ করে।`,customAvatar:`কাস্টম অবতার ছবি`,clickToChange:`পরিবর্তন বা সরাতে ক্লিক করুন`,removed:`অবতার সরানো হয়েছে`,uploaded:`অবতার সফলভাবে আপলোড হয়েছে`,invalidFile:`অনুগ্রহ করে একটি বৈধ ছবি ফাইল নির্বাচন করুন`,fileTooLarge:`অবতার ছবির আকার 2MB এর কম হতে হবে`,readFailed:`ছবি ফাইল পড়তে ব্যর্থ`,uploadFailed:`অবতার ছবি আপলোড করতে ব্যর্থ`},profile:{noEmail:`কোনো ইমেইল দেওয়া হয়নি`}},settings:JSON.parse(`{"title":"সেটিংস","tabs":{"appearance":"চেহারা","model":"মডেল","systemMessage":"সিস্টেম বার্তা","plugins":"প্লাগইন","generation":"জেনারেশন","documents":"ডকুমেন্ট","tts":"টেক্সট-টু-স্পিচ","imageGen":"ইমেজ জেনারেশন","data":"ডেটা","shortcuts":"শর্টকাট","about":"সম্পর্কে"},"appearance":{"title":"চেহারা","language":{"title":"ভাষা","description":"আপনার পছন্দের ভাষা নির্বাচন করুন"},"theme":{"title":"থিম","light":"লাইট","dark":"ডার্ক","amoled":"বিশুদ্ধ কালো","system":"সিস্টেম"},"accent":{"title":"অ্যাকসেন্ট রং","custom":"কাস্টম রং","useColor":"{{color}} অ্যাকসেন্ট ব্যবহার করুন","behaviorTitle":"ইন্টারফেস প্যালেট","behaviorDescription":"অ্যাকসেন্ট শুধু নিয়ন্ত্রণে থাকবে নাকি পুরো হালকা বা গাঢ় ইন্টারফেসে প্রয়োগ হবে তা বেছে নিন।","defaultStyle":"ডিফল্ট","defaultStyleDescription":"হালকা ও গাঢ় থিমের নিরপেক্ষ পৃষ্ঠগুলো রাখুন।","adaptedStyle":"অ্যাকসেন্টে মানিয়ে নিন","adaptedStyleDescription":"পৃষ্ঠ, সীমানা ও লেখাকে আপনার অ্যাকসেন্ট রঙে রাঙান।"},"chatInterface":{"title":"চ্যাট ইন্টারফেস","showUsername":"ব্যবহারকারীর নাম দেখান","showUsernameDescription":"চ্যাট বার্তায় ব্যবহারকারীর নাম প্রদর্শন করুন","followUpSuggestions":"ফলো-আপ পরামর্শ","followUpSuggestionsDescription":"প্রতিটি উত্তরের পরে দ্রুত জবাবের পরামর্শ দিন","hapticFeedback":"হ্যাপটিক প্রতিক্রিয়া (Android)","hapticFeedbackDescription":"গুরুত্বপূর্ণ মোবাইল কাজের জন্য সূক্ষ্ম কম্পন ব্যবহার করুন"},"background":{"title":"ব্যাকগ্রাউন্ড ইমেজ","enable":"ব্যাকগ্রাউন্ড ইমেজ সক্রিয় করুন","enableDescription":"ব্লার ইফেক্ট সহ কাস্টম ব্যাকগ্রাউন্ড দেখান","blur":"ব্লার","opacity":"অপাসিটি","upload":"ব্যাকগ্রাউন্ড ইমেজ আপলোড করুন","dragDrop":"একটি ছবি টেনে আনুন বা ব্রাউজ করতে ক্লিক করুন","chooseImage":"ছবি বেছে নিন"}},"saveSettings":"সেটিংস সংরক্ষণ করুন","model":{"title":"মডেল সেটিংস","defaultModel":"ডিফল্ট মডেল","defaultModelDescription":"নতুন কথোপকথনের জন্য এই মডেলটি ডিফল্টভাবে ব্যবহৃত হবে","selectModel":"একটি মডেল নির্বাচন করুন","updateAll":"সব মডেল আপডেট করুন","updateAllDescription":"আপডেট চেক করুন এবং সব ইনস্টল করা মডেলের সর্বশেষ সংস্করণ পুল করুন","updateAllButton":"সব আপডেট করুন","updating":"মডেল আপডেট হচ্ছে...","currentModelInfo":"বর্তমান মডেল তথ্য","name":"নাম","size":"সাইজ","family":"ফ্যামিলি","format":"ফরম্যাট","status":"স্ট্যাটাস","statusStarting":"শুরু হচ্ছে...","statusComplete":"সম্পূর্ণ","statusError":"ত্রুটি","bulkOperations":"বাল্ক অপারেশন","autoTitle":{"title":"স্বয়ংক্রিয় শিরোনাম জেনারেশন","enable":"স্বয়ংক্রিয় শিরোনাম সক্রিয় করুন","enableDescription":"নতুন কথোপকথনের জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করুন","taskModel":"টাস্ক মডেল","selectTaskModel":"টাস্ক মডেল নির্বাচন করুন","taskModelDescription":"কথোপকথনের শিরোনাম তৈরিতে ব্যবহৃত মডেল"},"persona":"পারসোনা","updatingModel":"{{name}} আপডেট হচ্ছে ({{current}}/{{total}})","modelsProgress":"{{total}} টি মডেলের মধ্যে {{current}} টি","specializedModels":"বিশেষ মডেল","visionModel":"ভিশন মডেল","selectVisionModel":"বর্তমান চ্যাট মডেল ব্যবহার করুন","visionModelDescription":"যখনই আউটগোয়িং চ্যাট কন্টেক্সটে ছবি থাকে তখনই স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়। এমন একটি মডেল বেছে নিন যা ছবি ইনপুট সমর্থন করে।","visionModelUpdateFailed":"ভিশন মডেল আপডেট করতে ব্যর্থ হয়েছে: {{error}}","visionModelNoProvider":"এই ভিশন মডেলের কোনো প্রোভাইডার পরিচয় নেই। একটি উপলব্ধ মডেল নির্বাচন করুন।"},"systemMessage":{"title":"সিস্টেম বার্তা","description":"একটি কাস্টম সিস্টেম বার্তা সেট করুন যা সব নতুন কথোপকথনের জন্য ব্যবহৃত হবে।","placeholder":"একটি সিস্টেম বার্তা লিখুন...","saved":"সিস্টেম বার্তা সংরক্ষিত","saveFailed":"সিস্টেম বার্তা সংরক্ষণ করতে ব্যর্থ"},"plugins":{"title":"প্লাগইন","description":"আপনার ইনস্টল করা প্লাগইন পরিচালনা করুন","addNew":"নতুন প্লাগইন যোগ করুন","upload":"প্লাগইন আপলোড করুন","addJson":"JSON যোগ করুন","uploading":"আপলোড হচ্ছে...","jsonPlaceholder":"প্লাগইন JSON কনফিগারেশন পেস্ট করুন...","install":"প্লাগইন ইনস্টল করুন","noPlugins":"কোনো প্লাগইন ইনস্টল করা নেই","noPluginsDescription":"কার্যকারিতা বাড়াতে একটি প্লাগইন যোগ করুন","loading":"প্লাগইন লোড হচ্ছে...","installed":"ইনস্টল করা প্লাগইন","active":"সক্রিয় প্লাগইন","activeLabel":"সক্রিয়","inactive":"নিষ্ক্রিয়","activate":"সক্রিয় করুন","deactivate":"নিষ্ক্রিয় করুন","models":"মডেল","apiKeySet":"API কী সেট","apiKeyConfiguration":"API কী কনফিগারেশন","apiKeyEnvAlternative":"বিকল্পভাবে, সেট করুন","environmentVariable":"এনভায়রনমেন্ট ভেরিয়েবল","apiKeyConfigured":"API কী কনফিগার করা হয়েছে","apiKeyPlaceholder":"আপনার API কী লিখুন...","saveApiKey":"API কী সংরক্ষণ করুন","apiKey":{"title":"API কী","placeholder":"API কী লিখুন","save":"কী সংরক্ষণ করুন","remove":"কী সরান","configured":"API কী কনফিগার করা হয়েছে","notConfigured":"API কী প্রয়োজন","saved":"API কী সফলভাবে সংরক্ষিত","removed":"API কী সরানো হয়েছে","saveFailed":"API কী সংরক্ষণ করতে ব্যর্থ","removeFailed":"API কী সরাতে ব্যর্থ","enterKey":"অনুগ্রহ করে একটি API কী লিখুন"},"variables":"Variables","providerConnections":"প্রোভাইডার সংযোগ","providerConnectionsDescription":"প্লাগইনগুলির মাধ্যমে মডেল প্রোভাইডার সংযোগ করুন, কনফিগার করুন এবং পরিদর্শন করুন।","providers":"প্রোভাইডার","searchProviders":"প্রোভাইডার খুঁজুন","noProvidersFound":"কোনো প্রোভাইডার আপনার সার্চের সাথে মেলে না।","selectProvider":"একটি প্রোভাইডার নির্বাচন করুন","selectProviderDescription":"এর সংযোগ এবং মডেল ক্যাটালগ পরিদর্শন করতে একটি প্রোভাইডার বেছে নিন।","apiKeyDescription":"{{name}}-এর জন্য একটি ব্যক্তিগত API কী সংরক্ষণ করুন।","showApiKey":"API কী দেখান","hideApiKey":"API কী লুকান","configure":"কনফিগার করুন","providerSettings":"প্রোভাইডার সেটিংস","status":"স্ট্যাটাস","defaultEndpoint":"ডিফল্ট এন্ডপয়েন্ট","modelCatalog":"মডেল ক্যাটালগ","modelCatalogDescription":"এই প্রোভাইডার এবং এর ক্ষমতার জন্য আবিষ্কৃত এবং কনফিগার করা মডেল।","refreshModels":"মডেল রিফ্রেশ করুন","noModelsConfigured":"এই প্রদানকারীর জন্য কোনো মডেল কনফিগার করা নেই।","modelId":"মডেল ID","capabilities":"ক্ষমতা","modelCatalogUpdated":"মডেল ক্যাটালগ আপডেট হয়েছে: {{count}}টি মডেল।","modelCatalogUnchanged":"মডেল ক্যাটালগ ইতিমধ্যেই আপ-টু-ডেট আছে।","modelCatalogNeedsApiKey":"এই প্রদানকারীর লাইভ মডেল তালিকা লোড করতে একটি বৈধ API কী যোগ করুন।","modelCatalogUnavailable":"প্রদানকারীর মডেল তালিকা লোড করা যায়নি।","modelCatalogRefreshFailed":"মডেল ক্যাটালগ রিফ্রেশ করতে ব্যর্থ","capability":{"chat":"চ্যাট","embedding":"এম্বেডিং","image":"চিত্র","speech":"বক্তৃতা","transcription":"ট্রান্সক্রিপশন"},"exportPlugin":"প্লাগইন রপ্তানি","deletePlugin":"প্লাগইন মুছুন"},"generation":{"title":"জেনারেশন অপশন","description":"AI কীভাবে প্রতিক্রিয়া তৈরি করে তা কনফিগার করুন","scopeLabel":"প্রযোজ্য","scopeAll":"সব মডেল","scopeModel":"শুধু {{model}}","scopeAllHint":"প্রতিটি মডেল যে মানগুলি ব্যবহার করে, যদি না তার নিজস্ব সেটিং থাকে।","scopeModelHint":"শুধু এই মডেলের জন্য সংরক্ষিত হয় এবং সাধারণ সেটিংসকে অগ্রাহ্য করে।","coreParameters":"কোর প্যারামিটার","temperature":"টেম্পারেচার","temperatureDescription":"র্যান্ডমনেস নিয়ন্ত্রণ করে। কম মান বেশি ফোকাসড, উচ্চ মান বেশি সৃজনশীল।","topP":"Top P","topPDescription":"নিউক্লিয়াস স্যাম্পলিং এর মাধ্যমে বৈচিত্র্য নিয়ন্ত্রণ করে। কম মান সম্ভাব্য টোকেনে ফোকাস করে।","topK":"Top K","topKDescription":"টোকেন নির্বাচন শীর্ষ K সর্বাধিক সম্ভাব্যতে সীমাবদ্ধ করে। নিষ্ক্রিয় করতে 0 সেট করুন।","minP":"Min P","minPDescription":"টোকেন নির্বাচনের জন্য ন্যূনতম সম্ভাব্যতা থ্রেশহোল্ড।","generationControl":"জেনারেশন কন্ট্রোল","maxTokens":"সর্বোচ্চ টোকেন","maxTokensDescription":"প্রতিক্রিয়ায় তৈরি করার সর্বোচ্চ টোকেন সংখ্যা।","repeatPenalty":"রিপিট পেনাল্টি","repeatPenaltyDescription":"পুনরাবৃত্ত টোকেনকে শাস্তি দেয়। উচ্চ মান পুনরাবৃত্তি কমায়।","contextLength":"কনটেক্সট লেংথ","contextLengthDescription":"কথোপকথনের জন্য সর্বোচ্চ কনটেক্সট উইন্ডো সাইজ।","seed":"সিড","optional":"ঐচ্ছিক","random":"র্যান্ডম","seedDescription":"পুনরুৎপাদনযোগ্য আউটপুটের জন্য একটি নির্দিষ্ট সিড সেট করুন।","advancedOptions":"উন্নত অপশন","presencePenalty":"প্রেজেন্স পেনাল্টি","presencePenaltyDescription":"কনটেক্সটে প্রদর্শিত টোকেনকে শাস্তি দেয়।","frequencyPenalty":"ফ্রিকোয়েন্সি পেনাল্টি","frequencyPenaltyDescription":"ঘন ঘন ব্যবহৃত টোকেনকে শাস্তি দেয়।","stopSequences":"স্টপ সিকোয়েন্স","commaSeparated":"কমা দ্বারা পৃথক","stopSequencesDescription":"কাস্টম টোকেন যা পাওয়া গেলে জেনারেশন বন্ধ হবে।","resetDefaults":"ডিফল্টে রিসেট করুন","saveOptions":"অপশন সংরক্ষণ করুন","embeddingSettings":"এমবেডিং সেটিংস","enableEmbeddings":"ডকুমেন্ট এমবেডিং সক্রিয় করুন","advancedSettings":"উন্নত জেনারেশন সেটিংস","advancedSettingsDescription":"স্যাম্পলিং, টোকেন সীমা, কন্টেক্সট, পেনাল্টি এবং স্টপ সিকোয়েন্স"},"documents":{"title":"ডকুমেন্ট সেটিংস","embeddings":{"title":"এমবেডিং","enable":"ডকুমেন্ট এমবেডিং সক্রিয় করুন","model":"এমবেডিং মডেল","modelDescription":"ডকুমেন্ট এমবেডিং এর জন্য ব্যবহৃত মডেল নির্বাচন করুন","chunkSize":"চাংক সাইজ","chunkSizeInTokens":"(টোকেনে)","chunkSizeDescription":"এমবেডিং এর জন্য টেক্সট চাংকের সাইজ","chunkOverlap":"চাংক ওভারল্যাপ","chunkOverlapInTokens":"(টোকেনে)","chunkOverlapDescription":"পরপর চাংকের মধ্যে ওভারল্যাপ","similarityThreshold":"সিমিলারিটি থ্রেশহোল্ড","similarityDescription":"ফলাফল অন্তর্ভুক্ত করার ন্যূনতম সিমিলারিটি স্কোর","status":"এমবেডিং স্ট্যাটাস","statusLabel":"স্ট্যাটাস","available":"উপলব্ধ","unavailable":"অনুপলব্ধ","chunksWithEmbeddings":"এমবেডিং সহ চাংক","coverage":"কভারেজ","regenerate":"এমবেডিং পুনরায় তৈরি করুন","regenerating":"পুনরায় তৈরি হচ্ছে..."},"collections":{"title":"জ্ঞান সংগ্রহ","description":"নথিগুলিকে সংগ্রহে ভাগ করুন এবং যেকোনো চ্যাটে সংযুক্ত করুন।","namePlaceholder":"সংগ্রহের নাম","create":"তৈরি করুন","none":"কোনো সংগ্রহ নেই","deleteConfirm":"এই সংগ্রহটি মুছবেন? ভিতরের নথিগুলি থাকবে।"}},"tts":{"title":"টেক্সট-টু-স্পিচ","description":"বার্তা জোরে পড়ার জন্য টেক্সট-টু-স্পিচ সেটিংস কনফিগার করুন","loadingProviders":"TTS প্রোভাইডার লোড হচ্ছে...","noProviders":"কোনো TTS প্রোভাইডার নেই","noProvidersDescription":"টেক্সট-টু-স্পিচ সক্রিয় করতে TTS সমর্থন সহ একটি প্লাগইন কনফিগার করুন","enable":"TTS সক্রিয় করুন","enableDescription":"সহকারী বার্তার জন্য টেক্সট-টু-স্পিচ অনুমতি দিন","autoPlay":"প্রতিক্রিয়া অটো-প্লে","autoPlayDescription":"স্বয়ংক্রিয়ভাবে নতুন সহকারী বার্তা জোরে পড়ুন","streamSentences":"বাক্য স্ট্রিম করুন","streamSentencesDescription":"সম্পূর্ণ বার্তার জন্য অপেক্ষা না করে বাক্য অনুযায়ী অডিও প্লে করুন। দীর্ঘ বার্তায় টাইমআউট এড়াতে স্থানীয় TTS-এর জন্য প্রস্তাবিত।","voiceConfiguration":"ভয়েস কনফিগারেশন","model":"TTS মডেল","modelDescription":"টেক্সট-টু-স্পিচ জেনারেশনের জন্য মডেল নির্বাচন করুন","voice":"ভয়েস","selectVoice":"একটি ভয়েস নির্বাচন করুন","voiceDescription":"টেক্সট-টু-স্পিচের জন্য ভয়েস বেছে নিন","speed":"গতি","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"উপলব্ধ প্রোভাইডার","models":"মডেল","test":"পরীক্ষা","testing":"পরীক্ষা হচ্ছে...","stop":"বন্ধ"},"imageGen":{"title":"ইমেজ জেনারেশন","description":"ইমেজ জেনারেশন সেটিংস এবং প্রোভাইডার কনফিগার করুন","loadingProviders":"ইমেজ জেনারেশন প্রোভাইডার লোড হচ্ছে...","noProviders":"কোনো ইমেজ জেনারেশন প্রোভাইডার নেই","noProvidersDescription":"ইমেজ জেনারেশন সমর্থন সহ একটি প্লাগইন কনফিগার করুন","enable":"ইমেজ জেনারেশন সক্রিয় করুন","enableDescription":"কথোপকথনে AI ইমেজ জেনারেশন অনুমতি দিন","configuration":"কনফিগারেশন","model":"মডেল","modelDescription":"ইমেজ জেনারেশনের জন্য মডেল নির্বাচন করুন","size":"সাইজ","sizeDescription":"তৈরি ইমেজের রেজোলিউশন","quality":"কোয়ালিটি","qualityDescription":"তৈরি ইমেজের কোয়ালিটি লেভেল","style":"স্টাইল","styleDescription":"তৈরি ইমেজের স্টাইল প্রিসেট","availableProviders":"উপলব্ধ প্রোভাইডার","models":"মডেল"},"data":{"title":"ডেটা ম্যানেজমেন্ট","export":"ডেটা এক্সপোর্ট","exportDescription":"পছন্দ, সেশন এবং ডকুমেন্ট সহ আপনার সব ডেটা ডাউনলোড করুন।","exportAll":"সব ডেটা এক্সপোর্ট করুন","import":"ডেটা ইম্পোর্ট","importDescription":"পূর্ববর্তী এক্সপোর্ট থেকে ডেটা ইম্পোর্ট করুন।","importData":"ডেটা ইম্পোর্ট করুন","importing":"ইম্পোর্ট হচ্ছে...","clearSessions":"সেশন মুছুন","clearSessionsDescription":"সব চ্যাট সেশন মুছুন। এই ক্রিয়া পূর্বাবস্থায় ফেরানো যাবে না।","clearAll":"সব মুছুন","clearing":"মোছা হচ্ছে...","importOptions":"ইম্পোর্ট অপশন","importOptionsDescription":"বিদ্যমান ডেটা কীভাবে হ্যান্ডেল করতে হবে তা বেছে নিন","skipDuplicates":"ডুপ্লিকেট স্কিপ করুন","overwrite":"বিদ্যমান ওভাররাইট করুন","importResults":"ইম্পোর্ট ফলাফল","preferences":"পছন্দসমূহ","imported":"ইম্পোর্ট করা হয়েছে","failed":"ব্যর্থ","sessions":"সেশন","importedLabel":"ইম্পোর্ট করা হয়েছে","skipped":"স্কিপ করা হয়েছে","documents":"ডকুমেন্ট","errors":"ত্রুটি","archivedChats":{"title":"সংরক্ষণাগারভুক্ত চ্যাট","empty":"কোনো সংরক্ষণাগারভুক্ত চ্যাট নেই","unarchive":"সংরক্ষণাগার থেকে সরান"}},"about":{"title":"সম্পর্কে","versionLabel":"সংস্করণ","ollama":{"title":"Ollama স্ট্যাটাস","version":"সংস্করণ","healthy":"সুস্থ","unhealthy":"অসুস্থ"},"stats":{"models":"মডেল","sessions":"সেশন"},"features":{"privacy":{"title":"গোপনীয়তা প্রথমে","description":"আপনার ডেটা আপনার ডিভাইসে থাকে"},"openSource":{"title":"ওপেন সোর্স","description":"বিনামূল্যে এবং ওপেন সোর্স সফটওয়্যার"},"localInference":{"title":"লোকাল ইনফারেন্স","description":"Ollama দিয়ে স্থানীয়ভাবে AI মডেল চালান"}},"openSourceBy":"{{company}} দ্বারা ওপেন সোর্স","links":{"title":"লিংক","github":"GitHub","githubDescription":"সোর্স কোড দেখুন এবং অবদান রাখুন","website":"ওয়েবসাইট","websiteDescription":"আমাদের ওয়েবসাইট দেখুন","ollama":"Ollama","ollamaDescription":"Ollama সম্পর্কে আরও জানুন","documentation":"Documentation","reportIssue":"সমস্যা রিপোর্ট করুন","reportIssueDescription":"বাগ রিপোর্ট এবং ফিচার অনুরোধ","gitlab":"GitLab Mirror","gitlabDescription":"Self-hosted GitLab repository","documentationDescription":"Guides, tutorials and API reference"},"version":"সংস্করণ {{version}}"},"groups":{"general":"সাধারণ","chat":"চ্যাট","media":"কণ্ঠ ও ছবি","connections":"সংযোগ"}}`),models:{title:`মডেল`,subtitle:`আপনার Ollama মডেল পুল, পরিচালনা এবং মনিটর করুন`,installed:`ইনস্টল করা মডেল`,available:`উপলব্ধ মডেল`,pull:`মডেল পুল করুন`,pulling:`পুল হচ্ছে...`,delete:`মডেল মুছুন`,deleting:`মোছা হচ্ছে...`,size:`সাইজ`,modified:`পরিবর্তিত`,family:`ফ্যামিলি`,parameters:`প্যারামিটার`,quantization:`কোয়ান্টাইজেশন`,noModels:`কোনো মডেল ইনস্টল করা নেই`,pullFirst:`শুরু করতে একটি মডেল পুল করুন`,noModelsFound:`কোনো মডেল পাওয়া যায়নি`},personas:{title:`পার্সোনা`,create:`পার্সোনা তৈরি করুন`,edit:`পার্সোনা সম্পাদনা করুন`,delete:`পার্সোনা মুছুন`,name:`নাম`,description:`বিবরণ`,systemPrompt:`সিস্টেম প্রম্পট`,model:`মডেল`,avatar:`অবতার`,background:`ব্যাকগ্রাউন্ড`,noPersonas:`কোনো পার্সোনা তৈরি করা হয়নি`,createFirst:`আপনার চ্যাট অভিজ্ঞতা কাস্টমাইজ করতে আপনার প্রথম পার্সোনা তৈরি করুন`},gallery:{title:`গ্যালারি`,subtitle:`আপনার AI-তৈরি ইমেজ গ্যালারি`,imageCount:`{{count}}টি ইমেজ`,generate:`ইমেজ তৈরি করুন`,generateDescription:`AI দিয়ে ইমেজ তৈরি করুন`,generating:`তৈরি হচ্ছে...`,prompt:`প্রম্পট`,promptPlaceholder:`আপনি যে ইমেজ তৈরি করতে চান তা বর্ণনা করুন...`,noImages:`এখনও কোনো ইমেজ তৈরি হয়নি`,download:`ডাউনলোড`,delete:`মুছুন`,regenerate:`পুনরায় তৈরি করুন`,model:`মডেল`,size:`সাইজ`,quality:`কোয়ালিটি`,created:`তৈরি করা হয়েছে`},errors:{generic:`একটি ত্রুটি ঘটেছে`,network:`নেটওয়ার্ক ত্রুটি। আপনার সংযোগ পরীক্ষা করুন।`,unauthorized:`এই ক্রিয়া সম্পাদন করার অনুমতি নেই।`,notFound:`অনুরোধকৃত রিসোর্স পাওয়া যায়নি।`,serverError:`সার্ভার ত্রুটি। পরে আবার চেষ্টা করুন।`,validation:`আপনার ইনপুট পরীক্ষা করুন এবং আবার চেষ্টা করুন।`},keyboard:{title:`কীবোর্ড শর্টকাট`,toggleSidebar:`সাইডবার টগল করুন`,openSettings:`সেটিংস খুলুন`,toggleDarkMode:`ডার্ক মোড টগল করুন`,showShortcuts:`কীবোর্ড শর্টকাট দেখান`,closeModals:`মোডাল বন্ধ করুন`,groups:{navigation:`নেভিগেশন`,general:`সাধারণ`,chat:`চ্যাট`,workspace:`ওয়ার্কস্পেস`},actions:{sendMessage:`বার্তা পাঠান`,newLine:`বার্তায় নতুন লাইন`,saveEdit:`সম্পাদিত বার্তা সংরক্ষণ করুন`,cancelEdit:`সম্পাদনা বাতিল করুন`,saveFile:`ফাইল সংরক্ষণ করুন`,formatCode:`কোড ফরম্যাট করুন`},description:`Libre WebUI-তে উপলব্ধ সব কীবোর্ড শর্টকাট।`,newChat:`নতুন চ্যাট`,newWork:`নতুন Work সেশন`,openPalette:`কমান্ড প্যালেট খুলুন`},modelManager:{title:`মডেল`,loading:`মডেল লোড হচ্ছে...`,systemStatus:{online:`Ollama অনলাইন`,offline:`Ollama অফলাইন`,models:`মডেল`,models_plural:`মডেল`,running:`চলমান`,vram:`VRAM`},sections:{pull:`নতুন মডেল পুল করুন`,library:`লাইব্রেরি ব্রাউজ করুন`,running:`চলমান মডেল`,local:`লোকাল মডেল`,advanced:`উন্নত অ্যাকশন`,huggingface:`HuggingFace Hub`},pull:{placeholder:`মডেলের নাম লিখুন (যেমন llama3.2:3b, deepseek-r1:14b)`,button:`পুল`,cancel:`বাতিল`,popular:`জনপ্রিয় মডেল:`,browseAll:`ollama.com এ সব মডেল ব্রাউজ করুন`,success:`মডেল {{name}} সফলভাবে পুল করা হয়েছে`,cancelled:`মডেল পুল বাতিল করা হয়েছে`,failed:`মডেল পুল করতে ব্যর্থ`,enterName:`অনুগ্রহ করে একটি মডেলের নাম লিখুন`,restricted:`এই ইনস্ট্যান্সে মডেল ইনস্টলেশন শুধুমাত্র অ্যাডমিনদের জন্য সীমাবদ্ধ।`},progress:{starting:`শুরু হচ্ছে...`,pulling:`মডেল ডাউনলোড হচ্ছে...`,pullingLayer:`ডাউনলোড হচ্ছে`,verifying:`অখণ্ডতা যাচাই হচ্ছে...`,verifyingDigest:`sha256 ডাইজেস্ট যাচাই হচ্ছে`,writing:`ম্যানিফেস্ট লেখা হচ্ছে...`,cleaning:`পরিষ্কার করা হচ্ছে...`},library:{available:`উপলব্ধ`,search:`মডেল অনুসন্ধান করুন...`,noResults:`আপনার মানদণ্ডের সাথে মিলে যায় এমন কোনো মডেল পাওয়া যায়নি`,installed:`ইনস্টল করা`,more:`+{{count}} আরও`,refresh:`লাইব্রেরি রিফ্রেশ করুন`},local:{noModels:`এখনও কোনো মডেল ইনস্টল করা হয়নি`,pullToStart:`শুরু করতে উপরে একটি মডেল পুল করুন`,installed:`ইনস্টল করা`,running:`চলমান`,info:`তথ্য`,copy:`কপি`,delete:`মুছুন`,deleteConfirm:`আপনি কি মডেল "{{name}}" মুছতে চান?`,deleteSuccess:`মডেল {{name}} সফলভাবে মোছা হয়েছে`,deleteFailed:`মডেল মুছতে ব্যর্থ`},advanced:{createModel:`মডেল তৈরি করুন`,fromModelfile:`Modelfile থেকে`,copyModel:`মডেল কপি করুন`,duplicateExisting:`বিদ্যমান ডুপ্লিকেট করুন`,testEmbeddings:`এমবেডিং পরীক্ষা করুন`,generateVectors:`ভেক্টর তৈরি করুন`,healthCheck:`হেলথ চেক`,testConnection:`সংযোগ পরীক্ষা করুন`,healthy:`Ollama সুস্থ!`},modals:{details:{title:`মডেল বিবরণ`,info:`মডেল তথ্য`,family:`ফ্যামিলি`,parameters:`প্যারামিটার`,quantization:`কোয়ান্টাইজেশন`,format:`ফরম্যাট`,systemPrompt:`সিস্টেম প্রম্পট`,template:`টেমপ্লেট`,license:`লাইসেন্স`,modelfile:`Modelfile`,noDetails:`কোনো বিবরণ উপলব্ধ নেই`},copy:{title:`মডেল কপি করুন`,source:`সোর্স মডেল`,selectModel:`একটি মডেল নির্বাচন করুন...`,newName:`নতুন মডেল নাম`,placeholder:`যেমন my-custom-model`,copying:`কপি হচ্ছে...`,button:`মডেল কপি করুন`,success:`মডেল {{name}} এ কপি করা হয়েছে`,failed:`মডেল কপি করতে ব্যর্থ`,enterBoth:`অনুগ্রহ করে সোর্স এবং ডেস্টিনেশন উভয় নাম লিখুন`},create:{title:`কাস্টম মডেল তৈরি করুন`,name:`মডেল নাম`,namePlaceholder:`যেমন my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
|
|
2
2
|
SYSTEM You are a helpful assistant.`,see:`দেখুন`,docs:`Modelfile ডকস`,docsLink:`সিনট্যাক্স রেফারেন্সের জন্য`,creating:`তৈরি হচ্ছে...`,button:`মডেল তৈরি করুন`,success:`মডেল {{name}} সফলভাবে তৈরি হয়েছে`,failed:`মডেল তৈরি করতে ব্যর্থ`,enterBoth:`অনুগ্রহ করে মডেল নাম এবং Modelfile কন্টেন্ট লিখুন`},embeddings:{title:`এমবেডিং পরীক্ষা করুন`,model:`এমবেডিং মডেল`,selectModel:`একটি মডেল নির্বাচন করুন...`,recommended:`সুপারিশকৃত: nomic-embed-text, mxbai-embed-large`,input:`ইনপুট টেক্সট`,placeholder:`এমবেডিং তৈরির জন্য টেক্সট লিখুন...`,generating:`তৈরি হচ্ছে...`,button:`এমবেডিং তৈরি করুন`,result:`ফলাফল ({{count}} মাত্রা)`,success:`{{count}}-মাত্রার এমবেডিং ভেক্টর তৈরি হয়েছে`,failed:`এমবেডিং তৈরি করতে ব্যর্থ`,enterBoth:`অনুগ্রহ করে একটি মডেল নির্বাচন করুন এবং টেক্সট লিখুন`}},huggingface:{browseAll:`HuggingFace-এ সব দেখুন`,checkingGguf:`GGUF ফাইল খোঁজা হচ্ছে...`,noGgufAvailable:`সরাসরি Ollama পুলের জন্য কোনো GGUF ফাইল নেই`,ggufFilesCount:`GGUF ফাইল ({{count}}) - সরাসরি Ollama-তে পুল করুন`,noModelsFound:`কোনো মডেল পাওয়া যায়নি`,noResults:`কোনো মডেল পাওয়া যায়নি। আপনার অনুসন্ধান বা ফিল্টার পরিবর্তন করুন।`,browseAllLink:`সব দেখুন`,search:`HuggingFace মডেল খুঁজুন...`,by:`দ্বারা`,gated:`সীমাবদ্ধ অ্যাক্সেস`,viewOnHF:`HuggingFace-এ দেখুন`,sortDownloads:`ডাউনলোড`,sortLikes:`লাইক`,sortRecent:`সাম্প্রতিক`,taskTextGeneration:`টেক্সট জেনারেশন`,taskTextToSpeech:`টেক্সট টু স্পিচ`,taskTextToImage:`টেক্সট টু ইমেজ`,taskSpeechRecognition:`স্পিচ রিকগনিশন`,tasks:{textGen:`টেক্সট জেনারেশন`,tts:`টেক্সট টু স্পিচ`,image:`টেক্সট টু ইমেজ`,stt:`স্পিচ রিকগনিশন`},sort:{downloads:`সর্বাধিক ডাউনলোড`,likes:`সর্বাধিক জনপ্রিয়`,recent:`সম্প্রতি আপডেট`}}},personaManager:{title:`পার্সোনা`,subtitle:`কাস্টম ব্যক্তিত্ব, স্মৃতি এবং আচরণ সহ AI পার্সোনা তৈরি এবং পরিচালনা করুন`,loading:`পার্সোনা লোড হচ্ছে...`,createButton:`পার্সোনা তৈরি করুন`,importExport:`ইম্পোর্ট/এক্সপোর্ট`,stats:{title:`আপনার পার্সোনা`,count:`{{count}}টি পার্সোনা তৈরি হয়েছে`,count_plural:`{{count}}টি পার্সোনা তৈরি হয়েছে`},empty:{title:`এখনও কোনো পার্সোনা নেই`,description:`ব্যক্তিগতকৃত AI ইন্টারঅ্যাকশন শুরু করতে আপনার প্রথম পার্সোনা তৈরি করুন`,button:`আপনার প্রথম পার্সোনা তৈরি করুন`},deleteConfirm:`আপনি কি "{{name}}" মুছতে চান?`,deleteSuccess:`পার্সোনা "{{name}}" সফলভাবে মোছা হয়েছে`,downloadSuccess:`পার্সোনা "{{name}}" সফলভাবে ডাউনলোড হয়েছে`,failed:`পার্সোনা {{action}} করতে ব্যর্থ`},personaForm:{title:{create:`নতুন পার্সোনা তৈরি করুন`,edit:`পার্সোনা সম্পাদনা করুন`},subtitle:{create:`কাস্টম ব্যক্তিত্ব, মেমরি সিস্টেম এবং অ্যাডাপ্টিভ লার্নিং ক্ষমতা সহ একটি নতুন AI পার্সোনা তৈরি করুন`,edit:`উন্নত মেমরি, অ্যাডাপ্টিভ লার্নিং এবং বুদ্ধিমান প্যারামিটার সহ আপনার AI পার্সোনা কাস্টমাইজ করুন`},loading:`ফর্ম লোড হচ্ছে...`,saved:`সংরক্ষিত`,tabs:{basic:`মৌলিক`,parameters:`প্যারামিটার`,memory:`মেমরি এবং লার্নিং`,advanced:`উন্নত`},basic:{name:`নাম`,namePlaceholder:`পার্সোনার নাম লিখুন`,model:`মডেল`,selectModel:`একটি মডেল নির্বাচন করুন`,description:`বিবরণ`,descriptionPlaceholder:`আপনার পার্সোনা বর্ণনা করুন...`,systemPrompt:`সিস্টেম প্রম্পট`,systemPromptPlaceholder:`আপনার পার্সোনার আচরণ সংজ্ঞায়িত করে এমন সিস্টেম প্রম্পট লিখুন...`,systemPromptHint:`সিস্টেম প্রম্পট নির্ধারণ করে আপনার পার্সোনা কীভাবে আচরণ করবে এবং প্রতিক্রিয়া জানাবে।`},parameters:{temperature:`টেম্পারেচার`,temperatureHint:`সৃজনশীলতা বনাম ধারাবাহিকতা নিয়ন্ত্রণ করে`,topP:`Top-P`,topPHint:`প্রতিক্রিয়া বৈচিত্র্য নিয়ন্ত্রণ করে`,topK:`Top-K`,topKHint:`শব্দভান্ডার শীর্ষ-k টোকেনে সীমাবদ্ধ করে`,contextWindow:`কনটেক্সট উইন্ডো`,contextWindowHint:`সর্বোচ্চ কথোপকথন ইতিহাসের দৈর্ঘ্য`,maxTokens:`সর্বোচ্চ টোকেন`,maxTokensHint:`সর্বোচ্চ প্রতিক্রিয়ার দৈর্ঘ্য`,repeatPenalty:`রিপিট পেনাল্টি`,repeatPenaltyHint:`পুনরাবৃত্তিমূলক প্রতিক্রিয়া কমায়`},memory:{title:`মেমরি সিস্টেম`,subtitle:`পার্সোনা সময়ের সাথে কথোপকথন মনে রাখে`,enableHint:`আপনার পার্সোনাকে কথোপকথন মনে রাখতে এবং সময়ের সাথে কনটেক্সট তৈরি করতে মেমরি সিস্টেম সক্রিয় করুন।`,loading:`মেমরি স্ট্যাটাস লোড হচ্ছে...`,noData:`এখনও কোনো মেমরি ডেটা নেই`,memories:`স্মৃতি`,mbUsed:`MB ব্যবহৃত`,lastBackup:`শেষ ব্যাকআপ`,never:`কখনো না`,maxMemories:`সর্বোচ্চ স্মৃতি`,maxMemoriesHint:`এই পার্সোনা কতগুলি স্মৃতি সংরক্ষণ করতে পারে`,retention:`মেমরি রিটেনশন`,retentionHint:`ক্লিনআপের আগে স্মৃতি রাখার দিন`,autoCleanup:`পুরানো স্মৃতি স্বয়ংক্রিয়-ক্লিনআপ`,wipeAll:`সব স্মৃতি মুছুন`,wipeCannot:`এটি পূর্বাবস্থায় ফেরানো যাবে না`,wipeButton:`মুছুন`,wiping:`মোছা হচ্ছে...`,wipeConfirm:`আপনি কি সব স্মৃতি মুছতে চান? এটি পূর্বাবস্থায় ফেরানো যাবে না।`,wipeSuccess:`{{count}}টি স্মৃতি মোছা হয়েছে`},learning:{title:`অ্যাডাপ্টিভ লার্নিং`,subtitle:`পার্সোনা ইন্টারঅ্যাকশনের উপর ভিত্তি করে বিকশিত হয়`,enableHint:`আপনার পার্সোনাকে আপনার ইন্টারঅ্যাকশনের উপর ভিত্তি করে বিকশিত এবং প্রতিক্রিয়া ব্যক্তিগতকৃত করতে অ্যাডাপ্টিভ লার্নিং সক্রিয় করুন।`,speed:`লার্নিং স্পিড`,slow:`ধীর`,slowDesc:`ধীরে ধীরে পরিবর্তন`,balanced:`সুষম`,balancedDesc:`মাঝারি গতি`,fast:`দ্রুত`,fastDesc:`দ্রুত অভিযোজন`,autoAdapt:`ব্যবহারকারীর পছন্দে স্বয়ং-অভিযোজিত`,whatLearns:`পার্সোনা যা শেখে:`,conversationTone:`কথোপকথনের স্বর`,responseStyle:`প্রতিক্রিয়া শৈলী`,userPreferences:`ব্যবহারকারীর পছন্দ`,topicInterests:`বিষয় আগ্রহ`},advanced:{embeddingModel:`এমবেডিং মডেল`,embeddingHint:`মেমরি এনকোডিং এবং সেমান্টিক সার্চের জন্য ব্যবহৃত মডেল নির্বাচন করুন। এমবেডিং মডেলগুলি প্রথমে দেখানো হয়, তারপর অন্যান্য উপলব্ধ মডেল।`,noModels:`কোনো মডেল পাওয়া যায়নি`,embeddingModels:`এমবেডিং মডেল`,otherModels:`অন্যান্য মডেল`,installHint:`একটি এমবেডিং মডেল ইনস্টল করুন:`,recommended:`সুপারিশকৃত: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed`,aboutTitle:`উন্নত সেটিংস সম্পর্কে`,aboutDescription:`এমবেডিং মডেল মেমরি সিস্টেম দ্বারা সেমান্টিক অর্থ বোঝতে এবং কথোপকথনের সময় প্রাসঙ্গিক স্মৃতি খুঁজে পেতে ব্যবহৃত হয়। আপনার ব্যবহারের ক্ষেত্রে এবং উপলব্ধ রিসোর্সের সাথে মেলে এমন একটি মডেল বেছে নিন।`},actions:{cancel:`বাতিল`,save:`সংরক্ষণ`,saving:`সংরক্ষণ হচ্ছে...`,saveClose:`সংরক্ষণ এবং বন্ধ`,create:`তৈরি করুন`},success:{created:`পার্সোনা তৈরি হয়েছে`,updated:`পার্সোনা আপডেট হয়েছে`},error:{saveFailed:`সংরক্ষণ করতে ব্যর্থ`}},personaCard:{enhanced:`উন্নত`,systemPrompt:`সিস্টেম প্রম্পট`,memories:`স্মৃতি`,use:`ব্যবহার করুন`,editTooltip:`পার্সোনা সম্পাদনা করুন`,downloadTooltip:`পার্সোনা ডাউনলোড করুন`,backup:`ব্যাকআপ`,exportDNA:`DNA এক্সপোর্ট করুন`,wipeMemories:`স্মৃতি মুছুন`,wipeConfirm:`আপনি কি এই পার্সোনার সব স্মৃতি মুছতে চান? এই ক্রিয়া পূর্বাবস্থায় ফেরানো যাবে না।`,wipeSuccess:`{{count}}টি স্মৃতি মোছা হয়েছে`,backupSuccess:`পার্সোনা ব্যাকআপ সফলভাবে ডাউনলোড হয়েছে`,dnaSuccess:`পার্সোনা DNA সফলভাবে এক্সপোর্ট হয়েছে`,failed:`{{action}} করতে ব্যর্থ`},userManager:{title:`ব্যবহারকারী ব্যবস্থাপনা`,subtitle:`ব্যবহারকারী অ্যাকাউন্ট এবং অনুমতি পরিচালনা করুন`,pageDescription:`আপনার Libre WebUI ইনস্ট্যান্সের জন্য ব্যবহারকারী অ্যাকাউন্ট, অনুমতি এবং অ্যাক্সেস নিয়ন্ত্রণ পরিচালনা করুন।`,loading:`ব্যবহারকারী লোড হচ্ছে...`,createUser:`ব্যবহারকারী তৈরি করুন`,search:`ব্যবহারকারী অনুসন্ধান করুন...`,noUsers:`কোনো ব্যবহারকারী পাওয়া যায়নি`,noUsersMatching:`আপনার অনুসন্ধানের সাথে মিলে যায় এমন কোনো ব্যবহারকারী নেই`,columns:{user:`ব্যবহারকারী`,email:`ইমেইল`,role:`ভূমিকা`,created:`তৈরি করা হয়েছে`,actions:`অ্যাকশন`},roles:{admin:`অ্যাডমিন`,user:`ব্যবহারকারী`},noEmail:`কোনো ইমেইল নেই`,deleteConfirm:`আপনি কি ব্যবহারকারী "{{name}}" মুছতে চান?`,deleteSuccess:`ব্যবহারকারী সফলভাবে মোছা হয়েছে`,deleteFailed:`ব্যবহারকারী মুছতে ব্যর্থ`,cannotDeleteSelf:`আপনি নিজের অ্যাকাউন্ট মুছতে পারবেন না`,form:{title:{create:`ব্যবহারকারী তৈরি করুন`,edit:`ব্যবহারকারী সম্পাদনা করুন`},username:`ব্যবহারকারীর নাম`,usernamePlaceholder:`ব্যবহারকারীর নাম লিখুন`,email:`ইমেইল`,emailPlaceholder:`ইমেইল লিখুন (ঐচ্ছিক)`,password:`পাসওয়ার্ড`,passwordPlaceholder:`পাসওয়ার্ড লিখুন`,passwordHint:`বর্তমান পাসওয়ার্ড রাখতে খালি রাখুন`,role:`ভূমিকা`,creating:`তৈরি হচ্ছে...`,updating:`আপডেট হচ্ছে...`,createButton:`ব্যবহারকারী তৈরি করুন`,updateButton:`ব্যবহারকারী আপডেট করুন`,createSuccess:`ব্যবহারকারী সফলভাবে তৈরি হয়েছে`,updateSuccess:`ব্যবহারকারী সফলভাবে আপডেট হয়েছে`,createFailed:`ব্যবহারকারী তৈরি করতে ব্যর্থ`,updateFailed:`ব্যবহারকারী আপডেট করতে ব্যর্থ`},approval:{title:`অপেক্ষমাণ অনুমোদন`,description:`এই ইনস্ট্যান্সে প্রবেশের অনুমতি দেওয়ার আগে নতুন নিবন্ধনগুলি পর্যালোচনা করুন।`,registered:`নিবন্ধিত`,activate:`অ্যাকাউন্ট সক্রিয় করুন`,reject:`নিবন্ধন প্রত্যাখ্যান করুন`,approved:`{{name}} এখন সাইন ইন করতে পারবেন।`,failed:`অ্যাকাউন্টটি অনুমোদন করা যায়নি।`,notification:`{{count}}টি নিবন্ধন আপনার অনুমোদনের অপেক্ষায় আছে।`,notificationBadge:`{{count}}টি অপেক্ষমাণ ব্যবহারকারী অনুমোদন`}},chatHistory:{label:`কথোপকথনের ইতিহাস`,jumpToTurn:`পর্ব {{index}} / {{total}}-এ যান`},chatMessage:{you:`আপনি`,assistant:`সহকারী`,system:`সিস্টেম`,copy:`কপি`,copyMessage:`বার্তা কপি করুন`,copied:`কপি হয়েছে!`,regenerate:`পুনরায় তৈরি করুন`,regenerateResponse:`প্রতিক্রিয়া পুনরায় তৈরি করুন`,edit:`সম্পাদনা`,editSystemMessage:`সিস্টেম বার্তা সম্পাদনা করুন`,saveChanges:`পরিবর্তন সংরক্ষণ করুন`,cancelEditing:`সম্পাদনা বাতিল করুন`,saveAndSubmit:`সংরক্ষণ ও পাঠান`,goodResponse:`ভালো উত্তর`,badResponse:`খারাপ উত্তর`,delete:`মুছুন`,deleteConfirm:`এই বার্তা মুছবেন?`,branch:`ব্রাঞ্চ`,speaking:`বলছে...`,speakMessage:`বার্তা বলুন`,stopSpeaking:`বলা বন্ধ করুন`,showMore:`আরও দেখান`,showLess:`কম দেখান`,thinking:`চিন্তা করছে`,thoughtFor:`{{duration}} ধরে ভেবেছে`,hiddenLines:`লুকানো লাইন: {{count}}`,systemMessagePlaceholder:`আপনার সিস্টেম বার্তা লিখুন...`,fullSizeImage:`পূর্ণ সাইজ ইমেজ`,startConversation:`একটি কথোপকথন শুরু করুন`,startConversationDescription:`আপনার AI সহকারীর সাথে চ্যাট শুরু করতে একটি বার্তা পাঠান। প্রশ্ন করুন, কোডে সাহায্য পান, বা একটি স্বাভাবিক কথোপকথন করুন।`,scrollToBottom:`নিচে স্ক্রোল করুন`,newMessages:`নতুন বার্তা`},imageGallery:{title:`ইমেজ গ্যালারি`,noImages:`এখনও কোনো ইমেজ নেই`,noImagesHint:`ডানদিকের প্যানেল ব্যবহার করে আপনার প্রথম ইমেজ তৈরি করুন`,delete:`মুছুন`,download:`ডাউনলোড`,deleteConfirm:`আপনি কি এই ইমেজ মুছতে চান?`,deleteSuccess:`ইমেজ মোছা হয়েছে`,deleteFailed:`ইমেজ মুছতে ব্যর্থ`,downloadFailed:`ইমেজ ডাউনলোড করতে ব্যর্থ`,loadMore:`আরও লোড করুন ({{current}} এর মধ্যে {{total}})`,loadFailed:`গ্যালারি লোড করতে ব্যর্থ`},imageGeneration:{title:`ইমেজ তৈরি করুন`,prompt:`প্রম্পট`,promptPlaceholder:`আপনি যে ইমেজ তৈরি করতে চান তা বর্ণনা করুন...`,model:`মডেল`,selectModel:`মডেল নির্বাচন করুন`,noModels:`কোনো ইমেজ জেনারেশন মডেল উপলব্ধ নেই`,configurePlugin:`ইমেজ জেনারেশন সমর্থন সহ একটি প্লাগইন কনফিগার করুন`,size:`সাইজ`,quality:`কোয়ালিটি`,style:`স্টাইল`,generate:`তৈরি করুন`,generating:`তৈরি হচ্ছে...`,success:`ইমেজ সফলভাবে তৈরি হয়েছে`,failed:`ইমেজ তৈরি করতে ব্যর্থ`,enterPrompt:`অনুগ্রহ করে একটি প্রম্পট লিখুন`,promptTooLong:`প্রম্পট সর্বোচ্চ {{max}} অক্ষরের সীমা অতিক্রম করেছে`},errorBoundary:{title:`কিছু ভুল হয়েছে`,description:`আমরা একটি অপ্রত্যাশিত ত্রুটির সম্মুখীন হয়েছি। অনুগ্রহ করে পেজ রিফ্রেশ করুন।`,tryAgain:`পেজ রিফ্রেশ করুন`,goHome:`হোমে যান`,errorDetails:`ত্রুটির বিবরণ (ডেভেলপমেন্ট)`},documents:{title:`ডকুমেন্ট`,upload:`ডকুমেন্ট আপলোড করুন`,uploading:`আপলোড হচ্ছে...`,noDocuments:`কোনো ডকুমেন্ট আপলোড করা হয়নি`,uploadHint:`আপনার কথোপকথনে ব্যবহার করতে ডকুমেন্ট আপলোড করুন`,delete:`মুছুন`,deleteConfirm:`আপনি কি এই ডকুমেন্ট মুছতে চান?`,deleteSuccess:`ডকুমেন্ট মোছা হয়েছে`,deleteFailed:`ডকুমেন্ট মুছতে ব্যর্থ`,uploadSuccess:`ডকুমেন্ট সফলভাবে আপলোড হয়েছে`,uploadFailed:`ডকুমেন্ট আপলোড করতে ব্যর্থ`,types:`সমর্থিত: PDF, TXT, MD, DOCX`,unsupportedFileType:`শুধুমাত্র PDF এবং TXT ফাইল সমর্থিত`,fileSizeTooLarge:`ফাইল সাইজ ১০MB এর কম হতে হবে`,uploadSuccessWithName:`ডকুমেন্ট "{{name}}" সফলভাবে আপলোড হয়েছে`,removeSuccess:`ডকুমেন্ট সফলভাবে সরানো হয়েছে`,removeFailed:`ডকুমেন্ট সরাতে ব্যর্থ`,removeError:`ডকুমেন্ট সরানোর সময় একটি ত্রুটি ঘটেছে`,clickToUpload:`আপলোড করতে ক্লিক করুন`,orDragAndDrop:`অথবা টেনে আনুন`,fileTypesAndSize:`১০MB পর্যন্ত PDF বা TXT ফাইল`,uploadedDocuments:`আপলোড করা ডকুমেন্ট`,removeDocument:`ডকুমেন্ট সরান`},ttsButton:{speak:`বলুন`,stop:`বন্ধ`,speaking:`বলছে...`,generateFailed:`স্পিচ তৈরি করতে ব্যর্থ`,playbackFailed:`অডিও প্লেব্যাক ব্যর্থ`,stopSpeaking:`বলা বন্ধ করুন`,generatingSpeech:`স্পিচ তৈরি হচ্ছে...`,readAloud:`জোরে পড়ুন`},artifacts:{title:`আর্টিফ্যাক্ট`,code:`কোড`,preview:`প্রিভিউ`,copy:`কোড কপি করুন`,copied:`কপি হয়েছে!`,download:`ডাউনলোড`,expand:`প্রসারিত করুন`,collapse:`সংকুচিত করুন`,openInNewTab:`নতুন ট্যাবে খুলুন`,invalidSvg:`অবৈধ SVG কন্টেন্ট`,invalidJson:`অবৈধ JSON কন্টেন্ট`,previewMode:`প্রিভিউ মোড`,codeMode:`কোড মোড`,copyContent:`কন্টেন্ট কপি করুন`,openInPanel:`প্যানেলে খুলুন`,openInNewWindow:`নতুন উইন্ডোতে খুলুন`,created:`তৈরি করা হয়েছে`,closePanelEsc:`প্যানেল বন্ধ করুন (Esc)`,copyButton:`কপি`,open:`খুলুন`,dragEdgeToResize:`সাইজ পরিবর্তন করতে প্রান্ত টানুন`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`সংস্করণ {{current}} / {{total}}`,previousVersion:`পূর্ববর্তী সংস্করণ`,nextVersion:`পরবর্তী সংস্করণ`},personaImportExport:{title:`পার্সোনা ইম্পোর্ট এবং এক্সপোর্ট`,description:`শেয়ার করতে আপনার পার্সোনা এক্সপোর্ট করুন বা অন্যদের থেকে পার্সোনা ইম্পোর্ট করুন`,exportPersonas:`পার্সোনা এক্সপোর্ট করুন`,importPersonas:`পার্সোনা ইম্পোর্ট করুন`,noPersonasToExport:`এক্সপোর্ট করার জন্য কোনো পার্সোনা নেই`,personasAvailable:`{{count}}টি পার্সোনা উপলব্ধ`,personasAvailable_plural:`{{count}}টি পার্সোনা উপলব্ধ`,exportAll:`সব এক্সপোর্ট করুন`,uploadJsonFile:`JSON ফাইল আপলোড করুন`,pasteJsonLabel:`JSON ডেটা পেস্ট করুন`,pasteJsonPlaceholder:`এখানে পার্সোনা JSON ডেটা পেস্ট করুন...`,importing:`ইম্পোর্ট হচ্ছে...`,importButton:`পার্সোনা ইম্পোর্ট করুন`,expectedFormat:`প্রত্যাশিত JSON ফরম্যাট:`,exportSuccess:`পার্সোনা "{{name}}" সফলভাবে এক্সপোর্ট হয়েছে`,exportFailed:`পার্সোনা এক্সপোর্ট করতে ব্যর্থ`,exportAllSuccess:`সব {{count}}টি পার্সোনা সফলভাবে এক্সপোর্ট হয়েছে`,exportAllFailed:`পার্সোনা এক্সপোর্ট করতে ব্যর্থ`,pasteJsonData:`অনুগ্রহ করে পার্সোনা JSON ডেটা পেস্ট করুন`,importMultipleSuccess:`{{count}}টি পার্সোনা সফলভাবে ইম্পোর্ট হয়েছে`,importMultipleFailed:`{{count}}টি পার্সোনা ইম্পোর্ট করতে ব্যর্থ`,importNoneFailed:`কোনো পার্সোনা ইম্পোর্ট করতে ব্যর্থ`,importSuccess:`পার্সোনা সফলভাবে ইম্পোর্ট হয়েছে`,importFailed:`পার্সোনা ইম্পোর্ট করতে ব্যর্থ`},generationStats:{details:`বিবরণ`,promptTokens:`প্রম্পট টোকেন:`,generatedTokens:`তৈরি টোকেন:`,totalTokens:`মোট টোকেন:`,speed:`গতি:`,promptEval:`প্রম্পট মূল্যায়ন:`,generation:`জেনারেশন:`,modelLoad:`মডেল লোড:`,totalTime:`মোট সময়:`,generatedAt:`তৈরির সময়:`},userMenu:{loggedOut:`সফলভাবে লগ আউট হয়েছে`,pictureUpdated:`প্রোফাইল ছবি আপডেট হয়েছে`,failedUpdateAvatar:`অবতার আপডেট ব্যর্থ`,failedUpdatePicture:`প্রোফাইল ছবি আপডেট ব্যর্থ`,noEmail:`কোনো ইমেইল দেওয়া হয়নি`,changePicture:`ছবি পরিবর্তন করুন`,settings:`সেটিংস`,userManagement:`ব্যবহারকারী ব্যবস্থাপনা`,signOut:`সাইন আউট`,changeProfilePicture:`প্রোফাইল ছবি পরিবর্তন করুন`},pluginManager:{title:`প্লাগইন ম্যানেজার`,upload:`আপলোড`,addJson:`JSON যোগ করুন`,browseHF:`HF Hub ব্রাউজ করুন`,confirmDelete:`আপনি কি এই প্লাগইনটি মুছতে চান?`,uploading:`প্লাগইন আপলোড হচ্ছে...`,pasteJson:`প্লাগইন JSON এখানে পেস্ট করুন...`,installPlugin:`প্লাগইন ইনস্টল করুন`,loading:`প্লাগইন লোড হচ্ছে...`,noPlugins:`কোনো প্লাগইন ইনস্টল করা হয়নি`,noPluginsDescription:`শুরু করতে একটি প্লাগইন ফাইল আপলোড করুন বা JSON থেকে যোগ করুন।`,active:`সক্রিয়`,id:`আইডি`,endpoint:`এন্ডপয়েন্ট`,activate:`সক্রিয় করুন`,deactivate:`নিষ্ক্রিয় করুন`,activePlugin:`সক্রিয় প্লাগইন`,activePluginDescription:`সব চ্যাট অনুরোধ এই প্লাগইনের মাধ্যমে পাঠানো হবে`,variables:{title:`ভেরিয়েবল`,save:`সংরক্ষণ`,saving:`সংরক্ষণ হচ্ছে...`,saved:`ভেরিয়েবল সংরক্ষিত`,saveFailed:`ভেরিয়েবল সংরক্ষণ ব্যর্থ`,resetDefaults:`ডিফল্টে রিসেট`,reset:`ভেরিয়েবল ডিফল্টে রিসেট হয়েছে`,sensitiveSet:`মান সেট করা আছে (পরিবর্তনের জন্য নতুন মান দিন)`,resetFailed:`ভেরিয়েবল রিসেট করতে ব্যর্থ`,showValue:`{{label}} মান দেখান`,hideValue:`{{label}} মান লুকান`,connection:`সংযোগ`,advanced:`উন্নত প্যারামিটার`,inherited:`প্রোভাইডারের ডিফল্ট ব্যবহার করুন`,inheritedValue:`প্রোভাইডারের ডিফল্ট ব্যবহার করুন ({{value}})`,enabled:`সক্ষম`,disabled:`অক্ষম`,required:`একটি মান প্রয়োজন`,fullApiEndpoint:`সম্পূর্ণ API এন্ডপয়েন্ট URL`,endpointHelp:`সম্পূর্ণ রিকোয়েস্ট URL লিখুন, এর অপারেশন পাথ সহ (যেমন, /v1/chat/completions), শুধুমাত্র প্রোভাইডার বেস URL নয়।`,invalidUrl:`একটি বৈধ সম্পূর্ণ API এন্ডপয়েন্ট URL লিখুন, যেমন https://provider.example/v1/chat/completions`,insecureUrl:`API এন্ডপয়েন্টগুলি অবশ্যই HTTP বা HTTPS ব্যবহার করবে।`,httpWarning:`HTTP ক্রেডেনশিয়াল বা ট্রাফিক এনক্রিপ্ট করে না। এটি শুধুমাত্র একটি বিশ্বস্ত নেটওয়ার্কে ব্যবহার করুন।`,invalidBaseUrl:`বেস URL-এ কোনো কোয়েরি স্ট্রিং বা ফ্র্যাগমেন্ট থাকতে পারে না।`,invalidApiPath:`অবশ্যই / দিয়ে শুরু হতে হবে এবং কোনো URL, কোয়েরি, ফ্র্যাগমেন্ট বা .. সেগমেন্ট থাকতে পারবে না`,tooLong:`মানটি অনেক বেশি দীর্ঘ`}},huggingface:{title:`HuggingFace মডেল ব্রাউজার`,subtitle:`Hub থেকে মডেল ব্রাউজ করুন ও নির্বাচন করুন`,searchPlaceholder:`মডেল খুঁজুন...`,filters:`ফিল্টার`,task:`টাস্ক`,sortBy:`সাজান`,noModels:`কোনো মডেল পাওয়া যায়নি`,adjustSearch:`আপনার অনুসন্ধান বা ফিল্টার সামঞ্জস্য করুন`,gated:`সীমাবদ্ধ`,selected:`নির্বাচিত`,select:`নির্বাচন`,refresh:`রিফ্রেশ`,modelsFound:`মডেল পাওয়া গেছে`},demoMode:{title:`ডেমো মোড`,github:`GitHub`},personaBackground:{label:`পটভূমি চিত্র`,uploadBackgroundImage:`পটভূমি চিত্র আপলোড করুন`,dragAndDrop:`একটি চিত্র টেনে আনুন বা ব্রাউজ করতে ক্লিক করুন`,chooseImage:`চিত্র বেছে নিন`,uploading:`আপলোড হচ্ছে...`,enterImageUrl:`অথবা চিত্রের URL প্রবেশ করুন`,supportedFormats:`সমর্থিত: JPG, PNG, GIF, WebP (সর্বোচ্চ 5MB)। প্রশস্ত ল্যান্ডস্কেপ চিত্র সেরা কাজ করে।`,customBackground:`কাস্টম পটভূমি চিত্র`,clickToChange:`পরিবর্তন বা সরাতে ক্লিক করুন`,removed:`পটভূমি সরানো হয়েছে`,uploaded:`পটভূমি সফলভাবে আপলোড হয়েছে`,invalidFile:`একটি বৈধ চিত্র ফাইল নির্বাচন করুন`,fileTooLarge:`পটভূমি চিত্রের আকার 5MB এর কম হতে হবে`,readFailed:`চিত্র ফাইল পড়তে ব্যর্থ`,uploadFailed:`পটভূমি চিত্র আপলোড করতে ব্যর্থ`},modelSelector:{searchInstalled:`Search installed models...`,searchOllama:`Search Ollama library...`,searchHuggingFace:`Search HuggingFace...`,selectModel:`Select Model`,personas:`Personas`,ollamaModels:`Ollama Models`,pluginModels:`Plugin Models`,actions:`Actions`,installed:`Installed`,use:`Use`,pull:`Pull`,pullRestricted:`এই ইনস্ট্যান্সে মডেল ইনস্টলেশন শুধুমাত্র অ্যাডমিনদের জন্য সীমাবদ্ধ।`,adminOnlyPull:`শুধু অ্যাডমিন`},libreClaw:{title:`এজেন্ট`,subtitle:`স্থানীয় এজেন্ট রান, অনুমোদন, সময়সূচী, মেমরি, সরঞ্জাম, এবং ব্যবহার.`,dashboard:`ড্যাশবোর্ড`,connection:{disconnectedTitle:`Libre Claw ডেমন সংযুক্ত নয়`,disconnectedDescription:`স্থানীয়ভাবে <command>libre-claw start</command> দিয়ে শুরু করুন অথবা ব্যাকএন্ড পরিবেশে <env>LIBRE_CLAW_BASE_URL</env> সেট করুন।`},status:{connected:`সংযুক্ত`,disconnected:`সংযোগ বিচ্ছিন্ন`,activeRuns:`{{count}} সক্রিয়`,activeRuns_plural:`{{count}} সক্রিয়`},states:{queued:`সারিবদ্ধ`,running:`চলছে`,blocked:`অবরুদ্ধ`,done:`সম্পন্ন`,failed:`ব্যর্থ হয়েছে`,cancelled:`বাতিল`},startRun:{title:`এজেন্ট রান শুরু করুন`,placeholder:`একটি রেপো পরিদর্শন করতে, একটি বাগ ঠিক করতে, একটি পর্যালোচনা চালাতে, একটি প্রতিবেদনের সময়সূচী করতে Libre Clawকে বলুন...`,chatRun:`চ্যাট রান`,goalMode:`লক্ষ্য মোড`,providerOverride:`প্রদানকারী ওভাররাইড`,modelOverride:`মডেল ওভাররাইড`,run:`চালান`},modelRoute:{title:`মডেল রুট`,providerPlaceholder:`প্রদানকারী`,modelPlaceholder:`মডেল`,persistGlobal:`Libre Claw গ্লোবাল কনফিগারেশনে স্থির থাকুন`,saveModel:`মডেল সংরক্ষণ করুন`,theme:`Libre Claw থিম`,saveTheme:`থিম সংরক্ষণ করুন`},runs:{title:`রানসমূহ`,empty:`এখনও কোনো Libre Claw রান নেই।`},timeline:{title:`রানের টাইমলাইন`,empty:`এর ইভেন্টগুলি পরিদর্শন করতে একটি দৌড় নির্বাচন করুন৷`,streaming:`স্ট্রিমিং...`,assistantResponse:`সহকারীর প্রতিক্রিয়া`,resultOk:`ঠিক আছে`,resultError:`ত্রুটি`,labels:{userMessage:`ব্যবহারকারীর বার্তা`,toolCall:`টুল কল`,toolResult:`টুল ফলাফল`,approvalRequest:`অনুমোদনের অনুরোধ`,approvalResponse:`অনুমোদন প্রতিক্রিয়া`,runStarted:`রান শুরু হয়েছে`,runFinished:`রান শেষ হয়েছে`,usage:`ব্যবহার`,error:`ত্রুটি`}},approvals:{needed:`অনুমোদন প্রয়োজন`,allowOnce:`একবার অনুমতি দিন`,alwaysAllowTool:`সর্বদা টুল মঞ্জুরি`,deny:`প্রত্যাখ্যান করুন`,toolApprovalRequested:`টুল অনুমোদন অনুরোধ করা হয়েছে`},automations:{title:`অটোমেশন`,namePlaceholder:`নাম`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`অটোমেশন প্রম্পট`,create:`তৈরি করুন`,empty:`কোন নির্ধারিত Libre Claw অটোমেশন।`,runNow:`এখন চালান`,pause:`বিরতি`,resume:`পুনরায় শুরু করুন`,routes:{report:`রিপোর্ট`,telegram:`Telegram`},status:{active:`সক্রিয়`,paused:`বিরতি দেওয়া হয়েছে`}},usageFallback:{title:`ব্যবহার এবং ফলব্যাক`,usage:`ব্যবহার`,fallbackRoute:`ফলব্যাক রুট`,noUsage:`এখনও কোন ব্যবহার রেকর্ড.`},metrics:{provider:`প্রদানকারী`,model:`মডেল`,input:`ইনপুট`,output:`আউটপুট`,cached:`ক্যাশে`,reasoning:`যুক্তি`,cost:`খরচ`,tool:`টুল`,resolution:`রেজোলিউশন`,state:`অবস্থা`,stopReason:`বন্ধের কারণ`,tokens:`{{formatted}} টোকেন`,tokens_plural:`{{formatted}} টোকেন`},fallbacks:{tool:`টুল`,unknown:`অজানা`,resolved:`সমাধান করা`,unknownError:`অজানা ত্রুটি`},toasts:{loadStatusFailed:`Libre Claw স্থিতি লোড করা যায়নি`,enterTask:`Libre Claw এর জন্য একটি টাস্ক লিখুন`,runStarted:`Libre Claw রান শুরু হয়েছে`,startRunFailed:`Libre Claw রান শুরু করা যায়নি`,runCancelled:`রান বাতিল হয়েছে`,cancelRunFailed:`রান বাতিল করা যায়নি`,approved:`অনুমোদিত`,denied:`অস্বীকার করেছে`,resolvePermissionFailed:`অনুমতি সমাধান করা যায়নি`,providerModelRequired:`প্রদানকারী এবং মডেল প্রয়োজন`,modelUpdated:`Libre Claw মডেল আপডেট করা হয়েছে`,updateModelFailed:`মডেল আপডেট করা যায়নি`,themeUpdated:`Libre Claw থিম আপডেট করা হয়েছে`,updateThemeFailed:`থিম আপডেট করা যায়নি`,automationRequired:`অটোমেশন নাম, সময়সূচী, এবং প্রম্পট প্রয়োজন`,automationCreated:`অটোমেশন তৈরি করা হয়েছে`,createAutomationFailed:`অটোমেশন তৈরি করা যায়নি`,automationUpdated:`অটোমেশন আপডেট করা হয়েছে`,updateAutomationFailed:`অটোমেশন আপডেট করা যায়নি`}},work:JSON.parse(`{"title":"কাজ","subtitle":"বিচ্ছিন্ন মডেল ওয়ার্কস্পেস","tasks":{"title":"কাজের টাস্ক","subtitle":"স্থায়ী লোকাল ওয়ার্কস্পেস","new":"নতুন টাস্ক","emptyTitle":"এখনো কোনো কাজের টাস্ক নেই","empty":"প্রথম বার্তা পাঠানোর পর আপনার কাজের টাস্কগুলো এখানে দেখা যাবে।","untitled":"শিরোনামহীন টাস্ক","actions":"টাস্কের কাজ","delete":"টাস্ক মুছুন","deleteNamed":"{{title}} মুছুন","deleteConfirm":"“{{title}}” এবং এর ওয়ার্কস্পেস স্থায়ীভাবে মুছবেন?","close":"কাজের টাস্ক বন্ধ করুন","open":"কাজের টাস্ক খুলুন","rename":"টাস্কের শিরোনাম","loading":"টাস্ক লোড হচ্ছে…","notFound":"এই কাজের টাস্কটি পাওয়া যাচ্ছে না","back":"নতুন টাস্ক শুরু করুন","status":"স্ট্যাটাস: {{status}}"},"landing":{"title":"নতুন কাজের টাস্ক শুরু করুন","description":"লোকাল বা কনফিগার করা প্রোভাইডারের মডেলকে একটি স্থায়ী, বিচ্ছিন্ন ওয়ার্কস্পেস দিন। এটি ফাইল পরীক্ষা করতে, টুল চালাতে এবং আপনি ফিরে এলে আগের জায়গা থেকে কাজ চালিয়ে যেতে পারবে।","isolated":"বিচ্ছিন্ন","isolatedBody":"প্রতিটি টাস্কের নিজস্ব কনটেইনার ও ফাইল থাকে।","durable":"স্থায়ী","durableBody":"পরে এর কথোপকথন ও ওয়ার্কস্পেসে ফিরে আসুন।","controlled":"নিয়ন্ত্রিত","controlledBody":"রানটাইম ও টাস্কের ফাইল হোস্ট থেকে বিচ্ছিন্ন থাকে।"},"composer":{"placeholder":"আপনি কী বানাতে বা পরিবর্তন করতে চান তা লিখুন…","model":"কাজের মডেল","noModels":"কাজের সঙ্গে সামঞ্জস্যপূর্ণ কোনো মডেল নেই","cancel":"থামান","send":"চালান","hint":"প্রতিটি টাস্কের নিজস্ব ফাইল ও ইতিহাস থাকে। ব্যবহারের আগে মডেলের আউটপুট যাচাই করুন।","remoteTitle":"রিমোট প্রোভাইডার","remoteHint":"কথোপকথন ও টুলের আউটপুট কনফিগার করা সার্ভিসে পাঠানো হয়। একটি স্বয়ংক্রিয় রান একাধিক প্রোভাইডার কল করতে পারে এবং খরচ হতে পারে। কোনো টুল ফাইলের বিষয়বস্তু ফেরত না দিলে ওয়ার্কস্পেসের ফাইল লোকালেই থাকে।","remoteDismiss":"খারিজ করুন","remoteDismissLabel":"রিমোট প্রোভাইডারের নোটিশ খারিজ করুন","remoteDismissFailed":"রিমোট প্রোভাইডারের পছন্দ সংরক্ষণ করা যায়নি।","noModelSelected":"কাজের সঙ্গে সামঞ্জস্যপূর্ণ কোনো মডেল নির্বাচন করা নেই।"},"conversation":{"ready":"ওয়ার্কস্পেস প্রস্তুত","empty":"নিচে টাস্কটি চালিয়ে যান। এই কথোপকথন ও এর ফাইল এই ওয়ার্কস্পেসের সঙ্গেই থাকবে।","loadOlder":"পুরোনো বার্তা লোড করুন"},"status":{"preparing":"বিচ্ছিন্ন ওয়ার্কস্পেস প্রস্তুত হচ্ছে…","running":"লোকাল ওয়ার্কস্পেসে কাজ চলছে…"},"statusLabels":{"idle":"নিষ্ক্রিয়","thinking":"ভাবছে","complete":"সম্পূর্ণ","needsInput":"ইনপুট প্রয়োজন","error":"ত্রুটি"},"live":{"connecting":"লাইভ আপডেটের সাথে সংযোগ করা হচ্ছে…","reconnecting":"লাইভ আপডেটে পুনরায় সংযোগ করা হচ্ছে…","unavailable":"লাইভ আপডেট পাওয়া যাচ্ছে না","newActivity":"নতুন কার্যকলাপ","skillsLoaded":"ওয়ার্কস্পেস দক্ষতা · {{count}}"},"runtime":{"unavailable":"রানটাইম পাওয়া যাচ্ছে না","ready":"রানটাইম প্রস্তুত","readyOllama":"Docker প্রস্তুত","readyPlugin":"Docker + প্লাগইন প্রস্তুত","readyHybrid":"Docker + মডেল প্রস্তুত","reason":"Docker এবং একটি উপলভ্য Ollama বা প্লাগইন মডেল প্রোভাইডার প্রয়োজন।"},"workspace":{"label":"ওয়ার্কস্পেস ভিউ","files":"ফাইল","activity":"কার্যকলাপ","preview":"প্রিভিউ","resize":"কথোপকথন ও ওয়ার্কস্পেসের আকার বদলান","resizeHint":"আকার বদলাতে টানুন। সূক্ষ্ম নিয়ন্ত্রণে অ্যারো কী ব্যবহার করুন। রিসেট করতে ডাবল-ক্লিক করুন বা Enter চাপুন।","splitSize":"কথোপকথন {{conversation}}%, ওয়ার্কস্পেস {{workspace}}%","terminal":"টার্মিনাল"},"files":{"discard":"সংরক্ষণ না করা ফাইলের পরিবর্তন বাতিল করবেন?","leaveWithDraft":"এই ফাইল ছেড়ে যাবেন? সংরক্ষণ না করা সম্পাদনা ব্রাউজারে খসড়া হিসেবে থাকবে।","up":"মূল ফোল্ডার","back":"ফাইলে ফিরে যান","empty":"এই ফোল্ডারে এখনো কোনো ফাইল নেই।","select":"দেখতে ও সম্পাদনা করতে একটি ফাইল বেছে নিন।","editorLabel":"ফাইল এডিটর: {{path}}","format":"ফরম্যাট","formatted":"কোড ফরম্যাট করা হয়েছে।","formatFailed":"এই ফাইল ফরম্যাট করা যায়নি।","formatShortcut":"ফরম্যাট (Shift+Alt+F)","formatTooLarge":"শুধু 100,000 অক্ষর ও 4,000 লাইনের কম ফাইল ফরম্যাট করা যাবে।","formatUnsupported":"এই ধরনের ফাইলে ফরম্যাটিং উপলভ্য নয়।","saveShortcut":"সংরক্ষণ (⌘/Ctrl+S)","highlightPaused":"সম্পাদনা দ্রুত রাখতে বড় ফাইলে লাইভ হাইলাইটিং বিরত রাখা হয়েছে।","plainTextLarge":"প্লেইন টেক্সট · বড় ফাইল","changes":"পরিবর্তনসমূহ","changesSince":"গত পালার পর থেকে কী পরিবর্তিত হয়েছে","diffLabel":"গত পালার পর থেকে পরিবর্তন: {{path}}","diffFolded":"{{count}}টি অপরিবর্তিত লাইন"},"activity":{"empty":"কমান্ড, ফাইল অপারেশন ও টুলের ফলাফল এখানে দেখা যাবে।","toolActivity":"টুলের কার্যকলাপ","details":"বিস্তারিত","kinds":{"message":"বার্তা","toolCall":"টুল কল","toolResult":"টুলের ফলাফল","error":"ত্রুটি"}},"preview":{"command":"ঐচ্ছিক স্টার্ট কমান্ড","start":"প্রিভিউ শুরু করুন","stop":"প্রিভিউ থামান","open":"খুলুন","starting":"প্রিভিউ শুরু হচ্ছে…","frameTitle":"ওয়ার্কস্পেস প্রিভিউ","failed":"প্রিভিউ শুরু করা যায়নি। কার্যকলাপ দেখুন, তারপর অন্য কমান্ড চেষ্টা করুন।","empty":"এখানে দেখতে এই ওয়ার্কস্পেসের ভেতর অ্যাপটি চালু করুন।"},"mobile":{"surface":"টাস্ক ভিউ","conversation":"কথোপকথন","workspace":"ওয়ার্কস্পেস"},"toasts":{"runFailed":"কাজের টাস্ক শুরু করা যায়নি।","updateFailed":"এই টাস্ক আপডেট করা যায়নি।","renameFailed":"এই টাস্কের নাম পরিবর্তন করা যায়নি।","cancelled":"কাজের রান থামানো হয়েছে।","cancelFailed":"কাজের রান থামানো যায়নি।","deleteFailed":"এই কাজের টাস্ক মুছতে পারেনি।","saveFailed":"এই ফাইল সংরক্ষণ করা যায়নি।","saved":"ফাইল সংরক্ষণ করা হয়েছে।","previewFailed":"প্রিভিউ শুরু করা যায়নি।","previewStopFailed":"প্রিভিউ থামানো যায়নি।"},"terminal":{"connecting":"স্যান্ডবক্সে একটি শেল খোলা হচ্ছে…","closed":"টার্মিনাল সেশন শেষ হয়েছে।","failed":"টার্মিনাল সেশন শুরু করা যায়নি।","reconnect":"পুনরায় সংযোগ","unavailable":"এই ডিপ্লয়মেন্টে ইন্টারঅ্যাকটিভ টার্মিনাল উপলব্ধ নয়।","blockedByRun":"মডেল এই কনটেইনার ব্যবহার করছে। পালা শেষ হলে টার্মিনাল খুলবে।","taskRunning":"মডেলের পালা চলছে"}}`),usageAnalytics:{eyebrow:`প্রশাসন`,title:`প্রদানকারী ব্যবহার`,description:`এই ইনস্ট্যান্সে সক্রিয় প্লাগইনগুলিতে আউটবাউন্ড API কল এবং মডেল ব্যবহার অনুসরণ করুন।`,days:`{{count}} দিন`,refresh:`ব্যবহার রিফ্রেশ করুন`,loadFailed:`প্রদানকারী ব্যবহার লোড করা যায়নি।`,metrics:{calls:`কল`,tokens:`টোকেন`},cards:{calls:`API কল`,callsDetail:`{{count}} জন সক্রিয় ব্যবহারকারী জুড়ে`,tokens:`রিপোর্ট করা টোকেন`,tokensDetail:`{{count}}টি কলে রিপোর্ট করা ব্যবহার`,success:`সাফল্যের হার`,successDetail:`{{count}}টি ব্যর্থ কল`,latency:`গড় বিলম্ব`,latencyDetail:`শেষ-থেকে-শেষ প্রদানকারী সময়`},activity:{title:`সময়ের সাথে ব্যবহার`,callsDescription:`সক্রিয় প্লাগইনগুলিতে দৈনিক আউটবাউন্ড অনুরোধ`,tokensDescription:`প্রদানকারীদের দ্বারা রিপোর্ট করা দৈনিক টোকেন মোট`,chartLabel:`দৈনিক প্রদানকারী {{metric}} চার্ট`},models:{title:`মডেল ব্যবহার`,description:`এই সময়ের মধ্যে সবচেয়ে বেশি ট্রাফিক বহনকারী মডেলগুলি।`,model:`মডেল`,success:`সাফল্য`,latency:`বিলম্ব`},providers:{title:`সক্রিয় প্লাগইন ট্রাফিক`},capabilities:{title:`ক্ষমতার মিশ্রণ`,characters:`{{count}} অক্ষর`,images:`{{count}} ছবি`,jobs:`{{count}} ভিডিও কাজ`,inputs:`{{count}} ইনপুট`,reportedTokens:`{{count}} রিপোর্ট করা টোকেন`},empty:{title:`এখনও কোনো প্রদানকারী কল নেই`,description:`একটি সক্রিয় প্লাগইন চ্যাট, কাজ, এম্বেডিং, ছবি, বক্তৃতা, শব্দ বা ভিডিও অনুরোধগুলি পরিচালনা করার পরে কলগুলি এখানে উপস্থিত হবে।`},privacyNote:`আউটবাউন্ড প্লাগইন সীমানায় সার্ভারে ব্যবহার মাপা হয়। Libre WebUI প্রদানকারী, মডেল, সময়, স্থিতি এবং রিপোর্ট করা কাউন্টার সংরক্ষণ করে—কখনও প্রম্পট, প্রতিক্রিয়া, এন্ডপয়েন্ট, শংসাপত্র বা প্রদানকারী ত্রুটি বডি নয়। টোকেন মোটগুলিতে কেবলমাত্র সেই কলগুলি অন্তর্ভুক্ত থাকে যেখানে প্রদানকারী ব্যবহারের মেটাডেটা ফেরত দিয়েছে।`,heatmap:{title:`এক বছরের কার্যকলাপ`,description:`গত এক বছরের দৈনিক প্রোভাইডার কল, প্রতিদিনের সর্বাধিক ব্যবহৃত মডেল অনুযায়ী রঙিন।`,calls:`কল`,noCalls:`কোনো কল নেই`,other:`অন্যান্য মডেল`,less:`কম`,more:`বেশি`,yearTotal:`গত এক বছরে {{formatted}} কল`}},systemPage:{eyebrow:`প্রশাসন`,title:`সিস্টেম`,description:`এই Libre WebUI ইনস্ট্যান্স হোস্ট করা মেশিন এবং রানটাইম পর্যবেক্ষণ করুন।`,updated:`আপডেট করা হয়েছে {{date}}`,refresh:`সিস্টেম তথ্য রিফ্রেশ করুন`,loadFailed:`সিস্টেম তথ্য লোড করা যায়নি।`,cards:{uptime:`হোস্ট আপটাইম`,uptimeDetail:`{{date}} থেকে চলছে`,memory:`ব্যবহৃত মেমরি`,memoryDetail:`{{total}} এর {{used}}`,freeSpace:`ফাঁকা স্থান`,freeSpaceDetail:`{{label}} · মোট {{total}}`,containers:`চলমান কন্টেইনার`,containersDetail:`Docker এর কাছে পরিচিত {{total}} টি কন্টেইনার`,dockerUnavailable:`Docker অনুপলব্ধ`,unavailable:`অনুপলব্ধ`},host:{title:`হোস্ট এবং রানটাইম`,description:`অপারেটিং সিস্টেম, প্রসেসর এবং Libre WebUI প্রক্রিয়ার বিবরণ।`,container:`কন্টেইনার রানটাইম`,native:`নেটিভ রানটাইম`,hostname:`হোস্টনেম`,operatingSystem:`অপারেটিং সিস্টেম`,processor:`প্রসেসর`,logicalCpus:`লজিক্যাল CPU`,loadAverage:`লোড গড় · ১ / ৫ / ১৫ মিনিট`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`প্রসেস`,workingDirectory:`ওয়ার্কিং ডিরেক্টরি`},memory:{title:`মেমরি`,description:`রানটাইম-দৃশ্যমান সিস্টেম মেমরি এবং অ্যাপ্লিকেশন প্রসেস ব্যবহার।`,usedOf:`{{total}}-এর মধ্যে {{used}} ব্যবহৃত`,free:`{{value}} খালি`,processRss:`প্রসেস RSS`,heapUsed:`V8 হিপ ব্যবহৃত`,heapTotal:`V8 হিপ মোট`,external:`বহিস্থ মেমরি`},storage:{title:`স্টোরেজ`,description:`রানটাইম ফাইলসিস্টেম এবং স্থায়ী অ্যাপ্লিকেশন ডেটার জন্য উপলব্ধ স্থান।`,used:`{{value}} ব্যবহৃত`,free:`{{value}} খালি`,empty:`এই রানটাইমে ফাইলসিস্টেম তথ্য অনুপলব্ধ।`},docker:{title:`Docker`,description:`শুধুমাত্র পঠনযোগ্য Docker Engine স্থিতি এবং সীমিত কন্টেইনার তালিকা।`,connected:`সংযুক্ত`,unavailable:`অনুপলব্ধ`,unavailableDetail:`Docker Engine ডায়াগনস্টিক্স অনুপলব্ধ।`,socketStatus:`লোকাল সকেট: {{status}}`,mounted:`মাউন্ট করা`,notMounted:`মাউন্ট করা নয়`,running:`চলমান`,stopped:`বন্ধ`,paused:`বিরতি`,total:`মোট`,version:`সংস্করণ`,host:`হোস্ট`,architecture:`আর্কিটেকচার`,cpus:`CPU`,memory:`মেমরি`,container:`কন্টেইনার`,image:`ইমেজ`,state:`অবস্থা`,created:`তৈরি হয়েছে`,empty:`Docker সংযুক্ত আছে এবং বর্তমানে কোনো কন্টেইনার তালিকাভুক্ত নেই।`},network:{title:`নেটওয়ার্ক`,description:`রানটাইম-দৃশ্যমান ইন্টারফেস, ঠিকানা এবং Linux ট্রাফিক কাউন্টার।`,internal:`অভ্যন্তরীণ`,empty:`অ্যাপ্লিকেশন রানটাইমে কোনো নেটওয়ার্ক ইন্টারফেস দৃশ্যমান নয়।`},securityNote:`এই পৃষ্ঠাটি কেবল প্রশাসকদের জন্য সীমাবদ্ধ। সার্ভার কেবল অপারেশনাল সারাংশ প্রদান করে: এটি এনভায়রনমেন্ট ভেরিয়েবল, ক্রেডেনশিয়াল, Docker লেবেল, মাউন্ট, কন্টেইনার কমান্ড বা ইন্সপেক্ট পেলোড প্রকাশ করে না। যখন Libre WebUI একটি কন্টেইনারে চলে, তখন হোস্ট-স্তরের CPU এবং মেমরির বিবরণ এর লোকাল সকেট উপলব্ধ থাকলে Docker Engine থেকে আসে; অন্যান্য মান অ্যাপ্লিকেশন রানটাইম বর্ণনা করে।`},mediaGeneration:{title:`মিডিয়া তৈরি করুন`,description:`সক্রিয় মিডিয়া প্রদানকারীর মাধ্যমে ভিডিও, শব্দ, সঙ্গীত বা বক্তৃতা তৈরি করুন।`,image:`ছবি`,video:`ভিডিও`,audio:`অডিও`,sound:`শব্দ`,speech:`বক্তৃতা`,model:`মডেল`,voice:`ভয়েস বা ভয়েস আইডি`,resolution:`রেজোলিউশন`,aspectRatio:`অ্যাসপেক্ট রেশিও`,duration:`সময়কাল`,providerDefault:`প্রদানকারীর ডিফল্ট`,generateAudio:`সমর্থিত হলে ভিডিওর সাথে অডিও তৈরি করুন`,prompt:`প্রম্পট`,text:`উচ্চারণের জন্য টেক্সট`,videoPlaceholder:`দৃশ্য, গতি, ক্যামেরা এবং আলোর বর্ণনা দিন...`,audioPlaceholder:`আপনি যে টেক্সটটি ভয়েস দিয়ে উচ্চারণ করতে চান তা লিখুন...`,soundPlaceholder:`আপনার পছন্দের শব্দ, সঙ্গীত, পরিবেশ বা কথ্য প্রতিক্রিয়া বর্ণনা করুন...`,generate:`তৈরি করুন`,generating:`তৈরি হচ্ছে… এতে কয়েক মিনিট সময় লাগতে পারে`,success:`মিডিয়া তৈরি হয়েছে এবং Imagine-এ সংরক্ষিত হয়েছে`,failed:`মিডিয়া তৈরি করতে ব্যর্থ`,loadFailed:`মিডিয়া প্রদানকারী লোড করতে ব্যর্থ`,noModels:`কোনো {{kind}} মডেল উপলব্ধ নেই। প্রথমে একটি সামঞ্জস্যপূর্ণ প্রদানকারী সক্রিয় করুন এবং এর ক্রেডেনশিয়াল সংরক্ষণ করুন।`},mediaGallery:{itemCount:`{{count}}টি আইটেম`,empty:`এখনও কোনো মিডিয়া তৈরি হয়নি`,emptyHint:`একটি ছবি, ভিডিও বা ভয়েস ক্লিপ তৈরি করুন এবং এটি এখানে উপস্থিত হবে।`,filters:{all:`সব`,image:`ছবি`,video:`ভিডিও`,audio:`অডিও`}},whatsNew:{title:`নতুন কী আছে`,releaseNotes:`রিলিজ নোট`,cta:`ঠিক আছে, চলুন`},notes:{title:`নোট`,new:`নতুন নোট`,untitled:`শিরোনামহীন`,empty:`এখনও কোনো নোট নেই`,selectOrCreate:`একটি নোট নির্বাচন করুন বা নতুন তৈরি করুন`,contentPlaceholder:`মার্কডাউনে লিখুন…`,saved:`সংরক্ষিত`,saveFailed:`নোট সংরক্ষণ করা যায়নি`,createFailed:`নোট তৈরি করা যায়নি`,deleteConfirm:`এই নোটটি মুছবেন?`,deleteFailed:`নোট মুছে ফেলা যায়নি`}};export{e as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-
|
|
2
|
-
import{i as e}from"./router-vendor-Ca9zqOqT.js";import{Tn as t}from"./ui-vendor-D_pYT79f.js";import{o as n}from"./utils-vendor-1zob7nK9.js";import{t as r}from"./logger-DSXjF4ye.js";import{S as i,c as a,l as o,m as s,u as c}from"./api-iDBo7I0x.js";import{r as l}from"./utils-BhpNrGnR.js";var u=[`Chat`,`Image`,`Video`,`Audio`,`Speech`,`Transcription`,`Embedding`],d={chat:`Chat`,completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`},f={completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`};function p(e){let t=new Map,n=(e,n)=>{for(let r of e||[]){if(typeof r!=`string`||!r.trim())continue;let e=r.trim(),i=t.get(e)??new Set;i.add(n),t.set(e,i)}};n(e.model_map,d[e.type]);for(let t of Object.keys(e.capabilities||{}))n(e.capabilities?.[t]?.model_map,f[t]);return Array.from(t,([e,t])=>({id:e,capabilities:u.filter(e=>t.has(e))}))}function m(e){return e.type===`chat`||e.type===`completion`}var h=[`dall-e`,`embed`,`gpt-image`,`moderation`,`rerank`,`sora`,`stable-diffusion`,`text-to-speech`,`tts`,`whisper`];function g(e){let t=e.toLocaleLowerCase();return!h.some(e=>t.includes(e))}function _(e){let t=new Set;for(let[n,r]of Object.entries(e.capabilities||{}))if(n!==`completion`)for(let e of r?.model_map||[])t.add(e.trim());return(e.model_map||[]).filter(e=>typeof e==`string`&&e.trim().length>0&&!t.has(e.trim())&&g(e))}function v(e,t){let n=t.trim().toLocaleLowerCase();return!n||[e.name,e.id,e.type,...p(e).map(e=>e.id)].some(e=>e?.toLocaleLowerCase().includes(n))}var y=(e,t)=>{if(e&&typeof e==`object`&&`response`in e){let t=e;if(t.response?.data?.error)return t.response.data.error}return e instanceof Error?e.message:t};function b(e){return{...e,id:e.id||l(),timestamp:Date.now()}}function x(e,t){return e.currentSession?.isPrivate&&e.currentSession?.id===t}function S(e,t){return e.sessions.some(e=>e.id===t)}function C(e,t){return!!e.currentSession&&(x(e,t)||S(e,e.currentSession.id))}function w(e,t,n){if(x(e,t))return e.currentSession.messages.find(e=>e.id===n.id)?e:{currentSession:{...e.currentSession,messages:[...e.currentSession.messages,n],updatedAt:Date.now()},sessions:e.sessions};if(e.sessions.find(e=>e.id===t)?.messages.some(e=>e.id===n.id))return e;let r=e.sessions.map(e=>{if(e.id!==t)return e;let r=[...e.messages];if(n.parentId){let e=n.parentId;r=r.map(t=>t.id!==e&&t.parentId!==e?t:{...t,isActive:!1,branchIndex:t.branchIndex??0,siblingCount:(n.branchIndex||0)+1})}return{...e,messages:[...r,n],updatedAt:Date.now()}});return{sessions:r,currentSession:e.currentSession?.id===t&&r.find(e=>e.id===t)||e.currentSession}}function T(e,t,n,r){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate){let t=e.currentSession.messages.find(e=>e.id===n);return!t||t.content===r?e:{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}}}let i=e.sessions.find(e=>e.id===t),a=i?.messages.find(e=>e.id===n);if(!i||!a||a.content===r)return e;let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function E(e,t,n,r,i,a,o){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate)return{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r,thinking:o,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}};let s=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r,thinking:o,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}:e);return{sessions:s,currentSession:e.currentSession?.id===t&&s.find(e=>e.id===t)||e.currentSession}}function D(e){return e.reduce((e,t)=>(e[t.id]=t,e),{})}function O(e){return e.map(e=>({name:`persona:${e.id}`,model:e.model,size:0,digest:``,details:{parent_model:e.model,format:`persona`,family:`persona`,families:[`persona`],parameter_size:``,quantization_level:``},modified_at:new Date(e.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:e.name,personaDescription:e.description}))}function k(e){return e.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`).flatMap(e=>_(e).map(t=>({name:t,model:t,size:0,digest:``,details:{parent_model:``,format:``,family:``,families:[],parameter_size:``,quantization_level:``},modified_at:new Date().toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPlugin:!0,pluginId:e.id,pluginName:e.name})))}var A=`persona:`,j=`plugin:`,M=`ollama:`,N=`legacy:`,P=`agent:`,F=e=>{try{return decodeURIComponent(e)}catch{return null}};function I(e){return e.isLegacySelection?{model:e.name,providerType:null,providerId:null}:e.isPersona?{model:e.name,providerType:`ollama`,providerId:null}:e.isPlugin&&e.pluginId?{model:e.name,providerType:`plugin`,providerId:e.pluginId}:e.isAgent?{model:e.name,providerType:`agent`,providerId:e.agentId||e.name}:{model:e.name,providerType:`ollama`,providerId:null}}function L(e){return e.providerType?e.providerType===`plugin`&&e.providerId?`${j}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`agent`&&e.providerId?`${P}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`ollama`&&e.model.startsWith(A)?`${A}${encodeURIComponent(e.model.slice(8))}`:e.providerType===`ollama`?`${M}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`}function R(e){return L(I(e))}function z(e){if(e.startsWith(A)){let t=F(e.slice(8));return t===null?null:{model:`${A}${t}`,providerType:`ollama`,providerId:null}}if(e.startsWith(j)){let t=e.slice(7),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`plugin`,providerId:r}:null}if(e.startsWith(P)){let t=e.slice(6),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`agent`,providerId:r}:null}if(e.startsWith(M)){let t=F(e.slice(7));return t?{model:t,providerType:`ollama`,providerId:null}:null}if(e.startsWith(N)){let t=F(e.slice(7));return t?{model:t,providerType:null,providerId:null}:null}return null}function B(e,t){return t.providerType===`plugin`?e.find(e=>e.isPlugin&&e.pluginId===t.providerId&&e.name===t.model):t.providerType===`agent`?e.find(e=>e.isAgent&&e.name===t.model):t.providerType===`ollama`?t.model.startsWith(A)?e.find(e=>e.isPersona&&e.name===t.model):e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t.model):e.find(e=>e.isLegacySelection&&e.name===t.model)??e.find(e=>e.name===t.model)}function V(e,t){if(!t.providerType)return L(t);let n=B(e,t);return n?R(n):L(t)}function H(e,t){let n=e.find(e=>R(e)===t);return n?I(n):z(t)}function U(e){return!e.isPlugin&&!e.isPersona&&!e.isAgent&&!e.isLegacySelection&&!e.isUnavailable}function W(e,t){return t.model?!!B(e.filter(e=>!e.isLegacySelection&&!e.isUnavailable),t):!1}function G(e,t){if(!t.model)return e;if(!t.providerType){if(e.some(e=>e.isLegacySelection&&e.name===t.model))return e;let n=!!B(e,t);return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isLegacySelection:!0,isUnavailable:!n}]}if(B(e,t))return e;let n=t.providerType,r=n===`ollama`&&t.model.startsWith(A),i=n===`plugin`&&t.providerId||void 0;return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isPlugin:n===`plugin`,pluginId:i,pluginName:i,isAgent:n===`agent`,agentId:n===`agent`&&t.providerId||void 0,isPersona:r,personaName:r?t.model.slice(8):void 0,isUnavailable:!0}]}var K=r(`chat-store`),q=n((n,r)=>({sessions:[],currentSession:null,setCurrentSession:e=>{n({currentSession:e})},draftSessionSettings:{},setDraftSessionSettings:e=>{n({draftSessionSettings:e})},createSession:async(e,r,a,o,s)=>{try{n({loading:!0,error:null});let c=await i.createSession(e,r,a,o,s);if(c.success&&c.data){let e=c.data;return n(t=>({sessions:[e,...t.sessions],currentSession:e,loading:!1})),t.success(`New chat created`),e}}catch(e){let r=y(e,`Failed to create session`);n({error:r,loading:!1}),t.error(r)}},loadSessions:async()=>{try{n({loading:!0,error:null});let e=await i.getSessions();e.success&&e.data&&n(t=>{let n=e.data||[],r=n.map(e=>e.id),i=null;return t.currentSession?.isPrivate?i=t.currentSession:t.currentSession&&r.includes(t.currentSession.id)?i=n.find(e=>e.id===t.currentSession.id)||null:n.length>0&&(i=n[0],t.currentSession&&K.warn(`Previous currentSession not found in backend sessions:`,t.currentSession.id)),{sessions:n,currentSession:i,loading:!1}})}catch(e){let r=y(e,`Failed to load sessions`);n({error:r,loading:!1}),t.error(r)}},deleteSession:async e=>{try{let r=await i.deleteSession(e);r.success?(n(t=>{let n=t.sessions.filter(t=>t.id!==e),r=t.currentSession?.id===e?n[0]||null:t.currentSession;return K.debug(`Store: Updating state, sessions count:`,n.length),{sessions:n,currentSession:r}}),t.success(`Chat deleted`)):(K.error(`Store: deleteSession failed:`,r),t.error(`Failed to delete chat`))}catch(e){K.error(`Store: deleteSession error:`,e);let n=y(e,`Failed to delete session`);t.error(n)}},clearAllSessions:async()=>{try{n({loading:!0,error:null});let e=await i.clearAllSessions();e.success?(n({sessions:[],currentSession:null,loading:!1}),t.success(`All chat history cleared`)):(K.error(`Store: clearAllSessions failed:`,e),t.error(`Failed to clear chat history`),n({loading:!1}))}catch(e){K.error(`Store: clearAllSessions error:`,e);let r=y(e,`Failed to clear chat history`);t.error(r),n({loading:!1})}},clearAllState:()=>{n({sessions:[],currentSession:null,models:[],selectedModel:``,selectedProviderType:null,selectedProviderId:null,systemMessage:``,loading:!1,error:null})},applySessionTitle:(e,t,r=Date.now())=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,title:t,updatedAt:r}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,title:t,updatedAt:r}:n.currentSession}))},updateSessionTitle:async(e,n)=>{try{let a=await i.updateSession(e,{title:n});if(a.success&&a.data){let n=a.data.title,i=a.data.updatedAt??Date.now();r().applySessionTitle(e,n,i),t.success(`Chat title updated`)}}catch(e){let n=y(e,`Failed to update session`);t.error(n)}},addMessage:(e,i)=>{let a=r(),o=x(a,e);if(!C(a,e)){t.error(`No valid chat session. Please create or select a chat.`),K.error(`addMessage blocked: currentSession is not valid`,a.currentSession?.id);return}if(!o&&!S(a,e)){t.error(`Session not found or invalid. Please select or create a valid chat session.`),K.error(`addMessage blocked: sessionId not found in sessions`,e);return}let s=b(i);n(t=>w(t,e,s))},updateMessage:(e,t,r)=>{n(n=>T(n,e,t,r))},updateMessageWithStatistics:(e,t,r,i,a,o)=>{n(n=>E(n,e,t,r,i,a,o))},rateMessage:async(e,t,a)=>{let o=e=>e.map(e=>e.id===t?{...e,rating:a}:e),s=r().currentSession?.isPrivate;if(n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:o(t.messages)}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:o(t.currentSession.messages)}:t.currentSession})),!s)try{await i.updateMessage(e,t,{rating:a??null})}catch(e){K.error(`Failed to save message rating:`,e)}},folders:[],loadFolders:async()=>{try{let e=await i.getFolders();e.success&&e.data&&n({folders:e.data})}catch(e){K.error(`Failed to load folders:`,e)}},createFolder:async e=>{try{let t=await i.createFolder(e);if(t.success&&t.data){let e=t.data;return n(t=>({folders:[...t.folders,e].sort((e,t)=>e.name.localeCompare(t.name))})),e}}catch(e){K.error(`Failed to create folder:`,e)}},renameFolder:async(e,t)=>{try{let r=await i.renameFolder(e,t);if(r.success&&r.data){let t=r.data;n(n=>({folders:n.folders.map(n=>n.id===e?t:n).sort((e,t)=>e.name.localeCompare(t.name))}))}}catch(e){K.error(`Failed to rename folder:`,e)}},deleteFolder:async e=>{try{(await i.deleteFolder(e)).success&&n(t=>({folders:t.folders.filter(t=>t.id!==e),sessions:t.sessions.map(t=>t.folderId===e?{...t,folderId:null}:t),currentSession:t.currentSession?.folderId===e?{...t.currentSession,folderId:null}:t.currentSession}))}catch(e){K.error(`Failed to delete folder:`,e)}},moveSessionToFolder:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,folderId:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,folderId:t}:n.currentSession}));try{await i.updateSession(e,{folderId:t})}catch(e){K.error(`Failed to move session to folder:`,e)}},setSessionArchived:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,archived:t}:n.currentSession}));try{await i.updateSession(e,{archived:t})}catch(r){K.error(`Failed to update session archive state:`,r),n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:!t}:n)}))}},truncateMessagesFrom:(e,t)=>{let r=e=>{let n=e.findIndex(e=>e.id===t);return n===-1?e:e.slice(0,n)};n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:r(t.messages),updatedAt:Date.now()}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:r(t.currentSession.messages),updatedAt:Date.now()}:t.currentSession}))},models:[],loadModels:async()=>{try{n({loading:!0,error:null}),K.debug(`Loading models from API...`);let i=[],c;try{let e=await s.getModels();e.success&&e.data?(i=[...e.data],K.debug(`Ollama models loaded:`,e.data.length)):c=Error(e.error||e.message||`Ollama models are unavailable.`)}catch(e){c=e,K.warn(`Ollama models are unavailable; continuing with plugin models:`,e)}try{let e=await o.getAllPlugins();if(e.success&&e.data){let t=e.data.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`);K.debug(`🔌 Active plugins found:`,t.map(e=>e.name));let n=k(t);i.push(...n),K.debug(`Plugin models added:`,n.length)}}catch(e){K.error(`❌ Failed to load plugin models:`,e),e instanceof Error&&K.error(`❌ Plugin error details:`,{message:e.message,response:e.response?.data,status:e.response?.status,url:e.config?.url})}try{let{agentCliApi:t}=await e(async()=>{let{agentCliApi:e}=await import(`./api-iDBo7I0x.js`).then(e=>e.t);return{agentCliApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await t.getModels();if(n.success&&n.data){let e=n.data.map(e=>({name:e.id,model:e.id,size:0,digest:``,modified_at:``,details:{},isAgent:!0,agentName:e.name,agentId:e.agentId}));i.push(...e),K.debug(`Agent CLI models added:`,e.length)}}catch(e){K.warn(`Agent CLI models unavailable:`,e)}let l=i.length;try{let{personaApi:t}=await e(async()=>{let{personaApi:e}=await import(`./api-iDBo7I0x.js`).then(e=>e.t);return{personaApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=await t.getPersonas();if(r.success&&r.data){let e=D(r.data),t=O(r.data);i.push(...t),n(t=>({...t,personas:e}))}}catch(e){K.error(`❌ Failed to load personas:`,e)}K.debug(`Total models loaded:`,i.length);let u=l===0&&c?y(c,`No model provider is available`):null,d=r(),f=d.selectedModel,p={model:f,providerType:d.selectedProviderType,providerId:d.selectedProviderId},m=!!B(i,p),h=d.selectedProviderType===`ollama`||d.selectedProviderType===`plugin`;if(f&&!m&&h){let e=`Selected model "${f}" is unavailable from ${d.selectedProviderType===`plugin`?d.selectedProviderId||`plugin`:`Ollama`}. Reactivate that provider or select another model.`;n({models:i,loading:!1,error:e}),t.error(e);return}if(f&&!m&&i.length>0){let e=I(i[0]);K.debug(`⚠️ Legacy selected model "${f}" no longer available, falling back to "${e.model}"`),n({models:i,loading:!1,selectedModel:e.model,selectedProviderType:e.providerType||null,selectedProviderId:e.providerId||null,error:u}),a.setDefaultModel(e.model,e.providerType,e.providerId).catch(e=>{K.warn(`Failed to save fallback default model:`,e)}),t.success(`Switched to ${e.model} (previous model no longer available)`)}else n({models:i,loading:!1,error:u});u&&t.error(u)}catch(e){K.error(`Error loading models:`,e);let r=y(e,`Failed to load models`);n({error:r,loading:!1}),t.error(r)}},loadPreferences:async()=>{try{let e=await a.getPreferences();if(e.success&&e.data){let{defaultModel:t,defaultProviderType:r,defaultProviderId:i,systemMessage:a}=e.data;t&&(n({selectedModel:t,selectedProviderType:r||null,selectedProviderId:r===`plugin`&&i||null}),K.debug(`✅ Loaded default model from backend:`,t)),a!==void 0&&(n({systemMessage:a}),K.debug(`✅ Loaded system message from backend`))}}catch(e){K.warn(`❌ Failed to load preferences from backend:`,e)}},selectedModel:``,selectedProviderType:null,selectedProviderId:null,setSelectedModel:(e,t=null,r=null)=>{let i=(t===`plugin`||t===`agent`)&&r||null;n({selectedModel:e,selectedProviderType:t,selectedProviderId:i}),a.setDefaultModel(e,t,i).catch(e=>{K.warn(`Failed to save default model to backend:`,e)})},updateCurrentSessionModel:async(e,a=null,o=null)=>{let s=r();if(!s.currentSession)throw Error(`No current session to update`);try{let r=await i.updateSession(s.currentSession.id,{model:e,providerType:a,providerId:a===`plugin`||a===`agent`?o:null});r.success&&r.data&&(n(t=>({sessions:t.sessions.map(e=>e.id===t.currentSession?.id?r.data:e),currentSession:r.data,selectedModel:e,selectedProviderType:a,selectedProviderId:(a===`plugin`||a===`agent`)&&o||null})),t.success(`Model updated for current chat`))}catch(e){let n=y(e,`Failed to update session model`);throw t.error(n),e}},personas:{},loadPersonas:async()=>{try{n({loading:!0,error:null});let e=await c.getPersonas();if(e.success&&e.data){let t=e.data;n({personas:D(t),loading:!1}),K.debug(`✅ Personas loaded:`,t.length)}}catch(e){let t=y(e,`Failed to load personas`);n({error:t,loading:!1}),K.error(`❌ Failed to load personas:`,t)}},getCurrentPersona:()=>{let e=r();if(!e.currentSession||!e.currentSession.model?.startsWith(`persona:`))return null;let t=e.currentSession.model.replace(`persona:`,``);return e.personas[t]||null},systemMessage:``,setSystemMessage:e=>{let t=r();if(n({systemMessage:e}),a.setSystemMessage(e).catch(e=>{K.warn(`Failed to save system message to backend:`,e)}),t.currentSession){let r=t.currentSession.messages.findIndex(e=>e.role===`system`);if(r!==-1){n(t=>{let n=t.sessions.map(n=>{if(n.id===t.currentSession?.id){let t=n.messages.map((t,n)=>n===r&&t.role===`system`?{...t,content:e,timestamp:Date.now()}:t);return{...n,messages:t,updatedAt:Date.now()}}return n});return{sessions:n,currentSession:t.currentSession?n.find(e=>e.id===t.currentSession.id)||t.currentSession:null}});let a=t.currentSession.messages[r];i.updateMessage(t.currentSession.id,a.id,{content:e}).catch(e=>{K.warn(`Failed to sync system message update to backend:`,e)}),K.debug(`✅ Updated system message in current session`)}}},loading:!1,error:null,setError:e=>n({error:e}),generatingTitleForSession:null,setGeneratingTitleForSession:e=>n({generatingTitleForSession:e}),...typeof window<`u`&&{testPluginApi:async()=>{try{K.debug(`🧪 Testing plugin API...`);let e=await o.getAllPlugins();return K.debug(`✅ Plugin API test result:`,e),e}catch(e){return K.error(`❌ Plugin API test failed:`,e),{error:e}}}}}));export{V as a,W as c,p as d,v as f,I as i,G as l,R as n,B as o,m as p,H as r,U as s,q as t,y as u};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/api-DVeiqNG9.js","js/rolldown-runtime-hePW80VL.js","js/router-vendor-Ca9zqOqT.js","js/markdown-core-DHnR5Hw8.js","js/utils-vendor-1zob7nK9.js","js/logger-DSXjF4ye.js","js/config-cqTxMjWo.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as e}from"./router-vendor-Ca9zqOqT.js";import{Tn as t}from"./ui-vendor-D_pYT79f.js";import{o as n}from"./utils-vendor-1zob7nK9.js";import{t as r}from"./logger-DSXjF4ye.js";import{S as i,c as a,l as o,m as s,u as c}from"./api-DVeiqNG9.js";import{r as l}from"./utils-BhpNrGnR.js";var u=[`Chat`,`Image`,`Video`,`Audio`,`Speech`,`Transcription`,`Embedding`],d={chat:`Chat`,completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`},f={completion:`Chat`,embedding:`Embedding`,image:`Image`,audio:`Audio`,stt:`Transcription`,tts:`Speech`,video:`Video`};function p(e){let t=new Map,n=(e,n)=>{for(let r of e||[]){if(typeof r!=`string`||!r.trim())continue;let e=r.trim(),i=t.get(e)??new Set;i.add(n),t.set(e,i)}};n(e.model_map,d[e.type]);for(let t of Object.keys(e.capabilities||{}))n(e.capabilities?.[t]?.model_map,f[t]);return Array.from(t,([e,t])=>({id:e,capabilities:u.filter(e=>t.has(e))}))}function m(e){return e.type===`chat`||e.type===`completion`}var h=[`dall-e`,`embed`,`gpt-image`,`moderation`,`rerank`,`sora`,`stable-diffusion`,`text-to-speech`,`tts`,`whisper`];function g(e){let t=e.toLocaleLowerCase();return!h.some(e=>t.includes(e))}function _(e){let t=new Set;for(let[n,r]of Object.entries(e.capabilities||{}))if(n!==`completion`)for(let e of r?.model_map||[])t.add(e.trim());return(e.model_map||[]).filter(e=>typeof e==`string`&&e.trim().length>0&&!t.has(e.trim())&&g(e))}function v(e,t){let n=t.trim().toLocaleLowerCase();return!n||[e.name,e.id,e.type,...p(e).map(e=>e.id)].some(e=>e?.toLocaleLowerCase().includes(n))}var y=(e,t)=>{if(e&&typeof e==`object`&&`response`in e){let t=e;if(t.response?.data?.error)return t.response.data.error}return e instanceof Error?e.message:t};function b(e){return{...e,id:e.id||l(),timestamp:Date.now()}}function x(e,t){return e.currentSession?.isPrivate&&e.currentSession?.id===t}function S(e,t){return e.sessions.some(e=>e.id===t)}function C(e,t){return!!e.currentSession&&(x(e,t)||S(e,e.currentSession.id))}function w(e,t,n){if(x(e,t))return e.currentSession.messages.find(e=>e.id===n.id)?e:{currentSession:{...e.currentSession,messages:[...e.currentSession.messages,n],updatedAt:Date.now()},sessions:e.sessions};if(e.sessions.find(e=>e.id===t)?.messages.some(e=>e.id===n.id))return e;let r=e.sessions.map(e=>{if(e.id!==t)return e;let r=[...e.messages];if(n.parentId){let e=n.parentId;r=r.map(t=>t.id!==e&&t.parentId!==e?t:{...t,isActive:!1,branchIndex:t.branchIndex??0,siblingCount:(n.branchIndex||0)+1})}return{...e,messages:[...r,n],updatedAt:Date.now()}});return{sessions:r,currentSession:e.currentSession?.id===t&&r.find(e=>e.id===t)||e.currentSession}}function T(e,t,n,r){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate){let t=e.currentSession.messages.find(e=>e.id===n);return!t||t.content===r?e:{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}}}let i=e.sessions.find(e=>e.id===t),a=i?.messages.find(e=>e.id===n);if(!i||!a||a.content===r)return e;let o=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r}:e),updatedAt:Date.now()}:e);return{sessions:o,currentSession:e.currentSession?.id===t&&o.find(e=>e.id===t)||e.currentSession}}function E(e,t,n,r,i,a,o){if(e.currentSession?.id!==t)return e;if(e.currentSession?.isPrivate)return{sessions:e.sessions,currentSession:{...e.currentSession,messages:e.currentSession.messages.map(e=>e.id===n?{...e,content:r,thinking:o,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}};let s=e.sessions.map(e=>e.id===t?{...e,messages:e.messages.map(e=>e.id===n?{...e,content:r,thinking:o,statistics:i,...a?{providerMetadata:a}:{}}:e),updatedAt:Date.now()}:e);return{sessions:s,currentSession:e.currentSession?.id===t&&s.find(e=>e.id===t)||e.currentSession}}function D(e){return e.reduce((e,t)=>(e[t.id]=t,e),{})}function O(e){return e.map(e=>({name:`persona:${e.id}`,model:e.model,size:0,digest:``,details:{parent_model:e.model,format:`persona`,family:`persona`,families:[`persona`],parameter_size:``,quantization_level:``},modified_at:new Date(e.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:e.name,personaDescription:e.description}))}function k(e){return e.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`).flatMap(e=>_(e).map(t=>({name:t,model:t,size:0,digest:``,details:{parent_model:``,format:``,family:``,families:[],parameter_size:``,quantization_level:``},modified_at:new Date().toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPlugin:!0,pluginId:e.id,pluginName:e.name})))}var A=`persona:`,j=`plugin:`,M=`ollama:`,N=`legacy:`,P=`agent:`,F=e=>{try{return decodeURIComponent(e)}catch{return null}};function I(e){return e.isLegacySelection?{model:e.name,providerType:null,providerId:null}:e.isPersona?{model:e.name,providerType:`ollama`,providerId:null}:e.isPlugin&&e.pluginId?{model:e.name,providerType:`plugin`,providerId:e.pluginId}:e.isAgent?{model:e.name,providerType:`agent`,providerId:e.agentId||e.name}:{model:e.name,providerType:`ollama`,providerId:null}}function L(e){return e.providerType?e.providerType===`plugin`&&e.providerId?`${j}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`agent`&&e.providerId?`${P}${encodeURIComponent(e.providerId)}:${encodeURIComponent(e.model)}`:e.providerType===`ollama`&&e.model.startsWith(A)?`${A}${encodeURIComponent(e.model.slice(8))}`:e.providerType===`ollama`?`${M}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`:`${N}${encodeURIComponent(e.model)}`}function R(e){return L(I(e))}function z(e){if(e.startsWith(A)){let t=F(e.slice(8));return t===null?null:{model:`${A}${t}`,providerType:`ollama`,providerId:null}}if(e.startsWith(j)){let t=e.slice(7),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`plugin`,providerId:r}:null}if(e.startsWith(P)){let t=e.slice(6),n=t.indexOf(`:`);if(n<1)return null;let r=F(t.slice(0,n)),i=F(t.slice(n+1));return r&&i?{model:i,providerType:`agent`,providerId:r}:null}if(e.startsWith(M)){let t=F(e.slice(7));return t?{model:t,providerType:`ollama`,providerId:null}:null}if(e.startsWith(N)){let t=F(e.slice(7));return t?{model:t,providerType:null,providerId:null}:null}return null}function B(e,t){return t.providerType===`plugin`?e.find(e=>e.isPlugin&&e.pluginId===t.providerId&&e.name===t.model):t.providerType===`agent`?e.find(e=>e.isAgent&&e.name===t.model):t.providerType===`ollama`?t.model.startsWith(A)?e.find(e=>e.isPersona&&e.name===t.model):e.find(e=>!e.isPlugin&&!e.isPersona&&e.name===t.model):e.find(e=>e.isLegacySelection&&e.name===t.model)??e.find(e=>e.name===t.model)}function V(e,t){if(!t.providerType)return L(t);let n=B(e,t);return n?R(n):L(t)}function H(e,t){let n=e.find(e=>R(e)===t);return n?I(n):z(t)}function U(e){return!e.isPlugin&&!e.isPersona&&!e.isAgent&&!e.isLegacySelection&&!e.isUnavailable}function W(e,t){return t.model?!!B(e.filter(e=>!e.isLegacySelection&&!e.isUnavailable),t):!1}function G(e,t){if(!t.model)return e;if(!t.providerType){if(e.some(e=>e.isLegacySelection&&e.name===t.model))return e;let n=!!B(e,t);return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isLegacySelection:!0,isUnavailable:!n}]}if(B(e,t))return e;let n=t.providerType,r=n===`ollama`&&t.model.startsWith(A),i=n===`plugin`&&t.providerId||void 0;return[...e,{name:t.model,model:t.model,size:0,digest:``,modified_at:``,details:{},isPlugin:n===`plugin`,pluginId:i,pluginName:i,isAgent:n===`agent`,agentId:n===`agent`&&t.providerId||void 0,isPersona:r,personaName:r?t.model.slice(8):void 0,isUnavailable:!0}]}var K=r(`chat-store`),q=n((n,r)=>({sessions:[],currentSession:null,setCurrentSession:e=>{n({currentSession:e})},draftSessionSettings:{},setDraftSessionSettings:e=>{n({draftSessionSettings:e})},createSession:async(e,r,a,o,s)=>{try{n({loading:!0,error:null});let c=await i.createSession(e,r,a,o,s);if(c.success&&c.data){let e=c.data;return n(t=>({sessions:[e,...t.sessions],currentSession:e,loading:!1})),t.success(`New chat created`),e}}catch(e){let r=y(e,`Failed to create session`);n({error:r,loading:!1}),t.error(r)}},loadSessions:async()=>{try{n({loading:!0,error:null});let e=await i.getSessions();e.success&&e.data&&n(t=>{let n=e.data||[],r=n.map(e=>e.id),i=null;return t.currentSession?.isPrivate?i=t.currentSession:t.currentSession&&r.includes(t.currentSession.id)?i=n.find(e=>e.id===t.currentSession.id)||null:n.length>0&&(i=n[0],t.currentSession&&K.warn(`Previous currentSession not found in backend sessions:`,t.currentSession.id)),{sessions:n,currentSession:i,loading:!1}})}catch(e){let r=y(e,`Failed to load sessions`);n({error:r,loading:!1}),t.error(r)}},deleteSession:async e=>{try{let r=await i.deleteSession(e);r.success?(n(t=>{let n=t.sessions.filter(t=>t.id!==e),r=t.currentSession?.id===e?n[0]||null:t.currentSession;return K.debug(`Store: Updating state, sessions count:`,n.length),{sessions:n,currentSession:r}}),t.success(`Chat deleted`)):(K.error(`Store: deleteSession failed:`,r),t.error(`Failed to delete chat`))}catch(e){K.error(`Store: deleteSession error:`,e);let n=y(e,`Failed to delete session`);t.error(n)}},clearAllSessions:async()=>{try{n({loading:!0,error:null});let e=await i.clearAllSessions();e.success?(n({sessions:[],currentSession:null,loading:!1}),t.success(`All chat history cleared`)):(K.error(`Store: clearAllSessions failed:`,e),t.error(`Failed to clear chat history`),n({loading:!1}))}catch(e){K.error(`Store: clearAllSessions error:`,e);let r=y(e,`Failed to clear chat history`);t.error(r),n({loading:!1})}},clearAllState:()=>{n({sessions:[],currentSession:null,models:[],selectedModel:``,selectedProviderType:null,selectedProviderId:null,systemMessage:``,loading:!1,error:null})},applySessionTitle:(e,t,r=Date.now())=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,title:t,updatedAt:r}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,title:t,updatedAt:r}:n.currentSession}))},updateSessionTitle:async(e,n)=>{try{let a=await i.updateSession(e,{title:n});if(a.success&&a.data){let n=a.data.title,i=a.data.updatedAt??Date.now();r().applySessionTitle(e,n,i),t.success(`Chat title updated`)}}catch(e){let n=y(e,`Failed to update session`);t.error(n)}},addMessage:(e,i)=>{let a=r(),o=x(a,e);if(!C(a,e)){t.error(`No valid chat session. Please create or select a chat.`),K.error(`addMessage blocked: currentSession is not valid`,a.currentSession?.id);return}if(!o&&!S(a,e)){t.error(`Session not found or invalid. Please select or create a valid chat session.`),K.error(`addMessage blocked: sessionId not found in sessions`,e);return}let s=b(i);n(t=>w(t,e,s))},updateMessage:(e,t,r)=>{n(n=>T(n,e,t,r))},updateMessageWithStatistics:(e,t,r,i,a,o)=>{n(n=>E(n,e,t,r,i,a,o))},rateMessage:async(e,t,a)=>{let o=e=>e.map(e=>e.id===t?{...e,rating:a}:e),s=r().currentSession?.isPrivate;if(n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:o(t.messages)}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:o(t.currentSession.messages)}:t.currentSession})),!s)try{await i.updateMessage(e,t,{rating:a??null})}catch(e){K.error(`Failed to save message rating:`,e)}},folders:[],loadFolders:async()=>{try{let e=await i.getFolders();e.success&&e.data&&n({folders:e.data})}catch(e){K.error(`Failed to load folders:`,e)}},createFolder:async e=>{try{let t=await i.createFolder(e);if(t.success&&t.data){let e=t.data;return n(t=>({folders:[...t.folders,e].sort((e,t)=>e.name.localeCompare(t.name))})),e}}catch(e){K.error(`Failed to create folder:`,e)}},renameFolder:async(e,t)=>{try{let r=await i.renameFolder(e,t);if(r.success&&r.data){let t=r.data;n(n=>({folders:n.folders.map(n=>n.id===e?t:n).sort((e,t)=>e.name.localeCompare(t.name))}))}}catch(e){K.error(`Failed to rename folder:`,e)}},deleteFolder:async e=>{try{(await i.deleteFolder(e)).success&&n(t=>({folders:t.folders.filter(t=>t.id!==e),sessions:t.sessions.map(t=>t.folderId===e?{...t,folderId:null}:t),currentSession:t.currentSession?.folderId===e?{...t.currentSession,folderId:null}:t.currentSession}))}catch(e){K.error(`Failed to delete folder:`,e)}},moveSessionToFolder:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,folderId:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,folderId:t}:n.currentSession}));try{await i.updateSession(e,{folderId:t})}catch(e){K.error(`Failed to move session to folder:`,e)}},setSessionArchived:async(e,t)=>{n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:t}:n),currentSession:n.currentSession?.id===e?{...n.currentSession,archived:t}:n.currentSession}));try{await i.updateSession(e,{archived:t})}catch(r){K.error(`Failed to update session archive state:`,r),n(n=>({sessions:n.sessions.map(n=>n.id===e?{...n,archived:!t}:n)}))}},truncateMessagesFrom:(e,t)=>{let r=e=>{let n=e.findIndex(e=>e.id===t);return n===-1?e:e.slice(0,n)};n(t=>({sessions:t.sessions.map(t=>t.id===e?{...t,messages:r(t.messages),updatedAt:Date.now()}:t),currentSession:t.currentSession?.id===e?{...t.currentSession,messages:r(t.currentSession.messages),updatedAt:Date.now()}:t.currentSession}))},models:[],loadModels:async()=>{try{n({loading:!0,error:null}),K.debug(`Loading models from API...`);let i=[],c;try{let e=await s.getModels();e.success&&e.data?(i=[...e.data],K.debug(`Ollama models loaded:`,e.data.length)):c=Error(e.error||e.message||`Ollama models are unavailable.`)}catch(e){c=e,K.warn(`Ollama models are unavailable; continuing with plugin models:`,e)}try{let e=await o.getAllPlugins();if(e.success&&e.data){let t=e.data.filter(e=>e.active&&e.type!==`tts`&&e.type!==`image`);K.debug(`🔌 Active plugins found:`,t.map(e=>e.name));let n=k(t);i.push(...n),K.debug(`Plugin models added:`,n.length)}}catch(e){K.error(`❌ Failed to load plugin models:`,e),e instanceof Error&&K.error(`❌ Plugin error details:`,{message:e.message,response:e.response?.data,status:e.response?.status,url:e.config?.url})}try{let{agentCliApi:t}=await e(async()=>{let{agentCliApi:e}=await import(`./api-DVeiqNG9.js`).then(e=>e.t);return{agentCliApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await t.getModels();if(n.success&&n.data){let e=n.data.map(e=>({name:e.id,model:e.id,size:0,digest:``,modified_at:``,details:{},isAgent:!0,agentName:e.name,agentId:e.agentId}));i.push(...e),K.debug(`Agent CLI models added:`,e.length)}}catch(e){K.warn(`Agent CLI models unavailable:`,e)}let l=i.length;try{let{personaApi:t}=await e(async()=>{let{personaApi:e}=await import(`./api-DVeiqNG9.js`).then(e=>e.t);return{personaApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=await t.getPersonas();if(r.success&&r.data){let e=D(r.data),t=O(r.data);i.push(...t),n(t=>({...t,personas:e}))}}catch(e){K.error(`❌ Failed to load personas:`,e)}K.debug(`Total models loaded:`,i.length);let u=l===0&&c?y(c,`No model provider is available`):null,d=r(),f=d.selectedModel,p={model:f,providerType:d.selectedProviderType,providerId:d.selectedProviderId},m=!!B(i,p),h=d.selectedProviderType===`ollama`||d.selectedProviderType===`plugin`;if(f&&!m&&h){let e=`Selected model "${f}" is unavailable from ${d.selectedProviderType===`plugin`?d.selectedProviderId||`plugin`:`Ollama`}. Reactivate that provider or select another model.`;n({models:i,loading:!1,error:e}),t.error(e);return}if(f&&!m&&i.length>0){let e=I(i[0]);K.debug(`⚠️ Legacy selected model "${f}" no longer available, falling back to "${e.model}"`),n({models:i,loading:!1,selectedModel:e.model,selectedProviderType:e.providerType||null,selectedProviderId:e.providerId||null,error:u}),a.setDefaultModel(e.model,e.providerType,e.providerId).catch(e=>{K.warn(`Failed to save fallback default model:`,e)}),t.success(`Switched to ${e.model} (previous model no longer available)`)}else n({models:i,loading:!1,error:u});u&&t.error(u)}catch(e){K.error(`Error loading models:`,e);let r=y(e,`Failed to load models`);n({error:r,loading:!1}),t.error(r)}},loadPreferences:async()=>{try{let e=await a.getPreferences();if(e.success&&e.data){let{defaultModel:t,defaultProviderType:r,defaultProviderId:i,systemMessage:a}=e.data;t&&(n({selectedModel:t,selectedProviderType:r||null,selectedProviderId:r===`plugin`&&i||null}),K.debug(`✅ Loaded default model from backend:`,t)),a!==void 0&&(n({systemMessage:a}),K.debug(`✅ Loaded system message from backend`))}}catch(e){K.warn(`❌ Failed to load preferences from backend:`,e)}},selectedModel:``,selectedProviderType:null,selectedProviderId:null,setSelectedModel:(e,t=null,r=null)=>{let i=(t===`plugin`||t===`agent`)&&r||null;n({selectedModel:e,selectedProviderType:t,selectedProviderId:i}),a.setDefaultModel(e,t,i).catch(e=>{K.warn(`Failed to save default model to backend:`,e)})},updateCurrentSessionModel:async(e,a=null,o=null)=>{let s=r();if(!s.currentSession)throw Error(`No current session to update`);try{let r=await i.updateSession(s.currentSession.id,{model:e,providerType:a,providerId:a===`plugin`||a===`agent`?o:null});r.success&&r.data&&(n(t=>({sessions:t.sessions.map(e=>e.id===t.currentSession?.id?r.data:e),currentSession:r.data,selectedModel:e,selectedProviderType:a,selectedProviderId:(a===`plugin`||a===`agent`)&&o||null})),t.success(`Model updated for current chat`))}catch(e){let n=y(e,`Failed to update session model`);throw t.error(n),e}},personas:{},loadPersonas:async()=>{try{n({loading:!0,error:null});let e=await c.getPersonas();if(e.success&&e.data){let t=e.data;n({personas:D(t),loading:!1}),K.debug(`✅ Personas loaded:`,t.length)}}catch(e){let t=y(e,`Failed to load personas`);n({error:t,loading:!1}),K.error(`❌ Failed to load personas:`,t)}},getCurrentPersona:()=>{let e=r();if(!e.currentSession||!e.currentSession.model?.startsWith(`persona:`))return null;let t=e.currentSession.model.replace(`persona:`,``);return e.personas[t]||null},systemMessage:``,setSystemMessage:e=>{let t=r();if(n({systemMessage:e}),a.setSystemMessage(e).catch(e=>{K.warn(`Failed to save system message to backend:`,e)}),t.currentSession){let r=t.currentSession.messages.findIndex(e=>e.role===`system`);if(r!==-1){n(t=>{let n=t.sessions.map(n=>{if(n.id===t.currentSession?.id){let t=n.messages.map((t,n)=>n===r&&t.role===`system`?{...t,content:e,timestamp:Date.now()}:t);return{...n,messages:t,updatedAt:Date.now()}}return n});return{sessions:n,currentSession:t.currentSession?n.find(e=>e.id===t.currentSession.id)||t.currentSession:null}});let a=t.currentSession.messages[r];i.updateMessage(t.currentSession.id,a.id,{content:e}).catch(e=>{K.warn(`Failed to sync system message update to backend:`,e)}),K.debug(`✅ Updated system message in current session`)}}},loading:!1,error:null,setError:e=>n({error:e}),generatingTitleForSession:null,setGeneratingTitleForSession:e=>n({generatingTitleForSession:e}),...typeof window<`u`&&{testPluginApi:async()=>{try{K.debug(`🧪 Testing plugin API...`);let e=await o.getAllPlugins();return K.debug(`✅ Plugin API test result:`,e),e}catch(e){return K.error(`❌ Plugin API test failed:`,e),{error:e}}}}}));export{V as a,W as c,p as d,v as f,I as i,G as l,R as n,B as o,m as p,H as r,U as s,q as t,y as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./logger-DSXjF4ye.js";var n=t(`config`),r=window.location.protocol===`file:`?`http://localhost:3001/api`:`${window.location.origin}/api`,i=e(),a=()=>{i&&(n.debug(`API_BASE_URL configured as:`,r),n.debug(`Window location:`,window.location),n.debug(`Environment variables:`,{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_APP_VERSION:`0.19.
|
|
1
|
+
import{n as e,t}from"./logger-DSXjF4ye.js";var n=t(`config`),r=window.location.protocol===`file:`?`http://localhost:3001/api`:`${window.location.origin}/api`,i=e(),a=()=>{i&&(n.debug(`API_BASE_URL configured as:`,r),n.debug(`Window location:`,window.location),n.debug(`Environment variables:`,{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_APP_VERSION:`0.19.5`}))};export{a as n,r as t};
|