libre-webui 0.6.2 → 0.6.3
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/frontend/dist/assets/index-DUg4kgBT.js +51 -0
- package/frontend/dist/css/{index-Dh5G0uFZ.css → index-wpq7d2po.css} +1 -1
- package/frontend/dist/index.html +6 -6
- package/frontend/dist/js/{ArtifactContainer-BLHcg4YG.js → ArtifactContainer-3CkpcYwD.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-Br-19dKk.js → ArtifactDemoPage-oSYi__50.js} +1 -1
- package/frontend/dist/js/{ChatPage-CQGVCtT_.js → ChatPage-Cz0C9idF.js} +3 -3
- package/frontend/dist/js/{GalleryPage-CvA1Sox3.js → GalleryPage-cCtfDEU2.js} +1 -1
- package/frontend/dist/js/{ModelsPage-9djD6Uj9.js → ModelsPage-CPrYNnp9.js} +1 -1
- package/frontend/dist/js/PersonasPage-5vnLrOBA.js +13 -0
- package/frontend/dist/js/{UserManagementPage-H89n1w08.js → UserManagementPage-BSrxERfr.js} +1 -1
- package/frontend/dist/js/{markdown-vendor-DeGQOJEA.js → markdown-vendor-QwEm2Xso.js} +1 -1
- package/frontend/dist/js/{router-vendor-CYqbjR9t.js → router-vendor-CmbUVdlE.js} +5 -5
- package/frontend/dist/js/ui-vendor-mY5_zojY.js +177 -0
- package/frontend/dist/js/utils-vendor-DBPpO82s.js +6 -0
- package/package.json +1 -1
- package/frontend/dist/assets/index-DE-xmTDC.js +0 -51
- package/frontend/dist/js/PersonasPage-ajydrtrS.js +0 -13
- package/frontend/dist/js/ui-vendor-DnQP3_cJ.js +0 -177
- package/frontend/dist/js/utils-vendor-COrKO_vV.js +0 -6
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/utils-vendor-DBPpO82s.js","js/router-vendor-CmbUVdlE.js","js/ChatPage-Cz0C9idF.js","js/markdown-vendor-QwEm2Xso.js","js/ui-vendor-mY5_zojY.js","js/ArtifactContainer-3CkpcYwD.js","js/ModelsPage-CPrYNnp9.js","js/PersonasPage-5vnLrOBA.js","js/GalleryPage-cCtfDEU2.js","js/UserManagementPage-BSrxERfr.js","js/ArtifactDemoPage-oSYi__50.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Cr=Object.defineProperty;var Fr=(n,a,t)=>a in n?Cr(n,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[a]=t;var Ie=(n,a,t)=>Fr(n,typeof a!="symbol"?a+"":a,t);import{j as e,_ as he,h as Or}from"../js/markdown-vendor-QwEm2Xso.js";import{b as Er,g as Lr,r as h,a as Gr,R as de,u as ct,c as ja,d as Br,L as na,e as wn,N as Tt,H as Kr,B as Hr,f as Wa,h as oe}from"../js/router-vendor-CmbUVdlE.js";import{X as Me,I as Xa,U as Ma,z as j,G as ut,P as Rr,B as Nt,S as Ur,V as It,D as va,a as Ct,b as Pn,R as ra,C as Se,c as Mn,E as Ce,M as Qa,K as et,d as $r,e as Vr,f as Dn,T as An,L as We,g as qe,h as Fe,i as Wr,j as qr,k as Jr,l as _r,m as Yr,n as xa,o as Zr,p as Ft,q as Ot,r as Xr,s as Qr,t as Et,u as Lt,v as zn,w as ei,x as Q,y as jn,A as ai,F as ti,H as Tn,J as Gt,N as Bt,O as at,Q as ni,W as Nn,Z as ri,Y as Kt,_ as ii}from"../js/ui-vendor-mY5_zojY.js";import{t as oi,c as si,a as Ta,b as tt}from"../js/utils-vendor-DBPpO82s.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function t(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=t(i);fetch(i.href,o)}})();var ka={},Ht;function li(){if(Ht)return ka;Ht=1;var n=Er();return ka.createRoot=n.createRoot,ka.hydrateRoot=n.hydrateRoot,ka}var di=li();const ci=Lr(di),B=n=>typeof n=="string",ia=()=>{let n,a;const t=new Promise((r,i)=>{n=r,a=i});return t.resolve=n,t.reject=a,t},Rt=n=>n==null?"":""+n,ui=(n,a,t)=>{n.forEach(r=>{a[r]&&(t[r]=a[r])})},mi=/###/g,Ut=n=>n&&n.indexOf("###")>-1?n.replace(mi,"."):n,$t=n=>!n||B(n),oa=(n,a,t)=>{const r=B(a)?a.split("."):a;let i=0;for(;i<r.length-1;){if($t(n))return{};const o=Ut(r[i]);!n[o]&&t&&(n[o]=new t),Object.prototype.hasOwnProperty.call(n,o)?n=n[o]:n={},++i}return $t(n)?{}:{obj:n,k:Ut(r[i])}},Vt=(n,a,t)=>{const{obj:r,k:i}=oa(n,a,Object);if(r!==void 0||a.length===1){r[i]=t;return}let o=a[a.length-1],s=a.slice(0,a.length-1),d=oa(n,s,Object);for(;d.obj===void 0&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),d=oa(n,s,Object),d?.obj&&typeof d.obj[`${d.k}.${o}`]<"u"&&(d.obj=void 0);d.obj[`${d.k}.${o}`]=t},pi=(n,a,t,r)=>{const{obj:i,k:o}=oa(n,a,Object);i[o]=i[o]||[],i[o].push(t)},Da=(n,a)=>{const{obj:t,k:r}=oa(n,a);if(t&&Object.prototype.hasOwnProperty.call(t,r))return t[r]},gi=(n,a,t)=>{const r=Da(n,t);return r!==void 0?r:Da(a,t)},In=(n,a,t)=>{for(const r in a)r!=="__proto__"&&r!=="constructor"&&(r in n?B(n[r])||n[r]instanceof String||B(a[r])||a[r]instanceof String?t&&(n[r]=a[r]):In(n[r],a[r],t):n[r]=a[r]);return n},Re=n=>n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var hi={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const bi=n=>B(n)?n.replace(/[&<>"'\/]/g,a=>hi[a]):n;class ki{constructor(a){this.capacity=a,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(a){const t=this.regExpMap.get(a);if(t!==void 0)return t;const r=new RegExp(a);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(a,r),this.regExpQueue.push(a),r}}const fi=[" ",",","?","!",";"],yi=new ki(20),vi=(n,a,t)=>{a=a||"",t=t||"";const r=fi.filter(s=>a.indexOf(s)<0&&t.indexOf(s)<0);if(r.length===0)return!0;const i=yi.getRegExp(`(${r.map(s=>s==="?"?"\\?":s).join("|")})`);let o=!i.test(n);if(!o){const s=n.indexOf(t);s>0&&!i.test(n.substring(0,s))&&(o=!0)}return o},nt=(n,a,t=".")=>{if(!n)return;if(n[a])return Object.prototype.hasOwnProperty.call(n,a)?n[a]:void 0;const r=a.split(t);let i=n;for(let o=0;o<r.length;){if(!i||typeof i!="object")return;let s,d="";for(let u=o;u<r.length;++u)if(u!==o&&(d+=t),d+=r[u],s=i[d],s!==void 0){if(["string","number","boolean"].indexOf(typeof s)>-1&&u<r.length-1)continue;o+=u-o+1;break}i=s}return i},ca=n=>n?.replace("_","-"),xi={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,a){console?.[n]?.apply?.(console,a)}};class Aa{constructor(a,t={}){this.init(a,t)}init(a,t={}){this.prefix=t.prefix||"i18next:",this.logger=a||xi,this.options=t,this.debug=t.debug}log(...a){return this.forward(a,"log","",!0)}warn(...a){return this.forward(a,"warn","",!0)}error(...a){return this.forward(a,"error","")}deprecate(...a){return this.forward(a,"warn","WARNING DEPRECATED: ",!0)}forward(a,t,r,i){return i&&!this.debug?null:(B(a[0])&&(a[0]=`${r}${this.prefix} ${a[0]}`),this.logger[t](a))}create(a){return new Aa(this.logger,{prefix:`${this.prefix}:${a}:`,...this.options})}clone(a){return a=a||this.options,a.prefix=a.prefix||this.prefix,new Aa(this.logger,a)}}var we=new Aa;class Na{constructor(){this.observers={}}on(a,t){return a.split(" ").forEach(r=>{this.observers[r]||(this.observers[r]=new Map);const i=this.observers[r].get(t)||0;this.observers[r].set(t,i+1)}),this}off(a,t){if(this.observers[a]){if(!t){delete this.observers[a];return}this.observers[a].delete(t)}}emit(a,...t){this.observers[a]&&Array.from(this.observers[a].entries()).forEach(([i,o])=>{for(let s=0;s<o;s++)i(...t)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,o])=>{for(let s=0;s<o;s++)i.apply(i,[a,...t])})}}class Wt extends Na{constructor(a,t={ns:["translation"],defaultNS:"translation"}){super(),this.data=a||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(a){this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}removeNamespaces(a){const t=this.options.ns.indexOf(a);t>-1&&this.options.ns.splice(t,1)}getResource(a,t,r,i={}){const o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,s=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let d;a.indexOf(".")>-1?d=a.split("."):(d=[a,t],r&&(Array.isArray(r)?d.push(...r):B(r)&&o?d.push(...r.split(o)):d.push(r)));const u=Da(this.data,d);return!u&&!t&&!r&&a.indexOf(".")>-1&&(a=d[0],t=d[1],r=d.slice(2).join(".")),u||!s||!B(r)?u:nt(this.data?.[a]?.[t],r,o)}addResource(a,t,r,i,o={silent:!1}){const s=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let d=[a,t];r&&(d=d.concat(s?r.split(s):r)),a.indexOf(".")>-1&&(d=a.split("."),i=t,t=d[1]),this.addNamespaces(t),Vt(this.data,d,i),o.silent||this.emit("added",a,t,r,i)}addResources(a,t,r,i={silent:!1}){for(const o in r)(B(r[o])||Array.isArray(r[o]))&&this.addResource(a,t,o,r[o],{silent:!0});i.silent||this.emit("added",a,t,r)}addResourceBundle(a,t,r,i,o,s={silent:!1,skipCopy:!1}){let d=[a,t];a.indexOf(".")>-1&&(d=a.split("."),i=r,r=t,t=d[1]),this.addNamespaces(t);let u=Da(this.data,d)||{};s.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?In(u,r,o):u={...u,...r},Vt(this.data,d,u),s.silent||this.emit("added",a,t,r)}removeResourceBundle(a,t){this.hasResourceBundle(a,t)&&delete this.data[a][t],this.removeNamespaces(t),this.emit("removed",a,t)}hasResourceBundle(a,t){return this.getResource(a,t)!==void 0}getResourceBundle(a,t){return t||(t=this.options.defaultNS),this.getResource(a,t)}getDataByLanguage(a){return this.data[a]}hasLanguageSomeTranslations(a){const t=this.getDataByLanguage(a);return!!(t&&Object.keys(t)||[]).find(i=>t[i]&&Object.keys(t[i]).length>0)}toJSON(){return this.data}}var Cn={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,a,t,r,i){return n.forEach(o=>{a=this.processors[o]?.process(a,t,r,i)??a}),a}};const Fn=Symbol("i18next/PATH_KEY");function Si(){const n=[],a=Object.create(null);let t;return a.get=(r,i)=>(t?.revoke?.(),i===Fn?n:(n.push(i),t=Proxy.revocable(r,a),t.proxy)),Proxy.revocable(Object.create(null),a).proxy}function rt(n,a){const{[Fn]:t}=n(Si());return t.join(a?.keySeparator??".")}const qt={},qa=n=>!B(n)&&typeof n!="boolean"&&typeof n!="number";class za extends Na{constructor(a,t={}){super(),ui(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=we.create("translator")}changeLanguage(a){a&&(this.language=a)}exists(a,t={interpolation:{}}){const r={...t};if(a==null)return!1;const i=this.resolve(a,r);if(i?.res===void 0)return!1;const o=qa(i.res);return!(r.returnObjects===!1&&o)}extractFromKey(a,t){let r=t.nsSeparator!==void 0?t.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&a.indexOf(r)>-1,d=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!vi(a,r,i);if(s&&!d){const u=a.match(this.interpolator.nestingRegexp);if(u&&u.length>0)return{key:a,namespaces:B(o)?[o]:o};const m=a.split(r);(r!==i||r===i&&this.options.ns.indexOf(m[0])>-1)&&(o=m.shift()),a=m.join(i)}return{key:a,namespaces:B(o)?[o]:o}}translate(a,t,r){let i=typeof t=="object"?{...t}:t;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i={...i}),i||(i={}),a==null)return"";typeof a=="function"&&(a=rt(a,{...this.options,...i})),Array.isArray(a)||(a=[String(a)]);const o=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,s=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:d,namespaces:u}=this.extractFromKey(a[a.length-1],i),m=u[u.length-1];let g=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;g===void 0&&(g=":");const p=i.lng||this.language,k=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(p?.toLowerCase()==="cimode")return k?o?{res:`${m}${g}${d}`,usedKey:d,exactUsedKey:d,usedLng:p,usedNS:m,usedParams:this.getUsedParamsDetails(i)}:`${m}${g}${d}`:o?{res:d,usedKey:d,exactUsedKey:d,usedLng:p,usedNS:m,usedParams:this.getUsedParamsDetails(i)}:d;const x=this.resolve(a,i);let b=x?.res;const w=x?.usedKey||d,S=x?.exactUsedKey||d,F=["[object Number]","[object Function]","[object RegExp]"],L=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,A=!this.i18nFormat||this.i18nFormat.handleAsObject,z=i.count!==void 0&&!B(i.count),N=za.hasDefaultValue(i),P=z?this.pluralResolver.getSuffix(p,i.count,i):"",R=i.ordinal&&z?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",J=z&&!i.ordinal&&i.count===0,G=J&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${P}`]||i[`defaultValue${R}`]||i.defaultValue;let E=b;A&&!b&&N&&(E=G);const O=qa(E),K=Object.prototype.toString.apply(E);if(A&&E&&O&&F.indexOf(K)<0&&!(B(L)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const c=this.options.returnedObjectHandler?this.options.returnedObjectHandler(w,E,{...i,ns:u}):`key '${d} (${this.language})' returned an object instead of string.`;return o?(x.res=c,x.usedParams=this.getUsedParamsDetails(i),x):c}if(s){const c=Array.isArray(E),U=c?[]:{},me=c?S:w;for(const V in E)if(Object.prototype.hasOwnProperty.call(E,V)){const Y=`${me}${s}${V}`;N&&!b?U[V]=this.translate(Y,{...i,defaultValue:qa(G)?G[V]:void 0,joinArrays:!1,ns:u}):U[V]=this.translate(Y,{...i,joinArrays:!1,ns:u}),U[V]===Y&&(U[V]=E[V])}b=U}}else if(A&&B(L)&&Array.isArray(b))b=b.join(L),b&&(b=this.extendTranslation(b,a,i,r));else{let c=!1,U=!1;!this.isValidLookup(b)&&N&&(c=!0,b=G),this.isValidLookup(b)||(U=!0,b=d);const V=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&U?void 0:b,Y=N&&G!==b&&this.options.updateMissing;if(U||c||Y){if(this.logger.log(Y?"updateKey":"missingKey",p,m,d,Y?G:b),s){const T=this.resolve(d,{...i,keySeparator:!1});T&&T.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let ee=[];const re=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&re&&re[0])for(let T=0;T<re.length;T++)ee.push(re[T]);else this.options.saveMissingTo==="all"?ee=this.languageUtils.toResolveHierarchy(i.lng||this.language):ee.push(i.lng||this.language);const W=(T,$,Z)=>{const Pe=N&&Z!==b?Z:V;this.options.missingKeyHandler?this.options.missingKeyHandler(T,m,$,Pe,Y,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(T,m,$,Pe,Y,i),this.emit("missingKey",T,m,$,b)};this.options.saveMissing&&(this.options.saveMissingPlurals&&z?ee.forEach(T=>{const $=this.pluralResolver.getSuffixes(T,i);J&&i[`defaultValue${this.options.pluralSeparator}zero`]&&$.indexOf(`${this.options.pluralSeparator}zero`)<0&&$.push(`${this.options.pluralSeparator}zero`),$.forEach(Z=>{W([T],d+Z,i[`defaultValue${Z}`]||G)})}):W(ee,d,G))}b=this.extendTranslation(b,a,i,x,r),U&&b===d&&this.options.appendNamespaceToMissingKey&&(b=`${m}${g}${d}`),(U||c)&&this.options.parseMissingKeyHandler&&(b=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${m}${g}${d}`:d,c?b:void 0,i))}return o?(x.res=b,x.usedParams=this.getUsedParamsDetails(i),x):b}extendTranslation(a,t,r,i,o){if(this.i18nFormat?.parse)a=this.i18nFormat.parse(a,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const u=B(a)&&(r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(u){const p=a.match(this.interpolator.nestingRegexp);m=p&&p.length}let g=r.replace&&!B(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(g={...this.options.interpolation.defaultVariables,...g}),a=this.interpolator.interpolate(a,g,r.lng||this.language||i.usedLng,r),u){const p=a.match(this.interpolator.nestingRegexp),k=p&&p.length;m<k&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),r.nest!==!1&&(a=this.interpolator.nest(a,(...p)=>o?.[0]===p[0]&&!r.context?(this.logger.warn(`It seems you are nesting recursively key: ${p[0]} in key: ${t[0]}`),null):this.translate(...p,t),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,d=B(s)?[s]:s;return a!=null&&d?.length&&r.applyPostProcessor!==!1&&(a=Cn.handle(d,a,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),a}resolve(a,t={}){let r,i,o,s,d;return B(a)&&(a=[a]),a.forEach(u=>{if(this.isValidLookup(r))return;const m=this.extractFromKey(u,t),g=m.key;i=g;let p=m.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const k=t.count!==void 0&&!B(t.count),x=k&&!t.ordinal&&t.count===0,b=t.context!==void 0&&(B(t.context)||typeof t.context=="number")&&t.context!=="",w=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);p.forEach(S=>{this.isValidLookup(r)||(d=S,!qt[`${w[0]}-${S}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(d)&&(qt[`${w[0]}-${S}`]=!0,this.logger.warn(`key "${i}" for languages "${w.join(", ")}" won't get resolved as namespace "${d}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),w.forEach(F=>{if(this.isValidLookup(r))return;s=F;const L=[g];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(L,g,F,S,t);else{let z;k&&(z=this.pluralResolver.getSuffix(F,t.count,t));const N=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(k&&(t.ordinal&&z.indexOf(P)===0&&L.push(g+z.replace(P,this.options.pluralSeparator)),L.push(g+z),x&&L.push(g+N)),b){const R=`${g}${this.options.contextSeparator||"_"}${t.context}`;L.push(R),k&&(t.ordinal&&z.indexOf(P)===0&&L.push(R+z.replace(P,this.options.pluralSeparator)),L.push(R+z),x&&L.push(R+N))}}let A;for(;A=L.pop();)this.isValidLookup(r)||(o=A,r=this.getResource(F,S,A,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:d}}isValidLookup(a){return a!==void 0&&!(!this.options.returnNull&&a===null)&&!(!this.options.returnEmptyString&&a==="")}getResource(a,t,r,i={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(a,t,r,i):this.resourceStore.getResource(a,t,r,i)}getUsedParamsDetails(a={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=a.replace&&!B(a.replace);let i=r?a.replace:a;if(r&&typeof a.count<"u"&&(i.count=a.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const o of t)delete i[o]}return i}static hasDefaultValue(a){const t="defaultValue";for(const r in a)if(Object.prototype.hasOwnProperty.call(a,r)&&t===r.substring(0,t.length)&&a[r]!==void 0)return!0;return!1}}class Jt{constructor(a){this.options=a,this.supportedLngs=this.options.supportedLngs||!1,this.logger=we.create("languageUtils")}getScriptPartFromCode(a){if(a=ca(a),!a||a.indexOf("-")<0)return null;const t=a.split("-");return t.length===2||(t.pop(),t[t.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(a){if(a=ca(a),!a||a.indexOf("-")<0)return a;const t=a.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(a){if(B(a)&&a.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(a)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?a.toLowerCase():a)}return this.options.cleanCode||this.options.lowerCaseLng?a.toLowerCase():a}isSupportedCode(a){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(a=this.getLanguagePartFromCode(a)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(a)>-1}getBestMatchFromCodes(a){if(!a)return null;let t;return a.forEach(r=>{if(t)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(t=i)}),!t&&this.options.supportedLngs&&a.forEach(r=>{if(t)return;const i=this.getScriptPartFromCode(r);if(this.isSupportedCode(i))return t=i;const o=this.getLanguagePartFromCode(r);if(this.isSupportedCode(o))return t=o;t=this.options.supportedLngs.find(s=>{if(s===o)return s;if(!(s.indexOf("-")<0&&o.indexOf("-")<0)&&(s.indexOf("-")>0&&o.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===o||s.indexOf(o)===0&&o.length>1))return s})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(a,t){if(!a)return[];if(typeof a=="function"&&(a=a(t)),B(a)&&(a=[a]),Array.isArray(a))return a;if(!t)return a.default||[];let r=a[t];return r||(r=a[this.getScriptPartFromCode(t)]),r||(r=a[this.formatLanguageCode(t)]),r||(r=a[this.getLanguagePartFromCode(t)]),r||(r=a.default),r||[]}toResolveHierarchy(a,t){const r=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],a),i=[],o=s=>{s&&(this.isSupportedCode(s)?i.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return B(a)&&(a.indexOf("-")>-1||a.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(a)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(a)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(a))):B(a)&&o(this.formatLanguageCode(a)),r.forEach(s=>{i.indexOf(s)<0&&o(this.formatLanguageCode(s))}),i}}const _t={zero:0,one:1,two:2,few:3,many:4,other:5},Yt={select:n=>n===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class wi{constructor(a,t={}){this.languageUtils=a,this.options=t,this.logger=we.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(a,t={}){const r=ca(a==="dev"?"en":a),i=t.ordinal?"ordinal":"cardinal",o=JSON.stringify({cleanedCode:r,type:i});if(o in this.pluralRulesCache)return this.pluralRulesCache[o];let s;try{s=new Intl.PluralRules(r,{type:i})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),Yt;if(!a.match(/-|_/))return Yt;const u=this.languageUtils.getLanguagePartFromCode(a);s=this.getRule(u,t)}return this.pluralRulesCache[o]=s,s}needsPlural(a,t={}){let r=this.getRule(a,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(a,t,r={}){return this.getSuffixes(a,r).map(i=>`${t}${i}`)}getSuffixes(a,t={}){let r=this.getRule(a,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((i,o)=>_t[i]-_t[o]).map(i=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${i}`):[]}getSuffix(a,t,r={}){const i=this.getRule(a,r);return i?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(t)}`:(this.logger.warn(`no plural rule found for: ${a}`),this.getSuffix("dev",t,r))}}const Zt=(n,a,t,r=".",i=!0)=>{let o=gi(n,a,t);return!o&&i&&B(t)&&(o=nt(n,t,r),o===void 0&&(o=nt(a,t,r))),o},Ja=n=>n.replace(/\$/g,"$$$$");class Xt{constructor(a={}){this.logger=we.create("interpolator"),this.options=a,this.format=a?.interpolation?.format||(t=>t),this.init(a)}init(a={}){a.interpolation||(a.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:i,prefix:o,prefixEscaped:s,suffix:d,suffixEscaped:u,formatSeparator:m,unescapeSuffix:g,unescapePrefix:p,nestingPrefix:k,nestingPrefixEscaped:x,nestingSuffix:b,nestingSuffixEscaped:w,nestingOptionsSeparator:S,maxReplaces:F,alwaysFormat:L}=a.interpolation;this.escape=t!==void 0?t:bi,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=o?Re(o):s||"{{",this.suffix=d?Re(d):u||"}}",this.formatSeparator=m||",",this.unescapePrefix=g?"":p||"-",this.unescapeSuffix=this.unescapePrefix?"":g||"",this.nestingPrefix=k?Re(k):x||Re("$t("),this.nestingSuffix=b?Re(b):w||Re(")"),this.nestingOptionsSeparator=S||",",this.maxReplaces=F||1e3,this.alwaysFormat=L!==void 0?L:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const a=(t,r)=>t?.source===r?(t.lastIndex=0,t):new RegExp(r,"g");this.regexp=a(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=a(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=a(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(a,t,r,i){let o,s,d;const u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},m=x=>{if(x.indexOf(this.formatSeparator)<0){const F=Zt(t,u,x,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(F,void 0,r,{...i,...t,interpolationkey:x}):F}const b=x.split(this.formatSeparator),w=b.shift().trim(),S=b.join(this.formatSeparator).trim();return this.format(Zt(t,u,w,this.options.keySeparator,this.options.ignoreJSONStructure),S,r,{...i,...t,interpolationkey:w})};this.resetRegExp();const g=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,p=i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:x=>Ja(x)},{regex:this.regexp,safeValue:x=>this.escapeValue?Ja(this.escape(x)):Ja(x)}].forEach(x=>{for(d=0;o=x.regex.exec(a);){const b=o[1].trim();if(s=m(b),s===void 0)if(typeof g=="function"){const S=g(a,o,i);s=B(S)?S:""}else if(i&&Object.prototype.hasOwnProperty.call(i,b))s="";else if(p){s=o[0];continue}else this.logger.warn(`missed to pass in variable ${b} for interpolating ${a}`),s="";else!B(s)&&!this.useRawValueToEscape&&(s=Rt(s));const w=x.safeValue(s);if(a=a.replace(o[0],w),p?(x.regex.lastIndex+=s.length,x.regex.lastIndex-=o[0].length):x.regex.lastIndex=0,d++,d>=this.maxReplaces)break}}),a}nest(a,t,r={}){let i,o,s;const d=(u,m)=>{const g=this.nestingOptionsSeparator;if(u.indexOf(g)<0)return u;const p=u.split(new RegExp(`${g}[ ]*{`));let k=`{${p[1]}`;u=p[0],k=this.interpolate(k,s);const x=k.match(/'/g),b=k.match(/"/g);((x?.length??0)%2===0&&!b||b.length%2!==0)&&(k=k.replace(/'/g,'"'));try{s=JSON.parse(k),m&&(s={...m,...s})}catch(w){return this.logger.warn(`failed parsing options string in nesting for key ${u}`,w),`${u}${g}${k}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,u};for(;i=this.nestingRegexp.exec(a);){let u=[];s={...r},s=s.replace&&!B(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const m=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(m!==-1&&(u=i[1].slice(m).split(this.formatSeparator).map(g=>g.trim()).filter(Boolean),i[1]=i[1].slice(0,m)),o=t(d.call(this,i[1].trim(),s),s),o&&i[0]===a&&!B(o))return o;B(o)||(o=Rt(o)),o||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${a}`),o=""),u.length&&(o=u.reduce((g,p)=>this.format(g,p,r.lng,{...r,interpolationkey:i[1].trim()}),o.trim())),a=a.replace(i[0],o),this.regexp.lastIndex=0}return a}}const Pi=n=>{let a=n.toLowerCase().trim();const t={};if(n.indexOf("(")>-1){const r=n.split("(");a=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);a==="currency"&&i.indexOf(":")<0?t.currency||(t.currency=i.trim()):a==="relativetime"&&i.indexOf(":")<0?t.range||(t.range=i.trim()):i.split(";").forEach(s=>{if(s){const[d,...u]=s.split(":"),m=u.join(":").trim().replace(/^'+|'+$/g,""),g=d.trim();t[g]||(t[g]=m),m==="false"&&(t[g]=!1),m==="true"&&(t[g]=!0),isNaN(m)||(t[g]=parseInt(m,10))}})}return{formatName:a,formatOptions:t}},Qt=n=>{const a={};return(t,r,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=r+JSON.stringify(o);let d=a[s];return d||(d=n(ca(r),i),a[s]=d),d(t)}},Mi=n=>(a,t,r)=>n(ca(t),r)(a);class Di{constructor(a={}){this.logger=we.create("formatter"),this.options=a,this.init(a)}init(a,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?Qt:Mi;this.formats={number:r((i,o)=>{const s=new Intl.NumberFormat(i,{...o});return d=>s.format(d)}),currency:r((i,o)=>{const s=new Intl.NumberFormat(i,{...o,style:"currency"});return d=>s.format(d)}),datetime:r((i,o)=>{const s=new Intl.DateTimeFormat(i,{...o});return d=>s.format(d)}),relativetime:r((i,o)=>{const s=new Intl.RelativeTimeFormat(i,{...o});return d=>s.format(d,o.range||"day")}),list:r((i,o)=>{const s=new Intl.ListFormat(i,{...o});return d=>s.format(d)})}}add(a,t){this.formats[a.toLowerCase().trim()]=t}addCached(a,t){this.formats[a.toLowerCase().trim()]=Qt(t)}format(a,t,r,i={}){const o=t.split(this.formatSeparator);if(o.length>1&&o[0].indexOf("(")>1&&o[0].indexOf(")")<0&&o.find(d=>d.indexOf(")")>-1)){const d=o.findIndex(u=>u.indexOf(")")>-1);o[0]=[o[0],...o.splice(1,d)].join(this.formatSeparator)}return o.reduce((d,u)=>{const{formatName:m,formatOptions:g}=Pi(u);if(this.formats[m]){let p=d;try{const k=i?.formatParams?.[i.interpolationkey]||{},x=k.locale||k.lng||i.locale||i.lng||r;p=this.formats[m](d,x,{...g,...i,...k})}catch(k){this.logger.warn(k)}return p}else this.logger.warn(`there was no format function for ${m}`);return d},a)}}const Ai=(n,a)=>{n.pending[a]!==void 0&&(delete n.pending[a],n.pendingCount--)};class zi extends Na{constructor(a,t,r,i={}){super(),this.backend=a,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=we.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,i.backend,i)}queueLoad(a,t,r,i){const o={},s={},d={},u={};return a.forEach(m=>{let g=!0;t.forEach(p=>{const k=`${m}|${p}`;!r.reload&&this.store.hasResourceBundle(m,p)?this.state[k]=2:this.state[k]<0||(this.state[k]===1?s[k]===void 0&&(s[k]=!0):(this.state[k]=1,g=!1,s[k]===void 0&&(s[k]=!0),o[k]===void 0&&(o[k]=!0),u[p]===void 0&&(u[p]=!0)))}),g||(d[m]=!0)}),(Object.keys(o).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(o),pending:Object.keys(s),toLoadLanguages:Object.keys(d),toLoadNamespaces:Object.keys(u)}}loaded(a,t,r){const i=a.split("|"),o=i[0],s=i[1];t&&this.emit("failedLoading",o,s,t),!t&&r&&this.store.addResourceBundle(o,s,r,void 0,void 0,{skipCopy:!0}),this.state[a]=t?-1:2,t&&r&&(this.state[a]=0);const d={};this.queue.forEach(u=>{pi(u.loaded,[o],s),Ai(u,a),t&&u.errors.push(t),u.pendingCount===0&&!u.done&&(Object.keys(u.loaded).forEach(m=>{d[m]||(d[m]={});const g=u.loaded[m];g.length&&g.forEach(p=>{d[m][p]===void 0&&(d[m][p]=!0)})}),u.done=!0,u.errors.length?u.callback(u.errors):u.callback())}),this.emit("loaded",d),this.queue=this.queue.filter(u=>!u.done)}read(a,t,r,i=0,o=this.retryTimeout,s){if(!a.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:a,ns:t,fcName:r,tried:i,wait:o,callback:s});return}this.readingCalls++;const d=(m,g)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(m&&g&&i<this.maxRetries){setTimeout(()=>{this.read.call(this,a,t,r,i+1,o*2,s)},o);return}s(m,g)},u=this.backend[r].bind(this.backend);if(u.length===2){try{const m=u(a,t);m&&typeof m.then=="function"?m.then(g=>d(null,g)).catch(d):d(null,m)}catch(m){d(m)}return}return u(a,t,d)}prepareLoading(a,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();B(a)&&(a=this.languageUtils.toResolveHierarchy(a)),B(t)&&(t=[t]);const o=this.queueLoad(a,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(s=>{this.loadOne(s)})}load(a,t,r){this.prepareLoading(a,t,{},r)}reload(a,t,r){this.prepareLoading(a,t,{reload:!0},r)}loadOne(a,t=""){const r=a.split("|"),i=r[0],o=r[1];this.read(i,o,"read",void 0,void 0,(s,d)=>{s&&this.logger.warn(`${t}loading namespace ${o} for language ${i} failed`,s),!s&&d&&this.logger.log(`${t}loaded namespace ${o} for language ${i}`,d),this.loaded(a,s,d)})}saveMissing(a,t,r,i,o,s={},d=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend?.create){const u={...s,isUpdate:o},m=this.backend.create.bind(this.backend);if(m.length<6)try{let g;m.length===5?g=m(a,t,r,i,u):g=m(a,t,r,i),g&&typeof g.then=="function"?g.then(p=>d(null,p)).catch(d):d(null,g)}catch(g){d(g)}else m(a,t,r,i,d,u)}!a||!a[0]||this.store.addResource(a[0],t,r,i)}}}const _a=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:n=>{let a={};if(typeof n[1]=="object"&&(a=n[1]),B(n[1])&&(a.defaultValue=n[1]),B(n[2])&&(a.tDescription=n[2]),typeof n[2]=="object"||typeof n[3]=="object"){const t=n[3]||n[2];Object.keys(t).forEach(r=>{a[r]=t[r]})}return a},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),en=n=>(B(n.ns)&&(n.ns=[n.ns]),B(n.fallbackLng)&&(n.fallbackLng=[n.fallbackLng]),B(n.fallbackNS)&&(n.fallbackNS=[n.fallbackNS]),n.supportedLngs?.indexOf?.("cimode")<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),typeof n.initImmediate=="boolean"&&(n.initAsync=n.initImmediate),n),fa=()=>{},ji=n=>{Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(t=>{typeof n[t]=="function"&&(n[t]=n[t].bind(n))})};class sa extends Na{constructor(a={},t){if(super(),this.options=en(a),this.services={},this.logger=we,this.modules={external:[]},ji(this),t&&!this.isInitialized&&!a.isClone){if(!this.options.initAsync)return this.init(a,t),this;setTimeout(()=>{this.init(a,t)},0)}}init(a={},t){this.isInitializing=!0,typeof a=="function"&&(t=a,a={}),a.defaultNS==null&&a.ns&&(B(a.ns)?a.defaultNS=a.ns:a.ns.indexOf("translation")<0&&(a.defaultNS=a.ns[0]));const r=_a();this.options={...r,...this.options,...en(a)},this.options.interpolation={...r.interpolation,...this.options.interpolation},a.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=a.keySeparator),a.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=a.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=r.overloadTranslationOptionHandler),this.options.debug===!0&&typeof console<"u"&&console.warn("i18next is maintained with support from locize.com — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com");const i=m=>m?typeof m=="function"?new m:m:null;if(!this.options.isClone){this.modules.logger?we.init(i(this.modules.logger),this.options):we.init(null,this.options);let m;this.modules.formatter?m=this.modules.formatter:m=Di;const g=new Jt(this.options);this.store=new Wt(this.options.resources,this.options);const p=this.services;p.logger=we,p.resourceStore=this.store,p.languageUtils=g,p.pluralResolver=new wi(g,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),m&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(p.formatter=i(m),p.formatter.init&&p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new Xt(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new zi(i(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",(x,...b)=>{this.emit(x,...b)}),this.modules.languageDetector&&(p.languageDetector=i(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=i(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new za(this.services,this.options),this.translator.on("*",(x,...b)=>{this.emit(x,...b)}),this.modules.external.forEach(x=>{x.init&&x.init(this)})}if(this.format=this.options.interpolation.format,t||(t=fa),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const m=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);m.length>0&&m[0]!=="dev"&&(this.options.lng=m[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(m=>{this[m]=(...g)=>this.store[m](...g)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(m=>{this[m]=(...g)=>(this.store[m](...g),this)});const d=ia(),u=()=>{const m=(g,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),d.resolve(p),t(g,p)};if(this.languages&&!this.isInitialized)return m(null,this.t.bind(this));this.changeLanguage(this.options.lng,m)};return this.options.resources||!this.options.initAsync?u():setTimeout(u,0),d}loadResources(a,t=fa){let r=t;const i=B(a)?a:this.language;if(typeof a=="function"&&(r=a),!this.options.resources||this.options.partialBundledLanguages){if(i?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const o=[],s=d=>{if(!d||d==="cimode")return;this.services.languageUtils.toResolveHierarchy(d).forEach(m=>{m!=="cimode"&&o.indexOf(m)<0&&o.push(m)})};i?s(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>s(u)),this.options.preload?.forEach?.(d=>s(d)),this.services.backendConnector.load(o,this.options.ns,d=>{!d&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(d)})}else r(null)}reloadResources(a,t,r){const i=ia();return typeof a=="function"&&(r=a,a=void 0),typeof t=="function"&&(r=t,t=void 0),a||(a=this.languages),t||(t=this.options.ns),r||(r=fa),this.services.backendConnector.reload(a,t,o=>{i.resolve(),r(o)}),i}use(a){if(!a)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!a.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return a.type==="backend"&&(this.modules.backend=a),(a.type==="logger"||a.log&&a.warn&&a.error)&&(this.modules.logger=a),a.type==="languageDetector"&&(this.modules.languageDetector=a),a.type==="i18nFormat"&&(this.modules.i18nFormat=a),a.type==="postProcessor"&&Cn.addPostProcessor(a),a.type==="formatter"&&(this.modules.formatter=a),a.type==="3rdParty"&&this.modules.external.push(a),this}setResolvedLanguage(a){if(!(!a||!this.languages)&&!(["cimode","dev"].indexOf(a)>-1)){for(let t=0;t<this.languages.length;t++){const r=this.languages[t];if(!(["cimode","dev"].indexOf(r)>-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}!this.resolvedLanguage&&this.languages.indexOf(a)<0&&this.store.hasLanguageSomeTranslations(a)&&(this.resolvedLanguage=a,this.languages.unshift(a))}}changeLanguage(a,t){this.isLanguageChangingTo=a;const r=ia();this.emit("languageChanging",a);const i=d=>{this.language=d,this.languages=this.services.languageUtils.toResolveHierarchy(d),this.resolvedLanguage=void 0,this.setResolvedLanguage(d)},o=(d,u)=>{u?this.isLanguageChangingTo===a&&(i(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,r.resolve((...m)=>this.t(...m)),t&&t(d,(...m)=>this.t(...m))},s=d=>{!a&&!d&&this.services.languageDetector&&(d=[]);const u=B(d)?d:d&&d[0],m=this.store.hasLanguageSomeTranslations(u)?u:this.services.languageUtils.getBestMatchFromCodes(B(d)?[d]:d);m&&(this.language||i(m),this.translator.language||this.translator.changeLanguage(m),this.services.languageDetector?.cacheUserLanguage?.(m)),this.loadResources(m,g=>{o(g,m)})};return!a&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!a&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(a),r}getFixedT(a,t,r){const i=(o,s,...d)=>{let u;typeof s!="object"?u=this.options.overloadTranslationOptionHandler([o,s].concat(d)):u={...s},u.lng=u.lng||i.lng,u.lngs=u.lngs||i.lngs,u.ns=u.ns||i.ns,u.keyPrefix!==""&&(u.keyPrefix=u.keyPrefix||r||i.keyPrefix);const m=this.options.keySeparator||".";let g;return u.keyPrefix&&Array.isArray(o)?g=o.map(p=>(typeof p=="function"&&(p=rt(p,{...this.options,...s})),`${u.keyPrefix}${m}${p}`)):(typeof o=="function"&&(o=rt(o,{...this.options,...s})),g=u.keyPrefix?`${u.keyPrefix}${m}${o}`:o),this.t(g,u)};return B(a)?i.lng=a:i.lngs=a,i.ns=t,i.keyPrefix=r,i}t(...a){return this.translator?.translate(...a)}exists(...a){return this.translator?.exists(...a)}setDefaultNamespace(a){this.options.defaultNS=a}hasLoadedNamespace(a,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(d,u)=>{const m=this.services.backendConnector.state[`${d}|${u}`];return m===-1||m===0||m===2};if(t.precheck){const d=t.precheck(this,s);if(d!==void 0)return d}return!!(this.hasResourceBundle(r,a)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(r,a)&&(!i||s(o,a)))}loadNamespaces(a,t){const r=ia();return this.options.ns?(B(a)&&(a=[a]),a.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),t&&t(i)}),r):(t&&t(),Promise.resolve())}loadLanguages(a,t){const r=ia();B(a)&&(a=[a]);const i=this.options.preload||[],o=a.filter(s=>i.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return o.length?(this.options.preload=i.concat(o),this.loadResources(s=>{r.resolve(),t&&t(s)}),r):(t&&t(),Promise.resolve())}dir(a){if(a||(a=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!a)return"rtl";try{const i=new Intl.Locale(a);if(i&&i.getTextInfo){const o=i.getTextInfo();if(o&&o.direction)return o.direction}}catch{}const t=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services?.languageUtils||new Jt(_a());return a.toLowerCase().indexOf("-latn")>1?"ltr":t.indexOf(r.getLanguagePartFromCode(a))>-1||a.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(a={},t){const r=new sa(a,t);return r.createInstance=sa.createInstance,r}cloneInstance(a={},t=fa){const r=a.forkResourceStore;r&&delete a.forkResourceStore;const i={...this.options,...a,isClone:!0},o=new sa(i);if((a.debug!==void 0||a.prefix!==void 0)&&(o.logger=o.logger.clone(a)),["store","services","language"].forEach(d=>{o[d]=this[d]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r){const d=Object.keys(this.store.data).reduce((u,m)=>(u[m]={...this.store.data[m]},u[m]=Object.keys(u[m]).reduce((g,p)=>(g[p]={...u[m][p]},g),u[m]),u),{});o.store=new Wt(d,i),o.services.resourceStore=o.store}if(a.interpolation){const u={..._a().interpolation,...this.options.interpolation,...a.interpolation},m={...i,interpolation:u};o.services.interpolator=new Xt(m)}return o.translator=new za(o.services,i),o.translator.on("*",(d,...u)=>{o.emit(d,...u)}),o.init(i,t),o.translator.options=i,o.translator.backendConnector.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},o}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const ce=sa.createInstance();ce.createInstance;ce.dir;ce.init;ce.loadResources;ce.reloadResources;ce.use;ce.changeLanguage;ce.getFixedT;ce.t;ce.exists;ce.setDefaultNamespace;ce.hasLoadedNamespace;ce.loadNamespaces;ce.loadLanguages;const Ti=(n,a,t,r)=>{const i=[t,{code:a,...r||{}}];if(n?.services?.logger?.forward)return n.services.logger.forward(i,"warn","react-i18next::",!0);Oe(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),n?.services?.logger?.warn?n.services.logger.warn(...i):console?.warn&&console.warn(...i)},an={},On=(n,a,t,r)=>{Oe(t)&&an[t]||(Oe(t)&&(an[t]=new Date),Ti(n,a,t,r))},En=(n,a)=>()=>{if(n.isInitialized)a();else{const t=()=>{setTimeout(()=>{n.off("initialized",t)},0),a()};n.on("initialized",t)}},it=(n,a,t)=>{n.loadNamespaces(a,En(n,t))},tn=(n,a,t,r)=>{if(Oe(t)&&(t=[t]),n.options.preload&&n.options.preload.indexOf(a)>-1)return it(n,t,r);t.forEach(i=>{n.options.ns.indexOf(i)<0&&n.options.ns.push(i)}),n.loadLanguages(a,En(n,r))},Ni=(n,a,t={})=>!a.languages||!a.languages.length?(On(a,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:a.languages}),!0):a.hasLoadedNamespace(n,{lng:t.lng,precheck:(r,i)=>{if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&r.services.backendConnector.backend&&r.isLanguageChangingTo&&!i(r.isLanguageChangingTo,n))return!1}}),Oe=n=>typeof n=="string",Ii=n=>typeof n=="object"&&n!==null,Ci=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Fi={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},Oi=n=>Fi[n],Ei=n=>n.replace(Ci,Oi);let ot={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Ei,transDefaultProps:void 0};const Li=(n={})=>{ot={...ot,...n}},Gi=()=>ot;let Ln;const Bi=n=>{Ln=n},Ki=()=>Ln,Hi={type:"3rdParty",init(n){Li(n.options.react),Bi(n)}},Ri=h.createContext();class Ui{constructor(){this.usedNamespaces={}}addUsedNamespaces(a){a.forEach(t=>{this.usedNamespaces[t]||(this.usedNamespaces[t]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var Ya={exports:{}},Za={};var nn;function $i(){if(nn)return Za;nn=1;var n=Gr();function a(p,k){return p===k&&(p!==0||1/p===1/k)||p!==p&&k!==k}var t=typeof Object.is=="function"?Object.is:a,r=n.useState,i=n.useEffect,o=n.useLayoutEffect,s=n.useDebugValue;function d(p,k){var x=k(),b=r({inst:{value:x,getSnapshot:k}}),w=b[0].inst,S=b[1];return o(function(){w.value=x,w.getSnapshot=k,u(w)&&S({inst:w})},[p,x,k]),i(function(){return u(w)&&S({inst:w}),p(function(){u(w)&&S({inst:w})})},[p]),s(x),x}function u(p){var k=p.getSnapshot;p=p.value;try{var x=k();return!t(p,x)}catch{return!0}}function m(p,k){return k()}var g=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?m:d;return Za.useSyncExternalStore=n.useSyncExternalStore!==void 0?n.useSyncExternalStore:g,Za}var rn;function Vi(){return rn||(rn=1,Ya.exports=$i()),Ya.exports}var Wi=Vi();const qi=(n,a)=>Oe(a)?a:Ii(a)&&Oe(a.defaultValue)?a.defaultValue:Array.isArray(n)?n[n.length-1]:n,Ji={t:qi,ready:!1},_i=()=>()=>{},ue=(n,a={})=>{const{i18n:t}=a,{i18n:r,defaultNS:i}=h.useContext(Ri)||{},o=t||r||Ki();o&&!o.reportNamespaces&&(o.reportNamespaces=new Ui),o||On(o,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=h.useMemo(()=>({...Gi(),...o?.options?.react,...a}),[o,a]),{useSuspense:d,keyPrefix:u}=s,m=i||o?.options?.defaultNS,g=Oe(m)?[m]:m||["translation"],p=h.useMemo(()=>g,g);o?.reportNamespaces?.addUsedNamespaces?.(p);const k=h.useRef(0),x=h.useCallback(G=>{if(!o)return _i;const{bindI18n:E,bindI18nStore:O}=s,K=()=>{k.current+=1,G()};return E&&o.on(E,K),O&&o.store.on(O,K),()=>{E&&E.split(" ").forEach(c=>o.off(c,K)),O&&O.split(" ").forEach(c=>o.store.off(c,K))}},[o,s]),b=h.useRef(),w=h.useCallback(()=>{if(!o)return Ji;const G=!!(o.isInitialized||o.initializedStoreOnce)&&p.every(me=>Ni(me,o,s)),E=a.lng||o.language,O=k.current,K=b.current;if(K&&K.ready===G&&K.lng===E&&K.keyPrefix===u&&K.revision===O)return K;const U={t:o.getFixedT(E,s.nsMode==="fallback"?p:p[0],u),ready:G,lng:E,keyPrefix:u,revision:O};return b.current=U,U},[o,p,u,s,a.lng]),[S,F]=h.useState(0),{t:L,ready:A}=Wi.useSyncExternalStore(x,w,w);h.useEffect(()=>{if(o&&!A&&!d){const G=()=>F(E=>E+1);a.lng?tn(o,a.lng,p,G):it(o,p,G)}},[o,a.lng,p,A,d,S]);const z=o||{},N=h.useRef(null),P=h.useRef(),R=G=>{const E=Object.getOwnPropertyDescriptors(G);E.__original&&delete E.__original;const O=Object.create(Object.getPrototypeOf(G),E);if(!Object.prototype.hasOwnProperty.call(O,"__original"))try{Object.defineProperty(O,"__original",{value:G,writable:!1,enumerable:!1,configurable:!1})}catch{}return O},J=h.useMemo(()=>{const G=z,E=G?.language;let O=G;G&&(N.current&&N.current.__original===G?P.current!==E?(O=R(G),N.current=O,P.current=E):O=N.current:(O=R(G),N.current=O,P.current=E));const K=[L,O,A];return K.t=L,K.i18n=O,K.ready=A,K},[L,z,A,z.resolvedLanguage,z.language,z.languages]);if(o&&d&&!A)throw new Promise(G=>{const E=()=>G();a.lng?tn(o,a.lng,p,E):it(o,p,E)});return J},{slice:Yi,forEach:Zi}=[];function Xi(n){return Zi.call(Yi.call(arguments,1),a=>{if(a)for(const t in a)n[t]===void 0&&(n[t]=a[t])}),n}function Qi(n){return typeof n!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(n))}const on=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,eo=function(n,a){const r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},i=encodeURIComponent(a);let o=`${n}=${i}`;if(r.maxAge>0){const s=r.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");o+=`; Max-Age=${Math.floor(s)}`}if(r.domain){if(!on.test(r.domain))throw new TypeError("option domain is invalid");o+=`; Domain=${r.domain}`}if(r.path){if(!on.test(r.path))throw new TypeError("option path is invalid");o+=`; Path=${r.path}`}if(r.expires){if(typeof r.expires.toUTCString!="function")throw new TypeError("option expires is invalid");o+=`; Expires=${r.expires.toUTCString()}`}if(r.httpOnly&&(o+="; HttpOnly"),r.secure&&(o+="; Secure"),r.sameSite)switch(typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite){case!0:o+="; SameSite=Strict";break;case"lax":o+="; SameSite=Lax";break;case"strict":o+="; SameSite=Strict";break;case"none":o+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return r.partitioned&&(o+="; Partitioned"),o},sn={create(n,a,t,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};t&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+t*60*1e3)),r&&(i.domain=r),document.cookie=eo(n,a,i)},read(n){const a=`${n}=`,t=document.cookie.split(";");for(let r=0;r<t.length;r++){let i=t[r];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(a)===0)return i.substring(a.length,i.length)}return null},remove(n,a){this.create(n,"",-1,a)}};var ao={name:"cookie",lookup(n){let{lookupCookie:a}=n;if(a&&typeof document<"u")return sn.read(a)||void 0},cacheUserLanguage(n,a){let{lookupCookie:t,cookieMinutes:r,cookieDomain:i,cookieOptions:o}=a;t&&typeof document<"u"&&sn.create(t,n,r,i,o)}},to={name:"querystring",lookup(n){let{lookupQuerystring:a}=n,t;if(typeof window<"u"){let{search:r}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(r=window.location.hash.substring(window.location.hash.indexOf("?")));const o=r.substring(1).split("&");for(let s=0;s<o.length;s++){const d=o[s].indexOf("=");d>0&&o[s].substring(0,d)===a&&(t=o[s].substring(d+1))}}return t}},no={name:"hash",lookup(n){let{lookupHash:a,lookupFromHashIndex:t}=n,r;if(typeof window<"u"){const{hash:i}=window.location;if(i&&i.length>2){const o=i.substring(1);if(a){const s=o.split("&");for(let d=0;d<s.length;d++){const u=s[d].indexOf("=");u>0&&s[d].substring(0,u)===a&&(r=s[d].substring(u+1))}}if(r)return r;if(!r&&t>-1){const s=i.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?s[typeof t=="number"?t:0]?.replace("/",""):void 0}}}return r}};let Ue=null;const ln=()=>{if(Ue!==null)return Ue;try{if(Ue=typeof window<"u"&&window.localStorage!==null,!Ue)return!1;const n="i18next.translate.boo";window.localStorage.setItem(n,"foo"),window.localStorage.removeItem(n)}catch{Ue=!1}return Ue};var ro={name:"localStorage",lookup(n){let{lookupLocalStorage:a}=n;if(a&&ln())return window.localStorage.getItem(a)||void 0},cacheUserLanguage(n,a){let{lookupLocalStorage:t}=a;t&&ln()&&window.localStorage.setItem(t,n)}};let $e=null;const dn=()=>{if($e!==null)return $e;try{if($e=typeof window<"u"&&window.sessionStorage!==null,!$e)return!1;const n="i18next.translate.boo";window.sessionStorage.setItem(n,"foo"),window.sessionStorage.removeItem(n)}catch{$e=!1}return $e};var io={name:"sessionStorage",lookup(n){let{lookupSessionStorage:a}=n;if(a&&dn())return window.sessionStorage.getItem(a)||void 0},cacheUserLanguage(n,a){let{lookupSessionStorage:t}=a;t&&dn()&&window.sessionStorage.setItem(t,n)}},oo={name:"navigator",lookup(n){const a=[];if(typeof navigator<"u"){const{languages:t,userLanguage:r,language:i}=navigator;if(t)for(let o=0;o<t.length;o++)a.push(t[o]);r&&a.push(r),i&&a.push(i)}return a.length>0?a:void 0}},so={name:"htmlTag",lookup(n){let{htmlTag:a}=n,t;const r=a||(typeof document<"u"?document.documentElement:null);return r&&typeof r.getAttribute=="function"&&(t=r.getAttribute("lang")),t}},lo={name:"path",lookup(n){let{lookupFromPathIndex:a}=n;if(typeof window>"u")return;const t=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof a=="number"?a:0]?.replace("/",""):void 0}},co={name:"subdomain",lookup(n){let{lookupFromSubdomainIndex:a}=n;const t=typeof a=="number"?a+1:1,r=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[t]}};let Gn=!1;try{document.cookie,Gn=!0}catch{}const Bn=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];Gn||Bn.splice(1,1);const uo=()=>({order:Bn,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:n=>n});class Kn{constructor(a){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(a,t)}init(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=a,this.options=Xi(t,this.options||{},uo()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=i=>i.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=r,this.addDetector(ao),this.addDetector(to),this.addDetector(ro),this.addDetector(io),this.addDetector(oo),this.addDetector(so),this.addDetector(lo),this.addDetector(co),this.addDetector(no)}addDetector(a){return this.detectors[a.name]=a,this}detect(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return a.forEach(r=>{if(this.detectors[r]){let i=this.detectors[r].lookup(this.options);i&&typeof i=="string"&&(i=[i]),i&&(t=t.concat(i))}}),t=t.filter(r=>r!=null&&!Qi(r)).map(r=>this.options.convertDetectedLanguage(r)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(a){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(a)>-1||t.forEach(r=>{this.detectors[r]&&this.detectors[r].cacheUserLanguage(a,this.options)}))}}Kn.type="languageDetector";const mo={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:"مخصص",mode:"الوضع",multiUser:"متعدد المستخدمين",remove:"إزالة"},po={name:"Libre WebUI",shortName:"Libre"},go={login:{title:"مرحباً بعودتك",subtitle:"سجّل الدخول إلى حسابك للمتابعة",username:"اسم المستخدم",usernamePlaceholder:"أدخل اسم المستخدم",password:"كلمة المرور",passwordPlaceholder:"أدخل كلمة المرور",signIn:"تسجيل الدخول",signingIn:"جاري تسجيل الدخول...",noAccount:"ليس لديك حساب؟",signUpHere:"سجّل هنا",loginSuccess:"تم تسجيل الدخول بنجاح!",loginFailed:"فشل تسجيل الدخول",checkCredentials:"فشل تسجيل الدخول. يرجى التحقق من بيانات الاعتماد.",enterBoth:"يرجى إدخال اسم المستخدم وكلمة المرور",githubSuccess:"تم تسجيل الدخول عبر GitHub بنجاح!",githubFailed:"فشلت مصادقة GitHub",githubVerifyFailed:"فشل التحقق من مصادقة GitHub"},signup:{title:"إنشاء حساب",subtitle:"سجّل للحصول على حساب جديد",username:"اسم المستخدم",usernamePlaceholder:"اختر اسم مستخدم",email:"البريد الإلكتروني",emailPlaceholder:"your@email.com",password:"كلمة المرور",passwordPlaceholder:"اختر كلمة مرور",confirmPassword:"تأكيد كلمة المرور",confirmPasswordPlaceholder:"أكّد كلمة المرور",createAccount:"إنشاء حساب",creatingAccount:"جاري إنشاء الحساب...",hasAccount:"لديك حساب بالفعل؟",signInHere:"سجّل الدخول هنا",signupSuccess:"تم إنشاء الحساب بنجاح!",signupFailed:"فشل التسجيل",tryAgain:"فشل التسجيل. يرجى المحاولة مرة أخرى.",usernameRequired:"اسم المستخدم وكلمة المرور مطلوبان",passwordMismatch:"كلمات المرور غير متطابقة",passwordTooShort:"يجب أن تكون كلمة المرور 6 أحرف على الأقل"},logout:{button:"تسجيل الخروج",success:"تم تسجيل الخروج بنجاح"},oauth:{continueWith:"المتابعة مع {{provider}}",connectingTo:"جاري الاتصال بـ {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},ho={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:"أدخل كلمة المرور (6 أحرف على الأقل)",confirmPlaceholder:"أكّد كلمة المرور",creating:"جاري الإنشاء...",createAdmin:"إنشاء المسؤول",success:"تم إنشاء حساب المسؤول بنجاح!",failed:"فشل إنشاء حساب المسؤول",fillAllFields:"يرجى ملء جميع الحقول",note:"سيكون هذا حساب المسؤول الرئيسي لـ Libre WebUI الخاص بك"},encryptionKey:{title:"احفظ مفتاح التشفير",subtitle:"مهم: احفظ هذا المفتاح",description:"يحمي مفتاح التشفير هذا بياناتك الحساسة. احفظه بأمان - ستحتاجه إذا احتجت لاستعادة قاعدة البيانات.",warning:"تحذير",warningText:"إذا فقدت هذا المفتاح واحتجت لاستعادة قاعدة البيانات، ستكون بياناتك المشفرة (مفاتيح API، التفضيلات) غير قابلة للاسترداد.",label:"مفتاح التشفير الخاص بك",loading:"جاري التحميل...",copyToClipboard:"نسخ إلى الحافظة",copied:"تم نسخ مفتاح التشفير إلى الحافظة!",copyFailed:"فشل نسخ المفتاح إلى الحافظة",envNote:"هذا المفتاح محفوظ أيضاً في ملف backend/.env كـ ENCRYPTION_KEY",acknowledgment:"لقد حفظت مفتاح التشفير في مكان آمن وأفهم أن فقدانه قد يؤدي إلى فقدان البيانات.",confirmRequired:"يرجى التأكيد على أنك حفظت مفتاح التشفير",continue:"المتابعة إلى Libre WebUI"}},bo={greeting:{morning:"صباح الخير",afternoon:"مساء الخير",evening:"مساء الخير",night:"تصبح على خير"},welcome:{helpToday:"كيف يمكنني مساعدتك اليوم؟",helpTonight:"كيف يمكنني مساعدتك الليلة؟"},input:{placeholder:"أرسل رسالة",messagePlaceholder:"رسالة...",attachImages:"إرفاق صور",attachments:"المرفقات والميزات المتقدمة",sendMessage:"إرسال الرسالة",stopGeneration:"إيقاف التوليد"},session:{new:"محادثة جديدة",private:"خاص",privateMode:"الوضع الخاص",privateDescription:"لن يتم حفظ هذه المحادثة",privateTooltip:"ابدأ محادثة خاصة لن يتم حفظها",deleteConfirm:"هل أنت متأكد من حذف هذه المحادثة؟",generatingTitle:"جاري توليد العنوان",noChats:"لا توجد محادثات بعد",createFirst:"أنشئ أول محادثة أعلاه",chats:"المحادثات",renameChat:"إعادة تسمية المحادثة",deleteChat:"حذف المحادثة"},persona:{applied:"تم تطبيق الشخصية",label:"الشخصية"},model:{updated:"تم تحديث النموذج",noModels:"لا توجد نماذج متاحة",noModelsDescription:"لا توجد نماذج متاحة. تأكد من تشغيل Ollama وتثبيت النماذج.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"لا توجد نماذج متاحة. يرجى التأكد من تشغيل Ollama وتثبيت النماذج."},footer:{disclaimer:"قد يرتكب الذكاء الاصطناعي أخطاء - تحقق من المعلومات المهمة",images:"{{count}} صورة",images_plural:"{{count}} صور",structuredOutput:"مخرجات منظمة"},mediaUpload:{dropImagesHere:"أفلت الصور هنا أو",supportedFormats:"يدعم: JPG، PNG، GIF، WebP (حد أقصى 10 ميجابايت لكل صورة)",browse:"تصفح"},structuredOutput:{title:"تنسيق الاستجابة",none:"بدون (لغة طبيعية)",noneDescription:"استجابة باللغة الطبيعية الافتراضية",json:"JSON",jsonDescription:"تنسيق JSON منظم",list:"قائمة",listDescription:"مصفوفة من العناصر",summary:"ملخص",summaryDescription:"ملخص المستند مع النقاط الرئيسية",analysis:"تحليل",analysisDescription:"تحليل منظم مع الإيجابيات والسلبيات",custom:"مخطط مخصص",customDescription:"حدد مخطط JSON الخاص بك",customSchema:"مخطط JSON مخصص",schemaPreview:"معاينة المخطط",applySchema:"تطبيق المخطط",cancel:"إلغاء",enabled:"تم تفعيل المخرجات المنظمة"}},ko={navigation:{chat:"محادثة",models:"النماذج",personas:"الشخصيات",imagine:"تخيّل",settings:"الإعدادات",userManagement:"إدارة المستخدمين",signOut:"تسجيل الخروج"},toggleSize:"تبديل حجم الشريط الجانبي",expandSidebar:"توسيع الشريط الجانبي"},fo={menu:{changePicture:"تغيير الصورة",settings:"الإعدادات",userManagement:"إدارة المستخدمين",logout:"تسجيل الخروج"},avatar:{title:"تغيير صورة الملف الشخصي",updated:"تم تحديث صورة الملف الشخصي",updateFailed:"فشل تحديث صورة الملف الشخصي",saving:"جاري الحفظ..."},profile:{noEmail:"لم يتم تقديم بريد إلكتروني"}},yo={title:"الإعدادات",tabs:{appearance:"المظهر",model:"النموذج",systemMessage:"رسالة النظام",plugins:"الإضافات",generation:"التوليد",documents:"المستندات",tts:"تحويل النص إلى كلام",imageGen:"توليد الصور",data:"البيانات",about:"حول"},appearance:{title:"المظهر",language:{title:"اللغة",description:"اختر لغتك المفضلة"},theme:{title:"السمة",light:"فاتح",dark:"داكن",amoled:"أسود نقي",system:"النظام"},chatInterface:{title:"واجهة المحادثة",showUsername:"إظهار اسم المستخدم",showUsernameDescription:"عرض اسم المستخدم في رسائل المحادثة"},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:"شخصية"},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"}},generation:{title:"خيارات التوليد",description:"إعداد كيفية توليد الذكاء الاصطناعي للاستجابات",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:"تفعيل تضمين المستندات"},documents:{title:"إعدادات المستندات",embeddings:{title:"التضمينات",enable:"تفعيل تضمين المستندات",model:"نموذج التضمين",modelDescription:"اختر النموذج المستخدم لتضمين المستندات",chunkSize:"حجم القطعة",chunkSizeInTokens:"(بالرموز)",chunkSizeDescription:"حجم قطع النص للتضمين",chunkOverlap:"تداخل القطع",chunkOverlapInTokens:"(بالرموز)",chunkOverlapDescription:"التداخل بين القطع المتتالية",similarityThreshold:"عتبة التشابه",similarityDescription:"الحد الأدنى لدرجة التشابه لتضمين النتائج",status:"حالة التضمين",statusLabel:"الحالة",available:"متاح",unavailable:"غير متاح",chunksWithEmbeddings:"قطع مع تضمينات",coverage:"التغطية",regenerate:"إعادة توليد التضمينات",regenerating:"جاري إعادة التوليد..."}},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:"السماح بتوليد الصور بالذكاء الاصطناعي في المحادثات",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:"أخطاء"},about:{title:"حول",versionLabel:"الإصدار",ollama:{title:"حالة Ollama",version:"الإصدار",healthy:"سليم",unhealthy:"غير سليم"},stats:{models:"النماذج",sessions:"الجلسات"},features:{privacy:{title:"الخصوصية أولاً",description:"بياناتك تبقى على جهازك"},openSource:{title:"مفتوح المصدر",description:"برنامج مجاني ومفتوح المصدر"},localInference:{title:"استدلال محلي",description:"تشغيل نماذج الذكاء الاصطناعي محلياً مع Ollama"}},openSourceBy:"مفتوح المصدر بواسطة {{company}}",links:{title:"الروابط",github:"GitHub",githubDescription:"عرض الكود المصدري والمساهمة",website:"الموقع",websiteDescription:"زيارة موقعنا",ollama:"Ollama",ollamaDescription:"معرفة المزيد عن Ollama",documentation:"التوثيق",reportIssue:"الإبلاغ عن المشاكل",reportIssueDescription:"تقارير الأخطاء وطلبات الميزات"},version:"الإصدار {{version}}"}},vo={title:"النماذج",subtitle:"سحب وإدارة ومراقبة نماذج Ollama",installed:"النماذج المثبتة",available:"النماذج المتاحة",pull:"سحب النموذج",pulling:"جاري السحب...",delete:"حذف النموذج",deleting:"جاري الحذف...",size:"الحجم",modified:"تم التعديل",family:"العائلة",parameters:"المعلمات",quantization:"التكميم",noModels:"لا توجد نماذج مثبتة",pullFirst:"اسحب نموذجاً للبدء"},xo={title:"الشخصيات",create:"إنشاء شخصية",edit:"تعديل الشخصية",delete:"حذف الشخصية",name:"الاسم",description:"الوصف",systemPrompt:"موجه النظام",model:"النموذج",avatar:"الصورة الرمزية",background:"الخلفية",noPersonas:"لم يتم إنشاء شخصيات",createFirst:"أنشئ أول شخصية لتخصيص تجربة المحادثة"},So={title:"المعرض",subtitle:"معرض الصور المولدة بالذكاء الاصطناعي",imageCount:"{{count}} صورة",generate:"توليد صورة",generateDescription:"إنشاء صور بالذكاء الاصطناعي",generating:"جاري التوليد...",prompt:"الموجه",promptPlaceholder:"صف الصورة التي تريد توليدها...",noImages:"لم يتم توليد صور بعد",download:"تحميل",delete:"حذف",regenerate:"إعادة التوليد",model:"النموذج",size:"الحجم",quality:"الجودة",created:"تم الإنشاء"},wo={generic:"حدث خطأ",network:"خطأ في الشبكة. يرجى التحقق من الاتصال.",unauthorized:"غير مصرح لك بتنفيذ هذا الإجراء.",notFound:"لم يتم العثور على المورد المطلوب.",serverError:"خطأ في الخادم. يرجى المحاولة لاحقاً.",validation:"يرجى التحقق من المدخلات والمحاولة مرة أخرى."},Po={title:"اختصارات لوحة المفاتيح",toggleSidebar:"تبديل الشريط الجانبي",openSettings:"فتح الإعدادات",toggleDarkMode:"تبديل الوضع الداكن",showShortcuts:"إظهار اختصارات لوحة المفاتيح",closeModals:"إغلاق النوافذ المنبثقة",groups:{navigation:"التنقل",settings:"الإعدادات",general:"عام",chat:"المحادثة"},actions:{sendMessage:"إرسال الرسالة",newLine:"سطر جديد في الرسالة"},footer:"اضغط {{key1}} أو {{key2}} لإظهار هذه المساعدة",tooltip:"اختصارات لوحة المفاتيح"},Mo={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:"يرجى إدخال اسم النموذج"},progress:{starting:"جاري التهيئة...",pulling:"جاري تحميل النموذج...",verifying:"جاري التحقق من السلامة...",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
|
|
3
|
+
SYSTEM You are a helpful assistant.`,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:"لا توجد ملفات GGUF متاحة للسحب المباشر من Ollama",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:"المحدثة مؤخراً"}}},Do={title:"الشخصيات",subtitle:"إنشاء وإدارة شخصيات الذكاء الاصطناعي مع شخصيات وذكريات وسلوكيات مخصصة",loading:"جاري تحميل الشخصيات...",createButton:"إنشاء شخصية",importExport:"استيراد/تصدير",stats:{title:"شخصياتك",count:"تم إنشاء {{count}} شخصية",count_plural:"تم إنشاء {{count}} شخصيات"},empty:{title:"لا توجد شخصيات بعد",description:"أنشئ أول شخصية للبدء مع تفاعلات الذكاء الاصطناعي المخصصة",button:"أنشئ شخصيتك الأولى"},deleteConfirm:'هل أنت متأكد من حذف "{{name}}"؟',deleteSuccess:'تم حذف الشخصية "{{name}}" بنجاح',downloadSuccess:'تم تحميل الشخصية "{{name}}" بنجاح',failed:"فشل {{action}} الشخصية"},Ao={title:{create:"إنشاء شخصية جديدة",edit:"تعديل الشخصية"},subtitle:{create:"أنشئ شخصية ذكاء اصطناعي جديدة مع شخصية مخصصة وأنظمة ذاكرة وقدرات تعلم تكيفية",edit:"خصص شخصية الذكاء الاصطناعي مع ذاكرة متقدمة وتعلم تكيفي ومعلمات ذكية"},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:"ميجابايت مستخدمة",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:"فشل الحفظ"}},zo={enhanced:"محسّن",systemPrompt:"موجه النظام",memories:"ذكريات",use:"استخدام",editTooltip:"تعديل الشخصية",downloadTooltip:"تحميل الشخصية",backup:"نسخة احتياطية",exportDNA:"تصدير DNA",wipeMemories:"مسح الذكريات",wipeConfirm:"هل أنت متأكد من مسح جميع ذكريات هذه الشخصية؟ لا يمكن التراجع عن هذا الإجراء.",wipeSuccess:"تم مسح {{count}} ذكرى",backupSuccess:"تم تحميل نسخة الشخصية الاحتياطية بنجاح",dnaSuccess:"تم تصدير DNA الشخصية بنجاح",failed:"فشل {{action}}"},jo={title:"إدارة المستخدمين",subtitle:"إدارة حسابات المستخدمين والصلاحيات",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:"فشل تحديث المستخدم"}},To={you:"أنت",assistant:"المساعد",system:"النظام",copy:"نسخ",copyMessage:"نسخ الرسالة",copied:"تم النسخ!",regenerate:"إعادة التوليد",regenerateResponse:"إعادة توليد الاستجابة",edit:"تعديل",editSystemMessage:"تعديل رسالة النظام",saveChanges:"حفظ التغييرات",cancelEditing:"إلغاء التعديل",delete:"حذف",deleteConfirm:"حذف هذه الرسالة؟",branch:"تفرع",speaking:"جاري التحدث...",speakMessage:"نطق الرسالة",stopSpeaking:"إيقاف التحدث",showMore:"عرض المزيد",showLess:"عرض أقل",thinking:"يفكر",systemMessagePlaceholder:"أدخل رسالة النظام...",fullSizeImage:"صورة بالحجم الكامل",startConversation:"ابدأ محادثة",startConversationDescription:"أرسل رسالة للبدء في الدردشة مع مساعدك الذكي. اطرح أسئلة، احصل على مساعدة في البرمجة، أو أجرِ محادثة طبيعية.",scrollToBottom:"انتقل إلى الأسفل",newMessages:"رسائل جديدة"},No={title:"معرض الصور",noImages:"لا توجد صور بعد",noImagesHint:"ولّد أول صورة باستخدام اللوحة على اليمين",delete:"حذف",download:"تحميل",deleteConfirm:"هل أنت متأكد من حذف هذه الصورة؟",deleteSuccess:"تم حذف الصورة",deleteFailed:"فشل حذف الصورة",downloadFailed:"فشل تحميل الصورة",loadMore:"تحميل المزيد ({{current}} من {{total}})",loadFailed:"فشل تحميل المعرض"},Io={title:"توليد صورة",prompt:"الموجه",promptPlaceholder:"صف الصورة التي تريد إنشاءها...",model:"النموذج",selectModel:"اختر نموذجاً",noModels:"لا توجد نماذج توليد صور متاحة",configurePlugin:"قم بإعداد إضافة مع دعم توليد الصور",size:"الحجم",quality:"الجودة",style:"الأسلوب",generate:"توليد",generating:"جاري التوليد...",success:"تم توليد الصورة بنجاح",failed:"فشل توليد الصورة",enterPrompt:"يرجى إدخال موجه",promptTooLong:"يتجاوز النص الحد الأقصى البالغ {{max}} حرف"},Co={title:"حدث خطأ ما",description:"واجهنا خطأ غير متوقع. يرجى تحديث الصفحة.",tryAgain:"تحديث الصفحة",goHome:"الذهاب للرئيسية",errorDetails:"تفاصيل الخطأ (التطوير)"},Fo={title:"المستندات",upload:"رفع مستند",uploading:"جاري الرفع...",noDocuments:"لم يتم رفع مستندات",uploadHint:"ارفع مستندات لاستخدامها في محادثاتك",delete:"حذف",deleteConfirm:"هل أنت متأكد من حذف هذا المستند؟",deleteSuccess:"تم حذف المستند",deleteFailed:"فشل حذف المستند",uploadSuccess:"تم رفع المستند بنجاح",uploadFailed:"فشل رفع المستند",types:"مدعوم: PDF، TXT، MD، DOCX",unsupportedFileType:"يتم دعم ملفات PDF وTXT فقط",fileSizeTooLarge:"يجب أن يكون حجم الملف أقل من 10 ميجابايت",uploadSuccessWithName:'تم رفع المستند "{{name}}" بنجاح',removeSuccess:"تم إزالة المستند بنجاح",removeFailed:"فشل إزالة المستند",removeError:"حدث خطأ أثناء إزالة المستند",clickToUpload:"انقر للرفع",orDragAndDrop:"أو اسحب وأفلت",fileTypesAndSize:"ملفات PDF أو TXT حتى 10 ميجابايت",uploadedDocuments:"المستندات المرفوعة",removeDocument:"إزالة المستند"},Oo={speak:"تحدث",stop:"إيقاف",speaking:"جاري التحدث...",generateFailed:"فشل توليد الكلام",playbackFailed:"فشل تشغيل الصوت",stopSpeaking:"إيقاف التحدث",generatingSpeech:"جاري توليد الكلام...",readAloud:"قراءة بصوت عالٍ"},Eo={title:"المخرجات",code:"الكود",preview:"معاينة",copy:"نسخ الكود",copied:"تم النسخ!",download:"تحميل",expand:"توسيع",collapse:"طي",openInNewTab:"فتح في علامة تبويب جديدة",invalidSvg:"محتوى SVG غير صالح",invalidJson:"محتوى JSON غير صالح",previewMode:"وضع المعاينة",codeMode:"وضع الكود",copyContent:"نسخ المحتوى",openInPanel:"فتح في اللوحة",openInNewWindow:"فتح في نافذة جديدة",created:"تم الإنشاء",closePanelEsc:"إغلاق اللوحة (Esc)",copyButton:"نسخ",open:"فتح",dragEdgeToResize:"اسحب الحافة لتغيير الحجم"},Lo={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:"فشل استيراد الشخصية"},Go={common:mo,brand:po,auth:go,setup:ho,chat:bo,sidebar:ko,user:fo,settings:yo,models:vo,personas:xo,gallery:So,errors:wo,keyboard:Po,modelManager:Mo,personaManager:Do,personaForm:Ao,personaCard:zo,userManager:jo,chatMessage:To,imageGallery:No,imageGeneration:Io,errorBoundary:Co,documents:Fo,ttsButton:Oo,artifacts:Eo,personaImportExport:Lo},Bo={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:"কাস্টম",mode:"মোড",multiUser:"মাল্টি ইউজার",remove:"সরান"},Ko={name:"Libre WebUI",shortName:"Libre"},Ho={login:{title:"স্বাগতম",subtitle:"আপনার অ্যাকাউন্টে সাইন ইন করুন",username:"ব্যবহারকারীর নাম",usernamePlaceholder:"আপনার ব্যবহারকারীর নাম লিখুন",password:"পাসওয়ার্ড",passwordPlaceholder:"আপনার পাসওয়ার্ড লিখুন",signIn:"সাইন ইন",signingIn:"সাইন ইন হচ্ছে...",noAccount:"অ্যাকাউন্ট নেই?",signUpHere:"এখানে সাইন আপ করুন",loginSuccess:"লগইন সফল!",loginFailed:"লগইন ব্যর্থ",checkCredentials:"লগইন ব্যর্থ। আপনার তথ্য পরীক্ষা করুন।",enterBoth:"অনুগ্রহ করে ব্যবহারকারীর নাম এবং পাসওয়ার্ড উভয়ই লিখুন",githubSuccess:"GitHub লগইন সফল!",githubFailed:"GitHub প্রমাণীকরণ ব্যর্থ",githubVerifyFailed:"GitHub প্রমাণীকরণ যাচাই করতে ব্যর্থ"},signup:{title:"অ্যাকাউন্ট তৈরি করুন",subtitle:"আপনার নতুন অ্যাকাউন্টের জন্য সাইন আপ করুন",username:"ব্যবহারকারীর নাম",usernamePlaceholder:"একটি ব্যবহারকারীর নাম বেছে নিন",email:"ইমেইল",emailPlaceholder:"your@email.com",password:"পাসওয়ার্ড",passwordPlaceholder:"একটি পাসওয়ার্ড বেছে নিন",confirmPassword:"পাসওয়ার্ড নিশ্চিত করুন",confirmPasswordPlaceholder:"আপনার পাসওয়ার্ড নিশ্চিত করুন",createAccount:"অ্যাকাউন্ট তৈরি করুন",creatingAccount:"অ্যাকাউন্ট তৈরি হচ্ছে...",hasAccount:"ইতিমধ্যে অ্যাকাউন্ট আছে?",signInHere:"এখানে সাইন ইন করুন",signupSuccess:"অ্যাকাউন্ট সফলভাবে তৈরি হয়েছে!",signupFailed:"সাইন আপ ব্যর্থ",tryAgain:"সাইন আপ ব্যর্থ। অনুগ্রহ করে আবার চেষ্টা করুন।",usernameRequired:"ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন",passwordMismatch:"পাসওয়ার্ড মিলছে না",passwordTooShort:"পাসওয়ার্ড কমপক্ষে ৬ অক্ষরের হতে হবে"},logout:{button:"লগ আউট",success:"সফলভাবে লগ আউট হয়েছে"},oauth:{continueWith:"{{provider}} দিয়ে চালিয়ে যান",connectingTo:"{{provider}} এ সংযোগ হচ্ছে...",github:"GitHub",huggingFace:"Hugging Face"}},Ro={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 এর প্রাথমিক অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট হবে"},encryptionKey:{title:"আপনার এনক্রিপশন কী সংরক্ষণ করুন",subtitle:"গুরুত্বপূর্ণ: এই কী সংরক্ষণ করুন",description:"এই এনক্রিপশন কী আপনার সংবেদনশীল ডেটা রক্ষা করে। এটি নিরাপদে সংরক্ষণ করুন - আপনার ডাটাবেস পুনরুদ্ধার করতে হলে এটি প্রয়োজন হবে।",warning:"সতর্কতা",warningText:"যদি আপনি এই কী হারান এবং ডাটাবেস পুনরুদ্ধার করতে হয়, আপনার এনক্রিপ্ট করা ডেটা (API কী, পছন্দসমূহ) পুনরুদ্ধার করা যাবে না।",label:"আপনার এনক্রিপশন কী",loading:"লোড হচ্ছে...",copyToClipboard:"ক্লিপবোর্ডে কপি করুন",copied:"এনক্রিপশন কী ক্লিপবোর্ডে কপি হয়েছে!",copyFailed:"ক্লিপবোর্ডে কী কপি করতে ব্যর্থ",envNote:"এই কী আপনার backend/.env ফাইলে ENCRYPTION_KEY হিসাবে সংরক্ষিত আছে",acknowledgment:"আমি আমার এনক্রিপশন কী একটি নিরাপদ স্থানে সংরক্ষণ করেছি এবং বুঝতে পারছি যে এটি হারালে ডেটা ক্ষতি হতে পারে।",confirmRequired:"অনুগ্রহ করে নিশ্চিত করুন যে আপনি এনক্রিপশন কী সংরক্ষণ করেছেন",continue:"Libre WebUI তে চালিয়ে যান"}},Uo={greeting:{morning:"সুপ্রভাত",afternoon:"শুভ অপরাহ্ন",evening:"শুভ সন্ধ্যা",night:"শুভ রাত্রি"},welcome:{helpToday:"আজ আমি কীভাবে সাহায্য করতে পারি?",helpTonight:"আজ রাতে আমি কীভাবে সাহায্য করতে পারি?"},input:{placeholder:"একটি বার্তা পাঠান",messagePlaceholder:"বার্তা...",attachImages:"ছবি সংযুক্ত করুন",attachments:"সংযুক্তি এবং উন্নত বৈশিষ্ট্য",sendMessage:"বার্তা পাঠান",stopGeneration:"জেনারেশন বন্ধ করুন"},session:{new:"নতুন চ্যাট",private:"ব্যক্তিগত",privateMode:"ব্যক্তিগত মোড",privateDescription:"এই কথোপকথন সংরক্ষণ করা হবে না",privateTooltip:"একটি ব্যক্তিগত কথোপকথন শুরু করুন যা সংরক্ষণ করা হবে না",deleteConfirm:"আপনি কি এই চ্যাট মুছতে চান?",generatingTitle:"শিরোনাম তৈরি হচ্ছে",noChats:"এখনও কোনো চ্যাট নেই",createFirst:"উপরে আপনার প্রথম চ্যাট তৈরি করুন",chats:"চ্যাট",renameChat:"চ্যাট পুনঃনামকরণ করুন",deleteChat:"চ্যাট মুছুন"},persona:{applied:"পার্সোনা প্রয়োগ করা হয়েছে",label:"পার্সোনা"},model:{updated:"মডেল আপডেট হয়েছে",noModels:"কোনো মডেল উপলব্ধ নেই",noModelsDescription:"কোনো মডেল উপলব্ধ নেই। নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"কোনো মডেল উপলব্ধ নেই। অনুগ্রহ করে নিশ্চিত করুন যে Ollama চলছে এবং মডেল ইনস্টল করা আছে।"},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:"স্ট্রাকচার্ড আউটপুট সক্রিয়"}},$o={navigation:{chat:"চ্যাট",models:"মডেল",personas:"পার্সোনা",imagine:"ইমাজিন",settings:"সেটিংস",userManagement:"ব্যবহারকারী ব্যবস্থাপনা",signOut:"সাইন আউট"},toggleSize:"সাইডবার সাইজ টগল করুন",expandSidebar:"সাইডবার প্রসারিত করুন"},Vo={menu:{changePicture:"ছবি পরিবর্তন করুন",settings:"সেটিংস",userManagement:"ব্যবহারকারী ব্যবস্থাপনা",logout:"লগ আউট"},avatar:{title:"প্রোফাইল ছবি পরিবর্তন করুন",updated:"প্রোফাইল ছবি আপডেট হয়েছে",updateFailed:"প্রোফাইল ছবি আপডেট করতে ব্যর্থ",saving:"সংরক্ষণ হচ্ছে..."},profile:{noEmail:"কোনো ইমেইল দেওয়া হয়নি"}},Wo={title:"সেটিংস",tabs:{appearance:"চেহারা",model:"মডেল",systemMessage:"সিস্টেম বার্তা",plugins:"প্লাগইন",generation:"জেনারেশন",documents:"ডকুমেন্ট",tts:"টেক্সট-টু-স্পিচ",imageGen:"ইমেজ জেনারেশন",data:"ডেটা",about:"সম্পর্কে"},appearance:{title:"চেহারা",language:{title:"ভাষা",description:"আপনার পছন্দের ভাষা নির্বাচন করুন"},theme:{title:"থিম",light:"লাইট",dark:"ডার্ক",amoled:"বিশুদ্ধ কালো",system:"সিস্টেম"},chatInterface:{title:"চ্যাট ইন্টারফেস",showUsername:"ব্যবহারকারীর নাম দেখান",showUsernameDescription:"চ্যাট বার্তায় ব্যবহারকারীর নাম প্রদর্শন করুন"},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:"পারসোনা"},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 কী লিখুন"}},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:"ডকুমেন্ট এমবেডিং সক্রিয় করুন"},documents:{title:"ডকুমেন্ট সেটিংস",embeddings:{title:"এমবেডিং",enable:"ডকুমেন্ট এমবেডিং সক্রিয় করুন",model:"এমবেডিং মডেল",modelDescription:"ডকুমেন্ট এমবেডিং এর জন্য ব্যবহৃত মডেল নির্বাচন করুন",chunkSize:"চাংক সাইজ",chunkSizeInTokens:"(টোকেনে)",chunkSizeDescription:"এমবেডিং এর জন্য টেক্সট চাংকের সাইজ",chunkOverlap:"চাংক ওভারল্যাপ",chunkOverlapInTokens:"(টোকেনে)",chunkOverlapDescription:"পরপর চাংকের মধ্যে ওভারল্যাপ",similarityThreshold:"সিমিলারিটি থ্রেশহোল্ড",similarityDescription:"ফলাফল অন্তর্ভুক্ত করার ন্যূনতম সিমিলারিটি স্কোর",status:"এমবেডিং স্ট্যাটাস",statusLabel:"স্ট্যাটাস",available:"উপলব্ধ",unavailable:"অনুপলব্ধ",chunksWithEmbeddings:"এমবেডিং সহ চাংক",coverage:"কভারেজ",regenerate:"এমবেডিং পুনরায় তৈরি করুন",regenerating:"পুনরায় তৈরি হচ্ছে..."}},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:"ত্রুটি"},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:"ডকুমেন্টেশন",reportIssue:"সমস্যা রিপোর্ট করুন",reportIssueDescription:"বাগ রিপোর্ট এবং ফিচার অনুরোধ"},version:"সংস্করণ {{version}}"}},qo={title:"মডেল",subtitle:"আপনার Ollama মডেল পুল, পরিচালনা এবং মনিটর করুন",installed:"ইনস্টল করা মডেল",available:"উপলব্ধ মডেল",pull:"মডেল পুল করুন",pulling:"পুল হচ্ছে...",delete:"মডেল মুছুন",deleting:"মোছা হচ্ছে...",size:"সাইজ",modified:"পরিবর্তিত",family:"ফ্যামিলি",parameters:"প্যারামিটার",quantization:"কোয়ান্টাইজেশন",noModels:"কোনো মডেল ইনস্টল করা নেই",pullFirst:"শুরু করতে একটি মডেল পুল করুন"},Jo={title:"পার্সোনা",create:"পার্সোনা তৈরি করুন",edit:"পার্সোনা সম্পাদনা করুন",delete:"পার্সোনা মুছুন",name:"নাম",description:"বিবরণ",systemPrompt:"সিস্টেম প্রম্পট",model:"মডেল",avatar:"অবতার",background:"ব্যাকগ্রাউন্ড",noPersonas:"কোনো পার্সোনা তৈরি করা হয়নি",createFirst:"আপনার চ্যাট অভিজ্ঞতা কাস্টমাইজ করতে আপনার প্রথম পার্সোনা তৈরি করুন"},_o={title:"গ্যালারি",subtitle:"আপনার AI-তৈরি ইমেজ গ্যালারি",imageCount:"{{count}}টি ইমেজ",generate:"ইমেজ তৈরি করুন",generateDescription:"AI দিয়ে ইমেজ তৈরি করুন",generating:"তৈরি হচ্ছে...",prompt:"প্রম্পট",promptPlaceholder:"আপনি যে ইমেজ তৈরি করতে চান তা বর্ণনা করুন...",noImages:"এখনও কোনো ইমেজ তৈরি হয়নি",download:"ডাউনলোড",delete:"মুছুন",regenerate:"পুনরায় তৈরি করুন",model:"মডেল",size:"সাইজ",quality:"কোয়ালিটি",created:"তৈরি করা হয়েছে"},Yo={generic:"একটি ত্রুটি ঘটেছে",network:"নেটওয়ার্ক ত্রুটি। আপনার সংযোগ পরীক্ষা করুন।",unauthorized:"এই ক্রিয়া সম্পাদন করার অনুমতি নেই।",notFound:"অনুরোধকৃত রিসোর্স পাওয়া যায়নি।",serverError:"সার্ভার ত্রুটি। পরে আবার চেষ্টা করুন।",validation:"আপনার ইনপুট পরীক্ষা করুন এবং আবার চেষ্টা করুন।"},Zo={title:"কীবোর্ড শর্টকাট",toggleSidebar:"সাইডবার টগল করুন",openSettings:"সেটিংস খুলুন",toggleDarkMode:"ডার্ক মোড টগল করুন",showShortcuts:"কীবোর্ড শর্টকাট দেখান",closeModals:"মোডাল বন্ধ করুন",groups:{navigation:"নেভিগেশন",settings:"সেটিংস",general:"সাধারণ",chat:"চ্যাট"},actions:{sendMessage:"বার্তা পাঠান",newLine:"বার্তায় নতুন লাইন"},footer:"এই সাহায্য দেখাতে {{key1}} বা {{key2}} চাপুন",tooltip:"কীবোর্ড শর্টকাট"},Xo={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:"অনুগ্রহ করে একটি মডেলের নাম লিখুন"},progress:{starting:"শুরু হচ্ছে...",pulling:"মডেল ডাউনলোড হচ্ছে...",verifying:"অখণ্ডতা যাচাই হচ্ছে...",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
|
|
4
|
+
SYSTEM You are a helpful assistant.`,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:"সম্প্রতি আপডেট"}}},Qo={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}} করতে ব্যর্থ"},es={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:"সংরক্ষণ করতে ব্যর্থ"}},as={enhanced:"উন্নত",systemPrompt:"সিস্টেম প্রম্পট",memories:"স্মৃতি",use:"ব্যবহার করুন",editTooltip:"পার্সোনা সম্পাদনা করুন",downloadTooltip:"পার্সোনা ডাউনলোড করুন",backup:"ব্যাকআপ",exportDNA:"DNA এক্সপোর্ট করুন",wipeMemories:"স্মৃতি মুছুন",wipeConfirm:"আপনি কি এই পার্সোনার সব স্মৃতি মুছতে চান? এই ক্রিয়া পূর্বাবস্থায় ফেরানো যাবে না।",wipeSuccess:"{{count}}টি স্মৃতি মোছা হয়েছে",backupSuccess:"পার্সোনা ব্যাকআপ সফলভাবে ডাউনলোড হয়েছে",dnaSuccess:"পার্সোনা DNA সফলভাবে এক্সপোর্ট হয়েছে",failed:"{{action}} করতে ব্যর্থ"},ts={title:"ব্যবহারকারী ব্যবস্থাপনা",subtitle:"ব্যবহারকারী অ্যাকাউন্ট এবং অনুমতি পরিচালনা করুন",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:"ব্যবহারকারী আপডেট করতে ব্যর্থ"}},ns={you:"আপনি",assistant:"সহকারী",system:"সিস্টেম",copy:"কপি",copyMessage:"বার্তা কপি করুন",copied:"কপি হয়েছে!",regenerate:"পুনরায় তৈরি করুন",regenerateResponse:"প্রতিক্রিয়া পুনরায় তৈরি করুন",edit:"সম্পাদনা",editSystemMessage:"সিস্টেম বার্তা সম্পাদনা করুন",saveChanges:"পরিবর্তন সংরক্ষণ করুন",cancelEditing:"সম্পাদনা বাতিল করুন",delete:"মুছুন",deleteConfirm:"এই বার্তা মুছবেন?",branch:"ব্রাঞ্চ",speaking:"বলছে...",speakMessage:"বার্তা বলুন",stopSpeaking:"বলা বন্ধ করুন",showMore:"আরও দেখান",showLess:"কম দেখান",thinking:"চিন্তা করছে",systemMessagePlaceholder:"আপনার সিস্টেম বার্তা লিখুন...",fullSizeImage:"পূর্ণ সাইজ ইমেজ",startConversation:"একটি কথোপকথন শুরু করুন",startConversationDescription:"আপনার AI সহকারীর সাথে চ্যাট শুরু করতে একটি বার্তা পাঠান। প্রশ্ন করুন, কোডে সাহায্য পান, বা একটি স্বাভাবিক কথোপকথন করুন।",scrollToBottom:"নিচে স্ক্রোল করুন",newMessages:"নতুন বার্তা"},rs={title:"ইমেজ গ্যালারি",noImages:"এখনও কোনো ইমেজ নেই",noImagesHint:"ডানদিকের প্যানেল ব্যবহার করে আপনার প্রথম ইমেজ তৈরি করুন",delete:"মুছুন",download:"ডাউনলোড",deleteConfirm:"আপনি কি এই ইমেজ মুছতে চান?",deleteSuccess:"ইমেজ মোছা হয়েছে",deleteFailed:"ইমেজ মুছতে ব্যর্থ",downloadFailed:"ইমেজ ডাউনলোড করতে ব্যর্থ",loadMore:"আরও লোড করুন ({{current}} এর মধ্যে {{total}})",loadFailed:"গ্যালারি লোড করতে ব্যর্থ"},is={title:"ইমেজ তৈরি করুন",prompt:"প্রম্পট",promptPlaceholder:"আপনি যে ইমেজ তৈরি করতে চান তা বর্ণনা করুন...",model:"মডেল",selectModel:"মডেল নির্বাচন করুন",noModels:"কোনো ইমেজ জেনারেশন মডেল উপলব্ধ নেই",configurePlugin:"ইমেজ জেনারেশন সমর্থন সহ একটি প্লাগইন কনফিগার করুন",size:"সাইজ",quality:"কোয়ালিটি",style:"স্টাইল",generate:"তৈরি করুন",generating:"তৈরি হচ্ছে...",success:"ইমেজ সফলভাবে তৈরি হয়েছে",failed:"ইমেজ তৈরি করতে ব্যর্থ",enterPrompt:"অনুগ্রহ করে একটি প্রম্পট লিখুন",promptTooLong:"প্রম্পট সর্বোচ্চ {{max}} অক্ষরের সীমা অতিক্রম করেছে"},os={title:"কিছু ভুল হয়েছে",description:"আমরা একটি অপ্রত্যাশিত ত্রুটির সম্মুখীন হয়েছি। অনুগ্রহ করে পেজ রিফ্রেশ করুন।",tryAgain:"পেজ রিফ্রেশ করুন",goHome:"হোমে যান",errorDetails:"ত্রুটির বিবরণ (ডেভেলপমেন্ট)"},ss={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:"ডকুমেন্ট সরান"},ls={speak:"বলুন",stop:"বন্ধ",speaking:"বলছে...",generateFailed:"স্পিচ তৈরি করতে ব্যর্থ",playbackFailed:"অডিও প্লেব্যাক ব্যর্থ",stopSpeaking:"বলা বন্ধ করুন",generatingSpeech:"স্পিচ তৈরি হচ্ছে...",readAloud:"জোরে পড়ুন"},ds={title:"আর্টিফ্যাক্ট",code:"কোড",preview:"প্রিভিউ",copy:"কোড কপি করুন",copied:"কপি হয়েছে!",download:"ডাউনলোড",expand:"প্রসারিত করুন",collapse:"সংকুচিত করুন",openInNewTab:"নতুন ট্যাবে খুলুন",invalidSvg:"অবৈধ SVG কন্টেন্ট",invalidJson:"অবৈধ JSON কন্টেন্ট",previewMode:"প্রিভিউ মোড",codeMode:"কোড মোড",copyContent:"কন্টেন্ট কপি করুন",openInPanel:"প্যানেলে খুলুন",openInNewWindow:"নতুন উইন্ডোতে খুলুন",created:"তৈরি করা হয়েছে",closePanelEsc:"প্যানেল বন্ধ করুন (Esc)",copyButton:"কপি",open:"খুলুন",dragEdgeToResize:"সাইজ পরিবর্তন করতে প্রান্ত টানুন"},cs={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:"পার্সোনা ইম্পোর্ট করতে ব্যর্থ"},us={common:Bo,brand:Ko,auth:Ho,setup:Ro,chat:Uo,sidebar:$o,user:Vo,settings:Wo,models:qo,personas:Jo,gallery:_o,errors:Yo,keyboard:Zo,modelManager:Xo,personaManager:Qo,personaForm:es,personaCard:as,userManager:ts,chatMessage:ns,imageGallery:rs,imageGeneration:is,errorBoundary:os,documents:ss,ttsButton:ls,artifacts:ds,personaImportExport:cs},ms={loading:"Načítání...",save:"Uložit",saving:"Ukládání...",cancel:"Zrušit",delete:"Smazat",edit:"Upravit",close:"Zavřít",back:"Zpět",next:"Další",confirm:"Potvrdit",error:"Chyba",success:"Úspěch",warning:"Varování",or:"nebo",optional:"volitelné",enabled:"Povoleno",disabled:"Zakázáno",on:"Zap.",off:"Vyp.",yes:"Ano",no:"Ne",search:"Hledat",noResults:"Žádné výsledky",retry:"Zkusit znovu",refresh:"Obnovit",download:"Stáhnout",upload:"Nahrát",export:"Exportovat",import:"Importovat",reset:"Resetovat",apply:"Použít",clear:"Vymazat",all:"Vše",none:"Žádné",default:"Výchozí",custom:"Vlastní",mode:"Režim",multiUser:"Více uživatelů",remove:"Odstranit"},ps={name:"Libre WebUI",shortName:"Libre"},gs={login:{title:"Vítejte zpět",subtitle:"Přihlaste se ke svému účtu a pokračujte",username:"Uživatelské jméno",usernamePlaceholder:"Zadejte uživatelské jméno",password:"Heslo",passwordPlaceholder:"Zadejte heslo",signIn:"Přihlásit se",signingIn:"Přihlašování...",noAccount:"Nemáte účet?",signUpHere:"Zaregistrujte se zde",loginSuccess:"Přihlášení úspěšné!",loginFailed:"Přihlášení se nezdařilo",checkCredentials:"Přihlášení se nezdařilo. Zkontrolujte své přihlašovací údaje.",enterBoth:"Zadejte uživatelské jméno a heslo",githubSuccess:"Přihlášení přes GitHub úspěšné!",githubFailed:"Ověření GitHub se nezdařilo",githubVerifyFailed:"Nepodařilo se ověřit GitHub autentizaci"},signup:{title:"Vytvořit účet",subtitle:"Zaregistrujte nový účet",username:"Uživatelské jméno",usernamePlaceholder:"Zvolte uživatelské jméno",email:"Email",emailPlaceholder:"vas@email.cz",password:"Heslo",passwordPlaceholder:"Zvolte heslo",confirmPassword:"Potvrdit heslo",confirmPasswordPlaceholder:"Potvrďte heslo",createAccount:"Vytvořit účet",creatingAccount:"Vytváření účtu...",hasAccount:"Již máte účet?",signInHere:"Přihlaste se zde",signupSuccess:"Účet úspěšně vytvořen!",signupFailed:"Registrace se nezdařila",tryAgain:"Registrace se nezdařila. Zkuste to znovu.",usernameRequired:"Uživatelské jméno a heslo jsou povinné",passwordMismatch:"Hesla se neshodují",passwordTooShort:"Heslo musí mít alespoň 6 znaků"},logout:{button:"Odhlásit se",success:"Úspěšně odhlášeno"},oauth:{continueWith:"Pokračovat s {{provider}}",connectingTo:"Připojování k {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hs={welcome:{title:"Vítejte v Libre WebUI",subtitle:"Začněme",description:"Nastavte Libre WebUI v několika jednoduchých krocích",createAdmin:"Vytvořit účet správce",features:{secure:{title:"Bezpečné a soukromé",description:"Vaše konverzace zůstávají na vašem zařízení"},fast:{title:"Rychlé a responzivní",description:"Optimalizováno pro rychlost a výkon"},openSource:{title:"Open source",description:"Bezplatný software s otevřeným zdrojovým kódem"}}},admin:{title:"Vytvořit účet správce",subtitle:"Nastavení správce",description:"Vytvořte první účet správce pro vaši instanci Libre WebUI",usernamePlaceholder:"Zadejte jméno správce",passwordPlaceholder:"Zadejte heslo (min. 6 znaků)",confirmPlaceholder:"Potvrďte heslo",creating:"Vytváření...",createAdmin:"Vytvořit správce",success:"Účet správce úspěšně vytvořen!",failed:"Nepodařilo se vytvořit účet správce",fillAllFields:"Vyplňte všechna pole",note:"Toto bude hlavní účet správce pro vaši instanci Libre WebUI"},encryptionKey:{title:"Uložte šifrovací klíč",subtitle:"Důležité: Uložte tento klíč",description:"Tento šifrovací klíč chrání vaše citlivá data. Uložte ho bezpečně - budete ho potřebovat, pokud budete někdy muset obnovit databázi.",warning:"Varování",warningText:"Pokud tento klíč ztratíte a budete potřebovat obnovit databázi, vaše zašifrovaná data (API klíče, předvolby) budou nenávratně ztracena.",label:"Váš šifrovací klíč",loading:"Načítání...",copyToClipboard:"Kopírovat do schránky",copied:"Šifrovací klíč zkopírován!",copyFailed:"Nepodařilo se zkopírovat klíč",envNote:"Tento klíč je také uložen v souboru backend/.env jako ENCRYPTION_KEY",acknowledgment:"Uložil jsem šifrovací klíč na bezpečné místo a chápu, že jeho ztráta může vést ke ztrátě dat.",confirmRequired:"Potvrďte, že jste uložili šifrovací klíč",continue:"Pokračovat do Libre WebUI"}},bs={greeting:{morning:"Dobré ráno",afternoon:"Dobré odpoledne",evening:"Dobrý večer",night:"Dobrou noc"},welcome:{helpToday:"S čím vám mohu dnes pomoci?",helpTonight:"S čím vám mohu dnes večer pomoci?"},input:{placeholder:"Odeslat zprávu",messagePlaceholder:"Zpráva...",attachImages:"Připojit obrázky",attachments:"Přílohy a pokročilé funkce",sendMessage:"Odeslat zprávu",stopGeneration:"Zastavit generování"},session:{new:"Nový chat",private:"Soukromý",privateMode:"Soukromý režim",privateDescription:"Tato konverzace nebude uložena",privateTooltip:"Začít soukromou konverzaci, která nebude uložena",deleteConfirm:"Opravdu chcete smazat tento chat?",generatingTitle:"Generování titulku",noChats:"Zatím žádné chaty",createFirst:"Vytvořte svůj první chat výše",chats:"Chaty",renameChat:"Přejmenovat chat",deleteChat:"Smazat chat"},persona:{applied:"Persona použita",label:"Persona"},model:{updated:"Model aktualizován",noModels:"Žádné dostupné modely",noModelsDescription:"Žádné dostupné modely. Ujistěte se, že Ollama běží a modely jsou nainstalované.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Žádné dostupné modely. Ujistěte se, že Ollama běží a modely jsou nainstalované."},footer:{disclaimer:"LLM může dělat chyby - ověřujte důležité informace",images:"{{count}} obrázek",images_plural:"{{count}} obrázků",structuredOutput:"Strukturovaný výstup"},mediaUpload:{dropImagesHere:"Přetáhněte obrázky sem nebo",supportedFormats:"Podporované: JPG, PNG, GIF, WebP (max 10MB každý)",browse:"procházet"},structuredOutput:{title:"Formát odpovědi",none:"Žádný (přirozený jazyk)",noneDescription:"Výchozí odpověď v přirozeném jazyce",json:"JSON",jsonDescription:"Strukturovaný formát JSON",list:"Seznam",listDescription:"Pole položek",summary:"Shrnutí",summaryDescription:"Shrnutí dokumentu s klíčovými body",analysis:"Analýza",analysisDescription:"Strukturovaná analýza s klady/zápory",custom:"Vlastní schéma",customDescription:"Definujte vlastní JSON schéma",customSchema:"Vlastní JSON schéma",schemaPreview:"Náhled schématu",applySchema:"Použít schéma",cancel:"Zrušit",enabled:"Strukturovaný výstup povolen"}},ks={navigation:{chat:"Chat",models:"Modely",personas:"Persony",imagine:"Generovat",settings:"Nastavení",userManagement:"Správa uživatelů",signOut:"Odhlásit se"},toggleSize:"Změnit velikost postranního panelu",expandSidebar:"Rozbalit postranní panel"},fs={menu:{changePicture:"Změnit obrázek",settings:"Nastavení",userManagement:"Správa uživatelů",logout:"Odhlásit se"},avatar:{title:"Změnit profilový obrázek",updated:"Profilový obrázek aktualizován",updateFailed:"Nepodařilo se aktualizovat profilový obrázek",saving:"Ukládání..."},profile:{noEmail:"Email není uveden"}},ys={title:"Nastavení",tabs:{appearance:"Vzhled",model:"Model",systemMessage:"Systémová zpráva",plugins:"Pluginy",generation:"Generování",documents:"Dokumenty",tts:"Text na řeč",imageGen:"Generování obrázků",data:"Data",about:"O aplikaci"},appearance:{title:"Vzhled",language:{title:"Jazyk",description:"Vyberte preferovaný jazyk"},theme:{title:"Motiv",light:"Světlý",dark:"Tmavý",amoled:"Čistě Černá",system:"Systémový"},chatInterface:{title:"Rozhraní chatu",showUsername:"Zobrazit uživatelské jméno",showUsernameDescription:"Zobrazovat uživatelské jméno ve zprávách chatu"},background:{title:"Obrázek pozadí",enable:"Povolit obrázek pozadí",enableDescription:"Zobrazit vlastní pozadí s efektem rozmazání",blur:"Rozmazání",opacity:"Průhlednost",upload:"Nahrát obrázek pozadí",dragDrop:"Přetáhněte obrázek nebo klikněte pro procházení",chooseImage:"Vybrat obrázek"}},saveSettings:"Uložit nastavení",model:{title:"Nastavení modelu",defaultModel:"Výchozí model",defaultModelDescription:"Tento model bude ve výchozím nastavení použit pro nové konverzace",selectModel:"Vyberte model",updateAll:"Aktualizovat všechny modely",updateAllDescription:"Zkontrolovat aktualizace a stáhnout nejnovější verze všech nainstalovaných modelů",updateAllButton:"Aktualizovat vše",updating:"Aktualizace modelů...",currentModelInfo:"Informace o aktuálním modelu",name:"Název",size:"Velikost",family:"Rodina",format:"Formát",status:"Stav",statusStarting:"Spouštění...",statusComplete:"Dokončeno",statusError:"Chyba",bulkOperations:"Hromadné operace",autoTitle:{title:"Automatické generování titulků",enable:"Povolit automatické titulky",enableDescription:"Automaticky generovat titulky pro nové konverzace",taskModel:"Model úloh",selectTaskModel:"Vyberte model úloh",taskModelDescription:"Model používaný pro generování titulků konverzací"},persona:"Persona"},systemMessage:{title:"Systémová zpráva",description:"Nastavte vlastní systémovou zprávu, která bude použita pro všechny nové konverzace.",placeholder:"Zadejte systémovou zprávu...",saved:"Systémová zpráva uložena",saveFailed:"Nepodařilo se uložit systémovou zprávu"},plugins:{title:"Pluginy",description:"Spravujte nainstalované pluginy",addNew:"Přidat nový plugin",upload:"Nahrát plugin",addJson:"Přidat JSON",uploading:"Nahrávání...",jsonPlaceholder:"Vložte JSON konfiguraci pluginu...",install:"Nainstalovat plugin",noPlugins:"Žádné nainstalované pluginy",noPluginsDescription:"Přidejte plugin pro rozšíření funkcionality",loading:"Načítání pluginů...",installed:"Nainstalované pluginy",active:"Aktivní pluginy",activeLabel:"Aktivní",inactive:"Neaktivní",activate:"Aktivovat",deactivate:"Deaktivovat",models:"modelů",apiKeySet:"API klíč nastaven",apiKeyConfiguration:"Konfigurace API klíče",apiKeyEnvAlternative:"Alternativně nastavte",environmentVariable:"proměnnou prostředí",apiKeyConfigured:"API klíč nakonfigurován",apiKeyPlaceholder:"Zadejte API klíč...",saveApiKey:"Uložit API klíč",apiKey:{title:"API klíč",placeholder:"Zadejte API klíč",save:"Uložit klíč",remove:"Odstranit klíč",configured:"API klíč nakonfigurován",notConfigured:"Vyžadován API klíč",saved:"API klíč úspěšně uložen",removed:"API klíč odstraněn",saveFailed:"Nepodařilo se uložit API klíč",removeFailed:"Nepodařilo se odstranit API klíč",enterKey:"Zadejte API klíč"}},generation:{title:"Možnosti generování",description:"Nakonfigurujte, jak AI generuje odpovědi",coreParameters:"Základní parametry",temperature:"Teplota",temperatureDescription:"Ovládá náhodnost. Nižší hodnoty jsou více zaměřené, vyšší více kreativní.",topP:"Top P",topPDescription:"Ovládá rozmanitost pomocí nucleus sampling. Nižší hodnoty se soustředí na pravděpodobné tokeny.",topK:"Top K",topKDescription:"Omezuje výběr tokenů na K nejpravděpodobnějších. Nastavte 0 pro vypnutí.",minP:"Min P",minPDescription:"Minimální prah pravděpodobnosti pro výběr tokenů.",generationControl:"Ovládání generování",maxTokens:"Max tokenů",maxTokensDescription:"Maximální počet tokenů k vygenerování v odpovědi.",repeatPenalty:"Penalizace opakování",repeatPenaltyDescription:"Penalizuje opakující se tokeny. Vyšší hodnoty snižují opakování.",contextLength:"Délka kontextu",contextLengthDescription:"Maximální velikost kontextového okna pro konverzace.",seed:"Seed",optional:"volitelné",random:"Náhodný",seedDescription:"Nastavte konkrétní seed pro reprodukovatelné výsledky.",advancedOptions:"Pokročilé možnosti",presencePenalty:"Penalizace přítomnosti",presencePenaltyDescription:"Penalizuje tokeny, které se objevují v kontextu.",frequencyPenalty:"Penalizace frekvence",frequencyPenaltyDescription:"Penalizuje často používané tokeny.",stopSequences:"Stop sekvence",commaSeparated:"oddělené čárkou",stopSequencesDescription:"Vlastní tokeny, které zastaví generování při nalezení.",resetDefaults:"Obnovit výchozí",saveOptions:"Uložit možnosti",embeddingSettings:"Nastavení embeddingů",enableEmbeddings:"Povolit embeddingy dokumentů"},documents:{title:"Nastavení dokumentů",embeddings:{title:"Embeddingy",enable:"Povolit embeddingy dokumentů",model:"Model embeddingů",modelDescription:"Vyberte model pro embedding dokumentů",chunkSize:"Velikost části",chunkSizeInTokens:"(v tokenech)",chunkSizeDescription:"Velikost textových částí pro embedding",chunkOverlap:"Překryv částí",chunkOverlapInTokens:"(v tokenech)",chunkOverlapDescription:"Překryv mezi po sobě jdoucími částmi",similarityThreshold:"Práh podobnosti",similarityDescription:"Minimální skóre podobnosti pro zahrnutí výsledků",status:"Stav embeddingů",statusLabel:"Stav",available:"Dostupný",unavailable:"Nedostupný",chunksWithEmbeddings:"Části s embeddingy",coverage:"Pokrytí",regenerate:"Regenerovat embeddingy",regenerating:"Regenerování..."}},tts:{title:"Text na řeč",description:"Nakonfigurujte nastavení syntézy řeči pro čtení zpráv",loadingProviders:"Načítání poskytovatelů TTS...",noProviders:"Žádní poskytovatelé TTS",noProvidersDescription:"Nakonfigurujte plugin s podporou TTS pro povolení syntézy řeči",enable:"Povolit TTS",enableDescription:"Povolit syntézu řeči pro zprávy asistenta",autoPlay:"Automatické přehrávání odpovědí",autoPlayDescription:"Automaticky číst nové zprávy asistenta",streamSentences:"Streamovat věty",streamSentencesDescription:"Přehrávat zvuk větu po větě namísto čekání na celou zprávu. Doporučeno pro lokální TTS, aby se předešlo časovému limitu u dlouhých zpráv.",voiceConfiguration:"Konfigurace hlasu",model:"Model TTS",modelDescription:"Vyberte model pro syntézu řeči",voice:"Hlas",selectVoice:"Vyberte hlas",voiceDescription:"Vyberte hlas pro syntézu řeči",speed:"Rychlost",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Dostupní poskytovatelé",models:"modelů",test:"Test",testing:"Testování...",stop:"Stop"},imageGen:{title:"Generování obrázků",description:"Nakonfigurujte nastavení a poskytovatele generování obrázků",loadingProviders:"Načítání poskytovatelů generování obrázků...",noProviders:"Žádní poskytovatelé generování obrázků",noProvidersDescription:"Nakonfigurujte plugin s podporou generování obrázků",enable:"Povolit generování obrázků",enableDescription:"Povolit AI generování obrázků v konverzacích",configuration:"Konfigurace",model:"Model",modelDescription:"Vyberte model pro generování obrázků",size:"Velikost",sizeDescription:"Rozlišení generovaných obrázků",quality:"Kvalita",qualityDescription:"Úroveň kvality generovaných obrázků",style:"Styl",styleDescription:"Preset stylu pro generované obrázky",availableProviders:"Dostupní poskytovatelé",models:"modelů"},data:{title:"Správa dat",export:"Exportovat data",exportDescription:"Stáhněte všechna svá data včetně předvoleb, relací a dokumentů.",exportAll:"Exportovat všechna data",import:"Importovat data",importDescription:"Importujte data z předchozího exportu.",importData:"Importovat data",importing:"Importování...",clearSessions:"Vymazat relace",clearSessionsDescription:"Smazat všechny chatové relace. Tuto akci nelze vrátit zpět.",clearAll:"Vymazat vše",clearing:"Mazání...",importOptions:"Možnosti importu",importOptionsDescription:"Vyberte, jak zacházet s existujícími daty",skipDuplicates:"Přeskočit duplikáty",overwrite:"Přepsat existující",importResults:"Výsledky importu",preferences:"Předvolby",imported:"Importováno",failed:"Selhalo",sessions:"Relace",importedLabel:"importováno",skipped:"přeskočeno",documents:"Dokumenty",errors:"Chyby"},about:{title:"O aplikaci",versionLabel:"Verze",ollama:{title:"Stav Ollama",version:"Verze",healthy:"V pořádku",unhealthy:"Nefunkční"},stats:{models:"Modely",sessions:"Relace"},features:{privacy:{title:"Soukromí na prvním místě",description:"Vaše data zůstávají na vašem zařízení"},openSource:{title:"Open source",description:"Bezplatný software s otevřeným zdrojovým kódem"},localInference:{title:"Lokální inference",description:"Spouštějte AI modely lokálně s Ollama"}},openSourceBy:"Open source od {{company}}",links:{title:"Odkazy",github:"GitHub",githubDescription:"Zobrazit zdrojový kód a přispět",website:"Webová stránka",websiteDescription:"Navštivte naše stránky",ollama:"Ollama",ollamaDescription:"Zjistěte více o Ollama",documentation:"Dokumentace",reportIssue:"Nahlásit problém",reportIssueDescription:"Hlášení chyb a požadavky na funkce"},version:"Verze {{version}}"}},vs={title:"Modely",subtitle:"Stahujte, spravujte a monitorujte své modely Ollama",installed:"Nainstalované modely",available:"Dostupné modely",pull:"Stáhnout model",pulling:"Stahování...",delete:"Smazat model",deleting:"Mazání...",size:"Velikost",modified:"Upraveno",family:"Rodina",parameters:"Parametry",quantization:"Kvantizace",noModels:"Žádné nainstalované modely",pullFirst:"Stáhněte model pro začátek"},xs={title:"Persony",create:"Vytvořit personu",edit:"Upravit personu",delete:"Smazat personu",name:"Název",description:"Popis",systemPrompt:"Systémový prompt",model:"Model",avatar:"Avatar",background:"Pozadí",noPersonas:"Žádné vytvořené persony",createFirst:"Vytvořte svou první personu pro přizpůsobení zážitku z chatu"},Ss={title:"Galerie",subtitle:"Vaše galerie obrázků generovaných AI",imageCount:"{{count}} obrázků",generate:"Generovat obrázek",generateDescription:"Vytvářejte obrázky pomocí AI",generating:"Generování...",prompt:"Prompt",promptPlaceholder:"Popište obrázek, který chcete vygenerovat...",noImages:"Zatím žádné vygenerované obrázky",download:"Stáhnout",delete:"Smazat",regenerate:"Regenerovat",model:"Model",size:"Velikost",quality:"Kvalita",created:"Vytvořeno"},ws={generic:"Došlo k chybě",network:"Chyba sítě. Zkontrolujte připojení.",unauthorized:"Nemáte oprávnění provést tuto akci.",notFound:"Požadovaný prostředek nebyl nalezen.",serverError:"Chyba serveru. Zkuste to později.",validation:"Zkontrolujte zadané údaje a zkuste to znovu."},Ps={title:"Klávesové zkratky",toggleSidebar:"Přepnout postranní panel",openSettings:"Otevřít nastavení",toggleDarkMode:"Přepnout tmavý režim",showShortcuts:"Zobrazit klávesové zkratky",closeModals:"Zavřít modální okna",groups:{navigation:"Navigace",settings:"Nastavení",general:"Obecné",chat:"Chat"},actions:{sendMessage:"Odeslat zprávu",newLine:"Nový řádek ve zprávě"},footer:"Stiskněte {{key1}} nebo {{key2}} pro zobrazení této nápovědy",tooltip:"Klávesové zkratky"},Ms={title:"Modely",loading:"Načítání modelů...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"model",models_plural:"modelů",running:"běží",vram:"VRAM"},sections:{pull:"Stáhnout nový model",library:"Procházet knihovnu",running:"Běžící modely",local:"Lokální modely",advanced:"Pokročilé akce",huggingface:"HuggingFace Hub"},pull:{placeholder:"Zadejte název modelu (např. llama3.2:3b, deepseek-r1:14b)",button:"Stáhnout",cancel:"Zrušit",popular:"Populární modely:",browseAll:"Procházet všechny modely na ollama.com",success:"Model {{name}} úspěšně stažen",cancelled:"Stahování modelu zrušeno",failed:"Nepodařilo se stáhnout model",enterName:"Zadejte název modelu"},progress:{starting:"Inicializace...",pulling:"Stahování modelu...",verifying:"Ověřování integrity...",writing:"Zápis manifestu...",cleaning:"Čištění..."},library:{available:"dostupné",search:"Hledat modely...",noResults:"Nebyly nalezeny žádné modely odpovídající kritériím",installed:"Nainstalováno",more:"+{{count}} dalších",refresh:"Obnovit knihovnu"},local:{noModels:"Zatím žádné nainstalované modely",pullToStart:"Stáhněte model výše pro začátek",installed:"nainstalováno",running:"Běží",info:"Info",copy:"Kopírovat",delete:"Smazat",deleteConfirm:'Opravdu chcete smazat model "{{name}}"?',deleteSuccess:"Model {{name}} úspěšně smazán",deleteFailed:"Nepodařilo se smazat model"},advanced:{createModel:"Vytvořit model",fromModelfile:"Z Modelfile",copyModel:"Kopírovat model",duplicateExisting:"Duplikovat existující",testEmbeddings:"Testovat embeddingy",generateVectors:"Generovat vektory",healthCheck:"Kontrola stavu",testConnection:"Test připojení",healthy:"Ollama je v pořádku!"},modals:{details:{title:"Detaily modelu",info:"Informace o modelu",family:"Rodina",parameters:"Parametry",quantization:"Kvantizace",format:"Formát",systemPrompt:"Systémový prompt",template:"Šablona",license:"Licence",modelfile:"Modelfile",noDetails:"Žádné dostupné detaily"},copy:{title:"Kopírovat model",source:"Zdrojový model",selectModel:"Vyberte model...",newName:"Nový název modelu",placeholder:"např. muj-vlastni-model",copying:"Kopírování...",button:"Kopírovat model",success:"Model zkopírován jako {{name}}",failed:"Nepodařilo se zkopírovat model",enterBoth:"Zadejte zdrojový i cílový název modelu"},create:{title:"Vytvořit vlastní model",name:"Název modelu",namePlaceholder:"např. muj-asistent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
5
|
+
SYSTEM Jsi užitečný asistent.`,docs:"Dokumentace Modelfile",docsLink:"pro referenci syntaxe",creating:"Vytváření...",button:"Vytvořit model",success:"Model {{name}} úspěšně vytvořen",failed:"Nepodařilo se vytvořit model",enterBoth:"Zadejte název modelu a obsah Modelfile"},embeddings:{title:"Testovat embeddingy",model:"Model embeddingů",selectModel:"Vyberte model...",recommended:"Doporučené: nomic-embed-text, mxbai-embed-large",input:"Vstupní text",placeholder:"Zadejte text pro generování embeddingů...",generating:"Generování...",button:"Generovat embeddingy",result:"Výsledek ({{count}} dimenzí)",success:"Vygenerován {{count}}-dimenzionální embedding vektor",failed:"Nepodařilo se vygenerovat embeddingy",enterBoth:"Vyberte model a zadejte text"}},huggingface:{browseAll:"Procházet vše na HuggingFace",checkingGguf:"Hledání GGUF souborů...",noGgufAvailable:"Žádné GGUF soubory nejsou dostupné pro přímé stažení do Ollama",ggufFilesCount:"GGUF soubory ({{count}}) - Stáhnout přímo do Ollama",noModelsFound:"Nenalezeny žádné modely",noResults:"Nenalezeny žádné modely. Zkuste upravit vyhledávání nebo filtry.",browseAllLink:"Zobrazit vše",search:"Hledat modely HuggingFace...",by:"od",gated:"Omezený přístup",viewOnHF:"Zobrazit na HuggingFace",sortDownloads:"Stažení",sortLikes:"Líbí se",sortRecent:"Nedávné",taskTextGeneration:"Generování textu",taskTextToSpeech:"Text na řeč",taskTextToImage:"Text na obrázek",taskSpeechRecognition:"Rozpoznávání řeči",tasks:{textGen:"Generování textu",tts:"Text na řeč",image:"Text na obrázek",stt:"Rozpoznávání řeči"},sort:{downloads:"Nejstahovanější",likes:"Nejoblíbenější",recent:"Nedávno aktualizované"}}},Ds={title:"Persony",subtitle:"Vytvářejte a spravujte AI persony s jedinečnými osobnostmi, pamětí a chováním",loading:"Načítání person...",createButton:"Vytvořit personu",importExport:"Import/Export",stats:{title:"Vaše persony",count:"{{count}} persona vytvořena",count_plural:"{{count}} person vytvořeno"},empty:{title:"Zatím žádné persony",description:"Vytvořte svou první personu pro personalizované AI interakce",button:"Vytvořit první personu"},deleteConfirm:'Opravdu chcete smazat "{{name}}"?',deleteSuccess:'Persona "{{name}}" úspěšně smazána',downloadSuccess:'Persona "{{name}}" úspěšně stažena',failed:"Nepodařilo se {{action}} personu"},As={title:{create:"Vytvořit novou personu",edit:"Upravit personu"},subtitle:{create:"Vytvořte novou AI personu s jedinečnou osobností, systémem paměti a adaptivním učením",edit:"Přizpůsobte svou AI personu s pokročilou pamětí, adaptivním učením a inteligentními parametry"},loading:"Načítání formuláře...",saved:"Uloženo",tabs:{basic:"Základní",parameters:"Parametry",memory:"Paměť a učení",advanced:"Pokročilé"},basic:{name:"Název",namePlaceholder:"Zadejte název persony",model:"Model",selectModel:"Vyberte model",description:"Popis",descriptionPlaceholder:"Popište svou personu...",systemPrompt:"Systémový prompt",systemPromptPlaceholder:"Zadejte systémový prompt definující chování persony...",systemPromptHint:"Systémový prompt definuje, jak se vaše persona bude chovat a odpovídat."},parameters:{temperature:"Teplota",temperatureHint:"Ovládá kreativitu vs konzistenci",topP:"Top-P",topPHint:"Ovládá rozmanitost odpovědí",topK:"Top-K",topKHint:"Omezuje slovník na top-k tokenů",contextWindow:"Kontextové okno",contextWindowHint:"Maximální délka historie konverzace",maxTokens:"Max tokenů",maxTokensHint:"Maximální délka odpovědi",repeatPenalty:"Penalizace opakování",repeatPenaltyHint:"Snižuje opakující se odpovědi"},memory:{title:"Systém paměti",subtitle:"Persona si pamatuje konverzace v čase",enableHint:"Povolte systém paměti, aby si vaše persona pamatovala konverzace a budovala kontext v čase.",loading:"Načítání stavu paměti...",noData:"Zatím žádná data paměti",memories:"Vzpomínky",mbUsed:"MB použito",lastBackup:"Poslední záloha",never:"Nikdy",maxMemories:"Maximum vzpomínek",maxMemoriesHint:"Kolik vzpomínek může persona uložit",retention:"Uchování paměti",retentionHint:"Dny uchování vzpomínek před vyčištěním",autoCleanup:"Automatické čištění starých vzpomínek",wipeAll:"Vymazat všechny vzpomínky",wipeCannot:"Tuto akci nelze vrátit zpět",wipeButton:"Vymazat",wiping:"Mazání...",wipeConfirm:"Opravdu chcete vymazat všechny vzpomínky? Tuto akci nelze vrátit zpět.",wipeSuccess:"Vymazáno {{count}} vzpomínek"},learning:{title:"Adaptivní učení",subtitle:"Persona se vyvíjí na základě interakcí",enableHint:"Povolte adaptivní učení, aby se persona vyvíjela a personalizovala odpovědi na základě vašich interakcí.",speed:"Rychlost učení",slow:"Pomalá",slowDesc:"Postupné změny",balanced:"Vyvážená",balancedDesc:"Střední tempo",fast:"Rychlá",fastDesc:"Rychlá adaptace",autoAdapt:"Automatická adaptace na preference uživatele",whatLearns:"Co se persona učí:",conversationTone:"Tón konverzace",responseStyle:"Styl odpovědí",userPreferences:"Preference uživatele",topicInterests:"Zájmy o témata"},advanced:{embeddingModel:"Model embeddingů",embeddingHint:"Vyberte model používaný pro kódování paměti a sémantické vyhledávání. Modely embeddingů jsou zobrazeny první, pak ostatní dostupné modely.",noModels:"Nebyly nalezeny žádné modely",embeddingModels:"Modely embeddingů",otherModels:"Ostatní modely",installHint:"Nainstalujte model embeddingů:",recommended:"Doporučené: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"O pokročilých nastaveních",aboutDescription:"Model embeddingů je používán systémem paměti k pochopení sémantického významu a nalezení relevantních vzpomínek během konverzací. Vyberte model odpovídající vašemu případu použití a dostupným prostředkům."},actions:{cancel:"Zrušit",save:"Uložit",saving:"Ukládání...",saveClose:"Uložit a zavřít",create:"Vytvořit"},success:{created:"Persona vytvořena",updated:"Persona aktualizována"},error:{saveFailed:"Nepodařilo se uložit"}},zs={enhanced:"Vylepšená",systemPrompt:"Systémový prompt",memories:"vzpomínek",use:"Použít",editTooltip:"Upravit personu",downloadTooltip:"Stáhnout personu",backup:"Záloha",exportDNA:"Exportovat DNA",wipeMemories:"Vymazat vzpomínky",wipeConfirm:"Opravdu chcete vymazat všechny vzpomínky této persony? Tuto akci nelze vrátit zpět.",wipeSuccess:"Vymazáno {{count}} vzpomínek",backupSuccess:"Záloha persony úspěšně stažena",dnaSuccess:"DNA persony úspěšně exportováno",failed:"Nepodařilo se {{action}}"},js={title:"Správa uživatelů",subtitle:"Spravujte uživatelské účty a oprávnění",loading:"Načítání uživatelů...",createUser:"Vytvořit uživatele",search:"Hledat uživatele...",noUsers:"Nebyli nalezeni žádní uživatelé",noUsersMatching:"Nebyli nalezeni žádní uživatelé odpovídající hledání",columns:{user:"Uživatel",email:"Email",role:"Role",created:"Vytvořeno",actions:"Akce"},roles:{admin:"Správce",user:"Uživatel"},noEmail:"Žádný email",deleteConfirm:'Opravdu chcete smazat uživatele "{{name}}"?',deleteSuccess:"Uživatel úspěšně smazán",deleteFailed:"Nepodařilo se smazat uživatele",cannotDeleteSelf:"Nemůžete smazat svůj vlastní účet",form:{title:{create:"Vytvořit uživatele",edit:"Upravit uživatele"},username:"Uživatelské jméno",usernamePlaceholder:"Zadejte uživatelské jméno",email:"Email",emailPlaceholder:"Zadejte email (volitelné)",password:"Heslo",passwordPlaceholder:"Zadejte heslo",passwordHint:"Ponechte prázdné pro zachování současného hesla",role:"Role",creating:"Vytváření...",updating:"Aktualizace...",createButton:"Vytvořit uživatele",updateButton:"Aktualizovat uživatele",createSuccess:"Uživatel úspěšně vytvořen",updateSuccess:"Uživatel úspěšně aktualizován",createFailed:"Nepodařilo se vytvořit uživatele",updateFailed:"Nepodařilo se aktualizovat uživatele"}},Ts={you:"Vy",assistant:"Asistent",system:"Systém",copy:"Kopírovat",copyMessage:"Kopírovat zprávu",copied:"Zkopírováno!",regenerate:"Regenerovat",regenerateResponse:"Regenerovat odpověď",edit:"Upravit",editSystemMessage:"Upravit systémovou zprávu",saveChanges:"Uložit změny",cancelEditing:"Zrušit úpravy",delete:"Smazat",deleteConfirm:"Smazat tuto zprávu?",branch:"Větev",speaking:"Mluvení...",speakMessage:"Přečíst zprávu",stopSpeaking:"Zastavit mluvení",showMore:"Zobrazit více",showLess:"Zobrazit méně",thinking:"Přemýšlení",systemMessagePlaceholder:"Zadejte systémovou zprávu...",fullSizeImage:"Plná velikost obrázku",startConversation:"Zahájit konverzaci",startConversationDescription:"Pošlete zprávu pro zahájení chatu s AI asistentem. Ptejte se, získejte pomoc s kódem nebo veďte přirozenou konverzaci.",scrollToBottom:"Posunout dolů",newMessages:"Nové zprávy"},Ns={title:"Galerie obrázků",noImages:"Zatím žádné obrázky",noImagesHint:"Vygenerujte svůj první obrázek pomocí panelu vpravo",delete:"Smazat",download:"Stáhnout",deleteConfirm:"Opravdu chcete smazat tento obrázek?",deleteSuccess:"Obrázek smazán",deleteFailed:"Nepodařilo se smazat obrázek",downloadFailed:"Nepodařilo se stáhnout obrázek",loadMore:"Načíst více ({{current}} z {{total}})",loadFailed:"Nepodařilo se načíst galerii"},Is={title:"Generovat obrázek",prompt:"Prompt",promptPlaceholder:"Popište obrázek, který chcete vytvořit...",model:"Model",selectModel:"Vyberte model",noModels:"Žádné dostupné modely pro generování obrázků",configurePlugin:"Nakonfigurujte plugin s podporou generování obrázků",size:"Velikost",quality:"Kvalita",style:"Styl",generate:"Generovat",generating:"Generování...",success:"Obrázek úspěšně vygenerován",failed:"Nepodařilo se vygenerovat obrázek",enterPrompt:"Zadejte prompt",promptTooLong:"Prompt překračuje maximální délku {{max}} znaků"},Cs={title:"Něco se pokazilo",description:"Došlo k neočekávané chybě. Zkuste obnovit stránku.",tryAgain:"Obnovit stránku",goHome:"Přejít domů",errorDetails:"Detaily chyby (vývoj)"},Fs={title:"Dokumenty",upload:"Nahrát dokument",uploading:"Nahrávání...",noDocuments:"Žádné nahrané dokumenty",uploadHint:"Nahrajte dokumenty pro použití v konverzacích",delete:"Smazat",deleteConfirm:"Opravdu chcete smazat tento dokument?",deleteSuccess:"Dokument smazán",deleteFailed:"Nepodařilo se smazat dokument",uploadSuccess:"Dokument úspěšně nahrán",uploadFailed:"Nepodařilo se nahrát dokument",types:"Podporované: PDF, TXT, MD, DOCX",unsupportedFileType:"Podporovány jsou pouze soubory PDF a TXT",fileSizeTooLarge:"Velikost souboru musí být menší než 10MB",uploadSuccessWithName:'Dokument "{{name}}" úspěšně nahrán',removeSuccess:"Dokument úspěšně odstraněn",removeFailed:"Nepodařilo se odstranit dokument",removeError:"Při odstraňování dokumentu došlo k chybě",clickToUpload:"Klikněte pro nahrání",orDragAndDrop:"nebo přetáhněte",fileTypesAndSize:"PDF nebo TXT soubory do 10MB",uploadedDocuments:"Nahrané dokumenty",removeDocument:"Odstranit dokument"},Os={speak:"Mluvit",stop:"Stop",speaking:"Mluvení...",generateFailed:"Nepodařilo se vygenerovat řeč",playbackFailed:"Přehrávání zvuku se nezdařilo",stopSpeaking:"Zastavit mluvení",generatingSpeech:"Generování řeči...",readAloud:"Přečíst nahlas"},Es={title:"Artefakty",code:"Kód",preview:"Náhled",copy:"Kopírovat kód",copied:"Zkopírováno!",download:"Stáhnout",expand:"Rozbalit",collapse:"Sbalit",openInNewTab:"Otevřít v nové záložce",invalidSvg:"Neplatný obsah SVG",invalidJson:"Neplatný obsah JSON",previewMode:"Režim náhledu",codeMode:"Režim kódu",copyContent:"Kopírovat obsah",openInPanel:"Otevřít v panelu",openInNewWindow:"Otevřít v novém okně",created:"Vytvořeno",closePanelEsc:"Zavřít panel (Esc)",copyButton:"Kopírovat",open:"Otevřít",dragEdgeToResize:"Přetáhněte okraj pro změnu velikosti"},Ls={title:"Import a export person",description:"Exportujte své persony pro sdílení nebo importujte persony ostatních",exportPersonas:"Exportovat persony",importPersonas:"Importovat persony",noPersonasToExport:"Žádné persony k exportu",personasAvailable:"{{count}} persona dostupná",personasAvailable_plural:"{{count}} person dostupných",exportAll:"Exportovat vše",uploadJsonFile:"Nahrát JSON soubor",pasteJsonLabel:"Vložit JSON data",pasteJsonPlaceholder:"Vložte JSON data persony sem...",importing:"Importování...",importButton:"Importovat personu(y)",expectedFormat:"Očekávaný formát JSON:",exportSuccess:'Persona "{{name}}" úspěšně exportována',exportFailed:"Nepodařilo se exportovat personu",exportAllSuccess:"Všechny {{count}} persony úspěšně exportovány",exportAllFailed:"Nepodařilo se exportovat persony",pasteJsonData:"Vložte JSON data persony",importMultipleSuccess:"Úspěšně importováno {{count}} person",importMultipleFailed:"Nepodařilo se importovat {{count}} person",importNoneFailed:"Nepodařilo se importovat žádnou personu",importSuccess:"Persona úspěšně importována",importFailed:"Nepodařilo se importovat personu"},Gs={common:ms,brand:ps,auth:gs,setup:hs,chat:bs,sidebar:ks,user:fs,settings:ys,models:vs,personas:xs,gallery:Ss,errors:ws,keyboard:Ps,modelManager:Ms,personaManager:Ds,personaForm:As,personaCard:zs,userManager:js,chatMessage:Ts,imageGallery:Ns,imageGeneration:Is,errorBoundary:Cs,documents:Fs,ttsButton:Os,artifacts:Es,personaImportExport:Ls},Bs={loading:"Indlæser...",save:"Gem",saving:"Gemmer...",cancel:"Annuller",delete:"Slet",edit:"Rediger",close:"Luk",back:"Tilbage",next:"Næste",confirm:"Bekræft",error:"Fejl",success:"Succes",warning:"Advarsel",or:"eller",optional:"valgfri",enabled:"Aktiveret",disabled:"Deaktiveret",on:"Til",off:"Fra",yes:"Ja",no:"Nej",search:"Søg",noResults:"Ingen resultater fundet",retry:"Prøv igen",refresh:"Opdater",download:"Download",upload:"Upload",export:"Eksporter",import:"Importer",reset:"Nulstil",apply:"Anvend",clear:"Ryd",all:"Alle",none:"Ingen",default:"Standard",custom:"Tilpasset",mode:"Tilstand",multiUser:"Flere brugere",remove:"Fjern"},Ks={name:"Libre WebUI",shortName:"Libre"},Hs={login:{title:"Velkommen tilbage",subtitle:"Log ind på din konto for at fortsætte",username:"Brugernavn",usernamePlaceholder:"Indtast dit brugernavn",password:"Adgangskode",passwordPlaceholder:"Indtast din adgangskode",signIn:"Log ind",signingIn:"Logger ind...",noAccount:"Har du ikke en konto?",signUpHere:"Opret en her",loginSuccess:"Login lykkedes!",loginFailed:"Login mislykkedes",checkCredentials:"Login mislykkedes. Kontroller venligst dine loginoplysninger.",enterBoth:"Indtast venligst både brugernavn og adgangskode",githubSuccess:"GitHub-login lykkedes!",githubFailed:"GitHub-godkendelse mislykkedes",githubVerifyFailed:"Kunne ikke bekræfte GitHub-godkendelse"},signup:{title:"Opret konto",subtitle:"Tilmeld dig en ny konto",username:"Brugernavn",usernamePlaceholder:"Vælg et brugernavn",email:"E-mail",emailPlaceholder:"din@email.dk",password:"Adgangskode",passwordPlaceholder:"Vælg en adgangskode",confirmPassword:"Bekræft adgangskode",confirmPasswordPlaceholder:"Bekræft din adgangskode",createAccount:"Opret konto",creatingAccount:"Opretter konto...",hasAccount:"Har du allerede en konto?",signInHere:"Log ind her",signupSuccess:"Konto oprettet!",signupFailed:"Tilmelding mislykkedes",tryAgain:"Tilmelding mislykkedes. Prøv venligst igen.",usernameRequired:"Brugernavn og adgangskode er påkrævet",passwordMismatch:"Adgangskoderne stemmer ikke overens",passwordTooShort:"Adgangskoden skal være mindst 6 tegn lang"},logout:{button:"Log ud",success:"Logget ud"},oauth:{continueWith:"Fortsæt med {{provider}}",connectingTo:"Opretter forbindelse til {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rs={welcome:{title:"Velkommen til Libre WebUI",subtitle:"Lad os komme i gang",description:"Opsæt din Libre WebUI-instans på få trin",createAdmin:"Opret administratorkonto",features:{secure:{title:"Sikker og privat",description:"Dine samtaler forbliver på din enhed"},fast:{title:"Hurtig og responsiv",description:"Optimeret til hastighed og ydeevne"},openSource:{title:"Open source",description:"Gratis og open source-software"}}},admin:{title:"Opret administratorkonto",subtitle:"Administrator-opsætning",description:"Opret den første administratorkonto til din Libre WebUI-instans",usernamePlaceholder:"Indtast administratorbrugernavn",passwordPlaceholder:"Indtast adgangskode (min. 6 tegn)",confirmPlaceholder:"Bekræft din adgangskode",creating:"Opretter...",createAdmin:"Opret administrator",success:"Administratorkonto oprettet!",failed:"Kunne ikke oprette administratorkonto",fillAllFields:"Udfyld venligst alle felter",note:"Dette bliver den primære administratorkonto for din Libre WebUI-instans"},encryptionKey:{title:"Gem din krypteringsnøgle",subtitle:"Vigtigt: Gem denne nøgle",description:"Denne krypteringsnøgle beskytter dine følsomme data. Opbevar den sikkert - du får brug for den, hvis du skal gendanne din database.",warning:"Advarsel",warningText:"Hvis du mister denne nøgle og skal gendanne din database, vil dine krypterede data (API-nøgler, præferencer) være uoprettelige.",label:"Din krypteringsnøgle",loading:"Indlæser...",copyToClipboard:"Kopier til udklipsholder",copied:"Krypteringsnøgle kopieret til udklipsholder!",copyFailed:"Kunne ikke kopiere nøgle til udklipsholder",envNote:"Denne nøgle er også gemt i din backend/.env-fil som ENCRYPTION_KEY",acknowledgment:"Jeg har gemt min krypteringsnøgle på et sikkert sted og forstår, at tab af den kan medføre datatab.",confirmRequired:"Bekræft venligst, at du har gemt krypteringsnøglen",continue:"Fortsæt til Libre WebUI"}},Us={greeting:{morning:"Godmorgen",afternoon:"God eftermiddag",evening:"Godaften",night:"Godnat"},welcome:{helpToday:"Hvad kan jeg hjælpe med i dag?",helpTonight:"Hvad kan jeg hjælpe med i aften?"},input:{placeholder:"Send en besked",messagePlaceholder:"Besked...",attachImages:"Vedhæft billeder",attachments:"Vedhæftninger og avancerede funktioner",sendMessage:"Send besked",stopGeneration:"Stop generering"},session:{new:"Ny chat",private:"Privat",privateMode:"Privat tilstand",privateDescription:"Denne samtale gemmes ikke",privateTooltip:"Start en privat samtale, der ikke gemmes",deleteConfirm:"Er du sikker på, at du vil slette denne chat?",generatingTitle:"Genererer titel",noChats:"Ingen chats endnu",createFirst:"Opret din første chat ovenfor",chats:"Chats",renameChat:"Omdøb chat",deleteChat:"Slet chat"},persona:{applied:"Persona anvendt",label:"Persona"},model:{updated:"Model opdateret",noModels:"Ingen modeller tilgængelige",noModelsDescription:"Ingen modeller tilgængelige. Sørg for, at Ollama kører og har installeret modeller.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Ingen modeller tilgængelige. Sørg venligst for, at Ollama kører, og at modeller er installeret."},footer:{disclaimer:"LLM kan begå fejl - verificer vigtige oplysninger",images:"{{count}} billede",images_plural:"{{count}} billeder",structuredOutput:"Struktureret output"},mediaUpload:{dropImagesHere:"Slip billeder her eller",supportedFormats:"Understøtter: JPG, PNG, GIF, WebP (maks. 10 MB hver)",browse:"gennemse"},structuredOutput:{title:"Svarformat",none:"Ingen (naturligt sprog)",noneDescription:"Standard naturligt sprog-svar",json:"JSON",jsonDescription:"Struktureret JSON-format",list:"Liste",listDescription:"Array af elementer",summary:"Resumé",summaryDescription:"Dokumentresumé med hovedpunkter",analysis:"Analyse",analysisDescription:"Struktureret analyse med fordele/ulemper",custom:"Tilpasset skema",customDescription:"Definer dit eget JSON-skema",customSchema:"Tilpasset JSON-skema",schemaPreview:"Skemaforhåndsvisning",applySchema:"Anvend skema",cancel:"Annuller",enabled:"Struktureret output aktiveret"}},$s={navigation:{chat:"Chat",models:"Modeller",personas:"Personaer",imagine:"Forestil",settings:"Indstillinger",userManagement:"Brugeradministration",signOut:"Log ud"},toggleSize:"Skift sidebjælkestørrelse",expandSidebar:"Udvid sidebjælke"},Vs={menu:{changePicture:"Skift billede",settings:"Indstillinger",userManagement:"Brugeradministration",logout:"Log ud"},avatar:{title:"Skift profilbillede",updated:"Profilbillede opdateret",updateFailed:"Kunne ikke opdatere profilbillede",saving:"Gemmer..."},profile:{noEmail:"Ingen e-mail angivet"}},Ws={title:"Indstillinger",tabs:{appearance:"Udseende",model:"Model",systemMessage:"Systembesked",plugins:"Plugins",generation:"Generering",documents:"Dokumenter",tts:"Tekst-til-tale",imageGen:"Billedgenerering",data:"Data",about:"Om"},appearance:{title:"Udseende",language:{title:"Sprog",description:"Vælg dit foretrukne sprog"},theme:{title:"Tema",light:"Lys",dark:"Mørk",amoled:"Dyb Sort",system:"System"},chatInterface:{title:"Chat-grænseflade",showUsername:"Vis brugernavn",showUsernameDescription:"Vis brugernavn i chatbeskeder"},background:{title:"Baggrundsbillede",enable:"Aktiver baggrundsbillede",enableDescription:"Vis tilpasset baggrund med sløringseffekt",blur:"Sløring",opacity:"Gennemsigtighed",upload:"Upload baggrundsbillede",dragDrop:"Træk og slip et billede eller klik for at gennemse",chooseImage:"Vælg billede"}},saveSettings:"Gem indstillinger",model:{title:"Modelindstillinger",defaultModel:"Standardmodel",defaultModelDescription:"Denne model bruges som standard til nye samtaler",selectModel:"Vælg en model",updateAll:"Opdater alle modeller",updateAllDescription:"Tjek for opdateringer og hent seneste versioner af alle installerede modeller",updateAllButton:"Opdater alle",updating:"Opdaterer modeller...",currentModelInfo:"Nuværende modelinfo",name:"Navn",size:"Størrelse",family:"Familie",format:"Format",status:"Status",statusStarting:"Starter...",statusComplete:"Fuldført",statusError:"Fejl",bulkOperations:"Massehandlinger",autoTitle:{title:"Automatisk titelgenerering",enable:"Aktiver automatisk titel",enableDescription:"Generer automatisk titler til nye samtaler",taskModel:"Opgavemodel",selectTaskModel:"Vælg opgavemodel",taskModelDescription:"Model brugt til at generere samtaletitler"},persona:"Persona"},systemMessage:{title:"Systembesked",description:"Indstil en tilpasset systembesked, der bruges til alle nye samtaler.",placeholder:"Indtast en systembesked...",saved:"Systembesked gemt",saveFailed:"Kunne ikke gemme systembesked"},plugins:{title:"Plugins",description:"Administrer dine installerede plugins",addNew:"Tilføj nyt plugin",upload:"Upload plugin",addJson:"Tilføj JSON",uploading:"Uploader...",jsonPlaceholder:"Indsæt plugin JSON-konfiguration...",install:"Installer plugin",noPlugins:"Ingen plugins installeret",noPluginsDescription:"Tilføj et plugin for at udvide funktionaliteten",loading:"Indlæser plugins...",installed:"Installerede plugins",active:"Aktive plugins",activeLabel:"Aktiv",inactive:"Inaktiv",activate:"Aktiver",deactivate:"Deaktiver",models:"modeller",apiKeySet:"API-nøgle angivet",apiKeyConfiguration:"API-nøgle konfiguration",apiKeyEnvAlternative:"Alternativt, sæt",environmentVariable:"miljøvariabel",apiKeyConfigured:"API-nøgle konfigureret",apiKeyPlaceholder:"Indtast din API-nøgle...",saveApiKey:"Gem API-nøgle",apiKey:{title:"API-nøgle",placeholder:"Indtast API-nøgle",save:"Gem nøgle",remove:"Fjern nøgle",configured:"API-nøgle konfigureret",notConfigured:"API-nøgle påkrævet",saved:"API-nøgle gemt",removed:"API-nøgle fjernet",saveFailed:"Kunne ikke gemme API-nøgle",removeFailed:"Kunne ikke fjerne API-nøgle",enterKey:"Indtast venligst en API-nøgle"}},generation:{title:"Genereringsindstillinger",description:"Konfigurer hvordan AI'en genererer svar",coreParameters:"Kerneparametre",temperature:"Temperatur",temperatureDescription:"Styrer tilfældighed. Lavere værdier er mere fokuserede, højere værdier mere kreative.",topP:"Top P",topPDescription:"Styrer diversitet via nucleus sampling. Lavere værdier fokuserer på sandsynlige tokens.",topK:"Top K",topKDescription:"Begrænser tokenvalg til top K mest sandsynlige. Sæt til 0 for at deaktivere.",minP:"Min P",minPDescription:"Minimum sandsynlighedstærskel for tokenvalg.",generationControl:"Genereringskontrol",maxTokens:"Maks. tokens",maxTokensDescription:"Maksimalt antal tokens, der genereres i svaret.",repeatPenalty:"Gentagelsesstraf",repeatPenaltyDescription:"Straffer gentagne tokens. Højere værdier reducerer gentagelse.",contextLength:"Kontekstlængde",contextLengthDescription:"Maksimal kontekstvindue-størrelse for samtaler.",seed:"Seed",optional:"valgfri",random:"Tilfældig",seedDescription:"Angiv en specifik seed for reproducerbare resultater.",advancedOptions:"Avancerede indstillinger",presencePenalty:"Tilstedeværelsesstraf",presencePenaltyDescription:"Straffer tokens, der optræder i konteksten.",frequencyPenalty:"Frekvensstraf",frequencyPenaltyDescription:"Straffer hyppigt brugte tokens.",stopSequences:"Stopsekvenser",commaSeparated:"kommasepareret",stopSequencesDescription:"Tilpassede tokens, der stopper generering, når de stødes på.",resetDefaults:"Nulstil til standard",saveOptions:"Gem indstillinger",embeddingSettings:"Embedding-indstillinger",enableEmbeddings:"Aktiver dokument-embeddings"},documents:{title:"Dokumentindstillinger",embeddings:{title:"Embeddings",enable:"Aktiver dokument-embeddings",model:"Embedding-model",modelDescription:"Vælg den model, der bruges til dokument-embedding",chunkSize:"Chunk-størrelse",chunkSizeInTokens:"(i tokens)",chunkSizeDescription:"Størrelse af tekstchunks til embedding",chunkOverlap:"Chunk-overlap",chunkOverlapInTokens:"(i tokens)",chunkOverlapDescription:"Overlap mellem på hinanden følgende chunks",similarityThreshold:"Lighedstærskel",similarityDescription:"Minimum lighedsscore for at inkludere resultater",status:"Embedding-status",statusLabel:"Status",available:"Tilgængelig",unavailable:"Utilgængelig",chunksWithEmbeddings:"Chunks med embeddings",coverage:"Dækning",regenerate:"Regenerer embeddings",regenerating:"Regenererer..."}},tts:{title:"Tekst-til-tale",description:"Konfigurer tekst-til-tale-indstillinger for oplæsning af beskeder",loadingProviders:"Indlæser TTS-udbydere...",noProviders:"Ingen TTS-udbydere",noProvidersDescription:"Konfigurer et plugin med TTS-understøttelse for at aktivere tekst-til-tale",enable:"Aktiver TTS",enableDescription:"Tillad tekst-til-tale for assistentbeskeder",autoPlay:"Automatisk afspilning af svar",autoPlayDescription:"Læs automatisk nye assistentbeskeder højt",streamSentences:"Stream sætninger",streamSentencesDescription:"Afspil lyd sætning for sætning i stedet for at vente på den fulde besked. Anbefales til lokal TTS for at undgå timeout ved lange beskeder.",voiceConfiguration:"Stemmekonfiguration",model:"TTS-model",modelDescription:"Vælg modellen til tekst-til-tale-generering",voice:"Stemme",selectVoice:"Vælg en stemme",voiceDescription:"Vælg stemmen til tekst-til-tale",speed:"Hastighed",speedSlow:"0,5x",speedNormal:"1,0x",speedFast:"2,0x",availableProviders:"Tilgængelige udbydere",models:"modeller",test:"Test",testing:"Tester...",stop:"Stop"},imageGen:{title:"Billedgenerering",description:"Konfigurer indstillinger og udbydere for billedgenerering",loadingProviders:"Indlæser billedgenereringsudbydere...",noProviders:"Ingen billedgenereringsudbydere",noProvidersDescription:"Konfigurer et plugin med understøttelse af billedgenerering",enable:"Aktiver billedgenerering",enableDescription:"Tillad AI-billedgenerering i samtaler",configuration:"Konfiguration",model:"Model",modelDescription:"Vælg modellen til billedgenerering",size:"Størrelse",sizeDescription:"Opløsning af genererede billeder",quality:"Kvalitet",qualityDescription:"Kvalitetsniveau for genererede billeder",style:"Stil",styleDescription:"Stilforudindstilling for genererede billeder",availableProviders:"Tilgængelige udbydere",models:"modeller"},data:{title:"Dataadministration",export:"Eksporter data",exportDescription:"Download alle dine data inklusive præferencer, sessioner og dokumenter.",exportAll:"Eksporter alle data",import:"Importer data",importDescription:"Importer data fra en tidligere eksport.",importData:"Importer data",importing:"Importerer...",clearSessions:"Ryd sessioner",clearSessionsDescription:"Slet alle chatsessioner. Denne handling kan ikke fortrydes.",clearAll:"Ryd alle",clearing:"Rydder...",importOptions:"Importindstillinger",importOptionsDescription:"Vælg hvordan eksisterende data skal håndteres",skipDuplicates:"Spring dubletter over",overwrite:"Overskriv eksisterende",importResults:"Importresultater",preferences:"Præferencer",imported:"Importeret",failed:"Mislykkedes",sessions:"Sessioner",importedLabel:"importeret",skipped:"sprunget over",documents:"Dokumenter",errors:"Fejl"},about:{title:"Om",versionLabel:"Version",ollama:{title:"Ollama-status",version:"Version",healthy:"Sund",unhealthy:"Usund"},stats:{models:"Modeller",sessions:"Sessioner"},features:{privacy:{title:"Privatliv først",description:"Dine data forbliver på din enhed"},openSource:{title:"Open source",description:"Gratis og open source-software"},localInference:{title:"Lokal inferens",description:"Kør AI-modeller lokalt med Ollama"}},openSourceBy:"Open source af {{company}}",links:{title:"Links",github:"GitHub",githubDescription:"Se kildekode og bidrag",website:"Hjemmeside",websiteDescription:"Besøg vores hjemmeside",ollama:"Ollama",ollamaDescription:"Lær mere om Ollama",documentation:"Dokumentation",reportIssue:"Rapporter problemer",reportIssueDescription:"Fejlrapporter og funktionsønsker"},version:"Version {{version}}"}},qs={title:"Modeller",subtitle:"Hent, administrer og overvåg dine Ollama-modeller",installed:"Installerede modeller",available:"Tilgængelige modeller",pull:"Hent model",pulling:"Henter...",delete:"Slet model",deleting:"Sletter...",size:"Størrelse",modified:"Ændret",family:"Familie",parameters:"Parametre",quantization:"Kvantisering",noModels:"Ingen modeller installeret",pullFirst:"Hent en model for at komme i gang"},Js={title:"Personaer",create:"Opret persona",edit:"Rediger persona",delete:"Slet persona",name:"Navn",description:"Beskrivelse",systemPrompt:"System-prompt",model:"Model",avatar:"Avatar",background:"Baggrund",noPersonas:"Ingen personaer oprettet",createFirst:"Opret din første persona for at tilpasse din chatoplevelse"},_s={title:"Galleri",subtitle:"Dit AI-genererede billedgalleri",imageCount:"{{count}} billeder",generate:"Generer billede",generateDescription:"Opret billeder med AI",generating:"Genererer...",prompt:"Prompt",promptPlaceholder:"Beskriv det billede, du vil generere...",noImages:"Ingen billeder genereret endnu",download:"Download",delete:"Slet",regenerate:"Regenerer",model:"Model",size:"Størrelse",quality:"Kvalitet",created:"Oprettet"},Ys={generic:"Der opstod en fejl",network:"Netværksfejl. Kontroller venligst din forbindelse.",unauthorized:"Du har ikke tilladelse til at udføre denne handling.",notFound:"Den anmodede ressource blev ikke fundet.",serverError:"Serverfejl. Prøv venligst igen senere.",validation:"Kontroller venligst din indtastning og prøv igen."},Zs={title:"Tastaturgenveje",toggleSidebar:"Skift sidebjælke",openSettings:"Åbn indstillinger",toggleDarkMode:"Skift mørk tilstand",showShortcuts:"Vis tastaturgenveje",closeModals:"Luk dialogbokse",groups:{navigation:"Navigation",settings:"Indstillinger",general:"Generelt",chat:"Chat"},actions:{sendMessage:"Send besked",newLine:"Ny linje i besked"},footer:"Tryk {{key1}} eller {{key2}} for at vise denne hjælp",tooltip:"Tastaturgenveje"},Xs={title:"Modeller",loading:"Indlæser modeller...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"model",models_plural:"modeller",running:"kører",vram:"VRAM"},sections:{pull:"Hent ny model",library:"Gennemse bibliotek",running:"Kørende modeller",local:"Lokale modeller",advanced:"Avancerede handlinger",huggingface:"HuggingFace Hub"},pull:{placeholder:"Indtast modelnavn (f.eks. llama3.2:3b, deepseek-r1:14b)",button:"Hent",cancel:"Annuller",popular:"Populære modeller:",browseAll:"Gennemse alle modeller på ollama.com",success:"Model {{name}} hentet",cancelled:"Modelhentning annulleret",failed:"Kunne ikke hente model",enterName:"Indtast venligst et modelnavn"},progress:{starting:"Initialiserer...",pulling:"Downloader model...",verifying:"Verificerer integritet...",writing:"Skriver manifest...",cleaning:"Rydder op..."},library:{available:"tilgængelig",search:"Søg modeller...",noResults:"Ingen modeller fundet, der matcher dine kriterier",installed:"Installeret",more:"+{{count}} mere",refresh:"Opdater bibliotek"},local:{noModels:"Ingen modeller installeret endnu",pullToStart:"Hent en model ovenfor for at komme i gang",installed:"installeret",running:"Kører",info:"Info",copy:"Kopier",delete:"Slet",deleteConfirm:'Er du sikker på, at du vil slette modellen "{{name}}"?',deleteSuccess:"Model {{name}} slettet",deleteFailed:"Kunne ikke slette model"},advanced:{createModel:"Opret model",fromModelfile:"Fra Modelfile",copyModel:"Kopier model",duplicateExisting:"Dupliker eksisterende",testEmbeddings:"Test embeddings",generateVectors:"Generer vektorer",healthCheck:"Sundhedstjek",testConnection:"Test forbindelse",healthy:"Ollama er sund!"},modals:{details:{title:"Modeldetaljer",info:"Modelinformation",family:"Familie",parameters:"Parametre",quantization:"Kvantisering",format:"Format",systemPrompt:"System-prompt",template:"Skabelon",license:"Licens",modelfile:"Modelfile",noDetails:"Ingen detaljer tilgængelige"},copy:{title:"Kopier model",source:"Kildemodel",selectModel:"Vælg en model...",newName:"Nyt modelnavn",placeholder:"f.eks. min-tilpassede-model",copying:"Kopierer...",button:"Kopier model",success:"Model kopieret til {{name}}",failed:"Kunne ikke kopiere model",enterBoth:"Indtast venligst både kilde- og destinationsnavn"},create:{title:"Opret tilpasset model",name:"Modelnavn",namePlaceholder:"f.eks. min-assistent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
6
|
+
SYSTEM Du er en hjælpsom assistent.`,docs:"Modelfile-dokumentation",docsLink:"for syntaksreference",creating:"Opretter...",button:"Opret model",success:"Model {{name}} oprettet",failed:"Kunne ikke oprette model",enterBoth:"Indtast venligst modelnavn og Modelfile-indhold"},embeddings:{title:"Test embeddings",model:"Embedding-model",selectModel:"Vælg en model...",recommended:"Anbefalet: nomic-embed-text, mxbai-embed-large",input:"Inputtekst",placeholder:"Indtast tekst til at generere embeddings for...",generating:"Genererer...",button:"Generer embeddings",result:"Resultat ({{count}} dimensioner)",success:"Genererede {{count}}-dimensionel embedding-vektor",failed:"Kunne ikke generere embeddings",enterBoth:"Vælg venligst en model og indtast tekst"}},huggingface:{browseAll:"Gennemse alle på HuggingFace",checkingGguf:"Søger efter GGUF-filer...",noGgufAvailable:"Ingen GGUF-filer tilgængelige til direkte Ollama-hentning",ggufFilesCount:"GGUF-filer ({{count}}) - Hent direkte til Ollama",noModelsFound:"Ingen modeller fundet",noResults:"Ingen modeller fundet. Prøv at justere din søgning eller filtre.",browseAllLink:"Se alle",search:"Søg i HuggingFace-modeller...",by:"af",gated:"Begrænset adgang",viewOnHF:"Vis på HuggingFace",sortDownloads:"Downloads",sortLikes:"Likes",sortRecent:"Seneste",taskTextGeneration:"Tekstgenerering",taskTextToSpeech:"Tekst til tale",taskTextToImage:"Tekst til billede",taskSpeechRecognition:"Talegenkendelse",tasks:{textGen:"Tekstgenerering",tts:"Tekst til tale",image:"Tekst til billede",stt:"Talegenkendelse"},sort:{downloads:"Flest downloads",likes:"Mest populære",recent:"Senest opdateret"}}},Qs={title:"Personaer",subtitle:"Opret og administrer AI-personaer med tilpassede personligheder, hukommelse og adfærd",loading:"Indlæser personaer...",createButton:"Opret persona",importExport:"Import/eksport",stats:{title:"Dine personaer",count:"{{count}} persona oprettet",count_plural:"{{count}} personaer oprettet"},empty:{title:"Ingen personaer endnu",description:"Opret din første persona for at komme i gang med personaliserede AI-interaktioner",button:"Opret din første persona"},deleteConfirm:'Er du sikker på, at du vil slette "{{name}}"?',deleteSuccess:'Persona "{{name}}" slettet',downloadSuccess:'Persona "{{name}}" downloadet',failed:"Kunne ikke {{action}} persona"},el={title:{create:"Opret ny persona",edit:"Rediger persona"},subtitle:{create:"Opret en ny AI-persona med tilpasset personlighed, hukommelsessystemer og adaptiv læring",edit:"Tilpas din AI-persona med avanceret hukommelse, adaptiv læring og intelligente parametre"},loading:"Indlæser formular...",saved:"Gemt",tabs:{basic:"Grundlæggende",parameters:"Parametre",memory:"Hukommelse og læring",advanced:"Avanceret"},basic:{name:"Navn",namePlaceholder:"Indtast personanavn",model:"Model",selectModel:"Vælg en model",description:"Beskrivelse",descriptionPlaceholder:"Beskriv din persona...",systemPrompt:"System-prompt",systemPromptPlaceholder:"Indtast system-prompten, der definerer din personas adfærd...",systemPromptHint:"System-prompten definerer, hvordan din persona opfører sig og svarer."},parameters:{temperature:"Temperatur",temperatureHint:"Styrer kreativitet vs. konsistens",topP:"Top-P",topPHint:"Styrer svardiversitet",topK:"Top-K",topKHint:"Begrænser ordforråd til top-k tokens",contextWindow:"Kontekstvindue",contextWindowHint:"Maksimal samtalehistoriklængde",maxTokens:"Maks. tokens",maxTokensHint:"Maksimal svarlængde",repeatPenalty:"Gentagelsesstraf",repeatPenaltyHint:"Reducerer gentagne svar"},memory:{title:"Hukommelsessystem",subtitle:"Persona husker samtaler over tid",enableHint:"Aktiver hukommelsessystemet for at lade din persona huske samtaler og opbygge kontekst over tid.",loading:"Indlæser hukommelsesstatus...",noData:"Ingen hukommelsesdata endnu",memories:"Hukommelser",mbUsed:"MB brugt",lastBackup:"Sidste backup",never:"Aldrig",maxMemories:"Maksimale hukommelser",maxMemoriesHint:"Hvor mange hukommelser denne persona kan gemme",retention:"Hukommelsesbevarelse",retentionHint:"Dage til at beholde hukommelser før oprydning",autoCleanup:"Automatisk oprydning af gamle hukommelser",wipeAll:"Slet alle hukommelser",wipeCannot:"Dette kan ikke fortrydes",wipeButton:"Slet",wiping:"Sletter...",wipeConfirm:"Er du sikker på, at du vil slette alle hukommelser? Dette kan ikke fortrydes.",wipeSuccess:"Slettede {{count}} hukommelser"},learning:{title:"Adaptiv læring",subtitle:"Persona udvikler sig baseret på interaktioner",enableHint:"Aktiver adaptiv læring for at lade din persona udvikle sig og personalisere svar baseret på dine interaktioner.",speed:"Læringshastighed",slow:"Langsom",slowDesc:"Gradvise ændringer",balanced:"Balanceret",balancedDesc:"Moderat tempo",fast:"Hurtig",fastDesc:"Hurtig tilpasning",autoAdapt:"Tilpas automatisk til brugerpræferencer",whatLearns:"Hvad personaen lærer:",conversationTone:"Samtaletone",responseStyle:"Svarstil",userPreferences:"Brugerpræferencer",topicInterests:"Emneinteresser"},advanced:{embeddingModel:"Embedding-model",embeddingHint:"Vælg modellen, der bruges til hukommelseskodning og semantisk søgning. Embedding-modeller vises først, efterfulgt af andre tilgængelige modeller.",noModels:"Ingen modeller fundet",embeddingModels:"Embedding-modeller",otherModels:"Andre modeller",installHint:"Installer en embedding-model:",recommended:"Anbefalet: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Om avancerede indstillinger",aboutDescription:"Embedding-modellen bruges af hukommelsessystemet til at forstå semantisk betydning og finde relevante hukommelser under samtaler. Vælg en model, der passer til dit brugsscenarie og tilgængelige ressourcer."},actions:{cancel:"Annuller",save:"Gem",saving:"Gemmer...",saveClose:"Gem og luk",create:"Opret"},success:{created:"Persona oprettet",updated:"Persona opdateret"},error:{saveFailed:"Kunne ikke gemme"}},al={enhanced:"Forbedret",systemPrompt:"System-prompt",memories:"hukommelser",use:"Brug",editTooltip:"Rediger persona",downloadTooltip:"Download persona",backup:"Backup",exportDNA:"Eksporter DNA",wipeMemories:"Slet hukommelser",wipeConfirm:"Er du sikker på, at du vil slette alle hukommelser for denne persona? Denne handling kan ikke fortrydes.",wipeSuccess:"Slettede {{count}} hukommelser",backupSuccess:"Persona-backup downloadet",dnaSuccess:"Persona-DNA eksporteret",failed:"Kunne ikke {{action}}"},tl={title:"Brugeradministration",subtitle:"Administrer brugerkonti og tilladelser",loading:"Indlæser brugere...",createUser:"Opret bruger",search:"Søg brugere...",noUsers:"Ingen brugere fundet",noUsersMatching:"Ingen brugere matcher din søgning",columns:{user:"Bruger",email:"E-mail",role:"Rolle",created:"Oprettet",actions:"Handlinger"},roles:{admin:"Administrator",user:"Bruger"},noEmail:"Ingen e-mail",deleteConfirm:'Er du sikker på, at du vil slette brugeren "{{name}}"?',deleteSuccess:"Bruger slettet",deleteFailed:"Kunne ikke slette bruger",cannotDeleteSelf:"Du kan ikke slette din egen konto",form:{title:{create:"Opret bruger",edit:"Rediger bruger"},username:"Brugernavn",usernamePlaceholder:"Indtast brugernavn",email:"E-mail",emailPlaceholder:"Indtast e-mail (valgfri)",password:"Adgangskode",passwordPlaceholder:"Indtast adgangskode",passwordHint:"Lad være tom for at beholde nuværende adgangskode",role:"Rolle",creating:"Opretter...",updating:"Opdaterer...",createButton:"Opret bruger",updateButton:"Opdater bruger",createSuccess:"Bruger oprettet",updateSuccess:"Bruger opdateret",createFailed:"Kunne ikke oprette bruger",updateFailed:"Kunne ikke opdatere bruger"}},nl={you:"Dig",assistant:"Assistent",system:"System",copy:"Kopier",copyMessage:"Kopier besked",copied:"Kopieret!",regenerate:"Regenerer",regenerateResponse:"Regenerer svar",edit:"Rediger",editSystemMessage:"Rediger systembesked",saveChanges:"Gem ændringer",cancelEditing:"Annuller redigering",delete:"Slet",deleteConfirm:"Slet denne besked?",branch:"Forgren",speaking:"Taler...",speakMessage:"Læs besked op",stopSpeaking:"Stop oplæsning",showMore:"Vis mere",showLess:"Vis mindre",thinking:"Tænker",systemMessagePlaceholder:"Indtast din systembesked...",fullSizeImage:"Billede i fuld størrelse",startConversation:"Start en samtale",startConversationDescription:"Send en besked for at begynde at chatte med din AI-assistent. Stil spørgsmål, få hjælp med kode eller hav en naturlig samtale.",scrollToBottom:"Rul til bunden",newMessages:"Nye beskeder"},rl={title:"Billedgalleri",noImages:"Ingen billeder endnu",noImagesHint:"Generer dit første billede ved hjælp af panelet til højre",delete:"Slet",download:"Download",deleteConfirm:"Er du sikker på, at du vil slette dette billede?",deleteSuccess:"Billede slettet",deleteFailed:"Kunne ikke slette billede",downloadFailed:"Kunne ikke downloade billede",loadMore:"Indlæs mere ({{current}} af {{total}})",loadFailed:"Kunne ikke indlæse galleri"},il={title:"Generer billede",prompt:"Prompt",promptPlaceholder:"Beskriv det billede, du vil oprette...",model:"Model",selectModel:"Vælg model",noModels:"Ingen billedgenereringsmodeller tilgængelige",configurePlugin:"Konfigurer et plugin med understøttelse af billedgenerering",size:"Størrelse",quality:"Kvalitet",style:"Stil",generate:"Generer",generating:"Genererer...",success:"Billede genereret",failed:"Kunne ikke generere billede",enterPrompt:"Indtast venligst en prompt",promptTooLong:"Prompt overstiger den maksimale længde på {{max}} tegn"},ol={title:"Noget gik galt",description:"Vi stødte på en uventet fejl. Prøv venligst at genindlæse siden.",tryAgain:"Genindlæs side",goHome:"Gå til startside",errorDetails:"Fejldetaljer (udvikling)"},sl={title:"Dokumenter",upload:"Upload dokument",uploading:"Uploader...",noDocuments:"Ingen dokumenter uploadet",uploadHint:"Upload dokumenter til brug i dine samtaler",delete:"Slet",deleteConfirm:"Er du sikker på, at du vil slette dette dokument?",deleteSuccess:"Dokument slettet",deleteFailed:"Kunne ikke slette dokument",uploadSuccess:"Dokument uploadet",uploadFailed:"Kunne ikke uploade dokument",types:"Understøttet: PDF, TXT, MD, DOCX",unsupportedFileType:"Kun PDF- og TXT-filer understøttes",fileSizeTooLarge:"Filstørrelsen skal være mindre end 10 MB",uploadSuccessWithName:'Dokumentet "{{name}}" blev uploadet',removeSuccess:"Dokument fjernet",removeFailed:"Kunne ikke fjerne dokument",removeError:"Der opstod en fejl under fjernelse af dokumentet",clickToUpload:"Klik for at uploade",orDragAndDrop:"eller træk og slip",fileTypesAndSize:"PDF- eller TXT-filer op til 10 MB",uploadedDocuments:"Uploadede dokumenter",removeDocument:"Fjern dokument"},ll={speak:"Læs op",stop:"Stop",speaking:"Taler...",generateFailed:"Kunne ikke generere tale",playbackFailed:"Lydafspilning mislykkedes",stopSpeaking:"Stop oplæsning",generatingSpeech:"Genererer tale...",readAloud:"Læs højt"},dl={title:"Artefakter",code:"Kode",preview:"Forhåndsvisning",copy:"Kopier kode",copied:"Kopieret!",download:"Download",expand:"Udvid",collapse:"Sammenfold",openInNewTab:"Åbn i ny fane",invalidSvg:"Ugyldigt SVG-indhold",invalidJson:"Ugyldigt JSON-indhold",previewMode:"Forhåndsvisningstilstand",codeMode:"Kodetilstand",copyContent:"Kopier indhold",openInPanel:"Åbn i panel",openInNewWindow:"Åbn i nyt vindue",created:"Oprettet",closePanelEsc:"Luk panel (Esc)",copyButton:"Kopier",open:"Åbn",dragEdgeToResize:"Træk kant for at ændre størrelse"},cl={title:"Import og eksport af personaer",description:"Eksporter dine personaer for at dele dem eller importer personaer fra andre",exportPersonas:"Eksporter personaer",importPersonas:"Importer personaer",noPersonasToExport:"Ingen personaer at eksportere",personasAvailable:"{{count}} persona tilgængelig",personasAvailable_plural:"{{count}} personaer tilgængelige",exportAll:"Eksporter alle",uploadJsonFile:"Upload JSON-fil",pasteJsonLabel:"Indsæt JSON-data",pasteJsonPlaceholder:"Indsæt persona JSON-data her...",importing:"Importerer...",importButton:"Importer persona(er)",expectedFormat:"Forventet JSON-format:",exportSuccess:'Persona "{{name}}" eksporteret',exportFailed:"Kunne ikke eksportere persona",exportAllSuccess:"Alle {{count}} personaer eksporteret",exportAllFailed:"Kunne ikke eksportere personaer",pasteJsonData:"Indsæt venligst persona JSON-data",importMultipleSuccess:"{{count}} personaer importeret",importMultipleFailed:"Kunne ikke importere {{count}} personaer",importNoneFailed:"Kunne ikke importere nogen personaer",importSuccess:"Persona importeret",importFailed:"Kunne ikke importere persona"},ul={common:Bs,brand:Ks,auth:Hs,setup:Rs,chat:Us,sidebar:$s,user:Vs,settings:Ws,models:qs,personas:Js,gallery:_s,errors:Ys,keyboard:Zs,modelManager:Xs,personaManager:Qs,personaForm:el,personaCard:al,userManager:tl,chatMessage:nl,imageGallery:rl,imageGeneration:il,errorBoundary:ol,documents:sl,ttsButton:ll,artifacts:dl,personaImportExport:cl},ml={loading:"Wird geladen...",save:"Speichern",saving:"Wird gespeichert...",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",close:"Schließen",back:"Zurück",next:"Weiter",confirm:"Bestätigen",error:"Fehler",success:"Erfolg",warning:"Warnung",or:"oder",optional:"optional",enabled:"Aktiviert",disabled:"Deaktiviert",on:"An",off:"Aus",yes:"Ja",no:"Nein",search:"Suchen",noResults:"Keine Ergebnisse gefunden",retry:"Erneut versuchen",refresh:"Aktualisieren",download:"Herunterladen",upload:"Hochladen",export:"Exportieren",import:"Importieren",reset:"Zurücksetzen",apply:"Anwenden",clear:"Löschen",all:"Alle",none:"Keine",default:"Standard",custom:"Benutzerdefiniert",mode:"Modus",multiUser:"Mehrbenutzermodus",remove:"Entfernen"},pl={name:"Libre WebUI",shortName:"Libre"},gl={login:{title:"Willkommen zurück",subtitle:"Melden Sie sich bei Ihrem Konto an, um fortzufahren",username:"Benutzername",usernamePlaceholder:"Geben Sie Ihren Benutzernamen ein",password:"Passwort",passwordPlaceholder:"Geben Sie Ihr Passwort ein",signIn:"Anmelden",signingIn:"Anmeldung läuft...",noAccount:"Sie haben noch kein Konto?",signUpHere:"Hier registrieren",loginSuccess:"Anmeldung erfolgreich!",loginFailed:"Anmeldung fehlgeschlagen",checkCredentials:"Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Zugangsdaten.",enterBoth:"Bitte geben Sie Benutzername und Passwort ein",githubSuccess:"GitHub-Anmeldung erfolgreich!",githubFailed:"GitHub-Authentifizierung fehlgeschlagen",githubVerifyFailed:"Überprüfung der GitHub-Authentifizierung fehlgeschlagen"},signup:{title:"Konto erstellen",subtitle:"Registrieren Sie sich für ein neues Konto",username:"Benutzername",usernamePlaceholder:"Wählen Sie einen Benutzernamen",email:"E-Mail",emailPlaceholder:"ihre@email.de",password:"Passwort",passwordPlaceholder:"Wählen Sie ein Passwort",confirmPassword:"Passwort bestätigen",confirmPasswordPlaceholder:"Bestätigen Sie Ihr Passwort",createAccount:"Konto erstellen",creatingAccount:"Konto wird erstellt...",hasAccount:"Sie haben bereits ein Konto?",signInHere:"Hier anmelden",signupSuccess:"Konto erfolgreich erstellt!",signupFailed:"Registrierung fehlgeschlagen",tryAgain:"Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut.",usernameRequired:"Benutzername und Passwort sind erforderlich",passwordMismatch:"Passwörter stimmen nicht überein",passwordTooShort:"Das Passwort muss mindestens 6 Zeichen lang sein"},logout:{button:"Abmelden",success:"Erfolgreich abgemeldet"},oauth:{continueWith:"Weiter mit {{provider}}",connectingTo:"Verbindung zu {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hl={welcome:{title:"Willkommen bei Libre WebUI",subtitle:"Legen wir los",description:"Richten Sie Ihre Libre WebUI-Instanz in nur wenigen Schritten ein",createAdmin:"Admin-Konto erstellen",features:{secure:{title:"Sicher & Privat",description:"Ihre Gespräche bleiben auf Ihrem Gerät"},fast:{title:"Schnell & Reaktionsschnell",description:"Optimiert für Geschwindigkeit und Leistung"},openSource:{title:"Open Source",description:"Freie und quelloffene Software"}}},admin:{title:"Admin-Konto erstellen",subtitle:"Administrator-Einrichtung",description:"Erstellen Sie das erste Admin-Konto für Ihre Libre WebUI-Instanz",usernamePlaceholder:"Admin-Benutzernamen eingeben",passwordPlaceholder:"Passwort eingeben (mind. 6 Zeichen)",confirmPlaceholder:"Passwort bestätigen",creating:"Wird erstellt...",createAdmin:"Admin erstellen",success:"Admin-Konto erfolgreich erstellt!",failed:"Admin-Konto konnte nicht erstellt werden",fillAllFields:"Bitte füllen Sie alle Felder aus",note:"Dies wird das Hauptadministratorkonto für Ihre Libre WebUI-Instanz"},encryptionKey:{title:"Speichern Sie Ihren Verschlüsselungsschlüssel",subtitle:"Wichtig: Speichern Sie diesen Schlüssel",description:"Dieser Verschlüsselungsschlüssel schützt Ihre sensiblen Daten. Bewahren Sie ihn sicher auf – Sie benötigen ihn, falls Sie Ihre Datenbank wiederherstellen müssen.",warning:"Warnung",warningText:"Wenn Sie diesen Schlüssel verlieren und Ihre Datenbank wiederherstellen müssen, sind Ihre verschlüsselten Daten (API-Schlüssel, Einstellungen) unwiederbringlich verloren.",label:"Ihr Verschlüsselungsschlüssel",loading:"Wird geladen...",copyToClipboard:"In die Zwischenablage kopieren",copied:"Verschlüsselungsschlüssel in die Zwischenablage kopiert!",copyFailed:"Schlüssel konnte nicht kopiert werden",envNote:"Dieser Schlüssel wird auch in Ihrer backend/.env-Datei als ENCRYPTION_KEY gespeichert",acknowledgment:"Ich habe meinen Verschlüsselungsschlüssel an einem sicheren Ort gespeichert und verstehe, dass sein Verlust zu Datenverlust führen kann.",confirmRequired:"Bitte bestätigen Sie, dass Sie den Verschlüsselungsschlüssel gespeichert haben",continue:"Weiter zu Libre WebUI"}},bl={greeting:{morning:"Guten Morgen",afternoon:"Guten Tag",evening:"Guten Abend",night:"Gute Nacht"},welcome:{helpToday:"Wie kann ich Ihnen heute helfen?",helpTonight:"Wie kann ich Ihnen heute Abend helfen?"},input:{placeholder:"Nachricht senden",messagePlaceholder:"Nachricht...",attachImages:"Bilder anhängen",attachments:"Anhänge und erweiterte Funktionen",sendMessage:"Nachricht senden",stopGeneration:"Generierung stoppen"},session:{new:"Neuer Chat",private:"Privat",privateMode:"Privater Modus",privateDescription:"Dieses Gespräch wird nicht gespeichert",privateTooltip:"Starten Sie ein privates Gespräch, das nicht gespeichert wird",deleteConfirm:"Sind Sie sicher, dass Sie diesen Chat löschen möchten?",generatingTitle:"Titel wird generiert",noChats:"Noch keine Chats",createFirst:"Erstellen Sie oben Ihren ersten Chat",chats:"Chats",renameChat:"Chat umbenennen",deleteChat:"Chat löschen"},persona:{applied:"Persona angewendet",label:"Persona"},model:{updated:"Modell aktualisiert",noModels:"Keine Modelle verfügbar",noModelsDescription:"Keine Modelle verfügbar. Stellen Sie sicher, dass Ollama läuft und Modelle installiert sind.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Keine Modelle verfügbar. Bitte stellen Sie sicher, dass Ollama läuft und Modelle installiert sind."},footer:{disclaimer:"KI kann Fehler machen – überprüfen Sie wichtige Informationen",images:"{{count}} Bild",images_plural:"{{count}} Bilder",structuredOutput:"Strukturierte Ausgabe"},mediaUpload:{dropImagesHere:"Bilder hier ablegen oder",supportedFormats:"Unterstützt: JPG, PNG, GIF, WebP (max. 10 MB pro Bild)",browse:"durchsuchen"},structuredOutput:{title:"Antwortformat",none:"Keine (natürliche Sprache)",noneDescription:"Standard natürlichsprachige Antwort",json:"JSON",jsonDescription:"Strukturiertes JSON-Format",list:"Liste",listDescription:"Array von Elementen",summary:"Zusammenfassung",summaryDescription:"Dokumentzusammenfassung mit Kernpunkten",analysis:"Analyse",analysisDescription:"Strukturierte Analyse mit Vor-/Nachteilen",custom:"Benutzerdefiniertes Schema",customDescription:"Definieren Sie Ihr eigenes JSON-Schema",customSchema:"Benutzerdefiniertes JSON-Schema",schemaPreview:"Schema-Vorschau",applySchema:"Schema anwenden",cancel:"Abbrechen",enabled:"Strukturierte Ausgabe aktiviert"}},kl={navigation:{chat:"Chat",models:"Modelle",personas:"Personas",imagine:"Generieren",settings:"Einstellungen",userManagement:"Benutzerverwaltung",signOut:"Abmelden"},toggleSize:"Seitenleistengröße umschalten",expandSidebar:"Seitenleiste erweitern"},fl={menu:{changePicture:"Bild ändern",settings:"Einstellungen",userManagement:"Benutzerverwaltung",logout:"Abmelden"},avatar:{title:"Profilbild ändern",updated:"Profilbild aktualisiert",updateFailed:"Profilbild konnte nicht aktualisiert werden",saving:"Wird gespeichert..."},profile:{noEmail:"Keine E-Mail angegeben"}},yl=JSON.parse('{"title":"Einstellungen","tabs":{"appearance":"Darstellung","model":"Modell","systemMessage":"Systemnachricht","plugins":"Plugins","generation":"Generierung","documents":"Dokumente","tts":"Text-zu-Sprache","imageGen":"Bildgenerierung","data":"Daten","about":"Über"},"appearance":{"title":"Darstellung","language":{"title":"Sprache","description":"Wählen Sie Ihre bevorzugte Sprache"},"theme":{"title":"Design","light":"Hell","dark":"Dunkel","amoled":"Reines Schwarz","system":"System"},"chatInterface":{"title":"Chat-Oberfläche","showUsername":"Benutzername anzeigen","showUsernameDescription":"Benutzernamen in Chat-Nachrichten anzeigen"},"background":{"title":"Hintergrundbild","enable":"Hintergrundbild aktivieren","enableDescription":"Benutzerdefiniertes Hintergrundbild mit Unschärfe-Effekt anzeigen","blur":"Unschärfe","opacity":"Deckkraft","upload":"Hintergrundbild hochladen","dragDrop":"Bild hierher ziehen oder klicken zum Durchsuchen","chooseImage":"Bild auswählen"}},"saveSettings":"Einstellungen speichern","model":{"title":"Modelleinstellungen","defaultModel":"Standardmodell","defaultModelDescription":"Dieses Modell wird standardmäßig für neue Gespräche verwendet","selectModel":"Modell auswählen","updateAll":"Alle Modelle aktualisieren","updateAllDescription":"Nach Updates suchen und neueste Versionen aller installierten Modelle herunterladen","updateAllButton":"Alle aktualisieren","updating":"Modelle werden aktualisiert...","currentModelInfo":"Aktuelle Modell-Info","name":"Name","size":"Größe","family":"Familie","format":"Format","status":"Status","statusStarting":"Wird gestartet...","statusComplete":"Abgeschlossen","statusError":"Fehler","bulkOperations":"Massenoperationen","autoTitle":{"title":"Automatische Titelgenerierung","enable":"Auto-Titel aktivieren","enableDescription":"Automatisch Titel für neue Gespräche generieren","taskModel":"Aufgabenmodell","selectTaskModel":"Aufgabenmodell auswählen","taskModelDescription":"Modell für die Generierung von Gesprächstiteln"},"persona":"Persona"},"systemMessage":{"title":"Systemnachricht","description":"Legen Sie eine benutzerdefinierte Systemnachricht fest, die für alle neuen Gespräche verwendet wird.","placeholder":"Systemnachricht eingeben...","saved":"Systemnachricht gespeichert","saveFailed":"Systemnachricht konnte nicht gespeichert werden"},"plugins":{"title":"Plugins","description":"Verwalten Sie Ihre installierten Plugins","addNew":"Neues Plugin hinzufügen","upload":"Plugin hochladen","addJson":"JSON hinzufügen","uploading":"Wird hochgeladen...","jsonPlaceholder":"Plugin-JSON-Konfiguration einfügen...","install":"Plugin installieren","noPlugins":"Keine Plugins installiert","noPluginsDescription":"Fügen Sie ein Plugin hinzu, um die Funktionalität zu erweitern","loading":"Plugins werden geladen...","installed":"Installierte Plugins","active":"Aktive Plugins","activeLabel":"Aktiv","inactive":"Inaktiv","activate":"Aktivieren","deactivate":"Deaktivieren","models":"Modelle","apiKeySet":"API-Schlüssel gesetzt","apiKeyConfiguration":"API-Schlüssel-Konfiguration","apiKeyEnvAlternative":"Alternativ können Sie die","environmentVariable":"Umgebungsvariable","apiKeyConfigured":"API-Schlüssel konfiguriert","apiKeyPlaceholder":"API-Schlüssel eingeben...","saveApiKey":"API-Schlüssel speichern","apiKey":{"title":"API-Schlüssel","placeholder":"API-Schlüssel eingeben","save":"Schlüssel speichern","remove":"Schlüssel entfernen","configured":"API-Schlüssel konfiguriert","notConfigured":"API-Schlüssel erforderlich","saved":"API-Schlüssel erfolgreich gespeichert","removed":"API-Schlüssel entfernt","saveFailed":"API-Schlüssel konnte nicht gespeichert werden","removeFailed":"API-Schlüssel konnte nicht entfernt werden","enterKey":"Bitte geben Sie einen API-Schlüssel ein"}},"generation":{"title":"Generierungsoptionen","description":"Konfigurieren Sie, wie die KI Antworten generiert","coreParameters":"Kernparameter","temperature":"Temperatur","temperatureDescription":"Steuert die Zufälligkeit. Niedrigere Werte sind fokussierter, höhere kreativer.","topP":"Top P","topPDescription":"Steuert die Vielfalt durch Nucleus-Sampling. Niedrigere Werte fokussieren auf wahrscheinliche Token.","topK":"Top K","topKDescription":"Begrenzt die Token-Auswahl auf die K wahrscheinlichsten. Auf 0 setzen zum Deaktivieren.","minP":"Min P","minPDescription":"Minimale Wahrscheinlichkeitsschwelle für die Token-Auswahl.","generationControl":"Generierungssteuerung","maxTokens":"Max. Token","maxTokensDescription":"Maximale Anzahl der zu generierenden Token in der Antwort.","repeatPenalty":"Wiederholungsstrafe","repeatPenaltyDescription":"Bestraft wiederholte Token. Höhere Werte reduzieren Wiederholungen.","contextLength":"Kontextlänge","contextLengthDescription":"Maximale Kontextfenstergröße für Gespräche.","seed":"Seed","optional":"optional","random":"Zufällig","seedDescription":"Legen Sie einen bestimmten Seed für reproduzierbare Ausgaben fest.","advancedOptions":"Erweiterte Optionen","presencePenalty":"Anwesenheitsstrafe","presencePenaltyDescription":"Bestraft Token, die im Kontext erscheinen.","frequencyPenalty":"Häufigkeitsstrafe","frequencyPenaltyDescription":"Bestraft häufig verwendete Token.","stopSequences":"Stoppsequenzen","commaSeparated":"kommagetrennt","stopSequencesDescription":"Benutzerdefinierte Token, die die Generierung stoppen, wenn sie auftreten.","resetDefaults":"Auf Standardwerte zurücksetzen","saveOptions":"Optionen speichern","embeddingSettings":"Embedding-Einstellungen","enableEmbeddings":"Dokument-Embeddings aktivieren"},"documents":{"title":"Dokumenteinstellungen","embeddings":{"title":"Embeddings","enable":"Dokument-Embeddings aktivieren","model":"Embedding-Modell","modelDescription":"Wählen Sie das Modell für Dokument-Embeddings","chunkSize":"Chunk-Größe","chunkSizeInTokens":"(in Token)","chunkSizeDescription":"Größe der Textabschnitte für Embeddings","chunkOverlap":"Chunk-Überlappung","chunkOverlapInTokens":"(in Token)","chunkOverlapDescription":"Überlappung zwischen aufeinanderfolgenden Chunks","similarityThreshold":"Ähnlichkeitsschwelle","similarityDescription":"Minimaler Ähnlichkeitswert für Ergebnisse","status":"Embedding-Status","statusLabel":"Status","available":"Verfügbar","unavailable":"Nicht verfügbar","chunksWithEmbeddings":"Chunks mit Embeddings","coverage":"Abdeckung","regenerate":"Embeddings neu generieren","regenerating":"Wird neu generiert..."}},"tts":{"title":"Text-zu-Sprache","description":"Konfigurieren Sie Text-zu-Sprache-Einstellungen für das Vorlesen von Nachrichten","loadingProviders":"TTS-Anbieter werden geladen...","noProviders":"Keine TTS-Anbieter","noProvidersDescription":"Konfigurieren Sie ein Plugin mit TTS-Unterstützung, um Text-zu-Sprache zu aktivieren","enable":"TTS aktivieren","enableDescription":"Text-zu-Sprache für Assistenten-Nachrichten erlauben","autoPlay":"Automatische Wiedergabe","autoPlayDescription":"Neue Assistenten-Nachrichten automatisch vorlesen","streamSentences":"Sätze streamen","streamSentencesDescription":"Audio Satz für Satz abspielen, anstatt auf die vollständige Nachricht zu warten. Empfohlen für lokale TTS, um Zeitüberschreitungen bei langen Nachrichten zu vermeiden.","voiceConfiguration":"Sprachkonfiguration","model":"TTS-Modell","modelDescription":"Wählen Sie das Modell für die Text-zu-Sprache-Generierung","voice":"Stimme","selectVoice":"Stimme auswählen","voiceDescription":"Wählen Sie die Stimme für Text-zu-Sprache","speed":"Geschwindigkeit","speedSlow":"0,5x","speedNormal":"1,0x","speedFast":"2,0x","availableProviders":"Verfügbare Anbieter","models":"Modelle","test":"Testen","testing":"Wird getestet...","stop":"Stopp"},"imageGen":{"title":"Bildgenerierung","description":"Konfigurieren Sie Einstellungen und Anbieter für die Bildgenerierung","loadingProviders":"Bildgenerierungs-Anbieter werden geladen...","noProviders":"Keine Bildgenerierungs-Anbieter","noProvidersDescription":"Konfigurieren Sie ein Plugin mit Bildgenerierungs-Unterstützung","enable":"Bildgenerierung aktivieren","enableDescription":"KI-Bildgenerierung in Gesprächen erlauben","configuration":"Konfiguration","model":"Modell","modelDescription":"Wählen Sie das Modell für die Bildgenerierung","size":"Größe","sizeDescription":"Auflösung der generierten Bilder","quality":"Qualität","qualityDescription":"Qualitätsstufe der generierten Bilder","style":"Stil","styleDescription":"Stilvorlage für generierte Bilder","availableProviders":"Verfügbare Anbieter","models":"Modelle"},"data":{"title":"Datenverwaltung","export":"Daten exportieren","exportDescription":"Laden Sie alle Ihre Daten herunter, einschließlich Einstellungen, Sitzungen und Dokumente.","exportAll":"Alle Daten exportieren","import":"Daten importieren","importDescription":"Importieren Sie Daten aus einem früheren Export.","importData":"Daten importieren","importing":"Wird importiert...","clearSessions":"Sitzungen löschen","clearSessionsDescription":"Alle Chat-Sitzungen löschen. Diese Aktion kann nicht rückgängig gemacht werden.","clearAll":"Alle löschen","clearing":"Wird gelöscht...","importOptions":"Import-Optionen","importOptionsDescription":"Wählen Sie, wie vorhandene Daten behandelt werden sollen","skipDuplicates":"Duplikate überspringen","overwrite":"Vorhandene überschreiben","importResults":"Import-Ergebnisse","preferences":"Einstellungen","imported":"Importiert","failed":"Fehlgeschlagen","sessions":"Sitzungen","importedLabel":"importiert","skipped":"übersprungen","documents":"Dokumente","errors":"Fehler"},"about":{"title":"Über","versionLabel":"Version","ollama":{"title":"Ollama-Status","version":"Version","healthy":"Funktionsfähig","unhealthy":"Nicht funktionsfähig"},"stats":{"models":"Modelle","sessions":"Sitzungen"},"features":{"privacy":{"title":"Privatsphäre zuerst","description":"Ihre Daten bleiben auf Ihrem Gerät"},"openSource":{"title":"Open Source","description":"Freie und quelloffene Software"},"localInference":{"title":"Lokale Inferenz","description":"KI-Modelle lokal mit Ollama ausführen"}},"openSourceBy":"Open Source von {{company}}","links":{"title":"Links","github":"GitHub","githubDescription":"Quellcode ansehen und beitragen","website":"Website","websiteDescription":"Besuchen Sie unsere Website","ollama":"Ollama","ollamaDescription":"Mehr über Ollama erfahren","documentation":"Dokumentation","reportIssue":"Probleme melden","reportIssueDescription":"Fehlerberichte & Funktionsanfragen"},"version":"Version {{version}}"}}'),vl={title:"Modelle",subtitle:"Ollama-Modelle herunterladen, verwalten und überwachen",installed:"Installierte Modelle",available:"Verfügbare Modelle",pull:"Modell herunterladen",pulling:"Wird heruntergeladen...",delete:"Modell löschen",deleting:"Wird gelöscht...",size:"Größe",modified:"Geändert",family:"Familie",parameters:"Parameter",quantization:"Quantisierung",noModels:"Keine Modelle installiert",pullFirst:"Laden Sie ein Modell herunter, um zu beginnen"},xl={title:"Personas",create:"Persona erstellen",edit:"Persona bearbeiten",delete:"Persona löschen",name:"Name",description:"Beschreibung",systemPrompt:"System-Prompt",model:"Modell",avatar:"Avatar",background:"Hintergrund",noPersonas:"Keine Personas erstellt",createFirst:"Erstellen Sie Ihre erste Persona, um Ihr Chat-Erlebnis anzupassen"},Sl={title:"Galerie",subtitle:"Ihre KI-generierte Bildergalerie",imageCount:"{{count}} Bilder",generate:"Bild generieren",generateDescription:"Bilder mit KI erstellen",generating:"Wird generiert...",prompt:"Prompt",promptPlaceholder:"Beschreiben Sie das Bild, das Sie generieren möchten...",noImages:"Noch keine Bilder generiert",download:"Herunterladen",delete:"Löschen",regenerate:"Neu generieren",model:"Modell",size:"Größe",quality:"Qualität",created:"Erstellt"},wl={generic:"Ein Fehler ist aufgetreten",network:"Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",unauthorized:"Sie sind nicht berechtigt, diese Aktion auszuführen.",notFound:"Die angeforderte Ressource wurde nicht gefunden.",serverError:"Serverfehler. Bitte versuchen Sie es später erneut.",validation:"Bitte überprüfen Sie Ihre Eingabe und versuchen Sie es erneut."},Pl={title:"Tastenkombinationen",toggleSidebar:"Seitenleiste umschalten",openSettings:"Einstellungen öffnen",toggleDarkMode:"Dunkelmodus umschalten",showShortcuts:"Tastenkombinationen anzeigen",closeModals:"Dialoge schließen",groups:{navigation:"Navigation",settings:"Einstellungen",general:"Allgemein",chat:"Chat"},actions:{sendMessage:"Nachricht senden",newLine:"Neue Zeile in Nachricht"},footer:"Drücken Sie {{key1}} oder {{key2}}, um diese Hilfe anzuzeigen",tooltip:"Tastenkombinationen"},Ml={title:"Modelle",loading:"Modelle werden geladen...",systemStatus:{online:"Ollama Online",offline:"Ollama Offline",models:"Modell",models_plural:"Modelle",running:"läuft",vram:"VRAM"},sections:{pull:"Neues Modell herunterladen",library:"Bibliothek durchsuchen",running:"Laufende Modelle",local:"Lokale Modelle",advanced:"Erweiterte Aktionen",huggingface:"HuggingFace Hub"},pull:{placeholder:"Modellname eingeben (z.B. llama3.2:3b, deepseek-r1:14b)",button:"Herunterladen",cancel:"Abbrechen",popular:"Beliebte Modelle:",browseAll:"Alle Modelle auf ollama.com durchsuchen",success:"Modell {{name}} erfolgreich heruntergeladen",cancelled:"Modell-Download abgebrochen",failed:"Modell konnte nicht heruntergeladen werden",enterName:"Bitte geben Sie einen Modellnamen ein"},progress:{starting:"Wird initialisiert...",pulling:"Modell wird heruntergeladen...",verifying:"Integrität wird überprüft...",writing:"Manifest wird geschrieben...",cleaning:"Wird aufgeräumt..."},library:{available:"verfügbar",search:"Modelle suchen...",noResults:"Keine Modelle gefunden, die Ihren Kriterien entsprechen",installed:"Installiert",more:"+{{count}} weitere",refresh:"Bibliothek aktualisieren"},local:{noModels:"Noch keine Modelle installiert",pullToStart:"Laden Sie oben ein Modell herunter, um zu beginnen",installed:"installiert",running:"Läuft",info:"Info",copy:"Kopieren",delete:"Löschen",deleteConfirm:'Sind Sie sicher, dass Sie das Modell "{{name}}" löschen möchten?',deleteSuccess:"Modell {{name}} erfolgreich gelöscht",deleteFailed:"Modell konnte nicht gelöscht werden"},advanced:{createModel:"Modell erstellen",fromModelfile:"Aus Modelfile",copyModel:"Modell kopieren",duplicateExisting:"Vorhandenes duplizieren",testEmbeddings:"Embeddings testen",generateVectors:"Vektoren generieren",healthCheck:"Gesundheitscheck",testConnection:"Verbindung testen",healthy:"Ollama ist funktionsfähig!"},modals:{details:{title:"Modelldetails",info:"Modell-Informationen",family:"Familie",parameters:"Parameter",quantization:"Quantisierung",format:"Format",systemPrompt:"System-Prompt",template:"Vorlage",license:"Lizenz",modelfile:"Modelfile",noDetails:"Keine Details verfügbar"},copy:{title:"Modell kopieren",source:"Quellmodell",selectModel:"Modell auswählen...",newName:"Neuer Modellname",placeholder:"z.B. mein-benutzerdefiniertes-modell",copying:"Wird kopiert...",button:"Modell kopieren",success:"Modell nach {{name}} kopiert",failed:"Modell konnte nicht kopiert werden",enterBoth:"Bitte geben Sie sowohl Quell- als auch Zielnamen ein"},create:{title:"Benutzerdefiniertes Modell erstellen",name:"Modellname",namePlaceholder:"z.B. mein-assistent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
7
|
+
SYSTEM Du bist ein hilfreicher Assistent.`,docs:"Modelfile-Dokumentation",docsLink:"zur Syntax-Referenz",creating:"Wird erstellt...",button:"Modell erstellen",success:"Modell {{name}} erfolgreich erstellt",failed:"Modell konnte nicht erstellt werden",enterBoth:"Bitte geben Sie Modellname und Modelfile-Inhalt ein"},embeddings:{title:"Embeddings testen",model:"Embedding-Modell",selectModel:"Modell auswählen...",recommended:"Empfohlen: nomic-embed-text, mxbai-embed-large",input:"Eingabetext",placeholder:"Text eingeben, für den Embeddings generiert werden sollen...",generating:"Wird generiert...",button:"Embeddings generieren",result:"Ergebnis ({{count}} Dimensionen)",success:"{{count}}-dimensionaler Embedding-Vektor generiert",failed:"Embeddings konnten nicht generiert werden",enterBoth:"Bitte wählen Sie ein Modell und geben Sie Text ein"}},huggingface:{browseAll:"Alle auf HuggingFace durchsuchen",checkingGguf:"Suche nach GGUF-Dateien...",noGgufAvailable:"Keine GGUF-Dateien für direkten Ollama-Pull verfügbar",ggufFilesCount:"GGUF-Dateien ({{count}}) - Direkt zu Ollama pullen",noModelsFound:"Keine Modelle gefunden",noResults:"Keine Modelle gefunden. Versuchen Sie, Ihre Suche oder Filter anzupassen.",browseAllLink:"Alle durchsuchen",search:"HuggingFace-Modelle suchen...",by:"von",gated:"Zugriffsbeschränkt",viewOnHF:"Auf HuggingFace ansehen",sortDownloads:"Downloads",sortLikes:"Likes",sortRecent:"Aktuell",taskTextGeneration:"Textgenerierung",taskTextToSpeech:"Text-zu-Sprache",taskTextToImage:"Text-zu-Bild",taskSpeechRecognition:"Spracherkennung",tasks:{textGen:"Textgenerierung",tts:"Text-zu-Sprache",image:"Text-zu-Bild",stt:"Spracherkennung"},sort:{downloads:"Meiste Downloads",likes:"Beliebteste",recent:"Kürzlich aktualisiert"}}},Dl={title:"Personas",subtitle:"Erstellen und verwalten Sie KI-Personas mit benutzerdefinierten Persönlichkeiten, Erinnerungen und Verhaltensweisen",loading:"Personas werden geladen...",createButton:"Persona erstellen",importExport:"Import/Export",stats:{title:"Ihre Personas",count:"{{count}} Persona erstellt",count_plural:"{{count}} Personas erstellt"},empty:{title:"Noch keine Personas",description:"Erstellen Sie Ihre erste Persona für personalisierte KI-Interaktionen",button:"Erste Persona erstellen"},deleteConfirm:'Sind Sie sicher, dass Sie "{{name}}" löschen möchten?',deleteSuccess:'Persona "{{name}}" erfolgreich gelöscht',downloadSuccess:'Persona "{{name}}" erfolgreich heruntergeladen',failed:"Persona konnte nicht {{action}} werden"},Al={title:{create:"Neue Persona erstellen",edit:"Persona bearbeiten"},subtitle:{create:"Erstellen Sie eine neue KI-Persona mit benutzerdefinierter Persönlichkeit, Erinnerungssystemen und adaptiven Lernfähigkeiten",edit:"Passen Sie Ihre KI-Persona mit fortgeschrittenen Erinnerungen, adaptivem Lernen und intelligenten Parametern an"},loading:"Formular wird geladen...",saved:"Gespeichert",tabs:{basic:"Grundlegend",parameters:"Parameter",memory:"Erinnerung & Lernen",advanced:"Erweitert"},basic:{name:"Name",namePlaceholder:"Persona-Namen eingeben",model:"Modell",selectModel:"Modell auswählen",description:"Beschreibung",descriptionPlaceholder:"Beschreiben Sie Ihre Persona...",systemPrompt:"System-Prompt",systemPromptPlaceholder:"Geben Sie den System-Prompt ein, der das Verhalten Ihrer Persona definiert...",systemPromptHint:"Der System-Prompt definiert, wie sich Ihre Persona verhält und antwortet."},parameters:{temperature:"Temperatur",temperatureHint:"Steuert Kreativität vs. Konsistenz",topP:"Top-P",topPHint:"Steuert die Antwortvielfalt",topK:"Top-K",topKHint:"Begrenzt Vokabular auf Top-K Token",contextWindow:"Kontextfenster",contextWindowHint:"Maximale Gesprächsverlaufslänge",maxTokens:"Max. Token",maxTokensHint:"Maximale Antwortlänge",repeatPenalty:"Wiederholungsstrafe",repeatPenaltyHint:"Reduziert sich wiederholende Antworten"},memory:{title:"Erinnerungssystem",subtitle:"Persona erinnert sich an Gespräche über Zeit",enableHint:"Aktivieren Sie das Erinnerungssystem, damit sich Ihre Persona an Gespräche erinnern und im Laufe der Zeit Kontext aufbauen kann.",loading:"Erinnerungsstatus wird geladen...",noData:"Noch keine Erinnerungsdaten",memories:"Erinnerungen",mbUsed:"MB verwendet",lastBackup:"Letzte Sicherung",never:"Nie",maxMemories:"Maximale Erinnerungen",maxMemoriesHint:"Wie viele Erinnerungen diese Persona speichern kann",retention:"Erinnerungs-Aufbewahrung",retentionHint:"Tage, um Erinnerungen vor der Bereinigung zu behalten",autoCleanup:"Alte Erinnerungen automatisch bereinigen",wipeAll:"Alle Erinnerungen löschen",wipeCannot:"Dies kann nicht rückgängig gemacht werden",wipeButton:"Löschen",wiping:"Wird gelöscht...",wipeConfirm:"Sind Sie sicher, dass Sie alle Erinnerungen löschen möchten? Dies kann nicht rückgängig gemacht werden.",wipeSuccess:"{{count}} Erinnerungen gelöscht"},learning:{title:"Adaptives Lernen",subtitle:"Persona entwickelt sich basierend auf Interaktionen",enableHint:"Aktivieren Sie adaptives Lernen, damit sich Ihre Persona weiterentwickelt und Antworten basierend auf Ihren Interaktionen personalisiert.",speed:"Lerngeschwindigkeit",slow:"Langsam",slowDesc:"Schrittweise Änderungen",balanced:"Ausgewogen",balancedDesc:"Moderates Tempo",fast:"Schnell",fastDesc:"Schnelle Anpassung",autoAdapt:"Automatisch an Benutzerpräferenzen anpassen",whatLearns:"Was die Persona lernt:",conversationTone:"Gesprächston",responseStyle:"Antwortstil",userPreferences:"Benutzerpräferenzen",topicInterests:"Themeninteressen"},advanced:{embeddingModel:"Embedding-Modell",embeddingHint:"Wählen Sie das Modell für Erinnerungskodierung und semantische Suche. Embedding-Modelle werden zuerst angezeigt, gefolgt von anderen verfügbaren Modellen.",noModels:"Keine Modelle gefunden",embeddingModels:"Embedding-Modelle",otherModels:"Andere Modelle",installHint:"Installieren Sie ein Embedding-Modell:",recommended:"Empfohlen: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Über erweiterte Einstellungen",aboutDescription:"Das Embedding-Modell wird vom Erinnerungssystem verwendet, um semantische Bedeutung zu verstehen und relevante Erinnerungen während Gesprächen zu finden. Wählen Sie ein Modell, das zu Ihrem Anwendungsfall und Ihren verfügbaren Ressourcen passt."},actions:{cancel:"Abbrechen",save:"Speichern",saving:"Wird gespeichert...",saveClose:"Speichern & Schließen",create:"Erstellen"},success:{created:"Persona erstellt",updated:"Persona aktualisiert"},error:{saveFailed:"Speichern fehlgeschlagen"}},zl={enhanced:"Erweitert",systemPrompt:"System-Prompt",memories:"Erinnerungen",use:"Verwenden",editTooltip:"Persona bearbeiten",downloadTooltip:"Persona herunterladen",backup:"Sicherung",exportDNA:"DNA exportieren",wipeMemories:"Erinnerungen löschen",wipeConfirm:"Sind Sie sicher, dass Sie alle Erinnerungen für diese Persona löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",wipeSuccess:"{{count}} Erinnerungen gelöscht",backupSuccess:"Persona-Sicherung erfolgreich heruntergeladen",dnaSuccess:"Persona-DNA erfolgreich exportiert",failed:"{{action}} fehlgeschlagen"},jl={title:"Benutzerverwaltung",subtitle:"Benutzerkonten und Berechtigungen verwalten",loading:"Benutzer werden geladen...",createUser:"Benutzer erstellen",search:"Benutzer suchen...",noUsers:"Keine Benutzer gefunden",noUsersMatching:"Keine Benutzer, die Ihrer Suche entsprechen",columns:{user:"Benutzer",email:"E-Mail",role:"Rolle",created:"Erstellt",actions:"Aktionen"},roles:{admin:"Admin",user:"Benutzer"},noEmail:"Keine E-Mail",deleteConfirm:'Sind Sie sicher, dass Sie den Benutzer "{{name}}" löschen möchten?',deleteSuccess:"Benutzer erfolgreich gelöscht",deleteFailed:"Benutzer konnte nicht gelöscht werden",cannotDeleteSelf:"Sie können Ihr eigenes Konto nicht löschen",form:{title:{create:"Benutzer erstellen",edit:"Benutzer bearbeiten"},username:"Benutzername",usernamePlaceholder:"Benutzernamen eingeben",email:"E-Mail",emailPlaceholder:"E-Mail eingeben (optional)",password:"Passwort",passwordPlaceholder:"Passwort eingeben",passwordHint:"Leer lassen, um aktuelles Passwort zu behalten",role:"Rolle",creating:"Wird erstellt...",updating:"Wird aktualisiert...",createButton:"Benutzer erstellen",updateButton:"Benutzer aktualisieren",createSuccess:"Benutzer erfolgreich erstellt",updateSuccess:"Benutzer erfolgreich aktualisiert",createFailed:"Benutzer konnte nicht erstellt werden",updateFailed:"Benutzer konnte nicht aktualisiert werden"}},Tl={you:"Sie",assistant:"Assistent",system:"System",copy:"Kopieren",copyMessage:"Nachricht kopieren",copied:"Kopiert!",regenerate:"Neu generieren",regenerateResponse:"Antwort neu generieren",edit:"Bearbeiten",editSystemMessage:"Systemnachricht bearbeiten",saveChanges:"Änderungen speichern",cancelEditing:"Bearbeitung abbrechen",delete:"Löschen",deleteConfirm:"Diese Nachricht löschen?",branch:"Verzweigung",speaking:"Spricht...",speakMessage:"Nachricht vorlesen",stopSpeaking:"Vorlesen stoppen",showMore:"Mehr anzeigen",showLess:"Weniger anzeigen",thinking:"Denkt",systemMessagePlaceholder:"Geben Sie Ihre Systemnachricht ein...",fullSizeImage:"Bild in voller Größe",startConversation:"Gespräch starten",startConversationDescription:"Senden Sie eine Nachricht, um mit Ihrem KI-Assistenten zu chatten. Stellen Sie Fragen, lassen Sie sich bei Code helfen oder führen Sie ein natürliches Gespräch.",scrollToBottom:"Nach unten scrollen",newMessages:"Neue Nachrichten"},Nl={title:"Bildergalerie",noImages:"Noch keine Bilder",noImagesHint:"Generieren Sie Ihr erstes Bild über das Panel auf der rechten Seite",delete:"Löschen",download:"Herunterladen",deleteConfirm:"Sind Sie sicher, dass Sie dieses Bild löschen möchten?",deleteSuccess:"Bild gelöscht",deleteFailed:"Bild konnte nicht gelöscht werden",downloadFailed:"Bild konnte nicht heruntergeladen werden",loadMore:"Mehr laden ({{current}} von {{total}})",loadFailed:"Galerie konnte nicht geladen werden"},Il={title:"Bild generieren",prompt:"Prompt",promptPlaceholder:"Beschreiben Sie das Bild, das Sie erstellen möchten...",model:"Modell",selectModel:"Modell auswählen",noModels:"Keine Bildgenerierungsmodelle verfügbar",configurePlugin:"Konfigurieren Sie ein Plugin mit Bildgenerierungs-Unterstützung",size:"Größe",quality:"Qualität",style:"Stil",generate:"Generieren",generating:"Wird generiert...",success:"Bild erfolgreich generiert",failed:"Bild konnte nicht generiert werden",enterPrompt:"Bitte geben Sie einen Prompt ein",promptTooLong:"Prompt überschreitet die maximale Länge von {{max}} Zeichen"},Cl={title:"Etwas ist schiefgelaufen",description:"Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie, die Seite neu zu laden.",tryAgain:"Seite neu laden",goHome:"Zur Startseite",errorDetails:"Fehlerdetails (Entwicklung)"},Fl={title:"Dokumente",upload:"Dokument hochladen",uploading:"Wird hochgeladen...",noDocuments:"Keine Dokumente hochgeladen",uploadHint:"Laden Sie Dokumente hoch, um sie in Ihren Gesprächen zu verwenden",delete:"Löschen",deleteConfirm:"Sind Sie sicher, dass Sie dieses Dokument löschen möchten?",deleteSuccess:"Dokument gelöscht",deleteFailed:"Dokument konnte nicht gelöscht werden",uploadSuccess:"Dokument erfolgreich hochgeladen",uploadFailed:"Dokument konnte nicht hochgeladen werden",types:"Unterstützt: PDF, TXT, MD, DOCX",unsupportedFileType:"Nur PDF- und TXT-Dateien werden unterstützt",fileSizeTooLarge:"Dateigröße muss unter 10 MB liegen",uploadSuccessWithName:'Dokument "{{name}}" erfolgreich hochgeladen',removeSuccess:"Dokument erfolgreich entfernt",removeFailed:"Dokument konnte nicht entfernt werden",removeError:"Beim Entfernen des Dokuments ist ein Fehler aufgetreten",clickToUpload:"Klicken zum Hochladen",orDragAndDrop:"oder per Drag & Drop",fileTypesAndSize:"PDF- oder TXT-Dateien bis zu 10 MB",uploadedDocuments:"Hochgeladene Dokumente",removeDocument:"Dokument entfernen"},Ol={speak:"Sprechen",stop:"Stopp",speaking:"Spricht...",generateFailed:"Sprache konnte nicht generiert werden",playbackFailed:"Audiowiedergabe fehlgeschlagen",stopSpeaking:"Vorlesen stoppen",generatingSpeech:"Sprache wird generiert...",readAloud:"Vorlesen"},El={title:"Artefakte",code:"Code",preview:"Vorschau",copy:"Code kopieren",copied:"Kopiert!",download:"Herunterladen",expand:"Erweitern",collapse:"Einklappen",openInNewTab:"In neuem Tab öffnen",invalidSvg:"Ungültiger SVG-Inhalt",invalidJson:"Ungültiger JSON-Inhalt",previewMode:"Vorschaumodus",codeMode:"Code-Modus",copyContent:"Inhalt kopieren",openInPanel:"Im Panel öffnen",openInNewWindow:"In neuem Fenster öffnen",created:"Erstellt",closePanelEsc:"Panel schließen (Esc)",copyButton:"Kopieren",open:"Öffnen",dragEdgeToResize:"Kante ziehen zum Anpassen"},Ll={title:"Personas importieren & exportieren",description:"Exportieren Sie Ihre Personas, um sie zu teilen, oder importieren Sie Personas von anderen",exportPersonas:"Personas exportieren",importPersonas:"Personas importieren",noPersonasToExport:"Keine Personas zum Exportieren",personasAvailable:"{{count}} Persona verfügbar",personasAvailable_plural:"{{count}} Personas verfügbar",exportAll:"Alle exportieren",uploadJsonFile:"JSON-Datei hochladen",pasteJsonLabel:"JSON-Daten einfügen",pasteJsonPlaceholder:"Persona-JSON-Daten hier einfügen...",importing:"Wird importiert...",importButton:"Persona(s) importieren",expectedFormat:"Erwartetes JSON-Format:",exportSuccess:'Persona "{{name}}" erfolgreich exportiert',exportFailed:"Persona konnte nicht exportiert werden",exportAllSuccess:"Alle {{count}} Personas erfolgreich exportiert",exportAllFailed:"Personas konnten nicht exportiert werden",pasteJsonData:"Bitte fügen Sie die Persona-JSON-Daten ein",importMultipleSuccess:"{{count}} Personas erfolgreich importiert",importMultipleFailed:"{{count}} Personas konnten nicht importiert werden",importNoneFailed:"Keine Personas konnten importiert werden",importSuccess:"Persona erfolgreich importiert",importFailed:"Persona konnte nicht importiert werden"},Gl={common:ml,brand:pl,auth:gl,setup:hl,chat:bl,sidebar:kl,user:fl,settings:yl,models:vl,personas:xl,gallery:Sl,errors:wl,keyboard:Pl,modelManager:Ml,personaManager:Dl,personaForm:Al,personaCard:zl,userManager:jl,chatMessage:Tl,imageGallery:Nl,imageGeneration:Il,errorBoundary:Cl,documents:Fl,ttsButton:Ol,artifacts:El,personaImportExport:Ll},Bl={loading:"Loading...",save:"Save",saving:"Saving...",cancel:"Cancel",delete:"Delete",edit:"Edit",close:"Close",back:"Back",next:"Next",confirm:"Confirm",error:"Error",success:"Success",warning:"Warning",or:"or",optional:"optional",enabled:"Enabled",disabled:"Disabled",on:"On",off:"Off",yes:"Yes",no:"No",search:"Search",noResults:"No results found",retry:"Retry",refresh:"Refresh",download:"Download",upload:"Upload",export:"Export",import:"Import",reset:"Reset",apply:"Apply",clear:"Clear",all:"All",none:"None",default:"Default",custom:"Custom",mode:"Mode",multiUser:"Multi User",remove:"Remove"},Kl={name:"Libre WebUI",shortName:"Libre"},Hl={login:{title:"Welcome Back",subtitle:"Sign in to your account to continue",username:"Username",usernamePlaceholder:"Enter your username",password:"Password",passwordPlaceholder:"Enter your password",signIn:"Sign In",signingIn:"Signing in...",noAccount:"Don't have an account?",signUpHere:"Sign up here",loginSuccess:"Login successful!",loginFailed:"Login failed",checkCredentials:"Login failed. Please check your credentials.",enterBoth:"Please enter both username and password",githubSuccess:"GitHub login successful!",githubFailed:"GitHub authentication failed",githubVerifyFailed:"Failed to verify GitHub authentication"},signup:{title:"Create Account",subtitle:"Sign up for your new account",username:"Username",usernamePlaceholder:"Choose a username",email:"Email",emailPlaceholder:"your@email.com",password:"Password",passwordPlaceholder:"Choose a password",confirmPassword:"Confirm Password",confirmPasswordPlaceholder:"Confirm your password",createAccount:"Create Account",creatingAccount:"Creating account...",hasAccount:"Already have an account?",signInHere:"Sign in here",signupSuccess:"Account created successfully!",signupFailed:"Signup failed",tryAgain:"Signup failed. Please try again.",usernameRequired:"Username and password are required",passwordMismatch:"Passwords do not match",passwordTooShort:"Password must be at least 6 characters long"},logout:{button:"Log out",success:"Logged out successfully"},oauth:{continueWith:"Continue with {{provider}}",connectingTo:"Connecting to {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rl={welcome:{title:"Welcome to Libre WebUI",subtitle:"Let's Get Started",description:"Set up your Libre WebUI instance in just a few steps",createAdmin:"Create Admin Account",features:{secure:{title:"Secure & Private",description:"Your conversations stay on your device"},fast:{title:"Fast & Responsive",description:"Optimized for speed and performance"},openSource:{title:"Open Source",description:"Free and open source software"}}},admin:{title:"Create Admin Account",subtitle:"Administrator Setup",description:"Create the first admin account for your Libre WebUI instance",usernamePlaceholder:"Enter admin username",passwordPlaceholder:"Enter password (min 6 characters)",confirmPlaceholder:"Confirm your password",creating:"Creating...",createAdmin:"Create Admin",success:"Admin account created successfully!",failed:"Failed to create admin account",fillAllFields:"Please fill in all fields",note:"This will be the primary administrator account for your Libre WebUI instance"},encryptionKey:{title:"Save Your Encryption Key",subtitle:"Important: Save This Key",description:"This encryption key protects your sensitive data. Store it securely - you'll need it if you ever need to restore your database.",warning:"Warning",warningText:"If you lose this key and need to restore your database, your encrypted data (API keys, preferences) will be unrecoverable.",label:"Your Encryption Key",loading:"Loading...",copyToClipboard:"Copy to clipboard",copied:"Encryption key copied to clipboard!",copyFailed:"Failed to copy key to clipboard",envNote:"This key is also saved in your backend/.env file as ENCRYPTION_KEY",acknowledgment:"I have saved my encryption key in a secure location and understand that losing it may result in data loss.",confirmRequired:"Please confirm that you have saved the encryption key",continue:"Continue to Libre WebUI"}},Ul={greeting:{morning:"Good morning",afternoon:"Good afternoon",evening:"Good evening",night:"Good night"},welcome:{helpToday:"What can I help with today?",helpTonight:"What can I help with tonight?"},input:{placeholder:"Send a message",messagePlaceholder:"Message...",attachImages:"Attach images",attachments:"Attachments and advanced features",sendMessage:"Send message",stopGeneration:"Stop generation"},session:{new:"New Chat",private:"Private",privateMode:"Private Mode",privateDescription:"This conversation won't be saved",privateTooltip:"Start a private conversation that won't be saved",deleteConfirm:"Are you sure you want to delete this chat?",generatingTitle:"Generating title",noChats:"No chats yet",createFirst:"Create your first chat above",chats:"Chats",renameChat:"Rename chat",deleteChat:"Delete chat"},persona:{applied:"Persona applied",label:"Persona"},model:{updated:"Model updated",noModels:"No models available",noModelsDescription:"No models available. Make sure Ollama is running and has models installed.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"No models available. Please ensure Ollama is running and models are installed."},footer:{disclaimer:"LLM can make mistakes - verify important information",images:"{{count}} image",images_plural:"{{count}} images",structuredOutput:"Structured output"},mediaUpload:{dropImagesHere:"Drop images here or",supportedFormats:"Supports: JPG, PNG, GIF, WebP (max 10MB each)",browse:"browse"},structuredOutput:{title:"Response Format",none:"None (Natural Language)",noneDescription:"Default natural language response",json:"JSON",jsonDescription:"Structured JSON format",list:"List",listDescription:"Array of items",summary:"Summary",summaryDescription:"Document summary with key points",analysis:"Analysis",analysisDescription:"Structured analysis with pros/cons",custom:"Custom Schema",customDescription:"Define your own JSON schema",customSchema:"Custom JSON schema",schemaPreview:"Schema Preview",applySchema:"Apply Schema",cancel:"Cancel",enabled:"Structured output enabled"}},$l={navigation:{chat:"Chat",models:"Models",personas:"Personas",imagine:"Imagine",settings:"Settings",userManagement:"User Management",signOut:"Sign Out"},toggleSize:"Toggle sidebar size",expandSidebar:"Expand sidebar"},Vl={menu:{changePicture:"Change Picture",settings:"Settings",userManagement:"User Management",logout:"Log out"},avatar:{title:"Change Profile Picture",updated:"Profile picture updated",updateFailed:"Failed to update profile picture",saving:"Saving..."},profile:{noEmail:"No email provided"}},Wl={title:"Settings",tabs:{appearance:"Appearance",model:"Model",systemMessage:"System Message",plugins:"Plugins",generation:"Generation",documents:"Documents",tts:"Text-to-Speech",imageGen:"Image Generation",data:"Data",about:"About"},appearance:{title:"Appearance",language:{title:"Language",description:"Select your preferred language"},theme:{title:"Theme",light:"Light",dark:"Dark",amoled:"Pure Black",system:"System"},chatInterface:{title:"Chat Interface",showUsername:"Show Username",showUsernameDescription:"Display username in chat messages"},background:{title:"Background Image",enable:"Enable background image",enableDescription:"Show custom background with blur effect",blur:"Blur",opacity:"Opacity",upload:"Upload background image",dragDrop:"Drag and drop an image or click to browse",chooseImage:"Choose Image"}},saveSettings:"Save Settings",model:{title:"Model Settings",defaultModel:"Default Model",defaultModelDescription:"This model will be used by default for new conversations",selectModel:"Select a model",persona:"Persona",updateAll:"Update All Models",updateAllDescription:"Check for updates and pull latest versions of all installed models",updateAllButton:"Update All",updating:"Updating models...",currentModelInfo:"Current Model Info",name:"Name",size:"Size",family:"Family",format:"Format",status:"Status",statusStarting:"Starting...",statusComplete:"Complete",statusError:"Error",bulkOperations:"Bulk Operations",autoTitle:{title:"Auto Title Generation",enable:"Enable Auto Title",enableDescription:"Automatically generate titles for new conversations",taskModel:"Task Model",selectTaskModel:"Select task model",taskModelDescription:"Model used for generating conversation titles"}},systemMessage:{title:"System Message",description:"Set a custom system message that will be used for all new conversations.",placeholder:"Enter a system message...",saved:"System message saved",saveFailed:"Failed to save system message"},plugins:{title:"Plugins",description:"Manage your installed plugins",addNew:"Add New Plugin",upload:"Upload Plugin",addJson:"Add JSON",uploading:"Uploading...",jsonPlaceholder:"Paste plugin JSON configuration...",install:"Install Plugin",noPlugins:"No plugins installed",noPluginsDescription:"Add a plugin to extend functionality",loading:"Loading plugins...",installed:"Installed Plugins",active:"Active Plugins",activeLabel:"Active",inactive:"Inactive",activate:"Activate",deactivate:"Deactivate",models:"models",apiKeySet:"API Key Set",apiKeyConfiguration:"API Key Configuration",apiKeyEnvAlternative:"Alternatively, set the",environmentVariable:"environment variable",apiKeyConfigured:"API key configured",apiKeyPlaceholder:"Enter your API key...",saveApiKey:"Save API Key",apiKey:{title:"API Key",placeholder:"Enter API key",save:"Save Key",remove:"Remove Key",configured:"API Key Configured",notConfigured:"API Key Required",saved:"API key saved successfully",removed:"API key removed",saveFailed:"Failed to save API key",removeFailed:"Failed to remove API key",enterKey:"Please enter an API key"}},generation:{title:"Generation Options",description:"Configure how the AI generates responses",coreParameters:"Core Parameters",temperature:"Temperature",temperatureDescription:"Controls randomness. Lower values are more focused, higher values more creative.",topP:"Top P",topPDescription:"Controls diversity via nucleus sampling. Lower values focus on likely tokens.",topK:"Top K",topKDescription:"Limits token selection to top K most likely. Set to 0 to disable.",minP:"Min P",minPDescription:"Minimum probability threshold for token selection.",generationControl:"Generation Control",maxTokens:"Max Tokens",maxTokensDescription:"Maximum number of tokens to generate in the response.",repeatPenalty:"Repeat Penalty",repeatPenaltyDescription:"Penalizes repeated tokens. Higher values reduce repetition.",contextLength:"Context Length",contextLengthDescription:"Maximum context window size for conversations.",seed:"Seed",optional:"optional",random:"Random",seedDescription:"Set a specific seed for reproducible outputs.",advancedOptions:"Advanced Options",presencePenalty:"Presence Penalty",presencePenaltyDescription:"Penalizes tokens that appear in the context.",frequencyPenalty:"Frequency Penalty",frequencyPenaltyDescription:"Penalizes frequently used tokens.",stopSequences:"Stop Sequences",commaSeparated:"comma separated",stopSequencesDescription:"Custom tokens that will stop generation when encountered.",resetDefaults:"Reset to Defaults",saveOptions:"Save Options",embeddingSettings:"Embedding Settings",enableEmbeddings:"Enable Document Embeddings"},documents:{title:"Document Settings",embeddings:{title:"Embeddings",enable:"Enable document embeddings",model:"Embedding Model",modelDescription:"Select the model used for document embedding",chunkSize:"Chunk Size",chunkSizeInTokens:"(in tokens)",chunkSizeDescription:"Size of text chunks for embedding",chunkOverlap:"Chunk Overlap",chunkOverlapInTokens:"(in tokens)",chunkOverlapDescription:"Overlap between consecutive chunks",similarityThreshold:"Similarity Threshold",similarityDescription:"Minimum similarity score to include results",status:"Embedding Status",statusLabel:"Status",available:"Available",unavailable:"Unavailable",chunksWithEmbeddings:"Chunks with embeddings",coverage:"Coverage",regenerate:"Regenerate Embeddings",regenerating:"Regenerating..."}},tts:{title:"Text-to-Speech",description:"Configure text-to-speech settings for reading messages aloud",loadingProviders:"Loading TTS providers...",noProviders:"No TTS Providers",noProvidersDescription:"Configure a plugin with TTS support to enable text-to-speech",enable:"Enable TTS",enableDescription:"Allow text-to-speech for assistant messages",autoPlay:"Auto-play Responses",autoPlayDescription:"Automatically read new assistant messages aloud",streamSentences:"Stream Sentences",streamSentencesDescription:"Play audio sentence by sentence instead of waiting for the full message. Recommended for local TTS to avoid timeouts on long messages.",voiceConfiguration:"Voice Configuration",model:"TTS Model",modelDescription:"Select the model for text-to-speech generation",voice:"Voice",selectVoice:"Select a voice",voiceDescription:"Choose the voice for text-to-speech",speed:"Speed",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Available Providers",models:"models",test:"Test",testing:"Testing...",stop:"Stop"},imageGen:{title:"Image Generation",description:"Configure image generation settings and providers",loadingProviders:"Loading image generation providers...",noProviders:"No Image Generation Providers",noProvidersDescription:"Configure a plugin with image generation support",enable:"Enable Image Generation",enableDescription:"Allow AI image generation in conversations",configuration:"Configuration",model:"Model",modelDescription:"Select the model for image generation",size:"Size",sizeDescription:"Resolution of generated images",quality:"Quality",qualityDescription:"Quality level of generated images",style:"Style",styleDescription:"Style preset for generated images",availableProviders:"Available Providers",models:"models"},data:{title:"Data Management",export:"Export Data",exportDescription:"Download all your data including preferences, sessions, and documents.",exportAll:"Export All Data",import:"Import Data",importDescription:"Import data from a previous export.",importData:"Import Data",importing:"Importing...",clearSessions:"Clear Sessions",clearSessionsDescription:"Delete all chat sessions. This action cannot be undone.",clearAll:"Clear All",clearing:"Clearing...",importOptions:"Import Options",importOptionsDescription:"Choose how to handle existing data",skipDuplicates:"Skip duplicates",overwrite:"Overwrite existing",importResults:"Import Results",preferences:"Preferences",imported:"Imported",failed:"Failed",sessions:"Sessions",importedLabel:"imported",skipped:"skipped",documents:"Documents",errors:"Errors"},about:{title:"About",versionLabel:"Version",ollama:{title:"Ollama Status",version:"Version",healthy:"Healthy",unhealthy:"Unhealthy"},stats:{models:"Models",sessions:"Sessions"},features:{privacy:{title:"Privacy First",description:"Your data stays on your device"},openSource:{title:"Open Source",description:"Free and open source software"},localInference:{title:"Local Inference",description:"Run AI models locally with Ollama"}},openSourceBy:"Open source by {{company}}",links:{title:"Links",github:"GitHub",githubDescription:"View source code and contribute",website:"Website",websiteDescription:"Visit our website",ollama:"Ollama",ollamaDescription:"Learn more about Ollama",documentation:"Documentation",reportIssue:"Report Issues",reportIssueDescription:"Bug reports & feature requests"},version:"Version {{version}}"}},ql={title:"Models",subtitle:"Pull, manage, and monitor your Ollama models",installed:"Installed Models",available:"Available Models",pull:"Pull Model",pulling:"Pulling...",delete:"Delete Model",deleting:"Deleting...",size:"Size",modified:"Modified",family:"Family",parameters:"Parameters",quantization:"Quantization",noModels:"No models installed",pullFirst:"Pull a model to get started"},Jl={title:"Personas",create:"Create Persona",edit:"Edit Persona",delete:"Delete Persona",name:"Name",description:"Description",systemPrompt:"System Prompt",model:"Model",avatar:"Avatar",background:"Background",noPersonas:"No personas created",createFirst:"Create your first persona to customize your chat experience"},_l={title:"Gallery",subtitle:"Your AI-generated image gallery",imageCount:"{{count}} images",generate:"Generate Image",generateDescription:"Create images with AI",generating:"Generating...",prompt:"Prompt",promptPlaceholder:"Describe the image you want to generate...",noImages:"No images generated yet",download:"Download",delete:"Delete",regenerate:"Regenerate",model:"Model",size:"Size",quality:"Quality",created:"Created"},Yl={generic:"An error occurred",network:"Network error. Please check your connection.",unauthorized:"You are not authorized to perform this action.",notFound:"The requested resource was not found.",serverError:"Server error. Please try again later.",validation:"Please check your input and try again."},Zl={title:"Keyboard Shortcuts",toggleSidebar:"Toggle sidebar",openSettings:"Open settings",toggleDarkMode:"Toggle dark mode",showShortcuts:"Show keyboard shortcuts",closeModals:"Close modals",groups:{navigation:"Navigation",settings:"Settings",general:"General",chat:"Chat"},actions:{sendMessage:"Send message",newLine:"New line in message"},footer:"Press {{key1}} or {{key2}} to show this help",tooltip:"Keyboard shortcuts"},Xl={title:"Models",loading:"Loading models...",systemStatus:{online:"Ollama Online",offline:"Ollama Offline",models:"model",models_plural:"models",running:"running",vram:"VRAM"},sections:{pull:"Pull New Model",library:"Browse Library",huggingface:"HuggingFace Hub",running:"Running Models",local:"Local Models",advanced:"Advanced Actions"},pull:{placeholder:"Enter model name (e.g., llama3.2:3b, deepseek-r1:14b)",button:"Pull",cancel:"Cancel",popular:"Popular models:",browseAll:"Browse all models on ollama.com",success:"Model {{name}} pulled successfully",cancelled:"Model pull cancelled",failed:"Failed to pull model",enterName:"Please enter a model name"},progress:{starting:"Initializing...",pulling:"Downloading model...",verifying:"Verifying integrity...",writing:"Writing manifest...",cleaning:"Cleaning up..."},library:{available:"available",search:"Search models...",noResults:"No models found matching your criteria",installed:"Installed",more:"+{{count}} more",refresh:"Refresh Library"},huggingface:{browseAll:"Browse all on HuggingFace",checkingGguf:"Checking for GGUF files...",noGgufAvailable:"No GGUF files available for direct Ollama pull",ggufFilesCount:"GGUF Files ({{count}}) - Pull directly to Ollama",noModelsFound:"No models found",noResults:"No models found. Try adjusting your search or filters.",browseAllLink:"Browse all",search:"Search HuggingFace models...",by:"by",gated:"Gated",viewOnHF:"View on HuggingFace",sortDownloads:"Downloads",sortLikes:"Likes",sortRecent:"Recent",taskTextGeneration:"Text Generation",taskTextToSpeech:"Text to Speech",taskTextToImage:"Text to Image",taskSpeechRecognition:"Speech Recognition",tasks:{textGen:"Text Generation",tts:"Text to Speech",image:"Text to Image",stt:"Speech Recognition"},sort:{downloads:"Most Downloads",likes:"Most Liked",recent:"Recently Updated"}},local:{noModels:"No models installed yet",pullToStart:"Pull a model above to get started",installed:"installed",running:"Running",info:"Info",copy:"Copy",delete:"Delete",deleteConfirm:'Are you sure you want to delete model "{{name}}"?',deleteSuccess:"Model {{name}} deleted successfully",deleteFailed:"Failed to delete model"},advanced:{createModel:"Create Model",fromModelfile:"From Modelfile",copyModel:"Copy Model",duplicateExisting:"Duplicate existing",testEmbeddings:"Test Embeddings",generateVectors:"Generate vectors",healthCheck:"Health Check",testConnection:"Test connection",healthy:"Ollama is healthy!"},modals:{details:{title:"Model Details",info:"Model Information",family:"Family",parameters:"Parameters",quantization:"Quantization",format:"Format",systemPrompt:"System Prompt",template:"Template",license:"License",modelfile:"Modelfile",noDetails:"No details available"},copy:{title:"Copy Model",source:"Source Model",selectModel:"Select a model...",newName:"New Model Name",placeholder:"e.g., my-custom-model",copying:"Copying...",button:"Copy Model",success:"Model copied to {{name}}",failed:"Failed to copy model",enterBoth:"Please enter both source and destination names"},create:{title:"Create Custom Model",name:"Model Name",namePlaceholder:"e.g., my-assistant",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
8
|
+
SYSTEM You are a helpful assistant.`,docs:"Modelfile docs",docsLink:"for syntax reference",creating:"Creating...",button:"Create Model",success:"Model {{name}} created successfully",failed:"Failed to create model",enterBoth:"Please enter model name and Modelfile content"},embeddings:{title:"Test Embeddings",model:"Embedding Model",selectModel:"Select a model...",recommended:"Recommended: nomic-embed-text, mxbai-embed-large",input:"Input Text",placeholder:"Enter text to generate embeddings for...",generating:"Generating...",button:"Generate Embeddings",result:"Result ({{count}} dimensions)",success:"Generated {{count}}-dimensional embedding vector",failed:"Failed to generate embeddings",enterBoth:"Please select a model and enter text"}}},Ql={title:"Personas",subtitle:"Create and manage AI personas with custom personalities, memories, and behaviors",loading:"Loading personas...",createButton:"Create Persona",importExport:"Import/Export",stats:{title:"Your Personas",count:"{{count}} persona created",count_plural:"{{count}} personas created"},empty:{title:"No personas yet",description:"Create your first persona to get started with personalized AI interactions",button:"Create Your First Persona"},deleteConfirm:'Are you sure you want to delete "{{name}}"?',deleteSuccess:'Persona "{{name}}" deleted successfully',downloadSuccess:'Persona "{{name}}" downloaded successfully',failed:"Failed to {{action}} persona"},ed={title:{create:"Create New Persona",edit:"Edit Persona"},subtitle:{create:"Create a new AI persona with custom personality, memory systems, and adaptive learning capabilities",edit:"Customize your AI persona with advanced memory, adaptive learning, and intelligent parameters"},loading:"Loading form...",saved:"Saved",tabs:{basic:"Basic",parameters:"Parameters",memory:"Memory & Learning",advanced:"Advanced"},basic:{name:"Name",namePlaceholder:"Enter persona name",model:"Model",selectModel:"Select a model",description:"Description",descriptionPlaceholder:"Describe your persona...",systemPrompt:"System Prompt",systemPromptPlaceholder:"Enter the system prompt that defines your persona behavior...",systemPromptHint:"The system prompt defines how your persona will behave and respond."},parameters:{temperature:"Temperature",temperatureHint:"Controls creativity vs consistency",topP:"Top-P",topPHint:"Controls response diversity",topK:"Top-K",topKHint:"Limits vocabulary to top-k tokens",contextWindow:"Context Window",contextWindowHint:"Maximum conversation history length",maxTokens:"Max Tokens",maxTokensHint:"Maximum response length",repeatPenalty:"Repeat Penalty",repeatPenaltyHint:"Reduces repetitive responses"},memory:{title:"Memory System",subtitle:"Persona remembers conversations over time",enableHint:"Enable the memory system to let your persona remember conversations and build context over time.",loading:"Loading memory status...",noData:"No memory data yet",memories:"Memories",mbUsed:"MB Used",lastBackup:"Last Backup",never:"Never",maxMemories:"Maximum Memories",maxMemoriesHint:"How many memories this persona can store",retention:"Memory Retention",retentionHint:"Days to keep memories before cleanup",autoCleanup:"Auto-cleanup old memories",wipeAll:"Wipe All Memories",wipeCannot:"This cannot be undone",wipeButton:"Wipe",wiping:"Wiping...",wipeConfirm:"Are you sure you want to wipe all memories? This cannot be undone.",wipeSuccess:"Wiped {{count}} memories"},learning:{title:"Adaptive Learning",subtitle:"Persona evolves based on interactions",enableHint:"Enable adaptive learning to let your persona evolve and personalize responses based on your interactions.",speed:"Learning Speed",slow:"Slow",slowDesc:"Gradual changes",balanced:"Balanced",balancedDesc:"Moderate pace",fast:"Fast",fastDesc:"Quick adaptation",autoAdapt:"Auto-adapt to user preferences",whatLearns:"What the persona learns:",conversationTone:"Conversation tone",responseStyle:"Response style",userPreferences:"User preferences",topicInterests:"Topic interests"},advanced:{embeddingModel:"Embedding Model",embeddingHint:"Select the model used for memory encoding and semantic search. Embedding models are shown first, followed by other available models.",noModels:"No models found",embeddingModels:"Embedding Models",otherModels:"Other Models",installHint:"Install an embedding model:",recommended:"Recommended: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"About Advanced Settings",aboutDescription:"The embedding model is used by the memory system to understand semantic meaning and find relevant memories during conversations. Choose a model that matches your use case and available resources."},actions:{cancel:"Cancel",save:"Save",saving:"Saving...",saveClose:"Save & Close",create:"Create"},success:{created:"Persona created",updated:"Persona updated"},error:{saveFailed:"Failed to save"}},ad={enhanced:"Enhanced",systemPrompt:"System Prompt",memories:"memories",use:"Use",editTooltip:"Edit persona",downloadTooltip:"Download persona",backup:"Backup",exportDNA:"Export DNA",wipeMemories:"Wipe Memories",wipeConfirm:"Are you sure you want to wipe all memories for this persona? This action cannot be undone.",wipeSuccess:"Wiped {{count}} memories",backupSuccess:"Persona backup downloaded successfully",dnaSuccess:"Persona DNA exported successfully",failed:"Failed to {{action}}"},td={title:"User Management",subtitle:"Manage user accounts and permissions",loading:"Loading users...",createUser:"Create User",search:"Search users...",noUsers:"No users found",noUsersMatching:"No users matching your search",columns:{user:"User",email:"Email",role:"Role",created:"Created",actions:"Actions"},roles:{admin:"Admin",user:"User"},noEmail:"No email",deleteConfirm:'Are you sure you want to delete user "{{name}}"?',deleteSuccess:"User deleted successfully",deleteFailed:"Failed to delete user",cannotDeleteSelf:"You cannot delete your own account",form:{title:{create:"Create User",edit:"Edit User"},username:"Username",usernamePlaceholder:"Enter username",email:"Email",emailPlaceholder:"Enter email (optional)",password:"Password",passwordPlaceholder:"Enter password",passwordHint:"Leave blank to keep current password",role:"Role",creating:"Creating...",updating:"Updating...",createButton:"Create User",updateButton:"Update User",createSuccess:"User created successfully",updateSuccess:"User updated successfully",createFailed:"Failed to create user",updateFailed:"Failed to update user"}},nd={you:"You",assistant:"Assistant",system:"System",copy:"Copy",copyMessage:"Copy message",copied:"Copied!",regenerate:"Regenerate",regenerateResponse:"Regenerate response",edit:"Edit",editSystemMessage:"Edit system message",saveChanges:"Save changes",cancelEditing:"Cancel editing",delete:"Delete",deleteConfirm:"Delete this message?",branch:"Branch",speaking:"Speaking...",speakMessage:"Speak message",stopSpeaking:"Stop speaking",showMore:"Show more",showLess:"Show less",thinking:"Thinking",systemMessagePlaceholder:"Enter your system message...",fullSizeImage:"Full size image",startConversation:"Start a conversation",startConversationDescription:"Send a message to begin chatting with your AI assistant. Ask questions, get help with code, or have a natural conversation.",scrollToBottom:"Scroll to bottom",newMessages:"New messages"},rd={title:"Image Gallery",noImages:"No images yet",noImagesHint:"Generate your first image using the panel on the right",delete:"Delete",download:"Download",deleteConfirm:"Are you sure you want to delete this image?",deleteSuccess:"Image deleted",deleteFailed:"Failed to delete image",downloadFailed:"Failed to download image",loadMore:"Load More ({{current}} of {{total}})",loadFailed:"Failed to load gallery"},id={title:"Generate Image",prompt:"Prompt",promptPlaceholder:"Describe the image you want to create...",model:"Model",selectModel:"Select model",noModels:"No image generation models available",configurePlugin:"Configure a plugin with image generation support",size:"Size",quality:"Quality",style:"Style",generate:"Generate",generating:"Generating...",success:"Image generated successfully",failed:"Failed to generate image",enterPrompt:"Please enter a prompt",promptTooLong:"Prompt exceeds maximum length of {{max}} characters"},od={title:"Something went wrong",description:"We encountered an unexpected error. Please try refreshing the page.",tryAgain:"Refresh Page",goHome:"Go to Home",errorDetails:"Error Details (Development)"},sd={title:"Documents",upload:"Upload Document",uploading:"Uploading...",noDocuments:"No documents uploaded",uploadHint:"Upload documents to use in your conversations",delete:"Delete",deleteConfirm:"Are you sure you want to delete this document?",deleteSuccess:"Document deleted",deleteFailed:"Failed to delete document",uploadSuccess:"Document uploaded successfully",uploadFailed:"Failed to upload document",types:"Supported: PDF, TXT, MD, DOCX",unsupportedFileType:"Only PDF and TXT files are supported",fileSizeTooLarge:"File size must be less than 10MB",uploadSuccessWithName:'Document "{{name}}" uploaded successfully',removeSuccess:"Document removed successfully",removeFailed:"Failed to remove document",removeError:"An error occurred while removing the document",clickToUpload:"Click to upload",orDragAndDrop:"or drag and drop",fileTypesAndSize:"PDF or TXT files up to 10MB",uploadedDocuments:"Uploaded Documents",removeDocument:"Remove document"},ld={speak:"Speak",stop:"Stop",speaking:"Speaking...",generateFailed:"Failed to generate speech",playbackFailed:"Audio playback failed",stopSpeaking:"Stop speaking",generatingSpeech:"Generating speech...",readAloud:"Read aloud"},dd={title:"Artifacts",code:"Code",preview:"Preview",copy:"Copy code",copied:"Copied!",download:"Download",expand:"Expand",collapse:"Collapse",openInNewTab:"Open in new tab",invalidSvg:"Invalid SVG content",invalidJson:"Invalid JSON content",previewMode:"Preview mode",codeMode:"Code mode",copyContent:"Copy content",openInPanel:"Open in panel",openInNewWindow:"Open in new window",created:"Created",closePanelEsc:"Close panel (Esc)",copyButton:"Copy",open:"Open",dragEdgeToResize:"Drag edge to resize"},cd={title:"Import & Export Personas",description:"Export your personas to share them or import personas from others",exportPersonas:"Export Personas",importPersonas:"Import Personas",noPersonasToExport:"No personas to export",personasAvailable:"{{count}} persona available",personasAvailable_plural:"{{count}} personas available",exportAll:"Export All",uploadJsonFile:"Upload JSON File",pasteJsonLabel:"Paste JSON Data",pasteJsonPlaceholder:"Paste persona JSON data here...",importing:"Importing...",importButton:"Import Persona(s)",expectedFormat:"Expected JSON Format:",exportSuccess:'Persona "{{name}}" exported successfully',exportFailed:"Failed to export persona",exportAllSuccess:"All {{count}} personas exported successfully",exportAllFailed:"Failed to export personas",pasteJsonData:"Please paste the persona JSON data",importMultipleSuccess:"Successfully imported {{count}} personas",importMultipleFailed:"Failed to import {{count}} personas",importNoneFailed:"Failed to import any personas",importSuccess:"Persona imported successfully",importFailed:"Failed to import persona"},ud={common:Bl,brand:Kl,auth:Hl,setup:Rl,chat:Ul,sidebar:$l,user:Vl,settings:Wl,models:ql,personas:Jl,gallery:_l,errors:Yl,keyboard:Zl,modelManager:Xl,personaManager:Ql,personaForm:ed,personaCard:ad,userManager:td,chatMessage:nd,imageGallery:rd,imageGeneration:id,errorBoundary:od,documents:sd,ttsButton:ld,artifacts:dd,personaImportExport:cd},md={loading:"Cargando...",save:"Guardar",saving:"Guardando...",cancel:"Cancelar",delete:"Eliminar",edit:"Editar",close:"Cerrar",back:"Atrás",next:"Siguiente",confirm:"Confirmar",error:"Error",success:"Éxito",warning:"Advertencia",or:"o",optional:"opcional",enabled:"Habilitado",disabled:"Deshabilitado",on:"Activado",off:"Desactivado",yes:"Sí",no:"No",search:"Buscar",noResults:"No se encontraron resultados",retry:"Reintentar",refresh:"Actualizar",download:"Descargar",upload:"Subir",export:"Exportar",import:"Importar",reset:"Restablecer",apply:"Aplicar",clear:"Limpiar",all:"Todos",none:"Ninguno",default:"Predeterminado",custom:"Personalizado",mode:"Modo",multiUser:"Multiusuario",remove:"Quitar"},pd={name:"Libre WebUI",shortName:"Libre"},gd={login:{title:"Bienvenido de nuevo",subtitle:"Inicia sesión en tu cuenta para continuar",username:"Nombre de usuario",usernamePlaceholder:"Ingresa tu nombre de usuario",password:"Contraseña",passwordPlaceholder:"Ingresa tu contraseña",signIn:"Iniciar sesión",signingIn:"Iniciando sesión...",noAccount:"¿No tienes una cuenta?",signUpHere:"Regístrate aquí",loginSuccess:"¡Inicio de sesión exitoso!",loginFailed:"Error de inicio de sesión",checkCredentials:"Error de inicio de sesión. Por favor verifica tus credenciales.",enterBoth:"Por favor ingresa usuario y contraseña",githubSuccess:"¡Inicio de sesión con GitHub exitoso!",githubFailed:"Autenticación de GitHub fallida",githubVerifyFailed:"Error al verificar autenticación de GitHub"},signup:{title:"Crear cuenta",subtitle:"Regístrate para una nueva cuenta",username:"Nombre de usuario",usernamePlaceholder:"Elige un nombre de usuario",email:"Correo electrónico",emailPlaceholder:"tu@correo.com",password:"Contraseña",passwordPlaceholder:"Elige una contraseña",confirmPassword:"Confirmar contraseña",confirmPasswordPlaceholder:"Confirma tu contraseña",createAccount:"Crear cuenta",creatingAccount:"Creando cuenta...",hasAccount:"¿Ya tienes una cuenta?",signInHere:"Inicia sesión aquí",signupSuccess:"¡Cuenta creada exitosamente!",signupFailed:"Error en el registro",tryAgain:"Error en el registro. Por favor intenta de nuevo.",usernameRequired:"Nombre de usuario y contraseña son obligatorios",passwordMismatch:"Las contraseñas no coinciden",passwordTooShort:"La contraseña debe tener al menos 6 caracteres"},logout:{button:"Cerrar sesión",success:"Sesión cerrada exitosamente"},oauth:{continueWith:"Continuar con {{provider}}",connectingTo:"Conectando a {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hd={welcome:{title:"Bienvenido a Libre WebUI",subtitle:"Comencemos",description:"Configura tu instancia de Libre WebUI en solo unos pasos",createAdmin:"Crear cuenta de administrador",features:{secure:{title:"Seguro y privado",description:"Tus conversaciones permanecen en tu dispositivo"},fast:{title:"Rápido y responsivo",description:"Optimizado para velocidad y rendimiento"},openSource:{title:"Código abierto",description:"Software libre y de código abierto"}}},admin:{title:"Crear cuenta de administrador",subtitle:"Configuración del administrador",description:"Crea la primera cuenta de administrador para tu instancia de Libre WebUI",usernamePlaceholder:"Ingresa nombre de usuario admin",passwordPlaceholder:"Ingresa contraseña (mín. 6 caracteres)",confirmPlaceholder:"Confirma tu contraseña",creating:"Creando...",createAdmin:"Crear admin",success:"¡Cuenta de administrador creada exitosamente!",failed:"Error al crear cuenta de administrador",fillAllFields:"Por favor completa todos los campos",note:"Esta será la cuenta de administrador principal para tu instancia de Libre WebUI"},encryptionKey:{title:"Guarda tu clave de cifrado",subtitle:"Importante: Guarda esta clave",description:"Esta clave de cifrado protege tus datos sensibles. Guárdala de forma segura - la necesitarás si alguna vez necesitas restaurar tu base de datos.",warning:"Advertencia",warningText:"Si pierdes esta clave y necesitas restaurar tu base de datos, tus datos cifrados (claves API, preferencias) serán irrecuperables.",label:"Tu clave de cifrado",loading:"Cargando...",copyToClipboard:"Copiar al portapapeles",copied:"¡Clave de cifrado copiada al portapapeles!",copyFailed:"Error al copiar la clave al portapapeles",envNote:"Esta clave también está guardada en tu archivo backend/.env como ENCRYPTION_KEY",acknowledgment:"He guardado mi clave de cifrado en un lugar seguro y entiendo que perderla puede resultar en pérdida de datos.",confirmRequired:"Por favor confirma que has guardado la clave de cifrado",continue:"Continuar a Libre WebUI"}},bd={greeting:{morning:"Buenos días",afternoon:"Buenas tardes",evening:"Buenas tardes",night:"Buenas noches"},welcome:{helpToday:"¿En qué puedo ayudarte hoy?",helpTonight:"¿En qué puedo ayudarte esta noche?"},input:{placeholder:"Enviar un mensaje",messagePlaceholder:"Mensaje...",attachImages:"Adjuntar imágenes",attachments:"Adjuntos y funciones avanzadas",sendMessage:"Enviar mensaje",stopGeneration:"Detener generación"},session:{new:"Nuevo chat",private:"Privado",privateMode:"Modo privado",privateDescription:"Esta conversación no se guardará",privateTooltip:"Iniciar una conversación privada que no se guardará",deleteConfirm:"¿Estás seguro de que deseas eliminar este chat?",generatingTitle:"Generando título",noChats:"Aún no hay chats",createFirst:"Crea tu primer chat arriba",chats:"Chats",renameChat:"Renombrar chat",deleteChat:"Eliminar chat"},persona:{applied:"Persona aplicada",label:"Persona"},model:{updated:"Modelo actualizado",noModels:"No hay modelos disponibles",noModelsDescription:"No hay modelos disponibles. Asegúrate de que Ollama esté ejecutándose y tenga modelos instalados.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"No hay modelos disponibles. Asegúrate de que Ollama esté ejecutándose y los modelos estén instalados."},footer:{disclaimer:"Los LLM pueden cometer errores - verifica la información importante",images:"{{count}} imagen",images_plural:"{{count}} imágenes",structuredOutput:"Salida estructurada"},mediaUpload:{dropImagesHere:"Arrastra imágenes aquí o",supportedFormats:"Soporta: JPG, PNG, GIF, WebP (máx. 10 MB cada una)",browse:"explorar"},structuredOutput:{title:"Formato de respuesta",none:"Ninguno (lenguaje natural)",noneDescription:"Respuesta predeterminada en lenguaje natural",json:"JSON",jsonDescription:"Formato JSON estructurado",list:"Lista",listDescription:"Array de elementos",summary:"Resumen",summaryDescription:"Resumen de documento con puntos clave",analysis:"Análisis",analysisDescription:"Análisis estructurado con pros/contras",custom:"Esquema personalizado",customDescription:"Define tu propio esquema JSON",customSchema:"Esquema JSON personalizado",schemaPreview:"Vista previa del esquema",applySchema:"Aplicar esquema",cancel:"Cancelar",enabled:"Salida estructurada habilitada"}},kd={navigation:{chat:"Chat",models:"Modelos",personas:"Personas",imagine:"Generar",settings:"Configuración",userManagement:"Gestión de usuarios",signOut:"Cerrar sesión"},toggleSize:"Cambiar tamaño de barra lateral",expandSidebar:"Expandir barra lateral"},fd={menu:{changePicture:"Cambiar imagen",settings:"Configuración",userManagement:"Gestión de usuarios",logout:"Cerrar sesión"},avatar:{title:"Cambiar imagen de perfil",updated:"Imagen de perfil actualizada",updateFailed:"Error al actualizar imagen de perfil",saving:"Guardando..."},profile:{noEmail:"Sin correo electrónico"}},yd=JSON.parse('{"title":"Configuración","tabs":{"appearance":"Apariencia","model":"Modelo","systemMessage":"Mensaje del sistema","plugins":"Plugins","generation":"Generación","documents":"Documentos","tts":"Texto a voz","imageGen":"Generación de imágenes","data":"Datos","about":"Acerca de"},"appearance":{"title":"Apariencia","language":{"title":"Idioma","description":"Selecciona tu idioma preferido"},"theme":{"title":"Tema","light":"Claro","dark":"Oscuro","amoled":"Negro Puro","system":"Sistema"},"chatInterface":{"title":"Interfaz de chat","showUsername":"Mostrar nombre de usuario","showUsernameDescription":"Mostrar nombre de usuario en mensajes de chat"},"background":{"title":"Imagen de fondo","enable":"Habilitar imagen de fondo","enableDescription":"Mostrar fondo personalizado con efecto de desenfoque","blur":"Desenfoque","opacity":"Opacidad","upload":"Subir imagen de fondo","dragDrop":"Arrastra una imagen o haz clic para explorar","chooseImage":"Elegir imagen"}},"saveSettings":"Guardar configuración","model":{"title":"Configuración del modelo","defaultModel":"Modelo predeterminado","defaultModelDescription":"Este modelo se usará por defecto para nuevas conversaciones","selectModel":"Seleccionar un modelo","updateAll":"Actualizar todos los modelos","updateAllDescription":"Buscar actualizaciones y descargar las últimas versiones de todos los modelos instalados","updateAllButton":"Actualizar todos","updating":"Actualizando modelos...","currentModelInfo":"Info del modelo actual","name":"Nombre","size":"Tamaño","family":"Familia","format":"Formato","status":"Estado","statusStarting":"Iniciando...","statusComplete":"Completado","statusError":"Error","bulkOperations":"Operaciones masivas","autoTitle":{"title":"Generación automática de títulos","enable":"Habilitar título automático","enableDescription":"Generar automáticamente títulos para nuevas conversaciones","taskModel":"Modelo de tarea","selectTaskModel":"Seleccionar modelo de tarea","taskModelDescription":"Modelo usado para generar títulos de conversación"},"persona":"Persona"},"systemMessage":{"title":"Mensaje del sistema","description":"Establece un mensaje de sistema personalizado que se usará para todas las nuevas conversaciones.","placeholder":"Ingresa un mensaje del sistema...","saved":"Mensaje del sistema guardado","saveFailed":"Error al guardar mensaje del sistema"},"plugins":{"title":"Plugins","description":"Gestiona tus plugins instalados","addNew":"Agregar nuevo plugin","upload":"Subir plugin","addJson":"Agregar JSON","uploading":"Subiendo...","jsonPlaceholder":"Pega la configuración JSON del plugin...","install":"Instalar plugin","noPlugins":"No hay plugins instalados","noPluginsDescription":"Agrega un plugin para extender funcionalidades","loading":"Cargando plugins...","installed":"Plugins instalados","active":"Plugins activos","activeLabel":"Activo","inactive":"Inactivo","activate":"Activar","deactivate":"Desactivar","models":"modelos","apiKeySet":"Clave API establecida","apiKeyConfiguration":"Configuración de clave API","apiKeyEnvAlternative":"Alternativamente, establece la","environmentVariable":"variable de entorno","apiKeyConfigured":"Clave API configurada","apiKeyPlaceholder":"Ingresa tu clave API...","saveApiKey":"Guardar clave API","apiKey":{"title":"Clave API","placeholder":"Ingresa clave API","save":"Guardar clave","remove":"Eliminar clave","configured":"Clave API configurada","notConfigured":"Clave API requerida","saved":"Clave API guardada exitosamente","removed":"Clave API eliminada","saveFailed":"Error al guardar clave API","removeFailed":"Error al eliminar clave API","enterKey":"Por favor ingresa una clave API"}},"generation":{"title":"Opciones de generación","description":"Configura cómo la IA genera respuestas","coreParameters":"Parámetros principales","temperature":"Temperatura","temperatureDescription":"Controla la aleatoriedad. Valores más bajos son más enfocados, más altos más creativos.","topP":"Top P","topPDescription":"Controla la diversidad mediante muestreo de núcleo. Valores más bajos se enfocan en tokens probables.","topK":"Top K","topKDescription":"Limita la selección de tokens a los K más probables. Establece en 0 para deshabilitar.","minP":"Min P","minPDescription":"Umbral mínimo de probabilidad para selección de tokens.","generationControl":"Control de generación","maxTokens":"Tokens máximos","maxTokensDescription":"Número máximo de tokens a generar en la respuesta.","repeatPenalty":"Penalización de repetición","repeatPenaltyDescription":"Penaliza tokens repetidos. Valores más altos reducen la repetición.","contextLength":"Longitud de contexto","contextLengthDescription":"Tamaño máximo de ventana de contexto para conversaciones.","seed":"Semilla","optional":"opcional","random":"Aleatorio","seedDescription":"Establece una semilla específica para salidas reproducibles.","advancedOptions":"Opciones avanzadas","presencePenalty":"Penalización de presencia","presencePenaltyDescription":"Penaliza tokens que aparecen en el contexto.","frequencyPenalty":"Penalización de frecuencia","frequencyPenaltyDescription":"Penaliza tokens usados frecuentemente.","stopSequences":"Secuencias de parada","commaSeparated":"separadas por comas","stopSequencesDescription":"Tokens personalizados que detendrán la generación cuando se encuentren.","resetDefaults":"Restablecer predeterminados","saveOptions":"Guardar opciones","embeddingSettings":"Configuración de embeddings","enableEmbeddings":"Habilitar embeddings de documentos"},"documents":{"title":"Configuración de documentos","embeddings":{"title":"Embeddings","enable":"Habilitar embeddings de documentos","model":"Modelo de embedding","modelDescription":"Selecciona el modelo usado para embedding de documentos","chunkSize":"Tamaño de chunk","chunkSizeInTokens":"(en tokens)","chunkSizeDescription":"Tamaño de los chunks de texto para embedding","chunkOverlap":"Superposición de chunks","chunkOverlapInTokens":"(en tokens)","chunkOverlapDescription":"Superposición entre chunks consecutivos","similarityThreshold":"Umbral de similitud","similarityDescription":"Puntuación mínima de similitud para incluir resultados","status":"Estado de embedding","statusLabel":"Estado","available":"Disponible","unavailable":"No disponible","chunksWithEmbeddings":"Chunks con embeddings","coverage":"Cobertura","regenerate":"Regenerar embeddings","regenerating":"Regenerando..."}},"tts":{"title":"Texto a voz","description":"Configura ajustes de texto a voz para leer mensajes en voz alta","loadingProviders":"Cargando proveedores TTS...","noProviders":"Sin proveedores TTS","noProvidersDescription":"Configura un plugin con soporte TTS para habilitar texto a voz","enable":"Habilitar TTS","enableDescription":"Permitir texto a voz para mensajes del asistente","autoPlay":"Reproducción automática","autoPlayDescription":"Leer automáticamente nuevos mensajes del asistente en voz alta","streamSentences":"Transmitir oraciones","streamSentencesDescription":"Reproducir audio oración por oración en lugar de esperar el mensaje completo. Recomendado para TTS local para evitar tiempos de espera en mensajes largos.","voiceConfiguration":"Configuración de voz","model":"Modelo TTS","modelDescription":"Selecciona el modelo para generación de texto a voz","voice":"Voz","selectVoice":"Selecciona una voz","voiceDescription":"Elige la voz para texto a voz","speed":"Velocidad","speedSlow":"0,5x","speedNormal":"1,0x","speedFast":"2,0x","availableProviders":"Proveedores disponibles","models":"modelos","test":"Probar","testing":"Probando...","stop":"Detener"},"imageGen":{"title":"Generación de imágenes","description":"Configura ajustes y proveedores de generación de imágenes","loadingProviders":"Cargando proveedores de generación de imágenes...","noProviders":"Sin proveedores de generación de imágenes","noProvidersDescription":"Configura un plugin con soporte de generación de imágenes","enable":"Habilitar generación de imágenes","enableDescription":"Permitir generación de imágenes con IA en conversaciones","configuration":"Configuración","model":"Modelo","modelDescription":"Selecciona el modelo para generación de imágenes","size":"Tamaño","sizeDescription":"Resolución de imágenes generadas","quality":"Calidad","qualityDescription":"Nivel de calidad de imágenes generadas","style":"Estilo","styleDescription":"Preajuste de estilo para imágenes generadas","availableProviders":"Proveedores disponibles","models":"modelos"},"data":{"title":"Gestión de datos","export":"Exportar datos","exportDescription":"Descarga todos tus datos incluyendo preferencias, sesiones y documentos.","exportAll":"Exportar todos los datos","import":"Importar datos","importDescription":"Importa datos de una exportación anterior.","importData":"Importar datos","importing":"Importando...","clearSessions":"Limpiar sesiones","clearSessionsDescription":"Eliminar todas las sesiones de chat. Esta acción no se puede deshacer.","clearAll":"Limpiar todo","clearing":"Limpiando...","importOptions":"Opciones de importación","importOptionsDescription":"Elige cómo manejar datos existentes","skipDuplicates":"Omitir duplicados","overwrite":"Sobrescribir existentes","importResults":"Resultados de importación","preferences":"Preferencias","imported":"Importado","failed":"Fallido","sessions":"Sesiones","importedLabel":"importado","skipped":"omitido","documents":"Documentos","errors":"Errores"},"about":{"title":"Acerca de","versionLabel":"Versión","ollama":{"title":"Estado de Ollama","version":"Versión","healthy":"Saludable","unhealthy":"No saludable"},"stats":{"models":"Modelos","sessions":"Sesiones"},"features":{"privacy":{"title":"Privacidad primero","description":"Tus datos permanecen en tu dispositivo"},"openSource":{"title":"Código abierto","description":"Software libre y de código abierto"},"localInference":{"title":"Inferencia local","description":"Ejecuta modelos de IA localmente con Ollama"}},"openSourceBy":"Código abierto por {{company}}","links":{"title":"Enlaces","github":"GitHub","githubDescription":"Ver código fuente y contribuir","website":"Sitio web","websiteDescription":"Visita nuestro sitio web","ollama":"Ollama","ollamaDescription":"Aprende más sobre Ollama","documentation":"Documentación","reportIssue":"Reportar problemas","reportIssueDescription":"Reportes de bugs y solicitudes de funciones"},"version":"Versión {{version}}"}}'),vd={title:"Modelos",subtitle:"Descarga, gestiona y monitorea tus modelos de Ollama",installed:"Modelos instalados",available:"Modelos disponibles",pull:"Descargar modelo",pulling:"Descargando...",delete:"Eliminar modelo",deleting:"Eliminando...",size:"Tamaño",modified:"Modificado",family:"Familia",parameters:"Parámetros",quantization:"Cuantización",noModels:"No hay modelos instalados",pullFirst:"Descarga un modelo para comenzar"},xd={title:"Personas",create:"Crear persona",edit:"Editar persona",delete:"Eliminar persona",name:"Nombre",description:"Descripción",systemPrompt:"Prompt del sistema",model:"Modelo",avatar:"Avatar",background:"Fondo",noPersonas:"No hay personas creadas",createFirst:"Crea tu primera persona para personalizar tu experiencia de chat"},Sd={title:"Galería",subtitle:"Tu galería de imágenes generadas por IA",imageCount:"{{count}} imágenes",generate:"Generar imagen",generateDescription:"Crea imágenes con IA",generating:"Generando...",prompt:"Prompt",promptPlaceholder:"Describe la imagen que quieres generar...",noImages:"Aún no hay imágenes generadas",download:"Descargar",delete:"Eliminar",regenerate:"Regenerar",model:"Modelo",size:"Tamaño",quality:"Calidad",created:"Creado"},wd={generic:"Ocurrió un error",network:"Error de red. Por favor verifica tu conexión.",unauthorized:"No estás autorizado para realizar esta acción.",notFound:"El recurso solicitado no fue encontrado.",serverError:"Error del servidor. Por favor intenta más tarde.",validation:"Por favor verifica tu entrada e intenta de nuevo."},Pd={title:"Atajos de teclado",toggleSidebar:"Alternar barra lateral",openSettings:"Abrir configuración",toggleDarkMode:"Alternar modo oscuro",showShortcuts:"Mostrar atajos de teclado",closeModals:"Cerrar modales",groups:{navigation:"Navegación",settings:"Configuración",general:"General",chat:"Chat"},actions:{sendMessage:"Enviar mensaje",newLine:"Nueva línea en mensaje"},footer:"Presiona {{key1}} o {{key2}} para mostrar esta ayuda",tooltip:"Atajos de teclado"},Md={title:"Modelos",loading:"Cargando modelos...",systemStatus:{online:"Ollama en línea",offline:"Ollama sin conexión",models:"modelo",models_plural:"modelos",running:"ejecutándose",vram:"VRAM"},sections:{pull:"Descargar nuevo modelo",library:"Explorar biblioteca",running:"Modelos en ejecución",local:"Modelos locales",advanced:"Acciones avanzadas",huggingface:"HuggingFace Hub"},pull:{placeholder:"Ingresa nombre del modelo (ej. llama3.2:3b, deepseek-r1:14b)",button:"Descargar",cancel:"Cancelar",popular:"Modelos populares:",browseAll:"Explorar todos los modelos en ollama.com",success:"Modelo {{name}} descargado exitosamente",cancelled:"Descarga de modelo cancelada",failed:"Error al descargar modelo",enterName:"Por favor ingresa un nombre de modelo"},progress:{starting:"Inicializando...",pulling:"Descargando modelo...",verifying:"Verificando integridad...",writing:"Escribiendo manifiesto...",cleaning:"Limpiando..."},library:{available:"disponible",search:"Buscar modelos...",noResults:"No se encontraron modelos que coincidan con tu criterio",installed:"Instalado",more:"+{{count}} más",refresh:"Actualizar biblioteca"},local:{noModels:"Aún no hay modelos instalados",pullToStart:"Descarga un modelo arriba para comenzar",installed:"instalado",running:"Ejecutándose",info:"Info",copy:"Copiar",delete:"Eliminar",deleteConfirm:'¿Estás seguro de que deseas eliminar el modelo "{{name}}"?',deleteSuccess:"Modelo {{name}} eliminado exitosamente",deleteFailed:"Error al eliminar modelo"},advanced:{createModel:"Crear modelo",fromModelfile:"Desde Modelfile",copyModel:"Copiar modelo",duplicateExisting:"Duplicar existente",testEmbeddings:"Probar embeddings",generateVectors:"Generar vectores",healthCheck:"Verificación de salud",testConnection:"Probar conexión",healthy:"¡Ollama está saludable!"},modals:{details:{title:"Detalles del modelo",info:"Información del modelo",family:"Familia",parameters:"Parámetros",quantization:"Cuantización",format:"Formato",systemPrompt:"Prompt del sistema",template:"Plantilla",license:"Licencia",modelfile:"Modelfile",noDetails:"Sin detalles disponibles"},copy:{title:"Copiar modelo",source:"Modelo origen",selectModel:"Selecciona un modelo...",newName:"Nuevo nombre de modelo",placeholder:"ej. mi-modelo-personalizado",copying:"Copiando...",button:"Copiar modelo",success:"Modelo copiado a {{name}}",failed:"Error al copiar modelo",enterBoth:"Por favor ingresa nombres de origen y destino"},create:{title:"Crear modelo personalizado",name:"Nombre del modelo",namePlaceholder:"ej. mi-asistente",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
9
|
+
SYSTEM Eres un asistente útil.`,docs:"Documentación de Modelfile",docsLink:"para referencia de sintaxis",creating:"Creando...",button:"Crear modelo",success:"Modelo {{name}} creado exitosamente",failed:"Error al crear modelo",enterBoth:"Por favor ingresa nombre del modelo y contenido del Modelfile"},embeddings:{title:"Probar embeddings",model:"Modelo de embedding",selectModel:"Selecciona un modelo...",recommended:"Recomendados: nomic-embed-text, mxbai-embed-large",input:"Texto de entrada",placeholder:"Ingresa texto para generar embeddings...",generating:"Generando...",button:"Generar embeddings",result:"Resultado ({{count}} dimensiones)",success:"Vector de embedding de {{count}} dimensiones generado",failed:"Error al generar embeddings",enterBoth:"Por favor selecciona un modelo e ingresa texto"}},huggingface:{browseAll:"Ver todo en HuggingFace",checkingGguf:"Buscando archivos GGUF...",noGgufAvailable:"No hay archivos GGUF disponibles para Ollama",ggufFilesCount:"Archivos GGUF ({{count}}) - Descargar a Ollama",noModelsFound:"No se encontraron modelos",noResults:"No se encontraron modelos. Intenta ajustar tu búsqueda o filtros.",browseAllLink:"Ver todo",search:"Buscar modelos en HuggingFace...",by:"por",gated:"Acceso restringido",viewOnHF:"Ver en HuggingFace",sortDownloads:"Descargas",sortLikes:"Me gusta",sortRecent:"Reciente",taskTextGeneration:"Generación de texto",taskTextToSpeech:"Texto a voz",taskTextToImage:"Texto a imagen",taskSpeechRecognition:"Reconocimiento de voz",tasks:{textGen:"Generación de texto",tts:"Texto a voz",image:"Texto a imagen",stt:"Reconocimiento de voz"},sort:{downloads:"Más descargados",likes:"Más gustados",recent:"Actualizados recientemente"}}},Dd={title:"Personas",subtitle:"Crea y gestiona personas de IA con personalidades, memorias y comportamientos personalizados",loading:"Cargando personas...",createButton:"Crear persona",importExport:"Importar/Exportar",stats:{title:"Tus personas",count:"{{count}} persona creada",count_plural:"{{count}} personas creadas"},empty:{title:"Aún no hay personas",description:"Crea tu primera persona para comenzar con interacciones de IA personalizadas",button:"Crear tu primera persona"},deleteConfirm:'¿Estás seguro de que deseas eliminar "{{name}}"?',deleteSuccess:'Persona "{{name}}" eliminada exitosamente',downloadSuccess:'Persona "{{name}}" descargada exitosamente',failed:"Error al {{action}} persona"},Ad={title:{create:"Crear nueva persona",edit:"Editar persona"},subtitle:{create:"Crea una nueva persona de IA con personalidad personalizada, sistemas de memoria y capacidades de aprendizaje adaptativo",edit:"Personaliza tu persona de IA con memoria avanzada, aprendizaje adaptativo y parámetros inteligentes"},loading:"Cargando formulario...",saved:"Guardado",tabs:{basic:"Básico",parameters:"Parámetros",memory:"Memoria y aprendizaje",advanced:"Avanzado"},basic:{name:"Nombre",namePlaceholder:"Ingresa nombre de persona",model:"Modelo",selectModel:"Selecciona un modelo",description:"Descripción",descriptionPlaceholder:"Describe tu persona...",systemPrompt:"Prompt del sistema",systemPromptPlaceholder:"Ingresa el prompt del sistema que define el comportamiento de tu persona...",systemPromptHint:"El prompt del sistema define cómo se comportará y responderá tu persona."},parameters:{temperature:"Temperatura",temperatureHint:"Controla creatividad vs consistencia",topP:"Top-P",topPHint:"Controla diversidad de respuesta",topK:"Top-K",topKHint:"Limita vocabulario a los top-k tokens",contextWindow:"Ventana de contexto",contextWindowHint:"Longitud máxima del historial de conversación",maxTokens:"Tokens máximos",maxTokensHint:"Longitud máxima de respuesta",repeatPenalty:"Penalización de repetición",repeatPenaltyHint:"Reduce respuestas repetitivas"},memory:{title:"Sistema de memoria",subtitle:"La persona recuerda conversaciones a lo largo del tiempo",enableHint:"Habilita el sistema de memoria para que tu persona recuerde conversaciones y construya contexto a lo largo del tiempo.",loading:"Cargando estado de memoria...",noData:"Aún no hay datos de memoria",memories:"Memorias",mbUsed:"MB usados",lastBackup:"Última copia de seguridad",never:"Nunca",maxMemories:"Memorias máximas",maxMemoriesHint:"Cuántas memorias puede almacenar esta persona",retention:"Retención de memoria",retentionHint:"Días para mantener memorias antes de limpiar",autoCleanup:"Limpieza automática de memorias antiguas",wipeAll:"Borrar todas las memorias",wipeCannot:"Esto no se puede deshacer",wipeButton:"Borrar",wiping:"Borrando...",wipeConfirm:"¿Estás seguro de que deseas borrar todas las memorias? Esto no se puede deshacer.",wipeSuccess:"Se borraron {{count}} memorias"},learning:{title:"Aprendizaje adaptativo",subtitle:"La persona evoluciona basándose en interacciones",enableHint:"Habilita el aprendizaje adaptativo para que tu persona evolucione y personalice respuestas basándose en tus interacciones.",speed:"Velocidad de aprendizaje",slow:"Lento",slowDesc:"Cambios graduales",balanced:"Equilibrado",balancedDesc:"Ritmo moderado",fast:"Rápido",fastDesc:"Adaptación rápida",autoAdapt:"Auto-adaptar a preferencias del usuario",whatLearns:"Lo que aprende la persona:",conversationTone:"Tono de conversación",responseStyle:"Estilo de respuesta",userPreferences:"Preferencias del usuario",topicInterests:"Intereses en temas"},advanced:{embeddingModel:"Modelo de embedding",embeddingHint:"Selecciona el modelo usado para codificación de memoria y búsqueda semántica. Los modelos de embedding se muestran primero, seguidos de otros modelos disponibles.",noModels:"No se encontraron modelos",embeddingModels:"Modelos de embedding",otherModels:"Otros modelos",installHint:"Instala un modelo de embedding:",recommended:"Recomendados: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Acerca de configuración avanzada",aboutDescription:"El modelo de embedding es usado por el sistema de memoria para entender significado semántico y encontrar memorias relevantes durante conversaciones. Elige un modelo que coincida con tu caso de uso y recursos disponibles."},actions:{cancel:"Cancelar",save:"Guardar",saving:"Guardando...",saveClose:"Guardar y cerrar",create:"Crear"},success:{created:"Persona creada",updated:"Persona actualizada"},error:{saveFailed:"Error al guardar"}},zd={enhanced:"Mejorado",systemPrompt:"Prompt del sistema",memories:"memorias",use:"Usar",editTooltip:"Editar persona",downloadTooltip:"Descargar persona",backup:"Copia de seguridad",exportDNA:"Exportar ADN",wipeMemories:"Borrar memorias",wipeConfirm:"¿Estás seguro de que deseas borrar todas las memorias de esta persona? Esta acción no se puede deshacer.",wipeSuccess:"Se borraron {{count}} memorias",backupSuccess:"Copia de seguridad de persona descargada exitosamente",dnaSuccess:"ADN de persona exportado exitosamente",failed:"Error al {{action}}"},jd={title:"Gestión de usuarios",subtitle:"Gestiona cuentas de usuario y permisos",loading:"Cargando usuarios...",createUser:"Crear usuario",search:"Buscar usuarios...",noUsers:"No se encontraron usuarios",noUsersMatching:"No hay usuarios que coincidan con tu búsqueda",columns:{user:"Usuario",email:"Correo electrónico",role:"Rol",created:"Creado",actions:"Acciones"},roles:{admin:"Admin",user:"Usuario"},noEmail:"Sin correo",deleteConfirm:'¿Estás seguro de que deseas eliminar el usuario "{{name}}"?',deleteSuccess:"Usuario eliminado exitosamente",deleteFailed:"Error al eliminar usuario",cannotDeleteSelf:"No puedes eliminar tu propia cuenta",form:{title:{create:"Crear usuario",edit:"Editar usuario"},username:"Nombre de usuario",usernamePlaceholder:"Ingresa nombre de usuario",email:"Correo electrónico",emailPlaceholder:"Ingresa correo (opcional)",password:"Contraseña",passwordPlaceholder:"Ingresa contraseña",passwordHint:"Deja en blanco para mantener contraseña actual",role:"Rol",creating:"Creando...",updating:"Actualizando...",createButton:"Crear usuario",updateButton:"Actualizar usuario",createSuccess:"Usuario creado exitosamente",updateSuccess:"Usuario actualizado exitosamente",createFailed:"Error al crear usuario",updateFailed:"Error al actualizar usuario"}},Td={you:"Tú",assistant:"Asistente",system:"Sistema",copy:"Copiar",copyMessage:"Copiar mensaje",copied:"¡Copiado!",regenerate:"Regenerar",regenerateResponse:"Regenerar respuesta",edit:"Editar",editSystemMessage:"Editar mensaje del sistema",saveChanges:"Guardar cambios",cancelEditing:"Cancelar edición",delete:"Eliminar",deleteConfirm:"¿Eliminar este mensaje?",branch:"Ramificar",speaking:"Hablando...",speakMessage:"Leer mensaje",stopSpeaking:"Detener lectura",showMore:"Mostrar más",showLess:"Mostrar menos",thinking:"Pensando",systemMessagePlaceholder:"Ingresa tu mensaje del sistema...",fullSizeImage:"Imagen a tamaño completo",startConversation:"Iniciar una conversación",startConversationDescription:"Envía un mensaje para comenzar a chatear con tu asistente de IA. Haz preguntas, obtén ayuda con código o mantén una conversación natural.",scrollToBottom:"Desplazar al final",newMessages:"Nuevos mensajes"},Nd={title:"Galería de imágenes",noImages:"Aún no hay imágenes",noImagesHint:"Genera tu primera imagen usando el panel de la derecha",delete:"Eliminar",download:"Descargar",deleteConfirm:"¿Estás seguro de que deseas eliminar esta imagen?",deleteSuccess:"Imagen eliminada",deleteFailed:"Error al eliminar imagen",downloadFailed:"Error al descargar imagen",loadMore:"Cargar más ({{current}} de {{total}})",loadFailed:"Error al cargar galería"},Id={title:"Generar imagen",prompt:"Prompt",promptPlaceholder:"Describe la imagen que quieres crear...",model:"Modelo",selectModel:"Seleccionar modelo",noModels:"No hay modelos de generación de imágenes disponibles",configurePlugin:"Configura un plugin con soporte de generación de imágenes",size:"Tamaño",quality:"Calidad",style:"Estilo",generate:"Generar",generating:"Generando...",success:"Imagen generada exitosamente",failed:"Error al generar imagen",enterPrompt:"Por favor ingresa un prompt",promptTooLong:"El prompt excede la longitud máxima de {{max}} caracteres"},Cd={title:"Algo salió mal",description:"Encontramos un error inesperado. Por favor intenta actualizar la página.",tryAgain:"Actualizar página",goHome:"Ir al inicio",errorDetails:"Detalles del error (desarrollo)"},Fd={title:"Documentos",upload:"Subir documento",uploading:"Subiendo...",noDocuments:"No hay documentos subidos",uploadHint:"Sube documentos para usar en tus conversaciones",delete:"Eliminar",deleteConfirm:"¿Estás seguro de que deseas eliminar este documento?",deleteSuccess:"Documento eliminado",deleteFailed:"Error al eliminar documento",uploadSuccess:"Documento subido exitosamente",uploadFailed:"Error al subir documento",types:"Soportados: PDF, TXT, MD, DOCX",unsupportedFileType:"Solo se soportan archivos PDF y TXT",fileSizeTooLarge:"El tamaño del archivo debe ser menor a 10 MB",uploadSuccessWithName:'Documento "{{name}}" subido exitosamente',removeSuccess:"Documento eliminado exitosamente",removeFailed:"Error al eliminar documento",removeError:"Ocurrió un error al eliminar el documento",clickToUpload:"Haz clic para subir",orDragAndDrop:"o arrastra y suelta",fileTypesAndSize:"Archivos PDF o TXT hasta 10 MB",uploadedDocuments:"Documentos subidos",removeDocument:"Eliminar documento"},Od={speak:"Hablar",stop:"Detener",speaking:"Hablando...",generateFailed:"Error al generar voz",playbackFailed:"Error en reproducción de audio",stopSpeaking:"Detener lectura",generatingSpeech:"Generando voz...",readAloud:"Leer en voz alta"},Ed={title:"Artefactos",code:"Código",preview:"Vista previa",copy:"Copiar código",copied:"¡Copiado!",download:"Descargar",expand:"Expandir",collapse:"Contraer",openInNewTab:"Abrir en nueva pestaña",invalidSvg:"Contenido SVG inválido",invalidJson:"Contenido JSON inválido",previewMode:"Modo vista previa",codeMode:"Modo código",copyContent:"Copiar contenido",openInPanel:"Abrir en panel",openInNewWindow:"Abrir en nueva ventana",created:"Creado",closePanelEsc:"Cerrar panel (Esc)",copyButton:"Copiar",open:"Abrir",dragEdgeToResize:"Arrastra el borde para redimensionar"},Ld={title:"Importar y exportar personas",description:"Exporta tus personas para compartirlas o importa personas de otros",exportPersonas:"Exportar personas",importPersonas:"Importar personas",noPersonasToExport:"No hay personas para exportar",personasAvailable:"{{count}} persona disponible",personasAvailable_plural:"{{count}} personas disponibles",exportAll:"Exportar todo",uploadJsonFile:"Subir archivo JSON",pasteJsonLabel:"Pegar datos JSON",pasteJsonPlaceholder:"Pega los datos JSON de la persona aquí...",importing:"Importando...",importButton:"Importar persona(s)",expectedFormat:"Formato JSON esperado:",exportSuccess:'Persona "{{name}}" exportada exitosamente',exportFailed:"Error al exportar persona",exportAllSuccess:"Todas las {{count}} personas exportadas exitosamente",exportAllFailed:"Error al exportar personas",pasteJsonData:"Por favor pega los datos JSON de la persona",importMultipleSuccess:"Se importaron {{count}} personas exitosamente",importMultipleFailed:"Error al importar {{count}} personas",importNoneFailed:"Error al importar cualquier persona",importSuccess:"Persona importada exitosamente",importFailed:"Error al importar persona"},Gd={common:md,brand:pd,auth:gd,setup:hd,chat:bd,sidebar:kd,user:fd,settings:yd,models:vd,personas:xd,gallery:Sd,errors:wd,keyboard:Pd,modelManager:Md,personaManager:Dd,personaForm:Ad,personaCard:zd,userManager:jd,chatMessage:Td,imageGallery:Nd,imageGeneration:Id,errorBoundary:Cd,documents:Fd,ttsButton:Od,artifacts:Ed,personaImportExport:Ld},Bd={loading:"Chargement...",save:"Enregistrer",saving:"Enregistrement...",cancel:"Annuler",delete:"Supprimer",edit:"Modifier",close:"Fermer",back:"Retour",next:"Suivant",confirm:"Confirmer",error:"Erreur",success:"Succès",warning:"Avertissement",or:"ou",optional:"optionnel",enabled:"Activé",disabled:"Désactivé",on:"Activé",off:"Désactivé",yes:"Oui",no:"Non",search:"Rechercher",noResults:"Aucun résultat trouvé",retry:"Réessayer",refresh:"Actualiser",download:"Télécharger",upload:"Envoyer",export:"Exporter",import:"Importer",reset:"Réinitialiser",apply:"Appliquer",clear:"Effacer",all:"Tout",none:"Aucun",default:"Par défaut",custom:"Personnalisé",mode:"Mode",multiUser:"Multi-utilisateur",remove:"Supprimer"},Kd={name:"Libre WebUI",shortName:"Libre"},Hd={login:{title:"Bon retour",subtitle:"Connectez-vous à votre compte pour continuer",username:"Nom d'utilisateur",usernamePlaceholder:"Entrez votre nom d'utilisateur",password:"Mot de passe",passwordPlaceholder:"Entrez votre mot de passe",signIn:"Se connecter",signingIn:"Connexion en cours...",noAccount:"Vous n'avez pas de compte ?",signUpHere:"Inscrivez-vous ici",loginSuccess:"Connexion réussie !",loginFailed:"Échec de la connexion",checkCredentials:"Échec de la connexion. Veuillez vérifier vos identifiants.",enterBoth:"Veuillez entrer le nom d'utilisateur et le mot de passe",githubSuccess:"Connexion GitHub réussie !",githubFailed:"Échec de l'authentification GitHub",githubVerifyFailed:"Échec de la vérification de l'authentification GitHub"},signup:{title:"Créer un compte",subtitle:"Inscrivez-vous pour créer votre compte",username:"Nom d'utilisateur",usernamePlaceholder:"Choisissez un nom d'utilisateur",email:"Email",emailPlaceholder:"votre@email.com",password:"Mot de passe",passwordPlaceholder:"Choisissez un mot de passe",confirmPassword:"Confirmer le mot de passe",confirmPasswordPlaceholder:"Confirmez votre mot de passe",createAccount:"Créer un compte",creatingAccount:"Création du compte...",hasAccount:"Vous avez déjà un compte ?",signInHere:"Connectez-vous ici",signupSuccess:"Compte créé avec succès !",signupFailed:"Échec de l'inscription",tryAgain:"Échec de l'inscription. Veuillez réessayer.",usernameRequired:"Le nom d'utilisateur et le mot de passe sont requis",passwordMismatch:"Les mots de passe ne correspondent pas",passwordTooShort:"Le mot de passe doit contenir au moins 6 caractères"},logout:{button:"Déconnexion",success:"Déconnexion réussie"},oauth:{continueWith:"Continuer avec {{provider}}",connectingTo:"Connexion à {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rd={welcome:{title:"Bienvenue sur Libre WebUI",subtitle:"Commencer",description:"Configurez votre instance Libre WebUI en quelques étapes",createAdmin:"Créer un compte administrateur",features:{secure:{title:"Sécurisé et privé",description:"Vos conversations restent sur votre appareil"},fast:{title:"Rapide et réactif",description:"Optimisé pour la vitesse et les performances"},openSource:{title:"Open Source",description:"Logiciel libre et open source"}}},admin:{title:"Créer un compte administrateur",subtitle:"Configuration administrateur",description:"Créez le premier compte administrateur pour votre instance Libre WebUI",usernamePlaceholder:"Entrez le nom d'utilisateur admin",passwordPlaceholder:"Entrez le mot de passe (min 6 caractères)",confirmPlaceholder:"Confirmez votre mot de passe",creating:"Création...",createAdmin:"Créer l'admin",success:"Compte administrateur créé avec succès !",failed:"Échec de la création du compte administrateur",fillAllFields:"Veuillez remplir tous les champs",note:"Ce sera le compte administrateur principal pour votre instance Libre WebUI"},encryptionKey:{title:"Sauvegardez votre clé de chiffrement",subtitle:"Important : Sauvegardez cette clé",description:"Cette clé de chiffrement protège vos données sensibles. Conservez-la en sécurité - vous en aurez besoin si vous devez restaurer votre base de données.",warning:"Avertissement",warningText:"Si vous perdez cette clé et devez restaurer votre base de données, vos données chiffrées (clés API, préférences) seront irrécupérables.",label:"Votre clé de chiffrement",loading:"Chargement...",copyToClipboard:"Copier dans le presse-papiers",copied:"Clé de chiffrement copiée dans le presse-papiers !",copyFailed:"Échec de la copie de la clé",envNote:"Cette clé est également sauvegardée dans votre fichier backend/.env sous ENCRYPTION_KEY",acknowledgment:"J'ai sauvegardé ma clé de chiffrement dans un endroit sécurisé et je comprends que la perdre peut entraîner une perte de données.",confirmRequired:"Veuillez confirmer que vous avez sauvegardé la clé de chiffrement",continue:"Continuer vers Libre WebUI"}},Ud={greeting:{morning:"Bonjour",afternoon:"Bon après-midi",evening:"Bonsoir",night:"Bonne nuit"},welcome:{helpToday:"Comment puis-je vous aider aujourd'hui ?",helpTonight:"Comment puis-je vous aider ce soir ?"},input:{placeholder:"Envoyer un message",messagePlaceholder:"Message...",attachImages:"Joindre des images",attachments:"Pièces jointes et fonctionnalités avancées",sendMessage:"Envoyer le message",stopGeneration:"Arrêter la génération"},session:{new:"Nouvelle conversation",private:"Privé",privateMode:"Mode privé",privateDescription:"Cette conversation ne sera pas sauvegardée",privateTooltip:"Démarrer une conversation privée qui ne sera pas sauvegardée",deleteConfirm:"Êtes-vous sûr de vouloir supprimer cette conversation ?",generatingTitle:"Génération du titre",noChats:"Aucune conversation",createFirst:"Créez votre première conversation ci-dessus",chats:"Conversations",renameChat:"Renommer la conversation",deleteChat:"Supprimer la conversation"},persona:{applied:"Persona appliqué",label:"Persona"},model:{updated:"Modèle mis à jour",noModels:"Aucun modèle disponible",noModelsDescription:"Aucun modèle disponible. Assurez-vous qu'Ollama est en cours d'exécution et que des modèles sont installés.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Aucun modèle disponible. Veuillez vous assurer qu'Ollama est en cours d'exécution et que des modèles sont installés."},footer:{disclaimer:"Les LLM peuvent faire des erreurs - vérifiez les informations importantes",images:"{{count}} image",images_plural:"{{count}} images",structuredOutput:"Sortie structurée"},mediaUpload:{dropImagesHere:"Déposez des images ici ou",supportedFormats:"Formats supportés : JPG, PNG, GIF, WebP (max 10 Mo chacun)",browse:"parcourir"},structuredOutput:{title:"Format de réponse",none:"Aucun (Langage naturel)",noneDescription:"Réponse par défaut en langage naturel",json:"JSON",jsonDescription:"Format JSON structuré",list:"Liste",listDescription:"Tableau d'éléments",summary:"Résumé",summaryDescription:"Résumé du document avec points clés",analysis:"Analyse",analysisDescription:"Analyse structurée avec avantages/inconvénients",custom:"Schéma personnalisé",customDescription:"Définissez votre propre schéma JSON",customSchema:"Schéma JSON personnalisé",schemaPreview:"Aperçu du schéma",applySchema:"Appliquer le schéma",cancel:"Annuler",enabled:"Sortie structurée activée"}},$d={navigation:{chat:"Chat",models:"Modèles",personas:"Personas",imagine:"Imaginer",settings:"Paramètres",userManagement:"Gestion des utilisateurs",signOut:"Déconnexion"},toggleSize:"Basculer la taille de la barre latérale",expandSidebar:"Agrandir la barre latérale"},Vd={menu:{changePicture:"Changer la photo",settings:"Paramètres",userManagement:"Gestion des utilisateurs",logout:"Déconnexion"},avatar:{title:"Changer la photo de profil",updated:"Photo de profil mise à jour",updateFailed:"Échec de la mise à jour de la photo de profil",saving:"Enregistrement..."},profile:{noEmail:"Aucun email fourni"}},Wd=JSON.parse(`{"title":"Paramètres","tabs":{"appearance":"Apparence","model":"Modèle","systemMessage":"Message système","plugins":"Plugins","generation":"Génération","documents":"Documents","tts":"Synthèse vocale","imageGen":"Génération d'images","data":"Données","about":"À propos"},"appearance":{"title":"Apparence","language":{"title":"Langue","description":"Sélectionnez votre langue préférée"},"theme":{"title":"Thème","light":"Clair","dark":"Sombre","amoled":"Noir Pur","system":"Système"},"chatInterface":{"title":"Interface de chat","showUsername":"Afficher le nom d'utilisateur","showUsernameDescription":"Afficher le nom d'utilisateur dans les messages"},"background":{"title":"Image d'arrière-plan","enable":"Activer l'image d'arrière-plan","enableDescription":"Afficher un arrière-plan personnalisé avec effet de flou","blur":"Flou","opacity":"Opacité","upload":"Envoyer une image d'arrière-plan","dragDrop":"Glissez-déposez une image ou cliquez pour parcourir","chooseImage":"Choisir une image"}},"saveSettings":"Enregistrer les paramètres","model":{"title":"Paramètres du modèle","defaultModel":"Modèle par défaut","defaultModelDescription":"Ce modèle sera utilisé par défaut pour les nouvelles conversations","selectModel":"Sélectionnez un modèle","persona":"Persona","updateAll":"Mettre à jour tous les modèles","updateAllDescription":"Vérifier les mises à jour et télécharger les dernières versions de tous les modèles installés","updateAllButton":"Tout mettre à jour","updating":"Mise à jour des modèles...","currentModelInfo":"Infos du modèle actuel","name":"Nom","size":"Taille","family":"Famille","format":"Format","status":"Statut","statusStarting":"Démarrage...","statusComplete":"Terminé","statusError":"Erreur","bulkOperations":"Opérations en masse","autoTitle":{"title":"Génération automatique du titre","enable":"Activer le titre automatique","enableDescription":"Générer automatiquement des titres pour les nouvelles conversations","taskModel":"Modèle de tâche","selectTaskModel":"Sélectionnez le modèle de tâche","taskModelDescription":"Modèle utilisé pour générer les titres des conversations"}},"systemMessage":{"title":"Message système","description":"Définissez un message système personnalisé qui sera utilisé pour toutes les nouvelles conversations.","placeholder":"Entrez un message système...","saved":"Message système enregistré","saveFailed":"Échec de l'enregistrement du message système"},"plugins":{"title":"Plugins","description":"Gérez vos plugins installés","addNew":"Ajouter un nouveau plugin","upload":"Envoyer un plugin","addJson":"Ajouter JSON","uploading":"Envoi...","jsonPlaceholder":"Collez la configuration JSON du plugin...","install":"Installer un plugin","noPlugins":"Aucun plugin installé","noPluginsDescription":"Ajoutez un plugin pour étendre les fonctionnalités","loading":"Chargement des plugins...","installed":"Plugins installés","active":"Plugins actifs","activeLabel":"Actif","inactive":"Inactif","activate":"Activer","deactivate":"Désactiver","models":"modèles","apiKeySet":"Clé API définie","apiKeyConfiguration":"Configuration de la clé API","apiKeyEnvAlternative":"Alternativement, définissez la","environmentVariable":"variable d'environnement","apiKeyConfigured":"Clé API configurée","apiKeyPlaceholder":"Entrez votre clé API...","saveApiKey":"Enregistrer la clé API","apiKey":{"title":"Clé API","placeholder":"Entrez la clé API","save":"Enregistrer la clé","remove":"Supprimer la clé","configured":"Clé API configurée","notConfigured":"Clé API requise","saved":"Clé API enregistrée avec succès","removed":"Clé API supprimée","saveFailed":"Échec de l'enregistrement de la clé API","removeFailed":"Échec de la suppression de la clé API","enterKey":"Veuillez entrer une clé API"}},"generation":{"title":"Options de génération","description":"Configurez comment l'IA génère les réponses","coreParameters":"Paramètres principaux","temperature":"Température","temperatureDescription":"Contrôle l'aléatoire. Les valeurs basses sont plus précises, les valeurs hautes plus créatives.","topP":"Top P","topPDescription":"Contrôle la diversité via l'échantillonnage nucleus. Les valeurs basses se concentrent sur les tokens probables.","topK":"Top K","topKDescription":"Limite la sélection de tokens aux K plus probables. Mettez 0 pour désactiver.","minP":"Min P","minPDescription":"Seuil de probabilité minimum pour la sélection de tokens.","generationControl":"Contrôle de génération","maxTokens":"Tokens maximum","maxTokensDescription":"Nombre maximum de tokens à générer dans la réponse.","repeatPenalty":"Pénalité de répétition","repeatPenaltyDescription":"Pénalise les tokens répétés. Les valeurs plus élevées réduisent la répétition.","contextLength":"Longueur du contexte","contextLengthDescription":"Taille maximale de la fenêtre de contexte pour les conversations.","seed":"Seed","optional":"optionnel","random":"Aléatoire","seedDescription":"Définissez un seed spécifique pour des résultats reproductibles.","advancedOptions":"Options avancées","presencePenalty":"Pénalité de présence","presencePenaltyDescription":"Pénalise les tokens qui apparaissent dans le contexte.","frequencyPenalty":"Pénalité de fréquence","frequencyPenaltyDescription":"Pénalise les tokens fréquemment utilisés.","stopSequences":"Séquences d'arrêt","commaSeparated":"séparés par des virgules","stopSequencesDescription":"Tokens personnalisés qui arrêteront la génération lorsqu'ils seront rencontrés.","resetDefaults":"Réinitialiser les valeurs par défaut","saveOptions":"Enregistrer les options","embeddingSettings":"Paramètres d'embedding","enableEmbeddings":"Activer les embeddings de documents"},"documents":{"title":"Paramètres des documents","embeddings":{"title":"Embeddings","enable":"Activer les embeddings de documents","model":"Modèle d'embedding","modelDescription":"Sélectionnez le modèle utilisé pour l'embedding de documents","chunkSize":"Taille des chunks","chunkSizeInTokens":"(en tokens)","chunkSizeDescription":"Taille des morceaux de texte pour l'embedding","chunkOverlap":"Chevauchement des chunks","chunkOverlapInTokens":"(en tokens)","chunkOverlapDescription":"Chevauchement entre les chunks consécutifs","similarityThreshold":"Seuil de similarité","similarityDescription":"Score de similarité minimum pour inclure les résultats","status":"Statut des embeddings","statusLabel":"Statut","available":"Disponible","unavailable":"Indisponible","chunksWithEmbeddings":"Chunks avec embeddings","coverage":"Couverture","regenerate":"Régénérer les embeddings","regenerating":"Régénération..."}},"tts":{"title":"Synthèse vocale","description":"Configurez les paramètres de synthèse vocale pour la lecture des messages","loadingProviders":"Chargement des fournisseurs TTS...","noProviders":"Aucun fournisseur TTS","noProvidersDescription":"Configurez un plugin avec support TTS pour activer la synthèse vocale","enable":"Activer la synthèse vocale","enableDescription":"Autoriser la synthèse vocale pour les messages de l'assistant","autoPlay":"Lecture automatique des réponses","autoPlayDescription":"Lire automatiquement les nouveaux messages de l'assistant","streamSentences":"Diffuser par phrases","streamSentencesDescription":"Lire l'audio phrase par phrase au lieu d'attendre le message complet. Recommandé pour le TTS local afin d'éviter les délais d'attente sur les longs messages.","voiceConfiguration":"Configuration de la voix","model":"Modèle TTS","modelDescription":"Sélectionnez le modèle pour la génération de synthèse vocale","voice":"Voix","selectVoice":"Sélectionnez une voix","voiceDescription":"Choisissez la voix pour la synthèse vocale","speed":"Vitesse","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"Fournisseurs disponibles","models":"modèles","test":"Tester","testing":"Test...","stop":"Arrêter"},"imageGen":{"title":"Génération d'images","description":"Configurez les paramètres et fournisseurs de génération d'images","loadingProviders":"Chargement des fournisseurs de génération d'images...","noProviders":"Aucun fournisseur de génération d'images","noProvidersDescription":"Configurez un plugin avec support de génération d'images","enable":"Activer la génération d'images","enableDescription":"Autoriser la génération d'images IA dans les conversations","configuration":"Configuration","model":"Modèle","modelDescription":"Sélectionnez le modèle pour la génération d'images","size":"Taille","sizeDescription":"Résolution des images générées","quality":"Qualité","qualityDescription":"Niveau de qualité des images générées","style":"Style","styleDescription":"Preset de style pour les images générées","availableProviders":"Fournisseurs disponibles","models":"modèles"},"data":{"title":"Gestion des données","export":"Exporter les données","exportDescription":"Téléchargez toutes vos données incluant les préférences, sessions et documents.","exportAll":"Exporter toutes les données","import":"Importer les données","importDescription":"Importez les données d'une exportation précédente.","importData":"Importer les données","importing":"Importation...","clearSessions":"Effacer les sessions","clearSessionsDescription":"Supprimer toutes les sessions de chat. Cette action est irréversible.","clearAll":"Tout effacer","clearing":"Effacement...","importOptions":"Options d'importation","importOptionsDescription":"Choisissez comment gérer les données existantes","skipDuplicates":"Ignorer les doublons","overwrite":"Écraser les existants","importResults":"Résultats de l'importation","preferences":"Préférences","imported":"Importé","failed":"Échoué","sessions":"Sessions","importedLabel":"importées","skipped":"ignorées","documents":"Documents","errors":"Erreurs"},"about":{"title":"À propos","versionLabel":"Version","ollama":{"title":"Statut Ollama","version":"Version","healthy":"Opérationnel","unhealthy":"Non opérationnel"},"stats":{"models":"Modèles","sessions":"Sessions"},"features":{"privacy":{"title":"Vie privée d'abord","description":"Vos données restent sur votre appareil"},"openSource":{"title":"Open Source","description":"Logiciel libre et open source"},"localInference":{"title":"Inférence locale","description":"Exécutez des modèles IA localement avec Ollama"}},"openSourceBy":"Open source par {{company}}","links":{"title":"Liens","github":"GitHub","githubDescription":"Voir le code source et contribuer","website":"Site web","websiteDescription":"Visitez notre site web","ollama":"Ollama","ollamaDescription":"En savoir plus sur Ollama","documentation":"Documentation","reportIssue":"Signaler des problèmes","reportIssueDescription":"Rapports de bugs et demandes de fonctionnalités"},"version":"Version {{version}}"}}`),qd={title:"Modèles",subtitle:"Téléchargez, gérez et surveillez vos modèles Ollama",installed:"Modèles installés",available:"Modèles disponibles",pull:"Télécharger le modèle",pulling:"Téléchargement...",delete:"Supprimer le modèle",deleting:"Suppression...",size:"Taille",modified:"Modifié",family:"Famille",parameters:"Paramètres",quantization:"Quantification",noModels:"Aucun modèle installé",pullFirst:"Téléchargez un modèle pour commencer"},Jd={title:"Personas",create:"Créer un persona",edit:"Modifier le persona",delete:"Supprimer le persona",name:"Nom",description:"Description",systemPrompt:"Message système",model:"Modèle",avatar:"Avatar",background:"Arrière-plan",noPersonas:"Aucun persona créé",createFirst:"Créez votre premier persona pour personnaliser votre expérience de chat"},_d={title:"Galerie",subtitle:"Votre galerie d'images générées par IA",imageCount:"{{count}} images",generate:"Générer une image",generateDescription:"Créer des images avec l'IA",generating:"Génération...",prompt:"Description",promptPlaceholder:"Décrivez l'image que vous souhaitez générer...",noImages:"Aucune image générée",download:"Télécharger",delete:"Supprimer",regenerate:"Régénérer",model:"Modèle",size:"Taille",quality:"Qualité",created:"Créé"},Yd={generic:"Une erreur s'est produite",network:"Erreur réseau. Veuillez vérifier votre connexion.",unauthorized:"Vous n'êtes pas autorisé à effectuer cette action.",notFound:"La ressource demandée n'a pas été trouvée.",serverError:"Erreur serveur. Veuillez réessayer plus tard.",validation:"Veuillez vérifier votre saisie et réessayer."},Zd={title:"Raccourcis clavier",toggleSidebar:"Afficher/Masquer la barre latérale",openSettings:"Ouvrir les paramètres",toggleDarkMode:"Basculer le mode sombre",showShortcuts:"Afficher les raccourcis clavier",closeModals:"Fermer les fenêtres",groups:{navigation:"Navigation",settings:"Paramètres",general:"Général",chat:"Chat"},actions:{sendMessage:"Envoyer le message",newLine:"Nouvelle ligne dans le message"},footer:"Appuyez sur {{key1}} ou {{key2}} pour afficher cette aide",tooltip:"Raccourcis clavier"},Xd={title:"Modèles",loading:"Chargement des modèles...",systemStatus:{online:"Ollama en ligne",offline:"Ollama hors ligne",models:"modèle",models_plural:"modèles",running:"en cours",vram:"VRAM"},sections:{pull:"Télécharger un nouveau modèle",library:"Parcourir la bibliothèque",running:"Modèles en cours d'exécution",local:"Modèles locaux",advanced:"Actions avancées",huggingface:"HuggingFace Hub"},pull:{placeholder:"Entrez le nom du modèle (ex: llama3.2:3b, deepseek-r1:14b)",button:"Télécharger",cancel:"Annuler",popular:"Modèles populaires :",browseAll:"Parcourir tous les modèles sur ollama.com",success:"Modèle {{name}} téléchargé avec succès",cancelled:"Téléchargement du modèle annulé",failed:"Échec du téléchargement du modèle",enterName:"Veuillez entrer un nom de modèle"},progress:{starting:"Initialisation...",pulling:"Téléchargement du modèle...",verifying:"Vérification de l'intégrité...",writing:"Écriture du manifeste...",cleaning:"Nettoyage..."},library:{available:"disponibles",search:"Rechercher des modèles...",noResults:"Aucun modèle correspondant à vos critères",installed:"Installé",more:"+{{count}} de plus",refresh:"Actualiser la bibliothèque"},huggingface:{browseAll:"Parcourir tout sur HuggingFace",checkingGguf:"Recherche des fichiers GGUF...",noGgufAvailable:"Aucun fichier GGUF disponible pour Ollama",ggufFilesCount:"Fichiers GGUF ({{count}}) - Télécharger vers Ollama",noModelsFound:"Aucun modèle trouvé",noResults:"Aucun modèle trouvé. Essayez d'ajuster votre recherche.",browseAllLink:"Voir tout",search:"Rechercher des modèles HuggingFace...",by:"par",gated:"Accès restreint",viewOnHF:"Voir sur HuggingFace",sortDownloads:"Téléchargements",sortLikes:"Likes",sortRecent:"Récent",taskTextGeneration:"Génération de texte",taskTextToSpeech:"Synthèse vocale",taskTextToImage:"Texte vers image",taskSpeechRecognition:"Reconnaissance vocale",tasks:{textGen:"Génération de texte",tts:"Synthèse vocale",image:"Texte vers image",stt:"Reconnaissance vocale"},sort:{downloads:"Plus téléchargés",likes:"Plus aimés",recent:"Récemment mis à jour"}},local:{noModels:"Aucun modèle installé",pullToStart:"Téléchargez un modèle ci-dessus pour commencer",installed:"installés",running:"En cours",info:"Info",copy:"Copier",delete:"Supprimer",deleteConfirm:'Êtes-vous sûr de vouloir supprimer le modèle "{{name}}" ?',deleteSuccess:"Modèle {{name}} supprimé avec succès",deleteFailed:"Échec de la suppression du modèle"},advanced:{createModel:"Créer un modèle",fromModelfile:"À partir d'un Modelfile",copyModel:"Copier un modèle",duplicateExisting:"Dupliquer un existant",testEmbeddings:"Tester les embeddings",generateVectors:"Générer des vecteurs",healthCheck:"Vérification de santé",testConnection:"Tester la connexion",healthy:"Ollama est opérationnel !"},modals:{details:{title:"Détails du modèle",info:"Informations sur le modèle",family:"Famille",parameters:"Paramètres",quantization:"Quantification",format:"Format",systemPrompt:"Message système",template:"Modèle",license:"Licence",modelfile:"Modelfile",noDetails:"Aucun détail disponible"},copy:{title:"Copier le modèle",source:"Modèle source",selectModel:"Sélectionnez un modèle...",newName:"Nouveau nom du modèle",placeholder:"ex: mon-modèle-personnalisé",copying:"Copie en cours...",button:"Copier le modèle",success:"Modèle copié vers {{name}}",failed:"Échec de la copie du modèle",enterBoth:"Veuillez entrer les noms source et destination"},create:{title:"Créer un modèle personnalisé",name:"Nom du modèle",namePlaceholder:"ex: mon-assistant",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
10
|
+
SYSTEM Vous êtes un assistant utile.`,docs:"Documentation Modelfile",docsLink:"pour la référence syntaxique",creating:"Création...",button:"Créer le modèle",success:"Modèle {{name}} créé avec succès",failed:"Échec de la création du modèle",enterBoth:"Veuillez entrer le nom du modèle et le contenu du Modelfile"},embeddings:{title:"Tester les embeddings",model:"Modèle d'embedding",selectModel:"Sélectionnez un modèle...",recommended:"Recommandés : nomic-embed-text, mxbai-embed-large",input:"Texte d'entrée",placeholder:"Entrez le texte pour générer les embeddings...",generating:"Génération...",button:"Générer les embeddings",result:"Résultat ({{count}} dimensions)",success:"Vecteur d'embedding de {{count}} dimensions généré",failed:"Échec de la génération des embeddings",enterBoth:"Veuillez sélectionner un modèle et entrer du texte"}}},Qd={title:"Personas",subtitle:"Créez et gérez des personas IA avec des personnalités, mémoires et comportements personnalisés",loading:"Chargement des personas...",createButton:"Créer un persona",importExport:"Importer/Exporter",stats:{title:"Vos personas",count:"{{count}} persona créé",count_plural:"{{count}} personas créés"},empty:{title:"Aucun persona",description:"Créez votre premier persona pour commencer avec des interactions IA personnalisées",button:"Créer votre premier persona"},deleteConfirm:'Êtes-vous sûr de vouloir supprimer "{{name}}" ?',deleteSuccess:'Persona "{{name}}" supprimé avec succès',downloadSuccess:'Persona "{{name}}" téléchargé avec succès',failed:"Échec de {{action}} le persona"},ec={title:{create:"Créer un nouveau persona",edit:"Modifier le persona"},subtitle:{create:"Créez un nouveau persona IA avec une personnalité personnalisée, des systèmes de mémoire et des capacités d'apprentissage adaptatif",edit:"Personnalisez votre persona IA avec une mémoire avancée, un apprentissage adaptatif et des paramètres intelligents"},loading:"Chargement du formulaire...",saved:"Enregistré",tabs:{basic:"Base",parameters:"Paramètres",memory:"Mémoire et apprentissage",advanced:"Avancé"},basic:{name:"Nom",namePlaceholder:"Entrez le nom du persona",model:"Modèle",selectModel:"Sélectionnez un modèle",description:"Description",descriptionPlaceholder:"Décrivez votre persona...",systemPrompt:"Message système",systemPromptPlaceholder:"Entrez le message système qui définit le comportement de votre persona...",systemPromptHint:"Le message système définit comment votre persona se comportera et répondra."},parameters:{temperature:"Température",temperatureHint:"Contrôle la créativité vs la cohérence",topP:"Top-P",topPHint:"Contrôle la diversité des réponses",topK:"Top-K",topKHint:"Limite le vocabulaire aux k premiers tokens",contextWindow:"Fenêtre de contexte",contextWindowHint:"Longueur maximale de l'historique de conversation",maxTokens:"Tokens maximum",maxTokensHint:"Longueur maximale de la réponse",repeatPenalty:"Pénalité de répétition",repeatPenaltyHint:"Réduit les réponses répétitives"},memory:{title:"Système de mémoire",subtitle:"Le persona se souvient des conversations au fil du temps",enableHint:"Activez le système de mémoire pour permettre à votre persona de se souvenir des conversations et de construire un contexte au fil du temps.",loading:"Chargement du statut de la mémoire...",noData:"Aucune donnée de mémoire",memories:"Mémoires",mbUsed:"Mo utilisés",lastBackup:"Dernière sauvegarde",never:"Jamais",maxMemories:"Mémoires maximum",maxMemoriesHint:"Combien de mémoires ce persona peut stocker",retention:"Rétention de la mémoire",retentionHint:"Jours de conservation des mémoires avant nettoyage",autoCleanup:"Nettoyage automatique des anciennes mémoires",wipeAll:"Effacer toutes les mémoires",wipeCannot:"Cette action est irréversible",wipeButton:"Effacer",wiping:"Effacement...",wipeConfirm:"Êtes-vous sûr de vouloir effacer toutes les mémoires ? Cette action est irréversible.",wipeSuccess:"{{count}} mémoires effacées"},learning:{title:"Apprentissage adaptatif",subtitle:"Le persona évolue en fonction des interactions",enableHint:"Activez l'apprentissage adaptatif pour permettre à votre persona d'évoluer et de personnaliser les réponses en fonction de vos interactions.",speed:"Vitesse d'apprentissage",slow:"Lent",slowDesc:"Changements progressifs",balanced:"Équilibré",balancedDesc:"Rythme modéré",fast:"Rapide",fastDesc:"Adaptation rapide",autoAdapt:"S'adapter automatiquement aux préférences de l'utilisateur",whatLearns:"Ce que le persona apprend :",conversationTone:"Ton de conversation",responseStyle:"Style de réponse",userPreferences:"Préférences utilisateur",topicInterests:"Intérêts thématiques"},advanced:{embeddingModel:"Modèle d'embedding",embeddingHint:"Sélectionnez le modèle utilisé pour l'encodage de la mémoire et la recherche sémantique. Les modèles d'embedding sont affichés en premier, suivis des autres modèles disponibles.",noModels:"Aucun modèle trouvé",embeddingModels:"Modèles d'embedding",otherModels:"Autres modèles",installHint:"Installez un modèle d'embedding :",recommended:"Recommandés : nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"À propos des paramètres avancés",aboutDescription:"Le modèle d'embedding est utilisé par le système de mémoire pour comprendre le sens sémantique et trouver des mémoires pertinentes pendant les conversations. Choisissez un modèle adapté à votre cas d'utilisation et aux ressources disponibles."},actions:{cancel:"Annuler",save:"Enregistrer",saving:"Enregistrement...",saveClose:"Enregistrer et fermer",create:"Créer"},success:{created:"Persona créé",updated:"Persona mis à jour"},error:{saveFailed:"Échec de l'enregistrement"}},ac={enhanced:"Amélioré",systemPrompt:"Message système",memories:"mémoires",use:"Utiliser",editTooltip:"Modifier le persona",downloadTooltip:"Télécharger le persona",backup:"Sauvegarde",exportDNA:"Exporter l'ADN",wipeMemories:"Effacer les mémoires",wipeConfirm:"Êtes-vous sûr de vouloir effacer toutes les mémoires de ce persona ? Cette action est irréversible.",wipeSuccess:"{{count}} mémoires effacées",backupSuccess:"Sauvegarde du persona téléchargée avec succès",dnaSuccess:"ADN du persona exporté avec succès",failed:"Échec de {{action}}"},tc={title:"Gestion des utilisateurs",subtitle:"Gérez les comptes utilisateurs et les permissions",loading:"Chargement des utilisateurs...",createUser:"Créer un utilisateur",search:"Rechercher des utilisateurs...",noUsers:"Aucun utilisateur trouvé",noUsersMatching:"Aucun utilisateur correspondant à votre recherche",columns:{user:"Utilisateur",email:"Email",role:"Rôle",created:"Créé le",actions:"Actions"},roles:{admin:"Admin",user:"Utilisateur"},noEmail:"Pas d'email",deleteConfirm:`Êtes-vous sûr de vouloir supprimer l'utilisateur "{{name}}" ?`,deleteSuccess:"Utilisateur supprimé avec succès",deleteFailed:"Échec de la suppression de l'utilisateur",cannotDeleteSelf:"Vous ne pouvez pas supprimer votre propre compte",form:{title:{create:"Créer un utilisateur",edit:"Modifier l'utilisateur"},username:"Nom d'utilisateur",usernamePlaceholder:"Entrez le nom d'utilisateur",email:"Email",emailPlaceholder:"Entrez l'email (optionnel)",password:"Mot de passe",passwordPlaceholder:"Entrez le mot de passe",passwordHint:"Laissez vide pour conserver le mot de passe actuel",role:"Rôle",creating:"Création...",updating:"Mise à jour...",createButton:"Créer l'utilisateur",updateButton:"Mettre à jour l'utilisateur",createSuccess:"Utilisateur créé avec succès",updateSuccess:"Utilisateur mis à jour avec succès",createFailed:"Échec de la création de l'utilisateur",updateFailed:"Échec de la mise à jour de l'utilisateur"}},nc={you:"Vous",assistant:"Assistant",system:"Système",copy:"Copier",copyMessage:"Copier le message",copied:"Copié !",regenerate:"Régénérer",regenerateResponse:"Régénérer la réponse",edit:"Modifier",editSystemMessage:"Modifier le message système",saveChanges:"Enregistrer les modifications",cancelEditing:"Annuler la modification",delete:"Supprimer",deleteConfirm:"Supprimer ce message ?",branch:"Branche",speaking:"Lecture...",speakMessage:"Lire le message",stopSpeaking:"Arrêter la lecture",showMore:"Voir plus",showLess:"Voir moins",thinking:"Réflexion",systemMessagePlaceholder:"Entrez votre message système...",fullSizeImage:"Image en taille réelle",startConversation:"Démarrer une conversation",startConversationDescription:"Envoyez un message pour commencer à discuter avec votre assistant IA. Posez des questions, obtenez de l'aide pour le code ou ayez une conversation naturelle.",scrollToBottom:"Défiler vers le bas",newMessages:"Nouveaux messages"},rc={title:"Galerie d'images",noImages:"Aucune image",noImagesHint:"Générez votre première image en utilisant le panneau de droite",delete:"Supprimer",download:"Télécharger",deleteConfirm:"Êtes-vous sûr de vouloir supprimer cette image ?",deleteSuccess:"Image supprimée",deleteFailed:"Échec de la suppression de l'image",downloadFailed:"Échec du téléchargement de l'image",loadMore:"Charger plus ({{current}} sur {{total}})",loadFailed:"Échec du chargement de la galerie"},ic={title:"Générer une image",prompt:"Description",promptPlaceholder:"Décrivez l'image que vous souhaitez créer...",model:"Modèle",selectModel:"Sélectionnez un modèle",noModels:"Aucun modèle de génération d'images disponible",configurePlugin:"Configurez un plugin avec support de génération d'images",size:"Taille",quality:"Qualité",style:"Style",generate:"Générer",generating:"Génération...",success:"Image générée avec succès",failed:"Échec de la génération de l'image",enterPrompt:"Veuillez entrer une description",promptTooLong:"Le prompt dépasse la longueur maximale de {{max}} caractères"},oc={title:"Une erreur s'est produite",description:"Nous avons rencontré une erreur inattendue. Veuillez actualiser la page.",tryAgain:"Actualiser la page",goHome:"Retour à l'accueil",errorDetails:"Détails de l'erreur (Développement)"},sc={title:"Documents",upload:"Envoyer un document",uploading:"Envoi...",noDocuments:"Aucun document envoyé",uploadHint:"Envoyez des documents à utiliser dans vos conversations",delete:"Supprimer",deleteConfirm:"Êtes-vous sûr de vouloir supprimer ce document ?",deleteSuccess:"Document supprimé",deleteFailed:"Échec de la suppression du document",uploadSuccess:"Document envoyé avec succès",uploadFailed:"Échec de l'envoi du document",types:"Formats supportés : PDF, TXT, MD, DOCX",unsupportedFileType:"Seuls les fichiers PDF et TXT sont pris en charge",fileSizeTooLarge:"La taille du fichier doit être inférieure à 10 Mo",uploadSuccessWithName:'Document "{{name}}" envoyé avec succès',removeSuccess:"Document supprimé avec succès",removeFailed:"Échec de la suppression du document",removeError:"Une erreur s'est produite lors de la suppression du document",clickToUpload:"Cliquez pour envoyer",orDragAndDrop:"ou glissez-déposez",fileTypesAndSize:"Fichiers PDF ou TXT jusqu'à 10 Mo",uploadedDocuments:"Documents envoyés",removeDocument:"Supprimer le document"},lc={speak:"Lire",stop:"Arrêter",speaking:"Lecture...",generateFailed:"Échec de la génération de la parole",playbackFailed:"Échec de la lecture audio",stopSpeaking:"Arrêter la lecture",generatingSpeech:"Génération de la parole...",readAloud:"Lire à voix haute"},dc={title:"Artefacts",code:"Code",preview:"Aperçu",copy:"Copier le code",copied:"Copié !",download:"Télécharger",expand:"Agrandir",collapse:"Réduire",openInNewTab:"Ouvrir dans un nouvel onglet",invalidSvg:"Contenu SVG invalide",invalidJson:"Contenu JSON invalide",previewMode:"Mode aperçu",codeMode:"Mode code",copyContent:"Copier le contenu",openInPanel:"Ouvrir dans le panneau",openInNewWindow:"Ouvrir dans une nouvelle fenêtre",created:"Créé le",closePanelEsc:"Fermer le panneau (Échap)",copyButton:"Copier",open:"Ouvrir",dragEdgeToResize:"Faites glisser le bord pour redimensionner"},cc={title:"Importer et exporter des personas",description:"Exportez vos personas pour les partager ou importez des personas d'autres utilisateurs",exportPersonas:"Exporter des personas",importPersonas:"Importer des personas",noPersonasToExport:"Aucun persona à exporter",personasAvailable:"{{count}} persona disponible",personasAvailable_plural:"{{count}} personas disponibles",exportAll:"Tout exporter",uploadJsonFile:"Envoyer un fichier JSON",pasteJsonLabel:"Coller les données JSON",pasteJsonPlaceholder:"Collez les données JSON du persona ici...",importing:"Importation...",importButton:"Importer le(s) persona(s)",expectedFormat:"Format JSON attendu :",exportSuccess:'Persona "{{name}}" exporté avec succès',exportFailed:"Échec de l'exportation du persona",exportAllSuccess:"Tous les {{count}} personas ont été exportés avec succès",exportAllFailed:"Échec de l'exportation des personas",pasteJsonData:"Veuillez coller les données JSON du persona",importMultipleSuccess:"{{count}} personas importés avec succès",importMultipleFailed:"Échec de l'importation de {{count}} personas",importNoneFailed:"Échec de l'importation de tous les personas",importSuccess:"Persona importé avec succès",importFailed:"Échec de l'importation du persona"},uc={common:Bd,brand:Kd,auth:Hd,setup:Rd,chat:Ud,sidebar:$d,user:Vd,settings:Wd,models:qd,personas:Jd,gallery:_d,errors:Yd,keyboard:Zd,modelManager:Xd,personaManager:Qd,personaForm:ec,personaCard:ac,userManager:tc,chatMessage:nc,imageGallery:rc,imageGeneration:ic,errorBoundary:oc,documents:sc,ttsButton:lc,artifacts:dc,personaImportExport:cc},mc={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:"कस्टम",mode:"मोड",multiUser:"मल्टी यूज़र",remove:"हटाएं"},pc={name:"Libre WebUI",shortName:"Libre"},gc={login:{title:"वापसी पर स्वागत है",subtitle:"जारी रखने के लिए अपने खाते में साइन इन करें",username:"उपयोगकर्ता नाम",usernamePlaceholder:"अपना उपयोगकर्ता नाम दर्ज करें",password:"पासवर्ड",passwordPlaceholder:"अपना पासवर्ड दर्ज करें",signIn:"साइन इन करें",signingIn:"साइन इन हो रहा है...",noAccount:"खाता नहीं है?",signUpHere:"यहाँ साइन अप करें",loginSuccess:"लॉगिन सफल!",loginFailed:"लॉगिन विफल",checkCredentials:"लॉगिन विफल। कृपया अपनी जानकारी जांचें।",enterBoth:"कृपया उपयोगकर्ता नाम और पासवर्ड दोनों दर्ज करें",githubSuccess:"GitHub लॉगिन सफल!",githubFailed:"GitHub प्रमाणीकरण विफल",githubVerifyFailed:"GitHub प्रमाणीकरण सत्यापित करने में विफल"},signup:{title:"खाता बनाएं",subtitle:"अपना नया खाता बनाने के लिए साइन अप करें",username:"उपयोगकर्ता नाम",usernamePlaceholder:"उपयोगकर्ता नाम चुनें",email:"ईमेल",emailPlaceholder:"your@email.com",password:"पासवर्ड",passwordPlaceholder:"पासवर्ड चुनें",confirmPassword:"पासवर्ड की पुष्टि करें",confirmPasswordPlaceholder:"अपना पासवर्ड फिर से दर्ज करें",createAccount:"खाता बनाएं",creatingAccount:"खाता बनाया जा रहा है...",hasAccount:"पहले से खाता है?",signInHere:"यहाँ साइन इन करें",signupSuccess:"खाता सफलतापूर्वक बनाया गया!",signupFailed:"साइन अप विफल",tryAgain:"साइन अप विफल। कृपया पुनः प्रयास करें।",usernameRequired:"उपयोगकर्ता नाम और पासवर्ड आवश्यक हैं",passwordMismatch:"पासवर्ड मेल नहीं खाते",passwordTooShort:"पासवर्ड कम से कम 6 अक्षरों का होना चाहिए"},logout:{button:"लॉग आउट",success:"सफलतापूर्वक लॉग आउट हो गया"},oauth:{continueWith:"{{provider}} के साथ जारी रखें",connectingTo:"{{provider}} से कनेक्ट हो रहा है...",github:"GitHub",huggingFace:"Hugging Face"}},hc={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:"पासवर्ड दर्ज करें (न्यूनतम 6 अक्षर)",confirmPlaceholder:"अपना पासवर्ड फिर से दर्ज करें",creating:"बनाया जा रहा है...",createAdmin:"एडमिन बनाएं",success:"एडमिन खाता सफलतापूर्वक बनाया गया!",failed:"एडमिन खाता बनाने में विफल",fillAllFields:"कृपया सभी फ़ील्ड भरें",note:"यह आपके Libre WebUI इंस्टेंस का प्राथमिक एडमिनिस्ट्रेटर खाता होगा"},encryptionKey:{title:"अपनी एन्क्रिप्शन कुंजी सहेजें",subtitle:"महत्वपूर्ण: इस कुंजी को सहेजें",description:"यह एन्क्रिप्शन कुंजी आपके संवेदनशील डेटा की सुरक्षा करती है। इसे सुरक्षित रखें - यदि आपको कभी अपना डेटाबेस पुनर्स्थापित करना हो तो इसकी आवश्यकता होगी।",warning:"चेतावनी",warningText:"यदि आप यह कुंजी खो देते हैं और डेटाबेस पुनर्स्थापित करना पड़े, तो आपका एन्क्रिप्टेड डेटा (API कुंजियाँ, प्राथमिकताएँ) पुनर्प्राप्त नहीं किया जा सकेगा।",label:"आपकी एन्क्रिप्शन कुंजी",loading:"लोड हो रहा है...",copyToClipboard:"क्लिपबोर्ड पर कॉपी करें",copied:"एन्क्रिप्शन कुंजी क्लिपबोर्ड पर कॉपी की गई!",copyFailed:"कुंजी कॉपी करने में विफल",envNote:"यह कुंजी आपकी backend/.env फ़ाइल में ENCRYPTION_KEY के रूप में भी सहेजी गई है",acknowledgment:"मैंने अपनी एन्क्रिप्शन कुंजी सुरक्षित स्थान पर सहेज ली है और समझता/समझती हूँ कि इसे खोने से डेटा हानि हो सकती है।",confirmRequired:"कृपया पुष्टि करें कि आपने एन्क्रिप्शन कुंजी सहेज ली है",continue:"Libre WebUI जारी रखें"}},bc={greeting:{morning:"सुप्रभात",afternoon:"नमस्कार",evening:"शुभ संध्या",night:"शुभ रात्रि"},welcome:{helpToday:"आज मैं किसमें मदद कर सकता हूँ?",helpTonight:"आज रात मैं किसमें मदद कर सकता हूँ?"},input:{placeholder:"संदेश भेजें",messagePlaceholder:"संदेश...",attachImages:"छवियाँ संलग्न करें",attachments:"अटैचमेंट और उन्नत सुविधाएँ",sendMessage:"संदेश भेजें",stopGeneration:"जनरेशन रोकें"},session:{new:"नई चैट",private:"निजी",privateMode:"निजी मोड",privateDescription:"यह बातचीत सहेजी नहीं जाएगी",privateTooltip:"एक निजी बातचीत शुरू करें जो सहेजी नहीं जाएगी",deleteConfirm:"क्या आप वाकई इस चैट को हटाना चाहते हैं?",generatingTitle:"शीर्षक बनाया जा रहा है",noChats:"अभी तक कोई चैट नहीं",createFirst:"ऊपर अपनी पहली चैट बनाएं",chats:"चैट्स",renameChat:"चैट का नाम बदलें",deleteChat:"चैट हटाएं"},persona:{applied:"पर्सोना लागू किया गया",label:"पर्सोना"},model:{updated:"मॉडल अपडेट किया गया",noModels:"कोई मॉडल उपलब्ध नहीं",noModelsDescription:"कोई मॉडल उपलब्ध नहीं। सुनिश्चित करें कि Ollama चल रहा है और मॉडल इंस्टॉल हैं।",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"कोई मॉडल उपलब्ध नहीं। कृपया सुनिश्चित करें कि Ollama चल रहा है और मॉडल इंस्टॉल हैं।"},footer:{disclaimer:"LLM गलतियाँ कर सकता है - महत्वपूर्ण जानकारी की पुष्टि करें",images:"{{count}} छवि",images_plural:"{{count}} छवियाँ",structuredOutput:"संरचित आउटपुट"},mediaUpload:{dropImagesHere:"यहाँ छवियाँ छोड़ें या",supportedFormats:"समर्थित: JPG, PNG, GIF, WebP (अधिकतम 10MB प्रत्येक)",browse:"ब्राउज़ करें"},structuredOutput:{title:"प्रतिक्रिया प्रारूप",none:"कोई नहीं (प्राकृतिक भाषा)",noneDescription:"डिफ़ॉल्ट प्राकृतिक भाषा प्रतिक्रिया",json:"JSON",jsonDescription:"संरचित JSON प्रारूप",list:"सूची",listDescription:"आइटम की सरणी",summary:"सारांश",summaryDescription:"मुख्य बिंदुओं के साथ दस्तावेज़ सारांश",analysis:"विश्लेषण",analysisDescription:"फायदे/नुकसान के साथ संरचित विश्लेषण",custom:"कस्टम स्कीमा",customDescription:"अपना JSON स्कीमा परिभाषित करें",customSchema:"कस्टम JSON स्कीमा",schemaPreview:"स्कीमा पूर्वावलोकन",applySchema:"स्कीमा लागू करें",cancel:"रद्द करें",enabled:"संरचित आउटपुट सक्षम"}},kc={navigation:{chat:"चैट",models:"मॉडल",personas:"पर्सोना",imagine:"कल्पना",settings:"सेटिंग्स",userManagement:"उपयोगकर्ता प्रबंधन",signOut:"साइन आउट"},toggleSize:"साइडबार का आकार बदलें",expandSidebar:"साइडबार विस्तारित करें"},fc={menu:{changePicture:"तस्वीर बदलें",settings:"सेटिंग्स",userManagement:"उपयोगकर्ता प्रबंधन",logout:"लॉग आउट"},avatar:{title:"प्रोफ़ाइल चित्र बदलें",updated:"प्रोफ़ाइल चित्र अपडेट किया गया",updateFailed:"प्रोफ़ाइल चित्र अपडेट करने में विफल",saving:"सहेजा जा रहा है..."},profile:{noEmail:"कोई ईमेल नहीं दिया गया"}},yc={title:"सेटिंग्स",tabs:{appearance:"दिखावट",model:"मॉडल",systemMessage:"सिस्टम संदेश",plugins:"प्लगइन्स",generation:"जनरेशन",documents:"दस्तावेज़",tts:"टेक्स्ट-टू-स्पीच",imageGen:"छवि जनरेशन",data:"डेटा",about:"परिचय"},appearance:{title:"दिखावट",language:{title:"भाषा",description:"अपनी पसंदीदा भाषा चुनें"},theme:{title:"थीम",light:"लाइट",dark:"डार्क",amoled:"शुद्ध काला",system:"सिस्टम"},chatInterface:{title:"चैट इंटरफ़ेस",showUsername:"उपयोगकर्ता नाम दिखाएं",showUsernameDescription:"चैट संदेशों में उपयोगकर्ता नाम प्रदर्शित करें"},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:"पर्सोना"},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 कुंजी दर्ज करें"}},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:"दस्तावेज़ एम्बेडिंग सक्षम करें"},documents:{title:"दस्तावेज़ सेटिंग्स",embeddings:{title:"एम्बेडिंग्स",enable:"दस्तावेज़ एम्बेडिंग सक्षम करें",model:"एम्बेडिंग मॉडल",modelDescription:"दस्तावेज़ एम्बेडिंग के लिए उपयोग किया जाने वाला मॉडल चुनें",chunkSize:"चंक आकार",chunkSizeInTokens:"(टोकन में)",chunkSizeDescription:"एम्बेडिंग के लिए टेक्स्ट चंक का आकार",chunkOverlap:"चंक ओवरलैप",chunkOverlapInTokens:"(टोकन में)",chunkOverlapDescription:"क्रमिक चंक के बीच ओवरलैप",similarityThreshold:"समानता सीमा",similarityDescription:"परिणामों में शामिल करने के लिए न्यूनतम समानता स्कोर",status:"एम्बेडिंग स्थिति",statusLabel:"स्थिति",available:"उपलब्ध",unavailable:"अनुपलब्ध",chunksWithEmbeddings:"एम्बेडिंग वाले चंक",coverage:"कवरेज",regenerate:"एम्बेडिंग पुनर्जनित करें",regenerating:"पुनर्जनित हो रहा है..."}},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:"त्रुटियाँ"},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:"दस्तावेज़ीकरण",reportIssue:"समस्या रिपोर्ट करें",reportIssueDescription:"बग रिपोर्ट और फीचर अनुरोध"},version:"संस्करण {{version}}"}},vc={title:"मॉडल",subtitle:"अपने Ollama मॉडल पुल, प्रबंधित और मॉनिटर करें",installed:"इंस्टॉल मॉडल",available:"उपलब्ध मॉडल",pull:"मॉडल पुल करें",pulling:"पुल हो रहा है...",delete:"मॉडल हटाएं",deleting:"हटाया जा रहा है...",size:"आकार",modified:"संशोधित",family:"फैमिली",parameters:"पैरामीटर",quantization:"क्वांटाइज़ेशन",noModels:"कोई मॉडल इंस्टॉल नहीं",pullFirst:"शुरू करने के लिए मॉडल पुल करें"},xc={title:"पर्सोना",create:"पर्सोना बनाएं",edit:"पर्सोना संपादित करें",delete:"पर्सोना हटाएं",name:"नाम",description:"विवरण",systemPrompt:"सिस्टम प्रॉम्प्ट",model:"मॉडल",avatar:"अवतार",background:"पृष्ठभूमि",noPersonas:"कोई पर्सोना नहीं बनाया गया",createFirst:"अपना चैट अनुभव कस्टमाइज़ करने के लिए पहला पर्सोना बनाएं"},Sc={title:"गैलरी",subtitle:"आपकी AI-जनरेटेड छवि गैलरी",imageCount:"{{count}} छवियाँ",generate:"छवि बनाएं",generateDescription:"AI के साथ छवियाँ बनाएं",generating:"बनाया जा रहा है...",prompt:"प्रॉम्प्ट",promptPlaceholder:"आप जो छवि बनाना चाहते हैं उसका वर्णन करें...",noImages:"अभी तक कोई छवि नहीं बनाई गई",download:"डाउनलोड",delete:"हटाएं",regenerate:"पुनर्जनित करें",model:"मॉडल",size:"आकार",quality:"गुणवत्ता",created:"बनाया गया"},wc={generic:"एक त्रुटि हुई",network:"नेटवर्क त्रुटि। कृपया अपना कनेक्शन जांचें।",unauthorized:"आप यह क्रिया करने के लिए अधिकृत नहीं हैं।",notFound:"अनुरोधित संसाधन नहीं मिला।",serverError:"सर्वर त्रुटि। कृपया बाद में पुनः प्रयास करें।",validation:"कृपया अपना इनपुट जांचें और पुनः प्रयास करें।"},Pc={title:"कीबोर्ड शॉर्टकट",toggleSidebar:"साइडबार टॉगल करें",openSettings:"सेटिंग्स खोलें",toggleDarkMode:"डार्क मोड टॉगल करें",showShortcuts:"शॉर्टकट दिखाएं",closeModals:"मोडल बंद करें",groups:{navigation:"नेविगेशन",settings:"सेटिंग्स",general:"सामान्य",chat:"चैट"},actions:{sendMessage:"संदेश भेजें",newLine:"संदेश में नई लाइन"},footer:"यह मदद दिखाने के लिए {{key1}} या {{key2}} दबाएं",tooltip:"कीबोर्ड शॉर्टकट"},Mc={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:"कृपया मॉडल नाम दर्ज करें"},progress:{starting:"प्रारंभ हो रहा है...",pulling:"मॉडल डाउनलोड हो रहा है...",verifying:"अखंडता सत्यापित हो रही है...",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
|
|
11
|
+
SYSTEM You are a helpful assistant.`,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:"हाल में अपडेट किए गए"}}},Dc={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}} करने में विफल"},Ac={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:"सहेजने में विफल"}},zc={enhanced:"उन्नत",systemPrompt:"सिस्टम प्रॉम्प्ट",memories:"यादें",use:"उपयोग करें",editTooltip:"पर्सोना संपादित करें",downloadTooltip:"पर्सोना डाउनलोड करें",backup:"बैकअप",exportDNA:"DNA निर्यात करें",wipeMemories:"यादें मिटाएं",wipeConfirm:"क्या आप वाकई इस पर्सोना की सभी यादें मिटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।",wipeSuccess:"{{count}} यादें मिटाई गईं",backupSuccess:"पर्सोना बैकअप सफलतापूर्वक डाउनलोड किया गया",dnaSuccess:"पर्सोना DNA सफलतापूर्वक निर्यात किया गया",failed:"{{action}} करने में विफल"},jc={title:"उपयोगकर्ता प्रबंधन",subtitle:"उपयोगकर्ता खाते और अनुमतियां प्रबंधित करें",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:"उपयोगकर्ता अपडेट करने में विफल"}},Tc={you:"आप",assistant:"सहायक",system:"सिस्टम",copy:"कॉपी करें",copyMessage:"संदेश कॉपी करें",copied:"कॉपी किया गया!",regenerate:"पुनर्जनित करें",regenerateResponse:"प्रतिक्रिया पुनर्जनित करें",edit:"संपादित करें",editSystemMessage:"सिस्टम संदेश संपादित करें",saveChanges:"परिवर्तन सहेजें",cancelEditing:"संपादन रद्द करें",delete:"हटाएं",deleteConfirm:"इस संदेश को हटाएं?",branch:"शाखा",speaking:"बोल रहा है...",speakMessage:"संदेश बोलें",stopSpeaking:"बोलना बंद करें",showMore:"और दिखाएं",showLess:"कम दिखाएं",thinking:"सोच रहा है",systemMessagePlaceholder:"अपना सिस्टम संदेश दर्ज करें...",fullSizeImage:"पूर्ण आकार छवि",startConversation:"बातचीत शुरू करें",startConversationDescription:"अपने AI सहायक के साथ चैट शुरू करने के लिए एक संदेश भेजें। प्रश्न पूछें, कोड में मदद पाएं, या प्राकृतिक बातचीत करें।",scrollToBottom:"नीचे स्क्रॉल करें",newMessages:"नए संदेश"},Nc={title:"छवि गैलरी",noImages:"अभी तक कोई छवि नहीं",noImagesHint:"दाएं पैनल का उपयोग करके अपनी पहली छवि बनाएं",delete:"हटाएं",download:"डाउनलोड",deleteConfirm:"क्या आप वाकई इस छवि को हटाना चाहते हैं?",deleteSuccess:"छवि हटाई गई",deleteFailed:"छवि हटाने में विफल",downloadFailed:"छवि डाउनलोड करने में विफल",loadMore:"और लोड करें ({{current}} में से {{total}})",loadFailed:"गैलरी लोड करने में विफल"},Ic={title:"छवि बनाएं",prompt:"प्रॉम्प्ट",promptPlaceholder:"आप जो छवि बनाना चाहते हैं उसका वर्णन करें...",model:"मॉडल",selectModel:"मॉडल चुनें",noModels:"कोई छवि जनरेशन मॉडल उपलब्ध नहीं",configurePlugin:"छवि जनरेशन समर्थन वाला प्लगइन कॉन्फ़िगर करें",size:"आकार",quality:"गुणवत्ता",style:"शैली",generate:"बनाएं",generating:"बनाया जा रहा है...",success:"छवि सफलतापूर्वक बनाई गई",failed:"छवि बनाने में विफल",enterPrompt:"कृपया प्रॉम्प्ट दर्ज करें",promptTooLong:"प्रॉम्प्ट अधिकतम {{max}} अक्षरों की सीमा से अधिक है"},Cc={title:"कुछ गलत हो गया",description:"एक अप्रत्याशित त्रुटि हुई। कृपया पेज रिफ्रेश करने का प्रयास करें।",tryAgain:"पेज रिफ्रेश करें",goHome:"होम पर जाएं",errorDetails:"त्रुटि विवरण (विकास)"},Fc={title:"दस्तावेज़",upload:"दस्तावेज़ अपलोड करें",uploading:"अपलोड हो रहा है...",noDocuments:"कोई दस्तावेज़ अपलोड नहीं",uploadHint:"अपनी बातचीत में उपयोग के लिए दस्तावेज़ अपलोड करें",delete:"हटाएं",deleteConfirm:"क्या आप वाकई इस दस्तावेज़ को हटाना चाहते हैं?",deleteSuccess:"दस्तावेज़ हटाया गया",deleteFailed:"दस्तावेज़ हटाने में विफल",uploadSuccess:"दस्तावेज़ सफलतापूर्वक अपलोड किया गया",uploadFailed:"दस्तावेज़ अपलोड करने में विफल",types:"समर्थित: PDF, TXT, MD, DOCX",unsupportedFileType:"केवल PDF और TXT फ़ाइलें समर्थित हैं",fileSizeTooLarge:"फ़ाइल का आकार 10MB से कम होना चाहिए",uploadSuccessWithName:'दस्तावेज़ "{{name}}" सफलतापूर्वक अपलोड किया गया',removeSuccess:"दस्तावेज़ सफलतापूर्वक हटाया गया",removeFailed:"दस्तावेज़ हटाने में विफल",removeError:"दस्तावेज़ हटाते समय एक त्रुटि हुई",clickToUpload:"अपलोड करने के लिए क्लिक करें",orDragAndDrop:"या खींचें और छोड़ें",fileTypesAndSize:"PDF या TXT फ़ाइलें 10MB तक",uploadedDocuments:"अपलोड किए गए दस्तावेज़",removeDocument:"दस्तावेज़ हटाएं"},Oc={speak:"बोलें",stop:"रोकें",speaking:"बोल रहा है...",generateFailed:"स्पीच जनरेट करने में विफल",playbackFailed:"ऑडियो प्लेबैक विफल",stopSpeaking:"बोलना बंद करें",generatingSpeech:"स्पीच जनरेट हो रही है...",readAloud:"ज़ोर से पढ़ें"},Ec={title:"आर्टिफैक्ट",code:"कोड",preview:"पूर्वावलोकन",copy:"कोड कॉपी करें",copied:"कॉपी किया गया!",download:"डाउनलोड",expand:"विस्तारित करें",collapse:"संक्षिप्त करें",openInNewTab:"नए टैब में खोलें",invalidSvg:"अमान्य SVG सामग्री",invalidJson:"अमान्य JSON सामग्री",previewMode:"पूर्वावलोकन मोड",codeMode:"कोड मोड",copyContent:"सामग्री कॉपी करें",openInPanel:"पैनल में खोलें",openInNewWindow:"नई विंडो में खोलें",created:"बनाया गया",closePanelEsc:"पैनल बंद करें (Esc)",copyButton:"कॉपी",open:"खोलें",dragEdgeToResize:"आकार बदलने के लिए किनारा खींचें"},Lc={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:"पर्सोना आयात करने में विफल"},Gc={common:mc,brand:pc,auth:gc,setup:hc,chat:bc,sidebar:kc,user:fc,settings:yc,models:vc,personas:xc,gallery:Sc,errors:wc,keyboard:Pc,modelManager:Mc,personaManager:Dc,personaForm:Ac,personaCard:zc,userManager:jc,chatMessage:Tc,imageGallery:Nc,imageGeneration:Ic,errorBoundary:Cc,documents:Fc,ttsButton:Oc,artifacts:Ec,personaImportExport:Lc},Bc={loading:"Memuat...",save:"Simpan",saving:"Menyimpan...",cancel:"Batal",delete:"Hapus",edit:"Edit",close:"Tutup",back:"Kembali",next:"Selanjutnya",confirm:"Konfirmasi",error:"Error",success:"Berhasil",warning:"Peringatan",or:"atau",optional:"opsional",enabled:"Aktif",disabled:"Nonaktif",on:"Nyala",off:"Mati",yes:"Ya",no:"Tidak",search:"Cari",noResults:"Tidak ada hasil",retry:"Coba lagi",refresh:"Segarkan",download:"Unduh",upload:"Unggah",export:"Ekspor",import:"Impor",reset:"Reset",apply:"Terapkan",clear:"Hapus",all:"Semua",none:"Tidak ada",default:"Default",custom:"Kustom",mode:"Mode",multiUser:"Multi Pengguna",remove:"Hapus"},Kc={name:"Libre WebUI",shortName:"Libre"},Hc={login:{title:"Selamat Datang Kembali",subtitle:"Masuk ke akun Anda untuk melanjutkan",username:"Nama Pengguna",usernamePlaceholder:"Masukkan nama pengguna",password:"Kata Sandi",passwordPlaceholder:"Masukkan kata sandi",signIn:"Masuk",signingIn:"Sedang masuk...",noAccount:"Belum punya akun?",signUpHere:"Daftar di sini",loginSuccess:"Login berhasil!",loginFailed:"Login gagal",checkCredentials:"Login gagal. Silakan periksa kredensial Anda.",enterBoth:"Silakan masukkan nama pengguna dan kata sandi",githubSuccess:"Login GitHub berhasil!",githubFailed:"Autentikasi GitHub gagal",githubVerifyFailed:"Gagal memverifikasi autentikasi GitHub"},signup:{title:"Buat Akun",subtitle:"Daftar untuk akun baru Anda",username:"Nama Pengguna",usernamePlaceholder:"Pilih nama pengguna",email:"Email",emailPlaceholder:"email@contoh.com",password:"Kata Sandi",passwordPlaceholder:"Pilih kata sandi",confirmPassword:"Konfirmasi Kata Sandi",confirmPasswordPlaceholder:"Konfirmasi kata sandi Anda",createAccount:"Buat Akun",creatingAccount:"Membuat akun...",hasAccount:"Sudah punya akun?",signInHere:"Masuk di sini",signupSuccess:"Akun berhasil dibuat!",signupFailed:"Pendaftaran gagal",tryAgain:"Pendaftaran gagal. Silakan coba lagi.",usernameRequired:"Nama pengguna dan kata sandi wajib diisi",passwordMismatch:"Kata sandi tidak cocok",passwordTooShort:"Kata sandi harus minimal 6 karakter"},logout:{button:"Keluar",success:"Berhasil keluar"},oauth:{continueWith:"Lanjutkan dengan {{provider}}",connectingTo:"Menghubungkan ke {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rc={welcome:{title:"Selamat Datang di Libre WebUI",subtitle:"Mari Mulai",description:"Siapkan instance Libre WebUI Anda dalam beberapa langkah",createAdmin:"Buat Akun Admin",features:{secure:{title:"Aman & Privat",description:"Percakapan Anda tersimpan di perangkat Anda"},fast:{title:"Cepat & Responsif",description:"Dioptimalkan untuk kecepatan dan performa"},openSource:{title:"Open Source",description:"Perangkat lunak gratis dan open source"}}},admin:{title:"Buat Akun Admin",subtitle:"Pengaturan Administrator",description:"Buat akun admin pertama untuk instance Libre WebUI Anda",usernamePlaceholder:"Masukkan nama pengguna admin",passwordPlaceholder:"Masukkan kata sandi (min 6 karakter)",confirmPlaceholder:"Konfirmasi kata sandi Anda",creating:"Membuat...",createAdmin:"Buat Admin",success:"Akun admin berhasil dibuat!",failed:"Gagal membuat akun admin",fillAllFields:"Silakan isi semua field",note:"Ini akan menjadi akun administrator utama untuk instance Libre WebUI Anda"},encryptionKey:{title:"Simpan Kunci Enkripsi Anda",subtitle:"Penting: Simpan Kunci Ini",description:"Kunci enkripsi ini melindungi data sensitif Anda. Simpan dengan aman - Anda akan membutuhkannya jika perlu memulihkan database.",warning:"Peringatan",warningText:"Jika Anda kehilangan kunci ini dan perlu memulihkan database, data terenkripsi Anda (kunci API, preferensi) tidak akan dapat dipulihkan.",label:"Kunci Enkripsi Anda",loading:"Memuat...",copyToClipboard:"Salin ke clipboard",copied:"Kunci enkripsi disalin ke clipboard!",copyFailed:"Gagal menyalin kunci ke clipboard",envNote:"Kunci ini juga disimpan di file backend/.env sebagai ENCRYPTION_KEY",acknowledgment:"Saya telah menyimpan kunci enkripsi di lokasi yang aman dan memahami bahwa kehilangannya dapat mengakibatkan kehilangan data.",confirmRequired:"Silakan konfirmasi bahwa Anda telah menyimpan kunci enkripsi",continue:"Lanjutkan ke Libre WebUI"}},Uc={greeting:{morning:"Selamat pagi",afternoon:"Selamat siang",evening:"Selamat sore",night:"Selamat malam"},welcome:{helpToday:"Apa yang bisa saya bantu hari ini?",helpTonight:"Apa yang bisa saya bantu malam ini?"},input:{placeholder:"Kirim pesan",messagePlaceholder:"Pesan...",attachImages:"Lampirkan gambar",attachments:"Lampiran dan fitur lanjutan",sendMessage:"Kirim pesan",stopGeneration:"Hentikan pembuatan"},session:{new:"Chat Baru",private:"Privat",privateMode:"Mode Privat",privateDescription:"Percakapan ini tidak akan disimpan",privateTooltip:"Mulai percakapan privat yang tidak akan disimpan",deleteConfirm:"Apakah Anda yakin ingin menghapus chat ini?",generatingTitle:"Membuat judul",noChats:"Belum ada chat",createFirst:"Buat chat pertama Anda di atas",chats:"Chat",renameChat:"Ubah nama chat",deleteChat:"Hapus chat"},persona:{applied:"Persona diterapkan",label:"Persona"},model:{updated:"Model diperbarui",noModels:"Tidak ada model tersedia",noModelsDescription:"Tidak ada model tersedia. Pastikan Ollama berjalan dan model sudah diinstal.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Tidak ada model tersedia. Pastikan Ollama berjalan dan model sudah diinstal."},footer:{disclaimer:"LLM dapat membuat kesalahan - verifikasi informasi penting",images:"{{count}} gambar",images_plural:"{{count}} gambar",structuredOutput:"Output terstruktur"},mediaUpload:{dropImagesHere:"Seret gambar ke sini atau",supportedFormats:"Mendukung: JPG, PNG, GIF, WebP (maks 10MB per file)",browse:"telusuri"},structuredOutput:{title:"Format Respons",none:"Tidak ada (Bahasa Alami)",noneDescription:"Respons bahasa alami default",json:"JSON",jsonDescription:"Format JSON terstruktur",list:"Daftar",listDescription:"Array item",summary:"Ringkasan",summaryDescription:"Ringkasan dokumen dengan poin-poin utama",analysis:"Analisis",analysisDescription:"Analisis terstruktur dengan pro/kontra",custom:"Skema Kustom",customDescription:"Tentukan skema JSON Anda sendiri",customSchema:"Skema JSON kustom",schemaPreview:"Pratinjau Skema",applySchema:"Terapkan Skema",cancel:"Batal",enabled:"Output terstruktur diaktifkan"}},$c={navigation:{chat:"Chat",models:"Model",personas:"Persona",imagine:"Imajinasi",settings:"Pengaturan",userManagement:"Manajemen Pengguna",signOut:"Keluar"},toggleSize:"Ubah ukuran sidebar",expandSidebar:"Perluas sidebar"},Vc={menu:{changePicture:"Ubah Gambar",settings:"Pengaturan",userManagement:"Manajemen Pengguna",logout:"Keluar"},avatar:{title:"Ubah Foto Profil",updated:"Foto profil diperbarui",updateFailed:"Gagal memperbarui foto profil",saving:"Menyimpan..."},profile:{noEmail:"Tidak ada email"}},Wc={title:"Pengaturan",tabs:{appearance:"Tampilan",model:"Model",systemMessage:"Pesan Sistem",plugins:"Plugin",generation:"Pembuatan",documents:"Dokumen",tts:"Text-to-Speech",imageGen:"Pembuatan Gambar",data:"Data",about:"Tentang"},appearance:{title:"Tampilan",language:{title:"Bahasa",description:"Pilih bahasa pilihan Anda"},theme:{title:"Tema",light:"Terang",dark:"Gelap",amoled:"Hitam Murni",system:"Sistem"},chatInterface:{title:"Antarmuka Chat",showUsername:"Tampilkan Nama Pengguna",showUsernameDescription:"Tampilkan nama pengguna di pesan chat"},background:{title:"Gambar Latar",enable:"Aktifkan gambar latar",enableDescription:"Tampilkan latar kustom dengan efek blur",blur:"Blur",opacity:"Opasitas",upload:"Unggah gambar latar",dragDrop:"Seret dan lepas gambar atau klik untuk menelusuri",chooseImage:"Pilih Gambar"}},saveSettings:"Simpan Pengaturan",model:{title:"Pengaturan Model",defaultModel:"Model Default",defaultModelDescription:"Model ini akan digunakan secara default untuk percakapan baru",selectModel:"Pilih model",updateAll:"Perbarui Semua Model",updateAllDescription:"Periksa pembaruan dan unduh versi terbaru semua model yang terinstal",updateAllButton:"Perbarui Semua",updating:"Memperbarui model...",currentModelInfo:"Info Model Saat Ini",name:"Nama",size:"Ukuran",family:"Keluarga",format:"Format",status:"Status",statusStarting:"Memulai...",statusComplete:"Selesai",statusError:"Error",bulkOperations:"Operasi Massal",autoTitle:{title:"Pembuatan Judul Otomatis",enable:"Aktifkan Judul Otomatis",enableDescription:"Otomatis membuat judul untuk percakapan baru",taskModel:"Model Tugas",selectTaskModel:"Pilih model tugas",taskModelDescription:"Model yang digunakan untuk membuat judul percakapan"},persona:"Persona"},systemMessage:{title:"Pesan Sistem",description:"Atur pesan sistem kustom yang akan digunakan untuk semua percakapan baru.",placeholder:"Masukkan pesan sistem...",saved:"Pesan sistem disimpan",saveFailed:"Gagal menyimpan pesan sistem"},plugins:{title:"Plugin",description:"Kelola plugin yang terinstal",addNew:"Tambah Plugin Baru",upload:"Unggah Plugin",addJson:"Tambah JSON",uploading:"Mengunggah...",jsonPlaceholder:"Tempel konfigurasi JSON plugin...",install:"Instal Plugin",noPlugins:"Tidak ada plugin terinstal",noPluginsDescription:"Tambah plugin untuk memperluas fungsionalitas",loading:"Memuat plugin...",installed:"Plugin Terinstal",active:"Plugin Aktif",activeLabel:"Aktif",inactive:"Tidak Aktif",activate:"Aktifkan",deactivate:"Nonaktifkan",models:"model",apiKeySet:"API Key Diatur",apiKeyConfiguration:"Konfigurasi API Key",apiKeyEnvAlternative:"Atau, atur variabel",environmentVariable:"variabel lingkungan",apiKeyConfigured:"API key dikonfigurasi",apiKeyPlaceholder:"Masukkan API key Anda...",saveApiKey:"Simpan API Key",apiKey:{title:"API Key",placeholder:"Masukkan API key",save:"Simpan Key",remove:"Hapus Key",configured:"API Key Dikonfigurasi",notConfigured:"API Key Diperlukan",saved:"API key berhasil disimpan",removed:"API key dihapus",saveFailed:"Gagal menyimpan API key",removeFailed:"Gagal menghapus API key",enterKey:"Silakan masukkan API key"}},generation:{title:"Opsi Pembuatan",description:"Konfigurasi cara AI membuat respons",coreParameters:"Parameter Inti",temperature:"Temperatur",temperatureDescription:"Mengontrol keacakan. Nilai lebih rendah lebih fokus, nilai lebih tinggi lebih kreatif.",topP:"Top P",topPDescription:"Mengontrol keragaman melalui nucleus sampling. Nilai lebih rendah fokus pada token yang mungkin.",topK:"Top K",topKDescription:"Membatasi pemilihan token ke K teratas yang paling mungkin. Atur ke 0 untuk menonaktifkan.",minP:"Min P",minPDescription:"Ambang probabilitas minimum untuk pemilihan token.",generationControl:"Kontrol Pembuatan",maxTokens:"Token Maksimum",maxTokensDescription:"Jumlah maksimum token yang akan dihasilkan dalam respons.",repeatPenalty:"Penalti Pengulangan",repeatPenaltyDescription:"Memberikan penalti pada token yang diulang. Nilai lebih tinggi mengurangi pengulangan.",contextLength:"Panjang Konteks",contextLengthDescription:"Ukuran jendela konteks maksimum untuk percakapan.",seed:"Seed",optional:"opsional",random:"Acak",seedDescription:"Atur seed spesifik untuk output yang dapat direproduksi.",advancedOptions:"Opsi Lanjutan",presencePenalty:"Penalti Kehadiran",presencePenaltyDescription:"Memberikan penalti pada token yang muncul dalam konteks.",frequencyPenalty:"Penalti Frekuensi",frequencyPenaltyDescription:"Memberikan penalti pada token yang sering digunakan.",stopSequences:"Urutan Berhenti",commaSeparated:"dipisahkan koma",stopSequencesDescription:"Token kustom yang akan menghentikan pembuatan saat ditemui.",resetDefaults:"Reset ke Default",saveOptions:"Simpan Opsi",embeddingSettings:"Pengaturan Embedding",enableEmbeddings:"Aktifkan Embedding Dokumen"},documents:{title:"Pengaturan Dokumen",embeddings:{title:"Embedding",enable:"Aktifkan embedding dokumen",model:"Model Embedding",modelDescription:"Pilih model yang digunakan untuk embedding dokumen",chunkSize:"Ukuran Chunk",chunkSizeInTokens:"(dalam token)",chunkSizeDescription:"Ukuran potongan teks untuk embedding",chunkOverlap:"Overlap Chunk",chunkOverlapInTokens:"(dalam token)",chunkOverlapDescription:"Overlap antara chunk berturut-turut",similarityThreshold:"Ambang Kemiripan",similarityDescription:"Skor kemiripan minimum untuk menyertakan hasil",status:"Status Embedding",statusLabel:"Status",available:"Tersedia",unavailable:"Tidak Tersedia",chunksWithEmbeddings:"Chunk dengan embedding",coverage:"Cakupan",regenerate:"Regenerasi Embedding",regenerating:"Meregenerasi..."}},tts:{title:"Text-to-Speech",description:"Konfigurasi pengaturan text-to-speech untuk membaca pesan dengan suara",loadingProviders:"Memuat penyedia TTS...",noProviders:"Tidak Ada Penyedia TTS",noProvidersDescription:"Konfigurasi plugin dengan dukungan TTS untuk mengaktifkan text-to-speech",enable:"Aktifkan TTS",enableDescription:"Izinkan text-to-speech untuk pesan asisten",autoPlay:"Putar Otomatis Respons",autoPlayDescription:"Otomatis membaca pesan asisten baru dengan suara",streamSentences:"Stream Kalimat",streamSentencesDescription:"Putar audio kalimat per kalimat alih-alih menunggu pesan lengkap. Disarankan untuk TTS lokal untuk menghindari timeout pada pesan panjang.",voiceConfiguration:"Konfigurasi Suara",model:"Model TTS",modelDescription:"Pilih model untuk pembuatan text-to-speech",voice:"Suara",selectVoice:"Pilih suara",voiceDescription:"Pilih suara untuk text-to-speech",speed:"Kecepatan",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Penyedia Tersedia",models:"model",test:"Tes",testing:"Menguji...",stop:"Berhenti"},imageGen:{title:"Pembuatan Gambar",description:"Konfigurasi pengaturan dan penyedia pembuatan gambar",loadingProviders:"Memuat penyedia pembuatan gambar...",noProviders:"Tidak Ada Penyedia Pembuatan Gambar",noProvidersDescription:"Konfigurasi plugin dengan dukungan pembuatan gambar",enable:"Aktifkan Pembuatan Gambar",enableDescription:"Izinkan pembuatan gambar AI dalam percakapan",configuration:"Konfigurasi",model:"Model",modelDescription:"Pilih model untuk pembuatan gambar",size:"Ukuran",sizeDescription:"Resolusi gambar yang dihasilkan",quality:"Kualitas",qualityDescription:"Tingkat kualitas gambar yang dihasilkan",style:"Gaya",styleDescription:"Preset gaya untuk gambar yang dihasilkan",availableProviders:"Penyedia Tersedia",models:"model"},data:{title:"Manajemen Data",export:"Ekspor Data",exportDescription:"Unduh semua data Anda termasuk preferensi, sesi, dan dokumen.",exportAll:"Ekspor Semua Data",import:"Impor Data",importDescription:"Impor data dari ekspor sebelumnya.",importData:"Impor Data",importing:"Mengimpor...",clearSessions:"Hapus Sesi",clearSessionsDescription:"Hapus semua sesi chat. Tindakan ini tidak dapat dibatalkan.",clearAll:"Hapus Semua",clearing:"Menghapus...",importOptions:"Opsi Impor",importOptionsDescription:"Pilih cara menangani data yang ada",skipDuplicates:"Lewati duplikat",overwrite:"Timpa yang ada",importResults:"Hasil Impor",preferences:"Preferensi",imported:"Diimpor",failed:"Gagal",sessions:"Sesi",importedLabel:"diimpor",skipped:"dilewati",documents:"Dokumen",errors:"Error"},about:{title:"Tentang",versionLabel:"Versi",ollama:{title:"Status Ollama",version:"Versi",healthy:"Sehat",unhealthy:"Tidak Sehat"},stats:{models:"Model",sessions:"Sesi"},features:{privacy:{title:"Privasi Utama",description:"Data Anda tetap di perangkat Anda"},openSource:{title:"Open Source",description:"Perangkat lunak gratis dan open source"},localInference:{title:"Inferensi Lokal",description:"Jalankan model AI secara lokal dengan Ollama"}},openSourceBy:"Open source oleh {{company}}",links:{title:"Tautan",github:"GitHub",githubDescription:"Lihat kode sumber dan berkontribusi",website:"Website",websiteDescription:"Kunjungi website kami",ollama:"Ollama",ollamaDescription:"Pelajari lebih lanjut tentang Ollama",documentation:"Dokumentasi",reportIssue:"Laporkan Masalah",reportIssueDescription:"Laporan bug & permintaan fitur"},version:"Versi {{version}}"}},qc={title:"Model",subtitle:"Unduh, kelola, dan pantau model Ollama Anda",installed:"Model Terinstal",available:"Model Tersedia",pull:"Unduh Model",pulling:"Mengunduh...",delete:"Hapus Model",deleting:"Menghapus...",size:"Ukuran",modified:"Dimodifikasi",family:"Keluarga",parameters:"Parameter",quantization:"Kuantisasi",noModels:"Tidak ada model terinstal",pullFirst:"Unduh model untuk memulai"},Jc={title:"Persona",create:"Buat Persona",edit:"Edit Persona",delete:"Hapus Persona",name:"Nama",description:"Deskripsi",systemPrompt:"Prompt Sistem",model:"Model",avatar:"Avatar",background:"Latar",noPersonas:"Tidak ada persona yang dibuat",createFirst:"Buat persona pertama Anda untuk menyesuaikan pengalaman chat"},_c={title:"Galeri",subtitle:"Galeri gambar yang dihasilkan AI Anda",imageCount:"{{count}} gambar",generate:"Buat Gambar",generateDescription:"Buat gambar dengan AI",generating:"Membuat...",prompt:"Prompt",promptPlaceholder:"Deskripsikan gambar yang ingin Anda buat...",noImages:"Belum ada gambar yang dibuat",download:"Unduh",delete:"Hapus",regenerate:"Regenerasi",model:"Model",size:"Ukuran",quality:"Kualitas",created:"Dibuat"},Yc={generic:"Terjadi kesalahan",network:"Kesalahan jaringan. Silakan periksa koneksi Anda.",unauthorized:"Anda tidak berwenang untuk melakukan tindakan ini.",notFound:"Sumber daya yang diminta tidak ditemukan.",serverError:"Kesalahan server. Silakan coba lagi nanti.",validation:"Silakan periksa input Anda dan coba lagi."},Zc={title:"Pintasan Keyboard",toggleSidebar:"Toggle sidebar",openSettings:"Buka pengaturan",toggleDarkMode:"Toggle mode gelap",showShortcuts:"Tampilkan pintasan keyboard",closeModals:"Tutup modal",groups:{navigation:"Navigasi",settings:"Pengaturan",general:"Umum",chat:"Chat"},actions:{sendMessage:"Kirim pesan",newLine:"Baris baru dalam pesan"},footer:"Tekan {{key1}} atau {{key2}} untuk menampilkan bantuan ini",tooltip:"Pintasan keyboard"},Xc={title:"Model",loading:"Memuat model...",systemStatus:{online:"Ollama Online",offline:"Ollama Offline",models:"model",models_plural:"model",running:"berjalan",vram:"VRAM"},sections:{pull:"Unduh Model Baru",library:"Telusuri Pustaka",running:"Model Berjalan",local:"Model Lokal",advanced:"Tindakan Lanjutan",huggingface:"HuggingFace Hub"},pull:{placeholder:"Masukkan nama model (mis., llama3.2:3b, deepseek-r1:14b)",button:"Unduh",cancel:"Batal",popular:"Model populer:",browseAll:"Telusuri semua model di ollama.com",success:"Model {{name}} berhasil diunduh",cancelled:"Unduhan model dibatalkan",failed:"Gagal mengunduh model",enterName:"Silakan masukkan nama model"},progress:{starting:"Menginisialisasi...",pulling:"Mengunduh model...",verifying:"Memverifikasi integritas...",writing:"Menulis manifest...",cleaning:"Membersihkan..."},library:{available:"tersedia",search:"Cari model...",noResults:"Tidak ada model yang ditemukan sesuai kriteria Anda",installed:"Terinstal",more:"+{{count}} lagi",refresh:"Segarkan Pustaka"},local:{noModels:"Belum ada model terinstal",pullToStart:"Unduh model di atas untuk memulai",installed:"terinstal",running:"Berjalan",info:"Info",copy:"Salin",delete:"Hapus",deleteConfirm:'Apakah Anda yakin ingin menghapus model "{{name}}"?',deleteSuccess:"Model {{name}} berhasil dihapus",deleteFailed:"Gagal menghapus model"},advanced:{createModel:"Buat Model",fromModelfile:"Dari Modelfile",copyModel:"Salin Model",duplicateExisting:"Duplikat yang ada",testEmbeddings:"Tes Embedding",generateVectors:"Buat vektor",healthCheck:"Pemeriksaan Kesehatan",testConnection:"Tes koneksi",healthy:"Ollama sehat!"},modals:{details:{title:"Detail Model",info:"Informasi Model",family:"Keluarga",parameters:"Parameter",quantization:"Kuantisasi",format:"Format",systemPrompt:"Prompt Sistem",template:"Template",license:"Lisensi",modelfile:"Modelfile",noDetails:"Tidak ada detail tersedia"},copy:{title:"Salin Model",source:"Model Sumber",selectModel:"Pilih model...",newName:"Nama Model Baru",placeholder:"mis., my-custom-model",copying:"Menyalin...",button:"Salin Model",success:"Model disalin ke {{name}}",failed:"Gagal menyalin model",enterBoth:"Silakan masukkan nama sumber dan tujuan"},create:{title:"Buat Model Kustom",name:"Nama Model",namePlaceholder:"mis., my-assistant",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
12
|
+
SYSTEM You are a helpful assistant.`,docs:"Dokumentasi Modelfile",docsLink:"untuk referensi sintaks",creating:"Membuat...",button:"Buat Model",success:"Model {{name}} berhasil dibuat",failed:"Gagal membuat model",enterBoth:"Silakan masukkan nama model dan konten Modelfile"},embeddings:{title:"Tes Embedding",model:"Model Embedding",selectModel:"Pilih model...",recommended:"Direkomendasikan: nomic-embed-text, mxbai-embed-large",input:"Teks Input",placeholder:"Masukkan teks untuk membuat embedding...",generating:"Membuat...",button:"Buat Embedding",result:"Hasil ({{count}} dimensi)",success:"Dibuat vektor embedding {{count}} dimensi",failed:"Gagal membuat embedding",enterBoth:"Silakan pilih model dan masukkan teks"}},huggingface:{browseAll:"Jelajahi semua di HuggingFace",checkingGguf:"Mencari file GGUF...",noGgufAvailable:"Tidak ada file GGUF yang tersedia untuk pull langsung ke Ollama",ggufFilesCount:"File GGUF ({{count}}) - Pull langsung ke Ollama",noModelsFound:"Tidak ada model ditemukan",noResults:"Tidak ada model ditemukan. Coba sesuaikan pencarian atau filter.",browseAllLink:"Lihat semua",search:"Cari model HuggingFace...",by:"oleh",gated:"Akses terbatas",viewOnHF:"Lihat di HuggingFace",sortDownloads:"Unduhan",sortLikes:"Suka",sortRecent:"Terbaru",taskTextGeneration:"Pembuatan Teks",taskTextToSpeech:"Teks ke Suara",taskTextToImage:"Teks ke Gambar",taskSpeechRecognition:"Pengenalan Suara",tasks:{textGen:"Pembuatan Teks",tts:"Teks ke Suara",image:"Teks ke Gambar",stt:"Pengenalan Suara"},sort:{downloads:"Paling Banyak Diunduh",likes:"Paling Disukai",recent:"Baru Diperbarui"}}},Qc={title:"Persona",subtitle:"Buat dan kelola persona AI dengan kepribadian, memori, dan perilaku kustom",loading:"Memuat persona...",createButton:"Buat Persona",importExport:"Impor/Ekspor",stats:{title:"Persona Anda",count:"{{count}} persona dibuat",count_plural:"{{count}} persona dibuat"},empty:{title:"Belum ada persona",description:"Buat persona pertama Anda untuk memulai interaksi AI yang dipersonalisasi",button:"Buat Persona Pertama Anda"},deleteConfirm:'Apakah Anda yakin ingin menghapus "{{name}}"?',deleteSuccess:'Persona "{{name}}" berhasil dihapus',downloadSuccess:'Persona "{{name}}" berhasil diunduh',failed:"Gagal {{action}} persona"},eu={title:{create:"Buat Persona Baru",edit:"Edit Persona"},subtitle:{create:"Buat persona AI baru dengan kepribadian kustom, sistem memori, dan kemampuan pembelajaran adaptif",edit:"Sesuaikan persona AI Anda dengan memori lanjutan, pembelajaran adaptif, dan parameter cerdas"},loading:"Memuat form...",saved:"Disimpan",tabs:{basic:"Dasar",parameters:"Parameter",memory:"Memori & Pembelajaran",advanced:"Lanjutan"},basic:{name:"Nama",namePlaceholder:"Masukkan nama persona",model:"Model",selectModel:"Pilih model",description:"Deskripsi",descriptionPlaceholder:"Deskripsikan persona Anda...",systemPrompt:"Prompt Sistem",systemPromptPlaceholder:"Masukkan prompt sistem yang mendefinisikan perilaku persona Anda...",systemPromptHint:"Prompt sistem mendefinisikan bagaimana persona Anda akan berperilaku dan merespons."},parameters:{temperature:"Temperatur",temperatureHint:"Mengontrol kreativitas vs konsistensi",topP:"Top-P",topPHint:"Mengontrol keragaman respons",topK:"Top-K",topKHint:"Membatasi kosakata ke token top-k",contextWindow:"Jendela Konteks",contextWindowHint:"Panjang maksimum riwayat percakapan",maxTokens:"Token Maksimum",maxTokensHint:"Panjang maksimum respons",repeatPenalty:"Penalti Pengulangan",repeatPenaltyHint:"Mengurangi respons berulang"},memory:{title:"Sistem Memori",subtitle:"Persona mengingat percakapan dari waktu ke waktu",enableHint:"Aktifkan sistem memori agar persona Anda mengingat percakapan dan membangun konteks dari waktu ke waktu.",loading:"Memuat status memori...",noData:"Belum ada data memori",memories:"Memori",mbUsed:"MB Digunakan",lastBackup:"Backup Terakhir",never:"Tidak Pernah",maxMemories:"Memori Maksimum",maxMemoriesHint:"Berapa banyak memori yang dapat disimpan persona ini",retention:"Retensi Memori",retentionHint:"Hari untuk menyimpan memori sebelum pembersihan",autoCleanup:"Pembersihan otomatis memori lama",wipeAll:"Hapus Semua Memori",wipeCannot:"Ini tidak dapat dibatalkan",wipeButton:"Hapus",wiping:"Menghapus...",wipeConfirm:"Apakah Anda yakin ingin menghapus semua memori? Ini tidak dapat dibatalkan.",wipeSuccess:"Dihapus {{count}} memori"},learning:{title:"Pembelajaran Adaptif",subtitle:"Persona berkembang berdasarkan interaksi",enableHint:"Aktifkan pembelajaran adaptif agar persona Anda berkembang dan mempersonalisasi respons berdasarkan interaksi Anda.",speed:"Kecepatan Pembelajaran",slow:"Lambat",slowDesc:"Perubahan bertahap",balanced:"Seimbang",balancedDesc:"Kecepatan moderat",fast:"Cepat",fastDesc:"Adaptasi cepat",autoAdapt:"Otomatis beradaptasi dengan preferensi pengguna",whatLearns:"Apa yang dipelajari persona:",conversationTone:"Nada percakapan",responseStyle:"Gaya respons",userPreferences:"Preferensi pengguna",topicInterests:"Minat topik"},advanced:{embeddingModel:"Model Embedding",embeddingHint:"Pilih model yang digunakan untuk encoding memori dan pencarian semantik. Model embedding ditampilkan pertama, diikuti model lain yang tersedia.",noModels:"Tidak ada model ditemukan",embeddingModels:"Model Embedding",otherModels:"Model Lain",installHint:"Instal model embedding:",recommended:"Direkomendasikan: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Tentang Pengaturan Lanjutan",aboutDescription:"Model embedding digunakan oleh sistem memori untuk memahami makna semantik dan menemukan memori yang relevan selama percakapan. Pilih model yang sesuai dengan kasus penggunaan dan sumber daya yang tersedia."},actions:{cancel:"Batal",save:"Simpan",saving:"Menyimpan...",saveClose:"Simpan & Tutup",create:"Buat"},success:{created:"Persona dibuat",updated:"Persona diperbarui"},error:{saveFailed:"Gagal menyimpan"}},au={enhanced:"Ditingkatkan",systemPrompt:"Prompt Sistem",memories:"memori",use:"Gunakan",editTooltip:"Edit persona",downloadTooltip:"Unduh persona",backup:"Backup",exportDNA:"Ekspor DNA",wipeMemories:"Hapus Memori",wipeConfirm:"Apakah Anda yakin ingin menghapus semua memori untuk persona ini? Tindakan ini tidak dapat dibatalkan.",wipeSuccess:"Dihapus {{count}} memori",backupSuccess:"Backup persona berhasil diunduh",dnaSuccess:"DNA persona berhasil diekspor",failed:"Gagal {{action}}"},tu={title:"Manajemen Pengguna",subtitle:"Kelola akun dan izin pengguna",loading:"Memuat pengguna...",createUser:"Buat Pengguna",search:"Cari pengguna...",noUsers:"Tidak ada pengguna ditemukan",noUsersMatching:"Tidak ada pengguna yang cocok dengan pencarian Anda",columns:{user:"Pengguna",email:"Email",role:"Peran",created:"Dibuat",actions:"Tindakan"},roles:{admin:"Admin",user:"Pengguna"},noEmail:"Tidak ada email",deleteConfirm:'Apakah Anda yakin ingin menghapus pengguna "{{name}}"?',deleteSuccess:"Pengguna berhasil dihapus",deleteFailed:"Gagal menghapus pengguna",cannotDeleteSelf:"Anda tidak dapat menghapus akun Anda sendiri",form:{title:{create:"Buat Pengguna",edit:"Edit Pengguna"},username:"Nama Pengguna",usernamePlaceholder:"Masukkan nama pengguna",email:"Email",emailPlaceholder:"Masukkan email (opsional)",password:"Kata Sandi",passwordPlaceholder:"Masukkan kata sandi",passwordHint:"Kosongkan untuk mempertahankan kata sandi saat ini",role:"Peran",creating:"Membuat...",updating:"Memperbarui...",createButton:"Buat Pengguna",updateButton:"Perbarui Pengguna",createSuccess:"Pengguna berhasil dibuat",updateSuccess:"Pengguna berhasil diperbarui",createFailed:"Gagal membuat pengguna",updateFailed:"Gagal memperbarui pengguna"}},nu={you:"Anda",assistant:"Asisten",system:"Sistem",copy:"Salin",copyMessage:"Salin pesan",copied:"Disalin!",regenerate:"Regenerasi",regenerateResponse:"Regenerasi respons",edit:"Edit",editSystemMessage:"Edit pesan sistem",saveChanges:"Simpan perubahan",cancelEditing:"Batalkan pengeditan",delete:"Hapus",deleteConfirm:"Hapus pesan ini?",branch:"Cabang",speaking:"Berbicara...",speakMessage:"Ucapkan pesan",stopSpeaking:"Berhenti berbicara",showMore:"Tampilkan lebih banyak",showLess:"Tampilkan lebih sedikit",thinking:"Berpikir",systemMessagePlaceholder:"Masukkan pesan sistem Anda...",fullSizeImage:"Gambar ukuran penuh",startConversation:"Mulai percakapan",startConversationDescription:"Kirim pesan untuk mulai mengobrol dengan asisten AI Anda. Ajukan pertanyaan, minta bantuan dengan kode, atau lakukan percakapan alami.",scrollToBottom:"Gulir ke bawah",newMessages:"Pesan baru"},ru={title:"Galeri Gambar",noImages:"Belum ada gambar",noImagesHint:"Buat gambar pertama Anda menggunakan panel di sebelah kanan",delete:"Hapus",download:"Unduh",deleteConfirm:"Apakah Anda yakin ingin menghapus gambar ini?",deleteSuccess:"Gambar dihapus",deleteFailed:"Gagal menghapus gambar",downloadFailed:"Gagal mengunduh gambar",loadMore:"Muat Lebih Banyak ({{current}} dari {{total}})",loadFailed:"Gagal memuat galeri"},iu={title:"Buat Gambar",prompt:"Prompt",promptPlaceholder:"Deskripsikan gambar yang ingin Anda buat...",model:"Model",selectModel:"Pilih model",noModels:"Tidak ada model pembuatan gambar tersedia",configurePlugin:"Konfigurasi plugin dengan dukungan pembuatan gambar",size:"Ukuran",quality:"Kualitas",style:"Gaya",generate:"Buat",generating:"Membuat...",success:"Gambar berhasil dibuat",failed:"Gagal membuat gambar",enterPrompt:"Silakan masukkan prompt",promptTooLong:"Prompt melebihi panjang maksimum {{max}} karakter"},ou={title:"Terjadi kesalahan",description:"Kami menemukan kesalahan tak terduga. Silakan coba segarkan halaman.",tryAgain:"Segarkan Halaman",goHome:"Ke Beranda",errorDetails:"Detail Error (Pengembangan)"},su={title:"Dokumen",upload:"Unggah Dokumen",uploading:"Mengunggah...",noDocuments:"Tidak ada dokumen yang diunggah",uploadHint:"Unggah dokumen untuk digunakan dalam percakapan Anda",delete:"Hapus",deleteConfirm:"Apakah Anda yakin ingin menghapus dokumen ini?",deleteSuccess:"Dokumen dihapus",deleteFailed:"Gagal menghapus dokumen",uploadSuccess:"Dokumen berhasil diunggah",uploadFailed:"Gagal mengunggah dokumen",types:"Didukung: PDF, TXT, MD, DOCX",unsupportedFileType:"Hanya file PDF dan TXT yang didukung",fileSizeTooLarge:"Ukuran file harus kurang dari 10MB",uploadSuccessWithName:'Dokumen "{{name}}" berhasil diunggah',removeSuccess:"Dokumen berhasil dihapus",removeFailed:"Gagal menghapus dokumen",removeError:"Terjadi kesalahan saat menghapus dokumen",clickToUpload:"Klik untuk mengunggah",orDragAndDrop:"atau seret dan lepas",fileTypesAndSize:"File PDF atau TXT hingga 10MB",uploadedDocuments:"Dokumen yang Diunggah",removeDocument:"Hapus dokumen"},lu={speak:"Ucapkan",stop:"Berhenti",speaking:"Berbicara...",generateFailed:"Gagal membuat ucapan",playbackFailed:"Pemutaran audio gagal",stopSpeaking:"Berhenti berbicara",generatingSpeech:"Membuat ucapan...",readAloud:"Baca dengan suara"},du={title:"Artefak",code:"Kode",preview:"Pratinjau",copy:"Salin kode",copied:"Disalin!",download:"Unduh",expand:"Perluas",collapse:"Ciutkan",openInNewTab:"Buka di tab baru",invalidSvg:"Konten SVG tidak valid",invalidJson:"Konten JSON tidak valid",previewMode:"Mode pratinjau",codeMode:"Mode kode",copyContent:"Salin konten",openInPanel:"Buka di panel",openInNewWindow:"Buka di jendela baru",created:"Dibuat",closePanelEsc:"Tutup panel (Esc)",copyButton:"Salin",open:"Buka",dragEdgeToResize:"Seret tepi untuk mengubah ukuran"},cu={title:"Impor & Ekspor Persona",description:"Ekspor persona Anda untuk dibagikan atau impor persona dari orang lain",exportPersonas:"Ekspor Persona",importPersonas:"Impor Persona",noPersonasToExport:"Tidak ada persona untuk diekspor",personasAvailable:"{{count}} persona tersedia",personasAvailable_plural:"{{count}} persona tersedia",exportAll:"Ekspor Semua",uploadJsonFile:"Unggah File JSON",pasteJsonLabel:"Tempel Data JSON",pasteJsonPlaceholder:"Tempel data JSON persona di sini...",importing:"Mengimpor...",importButton:"Impor Persona",expectedFormat:"Format JSON yang Diharapkan:",exportSuccess:'Persona "{{name}}" berhasil diekspor',exportFailed:"Gagal mengekspor persona",exportAllSuccess:"Semua {{count}} persona berhasil diekspor",exportAllFailed:"Gagal mengekspor persona",pasteJsonData:"Silakan tempel data JSON persona",importMultipleSuccess:"Berhasil mengimpor {{count}} persona",importMultipleFailed:"Gagal mengimpor {{count}} persona",importNoneFailed:"Gagal mengimpor persona apa pun",importSuccess:"Persona berhasil diimpor",importFailed:"Gagal mengimpor persona"},uu={common:Bc,brand:Kc,auth:Hc,setup:Rc,chat:Uc,sidebar:$c,user:Vc,settings:Wc,models:qc,personas:Jc,gallery:_c,errors:Yc,keyboard:Zc,modelManager:Xc,personaManager:Qc,personaForm:eu,personaCard:au,userManager:tu,chatMessage:nu,imageGallery:ru,imageGeneration:iu,errorBoundary:ou,documents:su,ttsButton:lu,artifacts:du,personaImportExport:cu},mu={loading:"Hleður...",save:"Vista",saving:"Vistar...",cancel:"Hætta við",delete:"Eyða",edit:"Breyta",close:"Loka",back:"Til baka",next:"Áfram",confirm:"Staðfesta",error:"Villa",success:"Tókst",warning:"Viðvörun",or:"eða",optional:"valfrjálst",enabled:"Virkt",disabled:"Óvirkt",on:"Kveikt",off:"Slökkt",yes:"Já",no:"Nei",search:"Leita",noResults:"Engar niðurstöður fundust",retry:"Reyna aftur",refresh:"Endurhlaða",download:"Sækja",upload:"Hlaða upp",export:"Flytja út",import:"Flytja inn",reset:"Endurstilla",apply:"Nota",clear:"Hreinsa",all:"Allt",none:"Ekkert",default:"Sjálfgefið",custom:"Sérsniðið",mode:"Hamur",multiUser:"Fjölnotandi",remove:"Fjarlægja"},pu={name:"Libre WebUI",shortName:"Libre"},gu={login:{title:"Velkomin/n aftur",subtitle:"Skráðu þig inn á reikninginn þinn til að halda áfram",username:"Notandanafn",usernamePlaceholder:"Sláðu inn notandanafn",password:"Lykilorð",passwordPlaceholder:"Sláðu inn lykilorð",signIn:"Skrá inn",signingIn:"Skráir inn...",noAccount:"Ertu ekki með reikning?",signUpHere:"Nýskráðu þig hér",loginSuccess:"Innskráning tókst!",loginFailed:"Innskráning mistókst",checkCredentials:"Innskráning mistókst. Athugaðu innskráningarupplýsingarnar.",enterBoth:"Sláðu inn bæði notandanafn og lykilorð",githubSuccess:"GitHub innskráning tókst!",githubFailed:"GitHub auðkenning mistókst",githubVerifyFailed:"Ekki tókst að staðfesta GitHub auðkenningu"},signup:{title:"Stofna reikning",subtitle:"Nýskráðu þig fyrir nýjan reikning",username:"Notandanafn",usernamePlaceholder:"Veldu notandanafn",email:"Netfang",emailPlaceholder:"þitt@netfang.is",password:"Lykilorð",passwordPlaceholder:"Veldu lykilorð",confirmPassword:"Staðfesta lykilorð",confirmPasswordPlaceholder:"Staðfestu lykilorðið þitt",createAccount:"Stofna reikning",creatingAccount:"Stofnar reikning...",hasAccount:"Ertu nú þegar með reikning?",signInHere:"Skráðu þig inn hér",signupSuccess:"Reikningur stofnaður!",signupFailed:"Nýskráning mistókst",tryAgain:"Nýskráning mistókst. Reyndu aftur.",usernameRequired:"Notandanafn og lykilorð eru nauðsynleg",passwordMismatch:"Lykilorðin stemma ekki",passwordTooShort:"Lykilorð verður að vera að minnsta kosti 6 stafir"},logout:{button:"Skrá út",success:"Útskráning tókst"},oauth:{continueWith:"Halda áfram með {{provider}}",connectingTo:"Tengist {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hu={welcome:{title:"Velkomin í Libre WebUI",subtitle:"Byrjum",description:"Settu upp Libre WebUI í örfáum skrefum",createAdmin:"Stofna stjórnendareikning",features:{secure:{title:"Öruggt og einkaleynd",description:"Samtölin þín eru geymd á tækinu þínu"},fast:{title:"Hratt og móttækilegt",description:"Fínstillt fyrir hraða og afköst"},openSource:{title:"Opinn hugbúnaður",description:"Ókeypis og opinn hugbúnaður"}}},admin:{title:"Stofna stjórnendareikning",subtitle:"Uppsetning stjórnanda",description:"Stofnaðu fyrsta stjórnandareikninginn fyrir Libre WebUI",usernamePlaceholder:"Sláðu inn notandanafn stjórnanda",passwordPlaceholder:"Sláðu inn lykilorð (að minnsta kosti 6 stafir)",confirmPlaceholder:"Staðfestu lykilorðið",creating:"Stofnar...",createAdmin:"Stofna stjórnanda",success:"Stjórnandareikningur stofnaður!",failed:"Ekki tókst að stofna stjórnendareikning",fillAllFields:"Fylltu út alla reiti",note:"Þetta verður aðal stjórnandareikningurinn fyrir Libre WebUI"},encryptionKey:{title:"Vistaðu dulritunarlyklinn þinn",subtitle:"Mikilvægt: Vistaðu þennan lykil",description:"Þessi dulritunarlykill verndar viðkvæm gögn þín. Geymdu hann á öruggum stað - þú þarft hann ef þú þarft að endurheimta gagnagrunninn.",warning:"Viðvörun",warningText:"Ef þú missir þennan lykil og þarft að endurheimta gagnagrunninn verða dulrituð gögn (API lyklar, stillingar) óendurheimtanleg.",label:"Dulritunarlykillinn þinn",loading:"Hleður...",copyToClipboard:"Afrita á klemmuspjald",copied:"Dulritunarlykill afritaður á klemmuspjald!",copyFailed:"Ekki tókst að afrita lykil á klemmuspjald",envNote:"Þessi lykill er einnig vistaður í backend/.env skránni sem ENCRYPTION_KEY",acknowledgment:"Ég hef vistað dulritunarlyklinn minn á öruggum stað og skil að ef ég týni honum gætu gögn glatast.",confirmRequired:"Staðfestu að þú hafir vistað dulritunarlyklinn",continue:"Halda áfram í Libre WebUI"}},bu={greeting:{morning:"Góðan daginn",afternoon:"Góðan dag",evening:"Gott kvöld",night:"Góða nótt"},welcome:{helpToday:"Hvernig get ég aðstoðað í dag?",helpTonight:"Hvernig get ég aðstoðað í kvöld?"},input:{placeholder:"Senda skilaboð",messagePlaceholder:"Skilaboð...",attachImages:"Hengja við myndir",attachments:"Viðhengi og ítarlegir eiginleikar",sendMessage:"Senda skilaboð",stopGeneration:"Stöðva myndun"},session:{new:"Nýtt spjall",private:"Einkamál",privateMode:"Einkahamur",privateDescription:"Þetta samtal verður ekki vistað",privateTooltip:"Hefja einkasamtal sem verður ekki vistað",deleteConfirm:"Ertu viss um að þú viljir eyða þessu spjalli?",generatingTitle:"Býr til titil",noChats:"Engin spjöll ennþá",createFirst:"Búðu til fyrsta spjallið þitt hér að ofan",chats:"Spjöll",renameChat:"Endurnefna spjall",deleteChat:"Eyða spjalli"},persona:{applied:"Persóna notuð",label:"Persóna"},model:{updated:"Líkan uppfært",noModels:"Engin líkön tiltæk",noModelsDescription:"Engin líkön tiltæk. Gakktu úr skugga um að Ollama sé í gangi og hafi líkön uppsett.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Engin líkön tiltæk. Gakktu úr skugga um að Ollama sé í gangi og líkön séu uppsett."},footer:{disclaimer:"Gervigreind getur gert mistök - staðfestu mikilvægar upplýsingar",images:"{{count}} mynd",images_plural:"{{count}} myndir",structuredOutput:"Skipulagt úttak"},mediaUpload:{dropImagesHere:"Slepptu myndum hér eða",supportedFormats:"Styður: JPG, PNG, GIF, WebP (hámark 10MB hvor)",browse:"flettu"},structuredOutput:{title:"Svarssnið",none:"Ekkert (náttúrulegt mál)",noneDescription:"Sjálfgefið svar á náttúrulegu máli",json:"JSON",jsonDescription:"Skipulagt JSON snið",list:"Listi",listDescription:"Fylki af atriðum",summary:"Samantekt",summaryDescription:"Samantekt skjals með lykilatriðum",analysis:"Greining",analysisDescription:"Skipulögð greining með kostum/göllum",custom:"Sérsniðið skema",customDescription:"Skilgreindu þitt eigið JSON skema",customSchema:"Sérsniðið JSON skema",schemaPreview:"Forskoðun skema",applySchema:"Nota skema",cancel:"Hætta við",enabled:"Skipulagt úttak virkt"}},ku={navigation:{chat:"Spjall",models:"Líkön",personas:"Persónur",imagine:"Myndsköpun",settings:"Stillingar",userManagement:"Notendastjórnun",signOut:"Skrá út"},toggleSize:"Skipta um stærð hliðarspjalds",expandSidebar:"Stækka hliðarspjald"},fu={menu:{changePicture:"Breyta mynd",settings:"Stillingar",userManagement:"Notendastjórnun",logout:"Skrá út"},avatar:{title:"Breyta prófílmynd",updated:"Prófílmynd uppfærð",updateFailed:"Ekki tókst að uppfæra prófílmynd",saving:"Vistar..."},profile:{noEmail:"Ekkert netfang skráð"}},yu={title:"Stillingar",tabs:{appearance:"Útlit",model:"Líkan",systemMessage:"Kerfisskilaboð",plugins:"Viðbætur",generation:"Myndun",documents:"Skjöl",tts:"Talgerving",imageGen:"Myndsköpun",data:"Gögn",about:"Um"},appearance:{title:"Útlit",language:{title:"Tungumál",description:"Veldu tungumálið sem þú vilt nota"},theme:{title:"Þema",light:"Ljóst",dark:"Dökkt",amoled:"Hreinn Svartur",system:"Kerfis"},chatInterface:{title:"Spjallviðmót",showUsername:"Sýna notandanafn",showUsernameDescription:"Birta notandanafn í spjallskilaboðum"},background:{title:"Bakgrunnsmynd",enable:"Virkja bakgrunnsmynd",enableDescription:"Sýna sérsniðinn bakgrunn með þokuáhrifum",blur:"Þoka",opacity:"Gegnsæi",upload:"Hlaða upp bakgrunnsmynd",dragDrop:"Dragðu og slepptu mynd eða smelltu til að fletta",chooseImage:"Velja mynd"}},saveSettings:"Vista stillingar",model:{title:"Líkanastillingar",defaultModel:"Sjálfgefið líkan",defaultModelDescription:"Þetta líkan verður notað sjálfgefið fyrir ný samtöl",selectModel:"Veldu líkan",updateAll:"Uppfæra öll líkön",updateAllDescription:"Athuga uppfærslur og sækja nýjustu útgáfur allra uppsettra líkana",updateAllButton:"Uppfæra öll",updating:"Uppfærir líkön...",currentModelInfo:"Upplýsingar um núverandi líkan",name:"Nafn",size:"Stærð",family:"Fjölskylda",format:"Snið",status:"Staða",statusStarting:"Byrjar...",statusComplete:"Lokið",statusError:"Villa",bulkOperations:"Fjöldaaðgerðir",autoTitle:{title:"Sjálfvirk titilgerð",enable:"Virkja sjálfvirka titilgerð",enableDescription:"Búa sjálfkrafa til titla fyrir ný samtöl",taskModel:"Verkefnislíkan",selectTaskModel:"Veldu verkefnislíkan",taskModelDescription:"Líkan notað til að búa til samtalstitla"},persona:"Persóna"},systemMessage:{title:"Kerfisskilaboð",description:"Stilltu sérsniðin kerfisskilaboð sem verða notuð fyrir öll ný samtöl.",placeholder:"Sláðu inn kerfisskilaboð...",saved:"Kerfisskilaboð vistuð",saveFailed:"Ekki tókst að vista kerfisskilaboð"},plugins:{title:"Viðbætur",description:"Stjórnaðu uppsettu viðbótunum þínum",addNew:"Bæta við nýrri viðbót",upload:"Hlaða upp viðbót",addJson:"Bæta við JSON",uploading:"Hleður upp...",jsonPlaceholder:"Límdu JSON stillingar viðbótar...",install:"Setja upp viðbót",noPlugins:"Engar viðbætur uppsettar",noPluginsDescription:"Bættu við viðbót til að auka virkni",loading:"Hleður viðbótum...",installed:"Uppsettar viðbætur",active:"Virkar viðbætur",activeLabel:"Virk",inactive:"Óvirk",activate:"Virkja",deactivate:"Afvirkja",models:"líkön",apiKeySet:"API lykill stilltur",apiKeyConfiguration:"Stilling API lykils",apiKeyEnvAlternative:"Að öðrum kosti, stilltu",environmentVariable:"umhverfisbreytu",apiKeyConfigured:"API lykill stilltur",apiKeyPlaceholder:"Sláðu inn API lykilinn þinn...",saveApiKey:"Vista API lykil",apiKey:{title:"API lykill",placeholder:"Sláðu inn API lykil",save:"Vista lykil",remove:"Fjarlægja lykil",configured:"API lykill stilltur",notConfigured:"API lykils krafist",saved:"API lykill vistaður",removed:"API lykill fjarlægður",saveFailed:"Ekki tókst að vista API lykil",removeFailed:"Ekki tókst að fjarlægja API lykil",enterKey:"Sláðu inn API lykil"}},generation:{title:"Myndunarstillingar",description:"Stilltu hvernig gervigreindin býr til svör",coreParameters:"Grunnfæribreytur",temperature:"Hitastig",temperatureDescription:"Stýrir tilviljun. Lægri gildi eru markvissari, hærri gildi skapandi.",topP:"Top P",topPDescription:"Stýrir fjölbreytni í gegnum kjarnasýnatöku. Lægri gildi einblína á líkleg tákn.",topK:"Top K",topKDescription:"Takmarkar val tákna við K líklegustu. Stilltu á 0 til að afvirkja.",minP:"Min P",minPDescription:"Lágmarks líkindaþröskuldur fyrir val á táknum.",generationControl:"Myndunarstjórnun",maxTokens:"Hámarks tákn",maxTokensDescription:"Hámarksfjöldi tákna sem búa á til í svarinu.",repeatPenalty:"Endurtekningarsekt",repeatPenaltyDescription:"Sektar endurtekin tákn. Hærri gildi draga úr endurtekningum.",contextLength:"Samhengislengd",contextLengthDescription:"Hámarksstærð samhengisglugga fyrir samtöl.",seed:"Fræ",optional:"valfrjálst",random:"Handahófskennt",seedDescription:"Stilltu ákveðið fræ fyrir endurtakanlegar niðurstöður.",advancedOptions:"Ítarlegar stillingar",presencePenalty:"Nærvistarsekt",presencePenaltyDescription:"Sektar tákn sem birtast í samhenginu.",frequencyPenalty:"Tíðnisekt",frequencyPenaltyDescription:"Sektar tákn sem eru oft notuð.",stopSequences:"Stöðvunarraðir",commaSeparated:"aðgreindar með kommu",stopSequencesDescription:"Sérsniðin tákn sem stöðva myndun þegar þau birtast.",resetDefaults:"Endurstilla á sjálfgefið",saveOptions:"Vista stillingar",embeddingSettings:"Innfellinga stillingar",enableEmbeddings:"Virkja innfellingar skjala"},documents:{title:"Skjalastillingar",embeddings:{title:"Innfellingar",enable:"Virkja innfellingar skjala",model:"Innfellingalíkan",modelDescription:"Veldu líkan fyrir innfellingu skjala",chunkSize:"Bútstærð",chunkSizeInTokens:"(í táknum)",chunkSizeDescription:"Stærð textabúta fyrir innfellingu",chunkOverlap:"Bútskörun",chunkOverlapInTokens:"(í táknum)",chunkOverlapDescription:"Skörun milli samliggjandi búta",similarityThreshold:"Líkindaþröskuldur",similarityDescription:"Lágmarks líkindaeinkunn til að taka með niðurstöður",status:"Staða innfellinga",statusLabel:"Staða",available:"Tiltækt",unavailable:"Ótiltækt",chunksWithEmbeddings:"Bútar með innfellingum",coverage:"Umfang",regenerate:"Endurgera innfellingar",regenerating:"Endurgerar..."}},tts:{title:"Talgerving",description:"Stilltu talgervingu til að lesa skilaboð upphátt",loadingProviders:"Hleður talgervingarveitum...",noProviders:"Engir talgervingarveitendur",noProvidersDescription:"Stilltu viðbót með talgervingarstuðningi til að virkja talgervingu",enable:"Virkja talgervingu",enableDescription:"Leyfa talgervingu fyrir skilaboð aðstoðarmanns",autoPlay:"Sjálfvirk spilun svara",autoPlayDescription:"Lesa ný skilaboð aðstoðarmanns sjálfkrafa upphátt",streamSentences:"Streyma setningar",streamSentencesDescription:"Spila hljóð setningu fyrir setningu í stað þess að bíða eftir heilum skilaboðum. Mælt með fyrir staðbundna talgervingu til að forðast tímamörk á löngum skilaboðum.",voiceConfiguration:"Raddstilling",model:"Talgervingarlíkan",modelDescription:"Veldu líkan fyrir talgervingu",voice:"Rödd",selectVoice:"Veldu rödd",voiceDescription:"Veldu rödd fyrir talgervingu",speed:"Hraði",speedSlow:"0,5x",speedNormal:"1,0x",speedFast:"2,0x",availableProviders:"Tiltækir veitendur",models:"líkön",test:"Prófa",testing:"Prófar...",stop:"Stöðva"},imageGen:{title:"Myndsköpun",description:"Stilltu myndsköpun og veitendur",loadingProviders:"Hleður myndsköpunarveitum...",noProviders:"Engir myndsköpunarveitendur",noProvidersDescription:"Stilltu viðbót með myndsköpunarstuðningi",enable:"Virkja myndsköpun",enableDescription:"Leyfa gervigreindarmyndsköpun í samtölum",configuration:"Stillingar",model:"Líkan",modelDescription:"Veldu líkan fyrir myndsköpun",size:"Stærð",sizeDescription:"Upplausn myndaðra mynda",quality:"Gæði",qualityDescription:"Gæðastig myndaðra mynda",style:"Stíll",styleDescription:"Stílforstilling fyrir myndaðar myndir",availableProviders:"Tiltækir veitendur",models:"líkön"},data:{title:"Gagnastjórnun",export:"Flytja út gögn",exportDescription:"Sæktu öll gögnin þín þar á meðal stillingar, setur og skjöl.",exportAll:"Flytja út öll gögn",import:"Flytja inn gögn",importDescription:"Flytja inn gögn frá fyrri útflutningi.",importData:"Flytja inn gögn",importing:"Flytur inn...",clearSessions:"Hreinsa setur",clearSessionsDescription:"Eyða öllum spjallsetum. Ekki er hægt að afturkalla þessa aðgerð.",clearAll:"Hreinsa allt",clearing:"Hreinsar...",importOptions:"Innflutningsvalkostir",importOptionsDescription:"Veldu hvernig meðhöndla á núverandi gögn",skipDuplicates:"Sleppa tvítekningum",overwrite:"Yfirskrifa núverandi",importResults:"Niðurstöður innflutnings",preferences:"Stillingar",imported:"Flutt inn",failed:"Mistókst",sessions:"Setur",importedLabel:"flutt inn",skipped:"sleppt",documents:"Skjöl",errors:"Villur"},about:{title:"Um",versionLabel:"Útgáfa",ollama:{title:"Ollama staða",version:"Útgáfa",healthy:"Heilbrigt",unhealthy:"Óheilbrigt"},stats:{models:"Líkön",sessions:"Setur"},features:{privacy:{title:"Einkaleynd fyrst",description:"Gögnin þín eru geymd á tækinu þínu"},openSource:{title:"Opinn hugbúnaður",description:"Ókeypis og opinn hugbúnaður"},localInference:{title:"Staðbundin ályktun",description:"Keyrðu gervigreindarlíkön staðbundið með Ollama"}},openSourceBy:"Opinn hugbúnaður frá {{company}}",links:{title:"Tenglar",github:"GitHub",githubDescription:"Skoðaðu frumkóða og leggðu til",website:"Vefsíða",websiteDescription:"Heimsæktu vefsíðuna okkar",ollama:"Ollama",ollamaDescription:"Frekari upplýsingar um Ollama",documentation:"Skjölun",reportIssue:"Tilkynna vandamál",reportIssueDescription:"Villutilkynningar og eiginleikabeiðnir"},version:"Útgáfa {{version}}"}},vu={title:"Líkön",subtitle:"Sæktu, stjórnaðu og fylgstu með Ollama líkönunum þínum",installed:"Uppsett líkön",available:"Tiltæk líkön",pull:"Sækja líkan",pulling:"Sækir...",delete:"Eyða líkani",deleting:"Eyðir...",size:"Stærð",modified:"Breytt",family:"Fjölskylda",parameters:"Færibreytur",quantization:"Magngreining",noModels:"Engin líkön uppsett",pullFirst:"Sæktu líkan til að byrja"},xu={title:"Persónur",create:"Búa til persónu",edit:"Breyta persónu",delete:"Eyða persónu",name:"Nafn",description:"Lýsing",systemPrompt:"Kerfisfyrirmæli",model:"Líkan",avatar:"Auðkennismynd",background:"Bakgrunnur",noPersonas:"Engar persónur búnar til",createFirst:"Búðu til fyrstu persónuna þína til að sérsníða spjallupplifunina"},Su={title:"Myndasafn",subtitle:"Gervigreindarmyndasafnið þitt",imageCount:"{{count}} myndir",generate:"Búa til mynd",generateDescription:"Búðu til myndir með gervigreind",generating:"Býr til...",prompt:"Fyrirmæli",promptPlaceholder:"Lýstu myndinni sem þú vilt búa til...",noImages:"Engar myndir búnar til ennþá",download:"Sækja",delete:"Eyða",regenerate:"Endurgera",model:"Líkan",size:"Stærð",quality:"Gæði",created:"Búin til"},wu={generic:"Villa kom upp",network:"Netvilla. Athugaðu tenginguna þína.",unauthorized:"Þú hefur ekki heimild til að framkvæma þessa aðgerð.",notFound:"Umbeðin auðlind fannst ekki.",serverError:"Netþjónsvilla. Reyndu aftur síðar.",validation:"Athugaðu innsláttinn þinn og reyndu aftur."},Pu={title:"Flýtilyklar",toggleSidebar:"Víxla hliðarspjaldi",openSettings:"Opna stillingar",toggleDarkMode:"Víxla dökkum ham",showShortcuts:"Sýna flýtilykla",closeModals:"Loka gluggum",groups:{navigation:"Flakk",settings:"Stillingar",general:"Almennt",chat:"Spjall"},actions:{sendMessage:"Senda skilaboð",newLine:"Ný lína í skilaboðum"},footer:"Ýttu á {{key1}} eða {{key2}} til að sýna þessa hjálp",tooltip:"Flýtilyklar"},Mu={title:"Líkön",loading:"Hleður líkönum...",systemStatus:{online:"Ollama á netinu",offline:"Ollama ekki á netinu",models:"líkan",models_plural:"líkön",running:"í gangi",vram:"VRAM"},sections:{pull:"Sækja nýtt líkan",library:"Skoða safn",running:"Líkön í gangi",local:"Staðbundin líkön",advanced:"Ítarlegar aðgerðir",huggingface:"HuggingFace Hub"},pull:{placeholder:"Sláðu inn nafn líkans (t.d. llama3.2:3b, deepseek-r1:14b)",button:"Sækja",cancel:"Hætta við",popular:"Vinsæl líkön:",browseAll:"Skoða öll líkön á ollama.com",success:"Líkan {{name}} sótt",cancelled:"Hætt var við að sækja líkan",failed:"Ekki tókst að sækja líkan",enterName:"Sláðu inn nafn líkans"},progress:{starting:"Frumstillir...",pulling:"Sækir líkan...",verifying:"Sannreynir heilleika...",writing:"Skrifar skrá...",cleaning:"Hreinsar upp..."},library:{available:"tiltæk",search:"Leita að líkönum...",noResults:"Engin líkön fundust sem passa við leitarskilyrði",installed:"Uppsett",more:"+{{count}} fleiri",refresh:"Endurhlaða safni"},local:{noModels:"Engin líkön uppsett ennþá",pullToStart:"Sæktu líkan hér að ofan til að byrja",installed:"uppsett",running:"Í gangi",info:"Upplýsingar",copy:"Afrita",delete:"Eyða",deleteConfirm:'Ertu viss um að þú viljir eyða líkani "{{name}}"?',deleteSuccess:"Líkani {{name}} eytt",deleteFailed:"Ekki tókst að eyða líkani"},advanced:{createModel:"Búa til líkan",fromModelfile:"Úr Modelfile",copyModel:"Afrita líkan",duplicateExisting:"Tvítaka núverandi",testEmbeddings:"Prófa innfellingar",generateVectors:"Búa til vigra",healthCheck:"Heilbrigðisskoðun",testConnection:"Prófa tengingu",healthy:"Ollama er heilbrigt!"},modals:{details:{title:"Upplýsingar um líkan",info:"Líkansupplýsingar",family:"Fjölskylda",parameters:"Færibreytur",quantization:"Magngreining",format:"Snið",systemPrompt:"Kerfisfyrirmæli",template:"Sniðmát",license:"Leyfi",modelfile:"Modelfile",noDetails:"Engar upplýsingar tiltækar"},copy:{title:"Afrita líkan",source:"Upprunalíkan",selectModel:"Veldu líkan...",newName:"Nýtt nafn líkans",placeholder:"t.d. mitt-sérsniðna-líkan",copying:"Afritar...",button:"Afrita líkan",success:"Líkan afritað sem {{name}}",failed:"Ekki tókst að afrita líkan",enterBoth:"Sláðu inn bæði upprunanafn og áfangastað"},create:{title:"Búa til sérsniðið líkan",name:"Nafn líkans",namePlaceholder:"t.d. minn-aðstoðarmaður",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
13
|
+
SYSTEM Þú ert hjálpsamur aðstoðarmaður.`,docs:"Modelfile skjölun",docsLink:"fyrir setningafræðiviðmið",creating:"Býr til...",button:"Búa til líkan",success:"Líkan {{name}} búið til",failed:"Ekki tókst að búa til líkan",enterBoth:"Sláðu inn nafn líkans og Modelfile innihald"},embeddings:{title:"Prófa innfellingar",model:"Innfellingalíkan",selectModel:"Veldu líkan...",recommended:"Mælt með: nomic-embed-text, mxbai-embed-large",input:"Inntakstexti",placeholder:"Sláðu inn texta til að búa til innfellingar fyrir...",generating:"Býr til...",button:"Búa til innfellingar",result:"Niðurstaða ({{count}} víddir)",success:"Búin til {{count}}-vídd innfellingavigur",failed:"Ekki tókst að búa til innfellingar",enterBoth:"Veldu líkan og sláðu inn texta"}},huggingface:{browseAll:"Skoða allt á HuggingFace",checkingGguf:"Leita að GGUF skrám...",noGgufAvailable:"Engar GGUF skrár tiltækar fyrir beina Ollama niðurhal",ggufFilesCount:"GGUF skrár ({{count}}) - Sækja beint í Ollama",noModelsFound:"Engin líkön fundust",noResults:"Engin líkön fundust. Prófaðu að breyta leit eða síum.",browseAllLink:"Skoða allt",search:"Leita í HuggingFace líkönum...",by:"eftir",gated:"Takmarkaður aðgangur",viewOnHF:"Skoða á HuggingFace",sortDownloads:"Niðurhal",sortLikes:"Líkar við",sortRecent:"Nýlegt",taskTextGeneration:"Textagerð",taskTextToSpeech:"Texti í tal",taskTextToImage:"Texti í mynd",taskSpeechRecognition:"Talgreining",tasks:{textGen:"Textagerð",tts:"Texti í tal",image:"Texti í mynd",stt:"Talgreining"},sort:{downloads:"Mest niðurhlaðið",likes:"Mest vinsælt",recent:"Nýlega uppfært"}}},Du={title:"Persónur",subtitle:"Búðu til og stjórnaðu gervigreindarpersónum með sérsniðnum persónuleikum, minni og hegðun",loading:"Hleður persónum...",createButton:"Búa til persónu",importExport:"Flytja inn/út",stats:{title:"Persónurnar þínar",count:"{{count}} persóna búin til",count_plural:"{{count}} persónur búnar til"},empty:{title:"Engar persónur ennþá",description:"Búðu til fyrstu persónuna þína til að byrja með sérsniðnar gervigreindarsamskipti",button:"Búa til fyrstu persónuna þína"},deleteConfirm:'Ertu viss um að þú viljir eyða "{{name}}"?',deleteSuccess:'Persónu "{{name}}" eytt',downloadSuccess:'Persóna "{{name}}" sótt',failed:"Ekki tókst að {{action}} persónu"},Au={title:{create:"Búa til nýja persónu",edit:"Breyta persónu"},subtitle:{create:"Búðu til nýja gervigreindarpersónu með sérsniðnum persónuleika, minniskerfum og aðlögunarhæfni",edit:"Sérsníðu gervigreindarpersónuna þína með ítarlegu minni, aðlögunarnámi og greindum færibreytum"},loading:"Hleður eyðublaði...",saved:"Vistað",tabs:{basic:"Grunnur",parameters:"Færibreytur",memory:"Minni og nám",advanced:"Ítarlegt"},basic:{name:"Nafn",namePlaceholder:"Sláðu inn nafn persónu",model:"Líkan",selectModel:"Veldu líkan",description:"Lýsing",descriptionPlaceholder:"Lýstu persónunni þinni...",systemPrompt:"Kerfisfyrirmæli",systemPromptPlaceholder:"Sláðu inn kerfisfyrirmælin sem skilgreina hegðun persónunnar...",systemPromptHint:"Kerfisfyrirmælin skilgreina hvernig persónan þín mun haga sér og svara."},parameters:{temperature:"Hitastig",temperatureHint:"Stýrir sköpunargáfu vs samkvæmni",topP:"Top-P",topPHint:"Stýrir fjölbreytni svara",topK:"Top-K",topKHint:"Takmarkar orðaforða við top-k tákn",contextWindow:"Samhengisgluggi",contextWindowHint:"Hámarkslengd samtalssögu",maxTokens:"Hámarks tákn",maxTokensHint:"Hámarkslengd svara",repeatPenalty:"Endurtekningarsekt",repeatPenaltyHint:"Dregur úr endurteknum svörum"},memory:{title:"Minniskerfi",subtitle:"Persónan man samtöl yfir tíma",enableHint:"Virkjaðu minniskerfið til að leyfa persónunni að muna samtöl og byggja upp samhengi yfir tíma.",loading:"Hleður minnisástandi...",noData:"Engin minnisgögn ennþá",memories:"Minningar",mbUsed:"MB notuð",lastBackup:"Síðasta öryggisafrit",never:"Aldrei",maxMemories:"Hámarksminningar",maxMemoriesHint:"Hversu margar minningar þessi persóna getur geymt",retention:"Minnisvarðveisla",retentionHint:"Dagar til að geyma minningar áður en þeim er hent",autoCleanup:"Sjálfvirk hreinsun gamalla minninga",wipeAll:"Hreinsa allar minningar",wipeCannot:"Ekki er hægt að afturkalla þetta",wipeButton:"Hreinsa",wiping:"Hreinsar...",wipeConfirm:"Ertu viss um að þú viljir hreinsa allar minningar? Ekki er hægt að afturkalla þetta.",wipeSuccess:"Hreinsaði {{count}} minningar"},learning:{title:"Aðlögunarnám",subtitle:"Persónan þróast út frá samskiptum",enableHint:"Virkjaðu aðlögunarnám til að leyfa persónunni að þróast og sérsníða svör út frá samskiptum þínum.",speed:"Námshraði",slow:"Hægt",slowDesc:"Smám saman breytingar",balanced:"Jafnvægi",balancedDesc:"Hóflegur hraði",fast:"Hratt",fastDesc:"Fljótleg aðlögun",autoAdapt:"Sjálfvirk aðlögun að óskum notanda",whatLearns:"Hvað persónan lærir:",conversationTone:"Samtalstón",responseStyle:"Svarstíll",userPreferences:"Óskir notanda",topicInterests:"Áhugamál um efni"},advanced:{embeddingModel:"Innfellingalíkan",embeddingHint:"Veldu líkan fyrir minniskóðun og merkingarleit. Innfellingalíkön eru sýnd fyrst, síðan önnur tiltæk líkön.",noModels:"Engin líkön fundin",embeddingModels:"Innfellingalíkön",otherModels:"Önnur líkön",installHint:"Settu upp innfellingalíkan:",recommended:"Mælt með: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Um ítarlegar stillingar",aboutDescription:"Innfellingalíkanið er notað af minniskerfinu til að skilja merkingu og finna viðeigandi minningar í samtölum. Veldu líkan sem passar við notkunartilvik og tiltæk úrræði."},actions:{cancel:"Hætta við",save:"Vista",saving:"Vistar...",saveClose:"Vista og loka",create:"Búa til"},success:{created:"Persóna búin til",updated:"Persóna uppfærð"},error:{saveFailed:"Ekki tókst að vista"}},zu={enhanced:"Aukin",systemPrompt:"Kerfisfyrirmæli",memories:"minningar",use:"Nota",editTooltip:"Breyta persónu",downloadTooltip:"Sækja persónu",backup:"Öryggisafrit",exportDNA:"Flytja út DNA",wipeMemories:"Hreinsa minningar",wipeConfirm:"Ertu viss um að þú viljir hreinsa allar minningar fyrir þessa persónu? Ekki er hægt að afturkalla þessa aðgerð.",wipeSuccess:"Hreinsaði {{count}} minningar",backupSuccess:"Öryggisafrit persónu sótt",dnaSuccess:"DNA persónu flutt út",failed:"Ekki tókst að {{action}}"},ju={title:"Notendastjórnun",subtitle:"Stjórnaðu notendareikningum og heimildum",loading:"Hleður notendum...",createUser:"Búa til notanda",search:"Leita að notendum...",noUsers:"Engir notendur fundust",noUsersMatching:"Engir notendur passa við leitina",columns:{user:"Notandi",email:"Netfang",role:"Hlutverk",created:"Stofnað",actions:"Aðgerðir"},roles:{admin:"Stjórnandi",user:"Notandi"},noEmail:"Ekkert netfang",deleteConfirm:'Ertu viss um að þú viljir eyða notanda "{{name}}"?',deleteSuccess:"Notanda eytt",deleteFailed:"Ekki tókst að eyða notanda",cannotDeleteSelf:"Þú getur ekki eytt þínum eigin reikningi",form:{title:{create:"Búa til notanda",edit:"Breyta notanda"},username:"Notandanafn",usernamePlaceholder:"Sláðu inn notandanafn",email:"Netfang",emailPlaceholder:"Sláðu inn netfang (valfrjálst)",password:"Lykilorð",passwordPlaceholder:"Sláðu inn lykilorð",passwordHint:"Skildu eftir autt til að halda núverandi lykilorði",role:"Hlutverk",creating:"Býr til...",updating:"Uppfærir...",createButton:"Búa til notanda",updateButton:"Uppfæra notanda",createSuccess:"Notandi stofnaður",updateSuccess:"Notandi uppfærður",createFailed:"Ekki tókst að stofna notanda",updateFailed:"Ekki tókst að uppfæra notanda"}},Tu={you:"Þú",assistant:"Aðstoðarmaður",system:"Kerfi",copy:"Afrita",copyMessage:"Afrita skilaboð",copied:"Afritað!",regenerate:"Endurgera",regenerateResponse:"Endurgera svar",edit:"Breyta",editSystemMessage:"Breyta kerfisskilaboðum",saveChanges:"Vista breytingar",cancelEditing:"Hætta við breytingu",delete:"Eyða",deleteConfirm:"Eyða þessum skilaboðum?",branch:"Grein",speaking:"Talar...",speakMessage:"Lesa skilaboð",stopSpeaking:"Stöðva lestur",showMore:"Sýna meira",showLess:"Sýna minna",thinking:"Hugsar",systemMessagePlaceholder:"Sláðu inn kerfisskilaboðin þín...",fullSizeImage:"Mynd í fullri stærð",startConversation:"Hefja samtal",startConversationDescription:"Sendu skilaboð til að byrja að spjalla við gervigreindaraðstoðarmanninn þinn. Spyrðu spurninga, fáðu hjálp með kóða eða átt náttúrulegt samtal.",scrollToBottom:"Fletta neðst",newMessages:"Ný skilaboð"},Nu={title:"Myndasafn",noImages:"Engar myndir ennþá",noImagesHint:"Búðu til fyrstu myndina þína með spjaldinu hægra megin",delete:"Eyða",download:"Sækja",deleteConfirm:"Ertu viss um að þú viljir eyða þessari mynd?",deleteSuccess:"Mynd eytt",deleteFailed:"Ekki tókst að eyða mynd",downloadFailed:"Ekki tókst að sækja mynd",loadMore:"Hlaða fleiri ({{current}} af {{total}})",loadFailed:"Ekki tókst að hlaða myndasafni"},Iu={title:"Búa til mynd",prompt:"Fyrirmæli",promptPlaceholder:"Lýstu myndinni sem þú vilt búa til...",model:"Líkan",selectModel:"Veldu líkan",noModels:"Engin myndsköpunarlíkön tiltæk",configurePlugin:"Stilltu viðbót með myndsköpunarstuðningi",size:"Stærð",quality:"Gæði",style:"Stíll",generate:"Búa til",generating:"Býr til...",success:"Mynd búin til",failed:"Ekki tókst að búa til mynd",enterPrompt:"Sláðu inn fyrirmæli",promptTooLong:"Fyrirmæli fara yfir hámarkslengd {{max}} stafa"},Cu={title:"Eitthvað fór úrskeiðis",description:"Við lentum í óvæntri villu. Reyndu að endurhlaða síðunni.",tryAgain:"Endurhlaða síðu",goHome:"Fara á forsíðu",errorDetails:"Villulýsing (þróun)"},Fu={title:"Skjöl",upload:"Hlaða upp skjali",uploading:"Hleður upp...",noDocuments:"Engin skjöl hlaðið upp",uploadHint:"Hladdu upp skjölum til að nota í samtölum þínum",delete:"Eyða",deleteConfirm:"Ertu viss um að þú viljir eyða þessu skjali?",deleteSuccess:"Skjali eytt",deleteFailed:"Ekki tókst að eyða skjali",uploadSuccess:"Skjali hlaðið upp",uploadFailed:"Ekki tókst að hlaða upp skjali",types:"Stuðningur: PDF, TXT, MD, DOCX",unsupportedFileType:"Aðeins PDF og TXT skrár eru studdar",fileSizeTooLarge:"Skráarstærð verður að vera minni en 10MB",uploadSuccessWithName:'Skjali "{{name}}" hlaðið upp',removeSuccess:"Skjal fjarlægt",removeFailed:"Ekki tókst að fjarlægja skjal",removeError:"Villa kom upp við að fjarlægja skjalið",clickToUpload:"Smelltu til að hlaða upp",orDragAndDrop:"eða dragðu og slepptu",fileTypesAndSize:"PDF eða TXT skrár allt að 10MB",uploadedDocuments:"Hlaðin upp skjöl",removeDocument:"Fjarlægja skjal"},Ou={speak:"Tala",stop:"Stöðva",speaking:"Talar...",generateFailed:"Ekki tókst að búa til tal",playbackFailed:"Afspilun hljóðs mistókst",stopSpeaking:"Stöðva tal",generatingSpeech:"Býr til tal...",readAloud:"Lesa upphátt"},Eu={title:"Hlutir",code:"Kóði",preview:"Forskoðun",copy:"Afrita kóða",copied:"Afritað!",download:"Sækja",expand:"Stækka",collapse:"Fella saman",openInNewTab:"Opna í nýjum flipa",invalidSvg:"Ógilt SVG innihald",invalidJson:"Ógilt JSON innihald",previewMode:"Forskoðunarhamur",codeMode:"Kóðahamur",copyContent:"Afrita innihald",openInPanel:"Opna í spjaldi",openInNewWindow:"Opna í nýjum glugga",created:"Búið til",closePanelEsc:"Loka spjaldi (Esc)",copyButton:"Afrita",open:"Opna",dragEdgeToResize:"Dragðu brún til að breyta stærð"},Lu={title:"Flytja inn og út persónur",description:"Flyttu út persónur til að deila þeim eða flyttu inn persónur frá öðrum",exportPersonas:"Flytja út persónur",importPersonas:"Flytja inn persónur",noPersonasToExport:"Engar persónur til að flytja út",personasAvailable:"{{count}} persóna tiltæk",personasAvailable_plural:"{{count}} persónur tiltækar",exportAll:"Flytja allt út",uploadJsonFile:"Hlaða upp JSON skrá",pasteJsonLabel:"Líma JSON gögn",pasteJsonPlaceholder:"Límdu JSON gögn persónu hér...",importing:"Flytur inn...",importButton:"Flytja inn persónu(r)",expectedFormat:"Vænt JSON snið:",exportSuccess:'Persóna "{{name}}" flutt út',exportFailed:"Ekki tókst að flytja út persónu",exportAllSuccess:"Allar {{count}} persónur fluttar út",exportAllFailed:"Ekki tókst að flytja út persónur",pasteJsonData:"Límdu JSON gögn persónunnar",importMultipleSuccess:"Tókst að flytja inn {{count}} persónur",importMultipleFailed:"Ekki tókst að flytja inn {{count}} persónur",importNoneFailed:"Ekki tókst að flytja inn neinar persónur",importSuccess:"Persóna flutt inn",importFailed:"Ekki tókst að flytja inn persónu"},Gu={common:mu,brand:pu,auth:gu,setup:hu,chat:bu,sidebar:ku,user:fu,settings:yu,models:vu,personas:xu,gallery:Su,errors:wu,keyboard:Pu,modelManager:Mu,personaManager:Du,personaForm:Au,personaCard:zu,userManager:ju,chatMessage:Tu,imageGallery:Nu,imageGeneration:Iu,errorBoundary:Cu,documents:Fu,ttsButton:Ou,artifacts:Eu,personaImportExport:Lu},Bu={loading:"Caricamento...",save:"Salva",saving:"Salvataggio...",cancel:"Annulla",delete:"Elimina",edit:"Modifica",close:"Chiudi",back:"Indietro",next:"Avanti",confirm:"Conferma",error:"Errore",success:"Successo",warning:"Avviso",or:"o",optional:"opzionale",enabled:"Abilitato",disabled:"Disabilitato",on:"Attivo",off:"Disattivo",yes:"Sì",no:"No",search:"Cerca",noResults:"Nessun risultato trovato",retry:"Riprova",refresh:"Aggiorna",download:"Scarica",upload:"Carica",export:"Esporta",import:"Importa",reset:"Ripristina",apply:"Applica",clear:"Cancella",all:"Tutti",none:"Nessuno",default:"Predefinito",custom:"Personalizzato",mode:"Modalità",multiUser:"Multi utente",remove:"Rimuovi"},Ku={name:"Libre WebUI",shortName:"Libre"},Hu={login:{title:"Bentornato",subtitle:"Accedi al tuo account per continuare",username:"Nome utente",usernamePlaceholder:"Inserisci il tuo nome utente",password:"Password",passwordPlaceholder:"Inserisci la tua password",signIn:"Accedi",signingIn:"Accesso in corso...",noAccount:"Non hai un account?",signUpHere:"Registrati qui",loginSuccess:"Accesso riuscito!",loginFailed:"Accesso fallito",checkCredentials:"Accesso fallito. Verifica le tue credenziali.",enterBoth:"Inserisci sia nome utente che password",githubSuccess:"Accesso GitHub riuscito!",githubFailed:"Autenticazione GitHub fallita",githubVerifyFailed:"Verifica autenticazione GitHub fallita"},signup:{title:"Crea account",subtitle:"Registrati per un nuovo account",username:"Nome utente",usernamePlaceholder:"Scegli un nome utente",email:"Email",emailPlaceholder:"tua@email.it",password:"Password",passwordPlaceholder:"Scegli una password",confirmPassword:"Conferma password",confirmPasswordPlaceholder:"Conferma la tua password",createAccount:"Crea account",creatingAccount:"Creazione account...",hasAccount:"Hai già un account?",signInHere:"Accedi qui",signupSuccess:"Account creato con successo!",signupFailed:"Registrazione fallita",tryAgain:"Registrazione fallita. Riprova.",usernameRequired:"Nome utente e password sono obbligatori",passwordMismatch:"Le password non corrispondono",passwordTooShort:"La password deve essere di almeno 6 caratteri"},logout:{button:"Esci",success:"Disconnessione riuscita"},oauth:{continueWith:"Continua con {{provider}}",connectingTo:"Connessione a {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Ru={welcome:{title:"Benvenuto in Libre WebUI",subtitle:"Iniziamo",description:"Configura la tua istanza Libre WebUI in pochi passaggi",createAdmin:"Crea account amministratore",features:{secure:{title:"Sicuro e privato",description:"Le tue conversazioni rimangono sul tuo dispositivo"},fast:{title:"Veloce e reattivo",description:"Ottimizzato per velocità e prestazioni"},openSource:{title:"Open Source",description:"Software libero e open source"}}},admin:{title:"Crea account amministratore",subtitle:"Configurazione amministratore",description:"Crea il primo account amministratore per la tua istanza Libre WebUI",usernamePlaceholder:"Inserisci nome utente admin",passwordPlaceholder:"Inserisci password (min 6 caratteri)",confirmPlaceholder:"Conferma la tua password",creating:"Creazione...",createAdmin:"Crea admin",success:"Account amministratore creato con successo!",failed:"Impossibile creare account amministratore",fillAllFields:"Compila tutti i campi",note:"Questo sarà l'account amministratore principale per la tua istanza Libre WebUI"},encryptionKey:{title:"Salva la tua chiave di crittografia",subtitle:"Importante: Salva questa chiave",description:"Questa chiave di crittografia protegge i tuoi dati sensibili. Conservala in modo sicuro - ne avrai bisogno se dovrai ripristinare il database.",warning:"Avviso",warningText:"Se perdi questa chiave e devi ripristinare il database, i tuoi dati crittografati (chiavi API, preferenze) saranno irrecuperabili.",label:"La tua chiave di crittografia",loading:"Caricamento...",copyToClipboard:"Copia negli appunti",copied:"Chiave di crittografia copiata negli appunti!",copyFailed:"Impossibile copiare la chiave negli appunti",envNote:"Questa chiave è anche salvata nel file backend/.env come ENCRYPTION_KEY",acknowledgment:"Ho salvato la mia chiave di crittografia in un luogo sicuro e capisco che perderla potrebbe causare perdita di dati.",confirmRequired:"Conferma di aver salvato la chiave di crittografia",continue:"Continua a Libre WebUI"}},Uu={greeting:{morning:"Buongiorno",afternoon:"Buon pomeriggio",evening:"Buonasera",night:"Buonanotte"},welcome:{helpToday:"Come posso aiutarti oggi?",helpTonight:"Come posso aiutarti stasera?"},input:{placeholder:"Invia un messaggio",messagePlaceholder:"Messaggio...",attachImages:"Allega immagini",attachments:"Allegati e funzionalità avanzate",sendMessage:"Invia messaggio",stopGeneration:"Interrompi generazione"},session:{new:"Nuova chat",private:"Privato",privateMode:"Modalità privata",privateDescription:"Questa conversazione non verrà salvata",privateTooltip:"Avvia una conversazione privata che non verrà salvata",deleteConfirm:"Sei sicuro di voler eliminare questa chat?",generatingTitle:"Generazione titolo",noChats:"Nessuna chat ancora",createFirst:"Crea la tua prima chat sopra",chats:"Chat",renameChat:"Rinomina chat",deleteChat:"Elimina chat"},persona:{applied:"Persona applicata",label:"Persona"},model:{updated:"Modello aggiornato",noModels:"Nessun modello disponibile",noModelsDescription:"Nessun modello disponibile. Assicurati che Ollama sia in esecuzione e abbia modelli installati.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Nessun modello disponibile. Assicurati che Ollama sia in esecuzione e i modelli siano installati."},footer:{disclaimer:"Gli LLM possono commettere errori - verifica le informazioni importanti",images:"{{count}} immagine",images_plural:"{{count}} immagini",structuredOutput:"Output strutturato"},mediaUpload:{dropImagesHere:"Trascina le immagini qui o",supportedFormats:"Supportati: JPG, PNG, GIF, WebP (max 10 MB ciascuno)",browse:"sfoglia"},structuredOutput:{title:"Formato risposta",none:"Nessuno (linguaggio naturale)",noneDescription:"Risposta predefinita in linguaggio naturale",json:"JSON",jsonDescription:"Formato JSON strutturato",list:"Lista",listDescription:"Array di elementi",summary:"Riepilogo",summaryDescription:"Riepilogo documento con punti chiave",analysis:"Analisi",analysisDescription:"Analisi strutturata con pro/contro",custom:"Schema personalizzato",customDescription:"Definisci il tuo schema JSON",customSchema:"Schema JSON personalizzato",schemaPreview:"Anteprima schema",applySchema:"Applica schema",cancel:"Annulla",enabled:"Output strutturato abilitato"}},$u={navigation:{chat:"Chat",models:"Modelli",personas:"Personas",imagine:"Genera",settings:"Impostazioni",userManagement:"Gestione utenti",signOut:"Esci"},toggleSize:"Cambia dimensione barra laterale",expandSidebar:"Espandi barra laterale"},Vu={menu:{changePicture:"Cambia immagine",settings:"Impostazioni",userManagement:"Gestione utenti",logout:"Esci"},avatar:{title:"Cambia immagine profilo",updated:"Immagine profilo aggiornata",updateFailed:"Impossibile aggiornare immagine profilo",saving:"Salvataggio..."},profile:{noEmail:"Nessuna email fornita"}},Wu=JSON.parse(`{"title":"Impostazioni","tabs":{"appearance":"Aspetto","model":"Modello","systemMessage":"Messaggio di sistema","plugins":"Plugin","generation":"Generazione","documents":"Documenti","tts":"Sintesi vocale","imageGen":"Generazione immagini","data":"Dati","about":"Informazioni"},"appearance":{"title":"Aspetto","language":{"title":"Lingua","description":"Seleziona la tua lingua preferita"},"theme":{"title":"Tema","light":"Chiaro","dark":"Scuro","amoled":"Nero Puro","system":"Sistema"},"chatInterface":{"title":"Interfaccia chat","showUsername":"Mostra nome utente","showUsernameDescription":"Visualizza nome utente nei messaggi chat"},"background":{"title":"Immagine di sfondo","enable":"Abilita immagine di sfondo","enableDescription":"Mostra sfondo personalizzato con effetto sfocatura","blur":"Sfocatura","opacity":"Opacità","upload":"Carica immagine di sfondo","dragDrop":"Trascina un'immagine o clicca per sfogliare","chooseImage":"Scegli immagine"}},"saveSettings":"Salva impostazioni","model":{"title":"Impostazioni modello","defaultModel":"Modello predefinito","defaultModelDescription":"Questo modello verrà usato di default per le nuove conversazioni","selectModel":"Seleziona un modello","updateAll":"Aggiorna tutti i modelli","updateAllDescription":"Controlla aggiornamenti e scarica le ultime versioni di tutti i modelli installati","updateAllButton":"Aggiorna tutti","updating":"Aggiornamento modelli...","currentModelInfo":"Info modello attuale","name":"Nome","size":"Dimensione","family":"Famiglia","format":"Formato","status":"Stato","statusStarting":"Avvio...","statusComplete":"Completato","statusError":"Errore","bulkOperations":"Operazioni massive","autoTitle":{"title":"Generazione titolo automatica","enable":"Abilita titolo automatico","enableDescription":"Genera automaticamente titoli per le nuove conversazioni","taskModel":"Modello attività","selectTaskModel":"Seleziona modello attività","taskModelDescription":"Modello usato per generare titoli conversazioni"},"persona":"Persona"},"systemMessage":{"title":"Messaggio di sistema","description":"Imposta un messaggio di sistema personalizzato che verrà usato per tutte le nuove conversazioni.","placeholder":"Inserisci un messaggio di sistema...","saved":"Messaggio di sistema salvato","saveFailed":"Impossibile salvare messaggio di sistema"},"plugins":{"title":"Plugin","description":"Gestisci i plugin installati","addNew":"Aggiungi nuovo plugin","upload":"Carica plugin","addJson":"Aggiungi JSON","uploading":"Caricamento...","jsonPlaceholder":"Incolla configurazione JSON plugin...","install":"Installa plugin","noPlugins":"Nessun plugin installato","noPluginsDescription":"Aggiungi un plugin per estendere le funzionalità","loading":"Caricamento plugin...","installed":"Plugin installati","active":"Plugin attivi","activeLabel":"Attivo","inactive":"Inattivo","activate":"Attiva","deactivate":"Disattiva","models":"modelli","apiKeySet":"Chiave API impostata","apiKeyConfiguration":"Configurazione chiave API","apiKeyEnvAlternative":"In alternativa, imposta la","environmentVariable":"variabile d'ambiente","apiKeyConfigured":"Chiave API configurata","apiKeyPlaceholder":"Inserisci la tua chiave API...","saveApiKey":"Salva chiave API","apiKey":{"title":"Chiave API","placeholder":"Inserisci chiave API","save":"Salva chiave","remove":"Rimuovi chiave","configured":"Chiave API configurata","notConfigured":"Chiave API richiesta","saved":"Chiave API salvata con successo","removed":"Chiave API rimossa","saveFailed":"Impossibile salvare chiave API","removeFailed":"Impossibile rimuovere chiave API","enterKey":"Inserisci una chiave API"}},"generation":{"title":"Opzioni generazione","description":"Configura come l'IA genera le risposte","coreParameters":"Parametri principali","temperature":"Temperatura","temperatureDescription":"Controlla la casualità. Valori bassi sono più focalizzati, valori alti più creativi.","topP":"Top P","topPDescription":"Controlla la diversità tramite campionamento nucleus. Valori bassi si concentrano sui token probabili.","topK":"Top K","topKDescription":"Limita la selezione ai K token più probabili. Imposta a 0 per disabilitare.","minP":"Min P","minPDescription":"Soglia di probabilità minima per la selezione dei token.","generationControl":"Controllo generazione","maxTokens":"Token massimi","maxTokensDescription":"Numero massimo di token da generare nella risposta.","repeatPenalty":"Penalità ripetizione","repeatPenaltyDescription":"Penalizza i token ripetuti. Valori più alti riducono la ripetizione.","contextLength":"Lunghezza contesto","contextLengthDescription":"Dimensione massima della finestra di contesto per le conversazioni.","seed":"Seed","optional":"opzionale","random":"Casuale","seedDescription":"Imposta un seed specifico per output riproducibili.","advancedOptions":"Opzioni avanzate","presencePenalty":"Penalità presenza","presencePenaltyDescription":"Penalizza i token che appaiono nel contesto.","frequencyPenalty":"Penalità frequenza","frequencyPenaltyDescription":"Penalizza i token usati frequentemente.","stopSequences":"Sequenze di stop","commaSeparated":"separate da virgola","stopSequencesDescription":"Token personalizzati che interrompono la generazione quando incontrati.","resetDefaults":"Ripristina predefiniti","saveOptions":"Salva opzioni","embeddingSettings":"Impostazioni embedding","enableEmbeddings":"Abilita embedding documenti"},"documents":{"title":"Impostazioni documenti","embeddings":{"title":"Embedding","enable":"Abilita embedding documenti","model":"Modello embedding","modelDescription":"Seleziona il modello usato per l'embedding documenti","chunkSize":"Dimensione chunk","chunkSizeInTokens":"(in token)","chunkSizeDescription":"Dimensione dei chunk di testo per l'embedding","chunkOverlap":"Sovrapposizione chunk","chunkOverlapInTokens":"(in token)","chunkOverlapDescription":"Sovrapposizione tra chunk consecutivi","similarityThreshold":"Soglia similarità","similarityDescription":"Punteggio minimo di similarità per includere i risultati","status":"Stato embedding","statusLabel":"Stato","available":"Disponibile","unavailable":"Non disponibile","chunksWithEmbeddings":"Chunk con embedding","coverage":"Copertura","regenerate":"Rigenera embedding","regenerating":"Rigenerazione..."}},"tts":{"title":"Sintesi vocale","description":"Configura le impostazioni di sintesi vocale per la lettura dei messaggi","loadingProviders":"Caricamento provider TTS...","noProviders":"Nessun provider TTS","noProvidersDescription":"Configura un plugin con supporto TTS per abilitare la sintesi vocale","enable":"Abilita TTS","enableDescription":"Permetti sintesi vocale per i messaggi dell'assistente","autoPlay":"Riproduzione automatica","autoPlayDescription":"Leggi automaticamente i nuovi messaggi dell'assistente","streamSentences":"Trasmetti frasi","streamSentencesDescription":"Riproduci l'audio frase per frase invece di aspettare il messaggio completo. Consigliato per TTS locale per evitare timeout sui messaggi lunghi.","voiceConfiguration":"Configurazione voce","model":"Modello TTS","modelDescription":"Seleziona il modello per la generazione sintesi vocale","voice":"Voce","selectVoice":"Seleziona una voce","voiceDescription":"Scegli la voce per la sintesi vocale","speed":"Velocità","speedSlow":"0,5x","speedNormal":"1,0x","speedFast":"2,0x","availableProviders":"Provider disponibili","models":"modelli","test":"Test","testing":"Test in corso...","stop":"Stop"},"imageGen":{"title":"Generazione immagini","description":"Configura impostazioni e provider per la generazione immagini","loadingProviders":"Caricamento provider generazione immagini...","noProviders":"Nessun provider generazione immagini","noProvidersDescription":"Configura un plugin con supporto generazione immagini","enable":"Abilita generazione immagini","enableDescription":"Permetti generazione immagini IA nelle conversazioni","configuration":"Configurazione","model":"Modello","modelDescription":"Seleziona il modello per la generazione immagini","size":"Dimensione","sizeDescription":"Risoluzione delle immagini generate","quality":"Qualità","qualityDescription":"Livello di qualità delle immagini generate","style":"Stile","styleDescription":"Preset stile per le immagini generate","availableProviders":"Provider disponibili","models":"modelli"},"data":{"title":"Gestione dati","export":"Esporta dati","exportDescription":"Scarica tutti i tuoi dati incluse preferenze, sessioni e documenti.","exportAll":"Esporta tutti i dati","import":"Importa dati","importDescription":"Importa dati da un'esportazione precedente.","importData":"Importa dati","importing":"Importazione...","clearSessions":"Cancella sessioni","clearSessionsDescription":"Elimina tutte le sessioni chat. Questa azione non può essere annullata.","clearAll":"Cancella tutto","clearing":"Cancellazione...","importOptions":"Opzioni importazione","importOptionsDescription":"Scegli come gestire i dati esistenti","skipDuplicates":"Salta duplicati","overwrite":"Sovrascrivi esistenti","importResults":"Risultati importazione","preferences":"Preferenze","imported":"Importato","failed":"Fallito","sessions":"Sessioni","importedLabel":"importato","skipped":"saltato","documents":"Documenti","errors":"Errori"},"about":{"title":"Informazioni","versionLabel":"Versione","ollama":{"title":"Stato Ollama","version":"Versione","healthy":"Funzionante","unhealthy":"Non funzionante"},"stats":{"models":"Modelli","sessions":"Sessioni"},"features":{"privacy":{"title":"Privacy prima di tutto","description":"I tuoi dati rimangono sul tuo dispositivo"},"openSource":{"title":"Open Source","description":"Software libero e open source"},"localInference":{"title":"Inferenza locale","description":"Esegui modelli IA localmente con Ollama"}},"openSourceBy":"Open source di {{company}}","links":{"title":"Link","github":"GitHub","githubDescription":"Visualizza codice sorgente e contribuisci","website":"Sito web","websiteDescription":"Visita il nostro sito web","ollama":"Ollama","ollamaDescription":"Scopri di più su Ollama","documentation":"Documentazione","reportIssue":"Segnala problemi","reportIssueDescription":"Segnalazioni bug e richieste funzionalità"},"version":"Versione {{version}}"}}`),qu={title:"Modelli",subtitle:"Scarica, gestisci e monitora i tuoi modelli Ollama",installed:"Modelli installati",available:"Modelli disponibili",pull:"Scarica modello",pulling:"Download...",delete:"Elimina modello",deleting:"Eliminazione...",size:"Dimensione",modified:"Modificato",family:"Famiglia",parameters:"Parametri",quantization:"Quantizzazione",noModels:"Nessun modello installato",pullFirst:"Scarica un modello per iniziare"},Ju={title:"Personas",create:"Crea persona",edit:"Modifica persona",delete:"Elimina persona",name:"Nome",description:"Descrizione",systemPrompt:"Prompt di sistema",model:"Modello",avatar:"Avatar",background:"Sfondo",noPersonas:"Nessuna persona creata",createFirst:"Crea la tua prima persona per personalizzare la tua esperienza chat"},_u={title:"Galleria",subtitle:"La tua galleria di immagini generate dall'IA",imageCount:"{{count}} immagini",generate:"Genera immagine",generateDescription:"Crea immagini con l'IA",generating:"Generazione...",prompt:"Prompt",promptPlaceholder:"Descrivi l'immagine che vuoi generare...",noImages:"Nessuna immagine generata ancora",download:"Scarica",delete:"Elimina",regenerate:"Rigenera",model:"Modello",size:"Dimensione",quality:"Qualità",created:"Creato"},Yu={generic:"Si è verificato un errore",network:"Errore di rete. Controlla la tua connessione.",unauthorized:"Non sei autorizzato a eseguire questa azione.",notFound:"La risorsa richiesta non è stata trovata.",serverError:"Errore del server. Riprova più tardi.",validation:"Controlla i tuoi dati e riprova."},Zu={title:"Scorciatoie da tastiera",toggleSidebar:"Mostra/nascondi barra laterale",openSettings:"Apri impostazioni",toggleDarkMode:"Cambia modalità scura",showShortcuts:"Mostra scorciatoie da tastiera",closeModals:"Chiudi finestre",groups:{navigation:"Navigazione",settings:"Impostazioni",general:"Generale",chat:"Chat"},actions:{sendMessage:"Invia messaggio",newLine:"Nuova riga nel messaggio"},footer:"Premi {{key1}} o {{key2}} per mostrare questa guida",tooltip:"Scorciatoie da tastiera"},Xu={title:"Modelli",loading:"Caricamento modelli...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"modello",models_plural:"modelli",running:"in esecuzione",vram:"VRAM"},sections:{pull:"Scarica nuovo modello",library:"Sfoglia libreria",running:"Modelli in esecuzione",local:"Modelli locali",advanced:"Azioni avanzate",huggingface:"HuggingFace Hub"},pull:{placeholder:"Inserisci nome modello (es. llama3.2:3b, deepseek-r1:14b)",button:"Scarica",cancel:"Annulla",popular:"Modelli popolari:",browseAll:"Sfoglia tutti i modelli su ollama.com",success:"Modello {{name}} scaricato con successo",cancelled:"Download modello annullato",failed:"Impossibile scaricare il modello",enterName:"Inserisci un nome modello"},progress:{starting:"Inizializzazione...",pulling:"Download modello...",verifying:"Verifica integrità...",writing:"Scrittura manifest...",cleaning:"Pulizia..."},library:{available:"disponibile",search:"Cerca modelli...",noResults:"Nessun modello trovato corrispondente ai criteri",installed:"Installato",more:"+{{count}} altri",refresh:"Aggiorna libreria"},local:{noModels:"Nessun modello installato ancora",pullToStart:"Scarica un modello sopra per iniziare",installed:"installato",running:"In esecuzione",info:"Info",copy:"Copia",delete:"Elimina",deleteConfirm:'Sei sicuro di voler eliminare il modello "{{name}}"?',deleteSuccess:"Modello {{name}} eliminato con successo",deleteFailed:"Impossibile eliminare il modello"},advanced:{createModel:"Crea modello",fromModelfile:"Da Modelfile",copyModel:"Copia modello",duplicateExisting:"Duplica esistente",testEmbeddings:"Test embedding",generateVectors:"Genera vettori",healthCheck:"Controllo salute",testConnection:"Test connessione",healthy:"Ollama è funzionante!"},modals:{details:{title:"Dettagli modello",info:"Informazioni modello",family:"Famiglia",parameters:"Parametri",quantization:"Quantizzazione",format:"Formato",systemPrompt:"Prompt di sistema",template:"Template",license:"Licenza",modelfile:"Modelfile",noDetails:"Nessun dettaglio disponibile"},copy:{title:"Copia modello",source:"Modello sorgente",selectModel:"Seleziona un modello...",newName:"Nuovo nome modello",placeholder:"es. mio-modello-personalizzato",copying:"Copia in corso...",button:"Copia modello",success:"Modello copiato in {{name}}",failed:"Impossibile copiare il modello",enterBoth:"Inserisci sia il nome sorgente che di destinazione"},create:{title:"Crea modello personalizzato",name:"Nome modello",namePlaceholder:"es. mio-assistente",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
14
|
+
SYSTEM Sei un assistente utile.`,docs:"Documentazione Modelfile",docsLink:"per riferimento sintassi",creating:"Creazione...",button:"Crea modello",success:"Modello {{name}} creato con successo",failed:"Impossibile creare il modello",enterBoth:"Inserisci nome modello e contenuto Modelfile"},embeddings:{title:"Test embedding",model:"Modello embedding",selectModel:"Seleziona un modello...",recommended:"Consigliati: nomic-embed-text, mxbai-embed-large",input:"Testo di input",placeholder:"Inserisci testo per generare embedding...",generating:"Generazione...",button:"Genera embedding",result:"Risultato ({{count}} dimensioni)",success:"Generato vettore embedding a {{count}} dimensioni",failed:"Impossibile generare embedding",enterBoth:"Seleziona un modello e inserisci del testo"}},huggingface:{browseAll:"Sfoglia tutto su HuggingFace",checkingGguf:"Ricerca file GGUF...",noGgufAvailable:"Nessun file GGUF disponibile per il pull diretto di Ollama",ggufFilesCount:"File GGUF ({{count}}) - Pull diretto su Ollama",noModelsFound:"Nessun modello trovato",noResults:"Nessun modello trovato. Prova a modificare la ricerca o i filtri.",browseAllLink:"Sfoglia tutto",search:"Cerca modelli HuggingFace...",by:"di",gated:"Accesso limitato",viewOnHF:"Visualizza su HuggingFace",sortDownloads:"Download",sortLikes:"Mi piace",sortRecent:"Recente",taskTextGeneration:"Generazione testo",taskTextToSpeech:"Testo a voce",taskTextToImage:"Testo a immagine",taskSpeechRecognition:"Riconoscimento vocale",tasks:{textGen:"Generazione testo",tts:"Testo a voce",image:"Testo a immagine",stt:"Riconoscimento vocale"},sort:{downloads:"Più scaricati",likes:"Più apprezzati",recent:"Aggiornati di recente"}}},Qu={title:"Personas",subtitle:"Crea e gestisci personas IA con personalità, memorie e comportamenti personalizzati",loading:"Caricamento personas...",createButton:"Crea persona",importExport:"Importa/Esporta",stats:{title:"Le tue personas",count:"{{count}} persona creata",count_plural:"{{count}} personas create"},empty:{title:"Nessuna persona ancora",description:"Crea la tua prima persona per iniziare con interazioni IA personalizzate",button:"Crea la tua prima persona"},deleteConfirm:'Sei sicuro di voler eliminare "{{name}}"?',deleteSuccess:'Persona "{{name}}" eliminata con successo',downloadSuccess:'Persona "{{name}}" scaricata con successo',failed:"Impossibile {{action}} persona"},em={title:{create:"Crea nuova persona",edit:"Modifica persona"},subtitle:{create:"Crea una nuova persona IA con personalità, sistemi di memoria e capacità di apprendimento adattivo personalizzati",edit:"Personalizza la tua persona IA con memoria avanzata, apprendimento adattivo e parametri intelligenti"},loading:"Caricamento modulo...",saved:"Salvato",tabs:{basic:"Base",parameters:"Parametri",memory:"Memoria e apprendimento",advanced:"Avanzato"},basic:{name:"Nome",namePlaceholder:"Inserisci nome persona",model:"Modello",selectModel:"Seleziona un modello",description:"Descrizione",descriptionPlaceholder:"Descrivi la tua persona...",systemPrompt:"Prompt di sistema",systemPromptPlaceholder:"Inserisci il prompt di sistema che definisce il comportamento della persona...",systemPromptHint:"Il prompt di sistema definisce come la persona si comporterà e risponderà."},parameters:{temperature:"Temperatura",temperatureHint:"Controlla creatività vs consistenza",topP:"Top-P",topPHint:"Controlla diversità risposta",topK:"Top-K",topKHint:"Limita vocabolario ai top-k token",contextWindow:"Finestra contesto",contextWindowHint:"Lunghezza massima storico conversazione",maxTokens:"Token massimi",maxTokensHint:"Lunghezza massima risposta",repeatPenalty:"Penalità ripetizione",repeatPenaltyHint:"Riduce risposte ripetitive"},memory:{title:"Sistema di memoria",subtitle:"La persona ricorda le conversazioni nel tempo",enableHint:"Abilita il sistema di memoria per permettere alla persona di ricordare le conversazioni e costruire contesto nel tempo.",loading:"Caricamento stato memoria...",noData:"Nessun dato di memoria ancora",memories:"Memorie",mbUsed:"MB usati",lastBackup:"Ultimo backup",never:"Mai",maxMemories:"Memorie massime",maxMemoriesHint:"Quante memorie questa persona può memorizzare",retention:"Ritenzione memoria",retentionHint:"Giorni per mantenere le memorie prima della pulizia",autoCleanup:"Pulizia automatica memorie vecchie",wipeAll:"Cancella tutte le memorie",wipeCannot:"Questa azione non può essere annullata",wipeButton:"Cancella",wiping:"Cancellazione...",wipeConfirm:"Sei sicuro di voler cancellare tutte le memorie? Questa azione non può essere annullata.",wipeSuccess:"Cancellate {{count}} memorie"},learning:{title:"Apprendimento adattivo",subtitle:"La persona evolve in base alle interazioni",enableHint:"Abilita l'apprendimento adattivo per permettere alla persona di evolversi e personalizzare le risposte in base alle tue interazioni.",speed:"Velocità apprendimento",slow:"Lento",slowDesc:"Cambiamenti graduali",balanced:"Bilanciato",balancedDesc:"Ritmo moderato",fast:"Veloce",fastDesc:"Adattamento rapido",autoAdapt:"Adatta automaticamente alle preferenze utente",whatLearns:"Cosa apprende la persona:",conversationTone:"Tono conversazione",responseStyle:"Stile risposta",userPreferences:"Preferenze utente",topicInterests:"Interessi argomenti"},advanced:{embeddingModel:"Modello embedding",embeddingHint:"Seleziona il modello usato per la codifica memoria e ricerca semantica. I modelli embedding sono mostrati per primi, seguiti da altri modelli disponibili.",noModels:"Nessun modello trovato",embeddingModels:"Modelli embedding",otherModels:"Altri modelli",installHint:"Installa un modello embedding:",recommended:"Consigliati: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Informazioni impostazioni avanzate",aboutDescription:"Il modello embedding è usato dal sistema di memoria per capire il significato semantico e trovare memorie rilevanti durante le conversazioni. Scegli un modello adatto al tuo caso d'uso e risorse disponibili."},actions:{cancel:"Annulla",save:"Salva",saving:"Salvataggio...",saveClose:"Salva e chiudi",create:"Crea"},success:{created:"Persona creata",updated:"Persona aggiornata"},error:{saveFailed:"Salvataggio fallito"}},am={enhanced:"Migliorato",systemPrompt:"Prompt di sistema",memories:"memorie",use:"Usa",editTooltip:"Modifica persona",downloadTooltip:"Scarica persona",backup:"Backup",exportDNA:"Esporta DNA",wipeMemories:"Cancella memorie",wipeConfirm:"Sei sicuro di voler cancellare tutte le memorie per questa persona? Questa azione non può essere annullata.",wipeSuccess:"Cancellate {{count}} memorie",backupSuccess:"Backup persona scaricato con successo",dnaSuccess:"DNA persona esportato con successo",failed:"{{action}} fallito"},tm={title:"Gestione utenti",subtitle:"Gestisci account utente e permessi",loading:"Caricamento utenti...",createUser:"Crea utente",search:"Cerca utenti...",noUsers:"Nessun utente trovato",noUsersMatching:"Nessun utente corrispondente alla ricerca",columns:{user:"Utente",email:"Email",role:"Ruolo",created:"Creato",actions:"Azioni"},roles:{admin:"Admin",user:"Utente"},noEmail:"Nessuna email",deleteConfirm:`Sei sicuro di voler eliminare l'utente "{{name}}"?`,deleteSuccess:"Utente eliminato con successo",deleteFailed:"Impossibile eliminare l'utente",cannotDeleteSelf:"Non puoi eliminare il tuo account",form:{title:{create:"Crea utente",edit:"Modifica utente"},username:"Nome utente",usernamePlaceholder:"Inserisci nome utente",email:"Email",emailPlaceholder:"Inserisci email (opzionale)",password:"Password",passwordPlaceholder:"Inserisci password",passwordHint:"Lascia vuoto per mantenere la password attuale",role:"Ruolo",creating:"Creazione...",updating:"Aggiornamento...",createButton:"Crea utente",updateButton:"Aggiorna utente",createSuccess:"Utente creato con successo",updateSuccess:"Utente aggiornato con successo",createFailed:"Impossibile creare l'utente",updateFailed:"Impossibile aggiornare l'utente"}},nm={you:"Tu",assistant:"Assistente",system:"Sistema",copy:"Copia",copyMessage:"Copia messaggio",copied:"Copiato!",regenerate:"Rigenera",regenerateResponse:"Rigenera risposta",edit:"Modifica",editSystemMessage:"Modifica messaggio di sistema",saveChanges:"Salva modifiche",cancelEditing:"Annulla modifica",delete:"Elimina",deleteConfirm:"Eliminare questo messaggio?",branch:"Ramo",speaking:"Parlando...",speakMessage:"Leggi messaggio",stopSpeaking:"Interrompi lettura",showMore:"Mostra altro",showLess:"Mostra meno",thinking:"Pensando",systemMessagePlaceholder:"Inserisci il tuo messaggio di sistema...",fullSizeImage:"Immagine a dimensione intera",startConversation:"Inizia una conversazione",startConversationDescription:"Invia un messaggio per iniziare a chattare con il tuo assistente IA. Fai domande, chiedi aiuto con il codice o fai una conversazione naturale.",scrollToBottom:"Scorri in fondo",newMessages:"Nuovi messaggi"},rm={title:"Galleria immagini",noImages:"Nessuna immagine ancora",noImagesHint:"Genera la tua prima immagine usando il pannello a destra",delete:"Elimina",download:"Scarica",deleteConfirm:"Sei sicuro di voler eliminare questa immagine?",deleteSuccess:"Immagine eliminata",deleteFailed:"Impossibile eliminare l'immagine",downloadFailed:"Impossibile scaricare l'immagine",loadMore:"Carica altro ({{current}} di {{total}})",loadFailed:"Impossibile caricare la galleria"},im={title:"Genera immagine",prompt:"Prompt",promptPlaceholder:"Descrivi l'immagine che vuoi creare...",model:"Modello",selectModel:"Seleziona modello",noModels:"Nessun modello di generazione immagini disponibile",configurePlugin:"Configura un plugin con supporto generazione immagini",size:"Dimensione",quality:"Qualità",style:"Stile",generate:"Genera",generating:"Generazione...",success:"Immagine generata con successo",failed:"Impossibile generare l'immagine",enterPrompt:"Inserisci un prompt",promptTooLong:"Il prompt supera la lunghezza massima di {{max}} caratteri"},om={title:"Qualcosa è andato storto",description:"Si è verificato un errore imprevisto. Prova ad aggiornare la pagina.",tryAgain:"Aggiorna pagina",goHome:"Vai alla home",errorDetails:"Dettagli errore (sviluppo)"},sm={title:"Documenti",upload:"Carica documento",uploading:"Caricamento...",noDocuments:"Nessun documento caricato",uploadHint:"Carica documenti da usare nelle tue conversazioni",delete:"Elimina",deleteConfirm:"Sei sicuro di voler eliminare questo documento?",deleteSuccess:"Documento eliminato",deleteFailed:"Impossibile eliminare il documento",uploadSuccess:"Documento caricato con successo",uploadFailed:"Impossibile caricare il documento",types:"Supportati: PDF, TXT, MD, DOCX",unsupportedFileType:"Solo file PDF e TXT sono supportati",fileSizeTooLarge:"La dimensione del file deve essere inferiore a 10 MB",uploadSuccessWithName:'Documento "{{name}}" caricato con successo',removeSuccess:"Documento rimosso con successo",removeFailed:"Impossibile rimuovere il documento",removeError:"Si è verificato un errore durante la rimozione del documento",clickToUpload:"Clicca per caricare",orDragAndDrop:"o trascina e rilascia",fileTypesAndSize:"File PDF o TXT fino a 10 MB",uploadedDocuments:"Documenti caricati",removeDocument:"Rimuovi documento"},lm={speak:"Parla",stop:"Stop",speaking:"Parlando...",generateFailed:"Impossibile generare la voce",playbackFailed:"Riproduzione audio fallita",stopSpeaking:"Interrompi lettura",generatingSpeech:"Generazione voce...",readAloud:"Leggi ad alta voce"},dm={title:"Artefatti",code:"Codice",preview:"Anteprima",copy:"Copia codice",copied:"Copiato!",download:"Scarica",expand:"Espandi",collapse:"Comprimi",openInNewTab:"Apri in nuova scheda",invalidSvg:"Contenuto SVG non valido",invalidJson:"Contenuto JSON non valido",previewMode:"Modalità anteprima",codeMode:"Modalità codice",copyContent:"Copia contenuto",openInPanel:"Apri nel pannello",openInNewWindow:"Apri in nuova finestra",created:"Creato",closePanelEsc:"Chiudi pannello (Esc)",copyButton:"Copia",open:"Apri",dragEdgeToResize:"Trascina il bordo per ridimensionare"},cm={title:"Importa ed esporta personas",description:"Esporta le tue personas per condividerle o importa personas da altri",exportPersonas:"Esporta personas",importPersonas:"Importa personas",noPersonasToExport:"Nessuna persona da esportare",personasAvailable:"{{count}} persona disponibile",personasAvailable_plural:"{{count}} personas disponibili",exportAll:"Esporta tutto",uploadJsonFile:"Carica file JSON",pasteJsonLabel:"Incolla dati JSON",pasteJsonPlaceholder:"Incolla qui i dati JSON della persona...",importing:"Importazione...",importButton:"Importa persona/e",expectedFormat:"Formato JSON previsto:",exportSuccess:'Persona "{{name}}" esportata con successo',exportFailed:"Impossibile esportare la persona",exportAllSuccess:"Tutte le {{count}} personas esportate con successo",exportAllFailed:"Impossibile esportare le personas",pasteJsonData:"Incolla i dati JSON della persona",importMultipleSuccess:"{{count}} personas importate con successo",importMultipleFailed:"Impossibile importare {{count}} personas",importNoneFailed:"Impossibile importare alcuna persona",importSuccess:"Persona importata con successo",importFailed:"Impossibile importare la persona"},um={common:Bu,brand:Ku,auth:Hu,setup:Ru,chat:Uu,sidebar:$u,user:Vu,settings:Wu,models:qu,personas:Ju,gallery:_u,errors:Yu,keyboard:Zu,modelManager:Xu,personaManager:Qu,personaForm:em,personaCard:am,userManager:tm,chatMessage:nm,imageGallery:rm,imageGeneration:im,errorBoundary:om,documents:sm,ttsButton:lm,artifacts:dm,personaImportExport:cm},mm={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:"カスタム",mode:"モード",multiUser:"マルチユーザー",remove:"削除"},pm={name:"Libre WebUI",shortName:"Libre"},gm={login:{title:"おかえりなさい",subtitle:"アカウントにサインインして続行",username:"ユーザー名",usernamePlaceholder:"ユーザー名を入力",password:"パスワード",passwordPlaceholder:"パスワードを入力",signIn:"サインイン",signingIn:"サインイン中...",noAccount:"アカウントをお持ちでないですか?",signUpHere:"新規登録はこちら",loginSuccess:"ログインに成功しました!",loginFailed:"ログインに失敗しました",checkCredentials:"ログインに失敗しました。認証情報を確認してください。",enterBoth:"ユーザー名とパスワードを入力してください",githubSuccess:"GitHubログインに成功しました!",githubFailed:"GitHub認証に失敗しました",githubVerifyFailed:"GitHub認証の確認に失敗しました"},signup:{title:"アカウント作成",subtitle:"新しいアカウントを作成",username:"ユーザー名",usernamePlaceholder:"ユーザー名を選択",email:"メールアドレス",emailPlaceholder:"your@email.com",password:"パスワード",passwordPlaceholder:"パスワードを選択",confirmPassword:"パスワード確認",confirmPasswordPlaceholder:"パスワードを再入力",createAccount:"アカウント作成",creatingAccount:"アカウント作成中...",hasAccount:"すでにアカウントをお持ちですか?",signInHere:"サインインはこちら",signupSuccess:"アカウントが正常に作成されました!",signupFailed:"登録に失敗しました",tryAgain:"登録に失敗しました。もう一度お試しください。",usernameRequired:"ユーザー名とパスワードは必須です",passwordMismatch:"パスワードが一致しません",passwordTooShort:"パスワードは6文字以上である必要があります"},logout:{button:"ログアウト",success:"正常にログアウトしました"},oauth:{continueWith:"{{provider}}で続行",connectingTo:"{{provider}}に接続中...",github:"GitHub",huggingFace:"Hugging Face"}},hm={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:"パスワードを入力(6文字以上)",confirmPlaceholder:"パスワードを確認",creating:"作成中...",createAdmin:"管理者を作成",success:"管理者アカウントが正常に作成されました!",failed:"管理者アカウントの作成に失敗しました",fillAllFields:"すべてのフィールドを入力してください",note:"これはLibre WebUIインスタンスの主要な管理者アカウントになります"},encryptionKey:{title:"暗号化キーを保存",subtitle:"重要:このキーを保存してください",description:"この暗号化キーは機密データを保護します。安全に保管してください - データベースの復元が必要な場合に必要になります。",warning:"警告",warningText:"このキーを紛失し、データベースの復元が必要な場合、暗号化されたデータ(APIキー、設定)は復元できなくなります。",label:"暗号化キー",loading:"読み込み中...",copyToClipboard:"クリップボードにコピー",copied:"暗号化キーをクリップボードにコピーしました!",copyFailed:"キーのコピーに失敗しました",envNote:"このキーはbackend/.envファイルにENCRYPTION_KEYとして保存されています",acknowledgment:"暗号化キーを安全な場所に保存しました。紛失するとデータ損失の可能性があることを理解しています。",confirmRequired:"暗号化キーを保存したことを確認してください",continue:"Libre WebUIを開始"}},bm={greeting:{morning:"おはようございます",afternoon:"こんにちは",evening:"こんばんは",night:"おやすみなさい"},welcome:{helpToday:"今日は何をお手伝いしましょうか?",helpTonight:"今夜は何をお手伝いしましょうか?"},input:{placeholder:"メッセージを送信",messagePlaceholder:"メッセージ...",attachImages:"画像を添付",attachments:"添付ファイルと高度な機能",sendMessage:"メッセージを送信",stopGeneration:"生成を停止"},session:{new:"新しいチャット",private:"プライベート",privateMode:"プライベートモード",privateDescription:"この会話は保存されません",privateTooltip:"保存されないプライベート会話を開始",deleteConfirm:"このチャットを削除してもよろしいですか?",generatingTitle:"タイトルを生成中",noChats:"チャットがありません",createFirst:"上で最初のチャットを作成",chats:"チャット",renameChat:"チャット名を変更",deleteChat:"チャットを削除"},persona:{applied:"ペルソナが適用されました",label:"ペルソナ"},model:{updated:"モデルが更新されました",noModels:"利用可能なモデルがありません",noModelsDescription:"利用可能なモデルがありません。Ollamaが実行中でモデルがインストールされていることを確認してください。",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"利用可能なモデルがありません。Ollamaが実行中でモデルがインストールされていることを確認してください。"},footer:{disclaimer:"LLMは間違えることがあります - 重要な情報は確認してください",images:"{{count}}枚の画像",images_plural:"{{count}}枚の画像",structuredOutput:"構造化出力"},mediaUpload:{dropImagesHere:"ここに画像をドロップするか",supportedFormats:"対応形式: JPG, PNG, GIF, WebP(最大10MB)",browse:"参照"},structuredOutput:{title:"レスポンス形式",none:"なし(自然言語)",noneDescription:"デフォルトの自然言語レスポンス",json:"JSON",jsonDescription:"構造化されたJSON形式",list:"リスト",listDescription:"項目の配列",summary:"要約",summaryDescription:"キーポイント付きのドキュメント要約",analysis:"分析",analysisDescription:"メリット・デメリットを含む構造化分析",custom:"カスタムスキーマ",customDescription:"独自のJSONスキーマを定義",customSchema:"カスタムJSONスキーマ",schemaPreview:"スキーマプレビュー",applySchema:"スキーマを適用",cancel:"キャンセル",enabled:"構造化出力が有効"}},km={navigation:{chat:"チャット",models:"モデル",personas:"ペルソナ",imagine:"画像生成",settings:"設定",userManagement:"ユーザー管理",signOut:"サインアウト"},toggleSize:"サイドバーのサイズを切り替え",expandSidebar:"サイドバーを展開"},fm={menu:{changePicture:"画像を変更",settings:"設定",userManagement:"ユーザー管理",logout:"ログアウト"},avatar:{title:"プロフィール画像を変更",updated:"プロフィール画像が更新されました",updateFailed:"プロフィール画像の更新に失敗しました",saving:"保存中..."},profile:{noEmail:"メールアドレスが設定されていません"}},ym={title:"設定",tabs:{appearance:"外観",model:"モデル",systemMessage:"システムメッセージ",plugins:"プラグイン",generation:"生成",documents:"ドキュメント",tts:"音声読み上げ",imageGen:"画像生成",data:"データ",about:"概要"},appearance:{title:"外観",language:{title:"言語",description:"ご希望の言語を選択"},theme:{title:"テーマ",light:"ライト",dark:"ダーク",amoled:"ピュアブラック",system:"システム"},chatInterface:{title:"チャットインターフェース",showUsername:"ユーザー名を表示",showUsernameDescription:"チャットメッセージにユーザー名を表示"},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:"ペルソナ"},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キーを入力してください"}},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:"ドキュメント埋め込みを有効にする"},documents:{title:"ドキュメント設定",embeddings:{title:"埋め込み",enable:"ドキュメント埋め込みを有効にする",model:"埋め込みモデル",modelDescription:"ドキュメント埋め込みに使用するモデルを選択",chunkSize:"チャンクサイズ",chunkSizeInTokens:"(トークン単位)",chunkSizeDescription:"埋め込み用のテキストチャンクサイズ",chunkOverlap:"チャンクオーバーラップ",chunkOverlapInTokens:"(トークン単位)",chunkOverlapDescription:"連続するチャンク間のオーバーラップ",similarityThreshold:"類似度しきい値",similarityDescription:"結果に含める最小類似度スコア",status:"埋め込みステータス",statusLabel:"ステータス",available:"利用可能",unavailable:"利用不可",chunksWithEmbeddings:"埋め込み済みチャンク",coverage:"カバレッジ",regenerate:"埋め込みを再生成",regenerating:"再生成中..."}},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.5倍",speedNormal:"1.0倍",speedFast:"2.0倍",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:"エラー"},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:"ドキュメント",reportIssue:"問題を報告",reportIssueDescription:"バグ報告・機能リクエスト"},version:"バージョン {{version}}"}},vm={title:"モデル",subtitle:"Ollamaモデルのプル、管理、監視",installed:"インストール済みモデル",available:"利用可能なモデル",pull:"モデルをプル",pulling:"プル中...",delete:"モデルを削除",deleting:"削除中...",size:"サイズ",modified:"更新日時",family:"ファミリー",parameters:"パラメータ",quantization:"量子化",noModels:"モデルがインストールされていません",pullFirst:"モデルをプルして開始"},xm={title:"ペルソナ",create:"ペルソナを作成",edit:"ペルソナを編集",delete:"ペルソナを削除",name:"名前",description:"説明",systemPrompt:"システムプロンプト",model:"モデル",avatar:"アバター",background:"背景",noPersonas:"ペルソナが作成されていません",createFirst:"最初のペルソナを作成してチャット体験をカスタマイズ"},Sm={title:"ギャラリー",subtitle:"AI生成画像ギャラリー",imageCount:"{{count}}枚の画像",generate:"画像を生成",generateDescription:"AIで画像を作成",generating:"生成中...",prompt:"プロンプト",promptPlaceholder:"生成したい画像を説明してください...",noImages:"まだ画像が生成されていません",download:"ダウンロード",delete:"削除",regenerate:"再生成",model:"モデル",size:"サイズ",quality:"品質",created:"作成日"},wm={generic:"エラーが発生しました",network:"ネットワークエラー。接続を確認してください。",unauthorized:"この操作を行う権限がありません。",notFound:"リクエストされたリソースが見つかりません。",serverError:"サーバーエラー。後でもう一度お試しください。",validation:"入力を確認して再試行してください。"},Pm={title:"キーボードショートカット",toggleSidebar:"サイドバーを切り替え",openSettings:"設定を開く",toggleDarkMode:"ダークモードを切り替え",showShortcuts:"ショートカットを表示",closeModals:"モーダルを閉じる",groups:{navigation:"ナビゲーション",settings:"設定",general:"一般",chat:"チャット"},actions:{sendMessage:"メッセージを送信",newLine:"メッセージ内で改行"},footer:"{{key1}}または{{key2}}を押すとこのヘルプを表示",tooltip:"キーボードショートカット"},Mm={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:"モデル名を入力してください"},progress:{starting:"初期化中...",pulling:"モデルをダウンロード中...",verifying:"整合性を検証中...",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
|
|
15
|
+
SYSTEM You are a helpful assistant.`,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:"更新順"}}},Dm={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}}に失敗しました"},Am={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:"保存に失敗しました"}},zm={enhanced:"拡張",systemPrompt:"システムプロンプト",memories:"記憶",use:"使用",editTooltip:"ペルソナを編集",downloadTooltip:"ペルソナをダウンロード",backup:"バックアップ",exportDNA:"DNAをエクスポート",wipeMemories:"記憶を消去",wipeConfirm:"このペルソナのすべての記憶を消去してもよろしいですか?この操作は元に戻せません。",wipeSuccess:"{{count}}件の記憶を消去しました",backupSuccess:"ペルソナのバックアップが正常にダウンロードされました",dnaSuccess:"ペルソナDNAが正常にエクスポートされました",failed:"{{action}}に失敗しました"},jm={title:"ユーザー管理",subtitle:"ユーザーアカウントと権限を管理",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:"ユーザーの更新に失敗しました"}},Tm={you:"あなた",assistant:"アシスタント",system:"システム",copy:"コピー",copyMessage:"メッセージをコピー",copied:"コピーしました!",regenerate:"再生成",regenerateResponse:"レスポンスを再生成",edit:"編集",editSystemMessage:"システムメッセージを編集",saveChanges:"変更を保存",cancelEditing:"編集をキャンセル",delete:"削除",deleteConfirm:"このメッセージを削除しますか?",branch:"分岐",speaking:"読み上げ中...",speakMessage:"メッセージを読み上げ",stopSpeaking:"読み上げを停止",showMore:"もっと見る",showLess:"閉じる",thinking:"考え中",systemMessagePlaceholder:"システムメッセージを入力...",fullSizeImage:"フルサイズ画像",startConversation:"会話を始める",startConversationDescription:"メッセージを送信してAIアシスタントとの会話を開始します。質問したり、コードのヘルプを得たり、自然な会話を楽しんだりできます。",scrollToBottom:"一番下にスクロール",newMessages:"新しいメッセージ"},Nm={title:"画像ギャラリー",noImages:"まだ画像がありません",noImagesHint:"右のパネルを使用して最初の画像を生成",delete:"削除",download:"ダウンロード",deleteConfirm:"この画像を削除してもよろしいですか?",deleteSuccess:"画像が削除されました",deleteFailed:"画像の削除に失敗しました",downloadFailed:"画像のダウンロードに失敗しました",loadMore:"さらに読み込む({{current}}/{{total}})",loadFailed:"ギャラリーの読み込みに失敗しました"},Im={title:"画像を生成",prompt:"プロンプト",promptPlaceholder:"作成したい画像を説明してください...",model:"モデル",selectModel:"モデルを選択",noModels:"画像生成モデルがありません",configurePlugin:"画像生成対応プラグインを設定",size:"サイズ",quality:"品質",style:"スタイル",generate:"生成",generating:"生成中...",success:"画像が正常に生成されました",failed:"画像の生成に失敗しました",enterPrompt:"プロンプトを入力してください",promptTooLong:"プロンプトが最大文字数{{max}}文字を超えています"},Cm={title:"エラーが発生しました",description:"予期しないエラーが発生しました。ページを更新してください。",tryAgain:"ページを更新",goHome:"ホームに戻る",errorDetails:"エラー詳細(開発)"},Fm={title:"ドキュメント",upload:"ドキュメントをアップロード",uploading:"アップロード中...",noDocuments:"ドキュメントがアップロードされていません",uploadHint:"会話で使用するドキュメントをアップロード",delete:"削除",deleteConfirm:"このドキュメントを削除してもよろしいですか?",deleteSuccess:"ドキュメントが削除されました",deleteFailed:"ドキュメントの削除に失敗しました",uploadSuccess:"ドキュメントが正常にアップロードされました",uploadFailed:"ドキュメントのアップロードに失敗しました",types:"対応形式: PDF, TXT, MD, DOCX",unsupportedFileType:"PDFとTXTファイルのみ対応しています",fileSizeTooLarge:"ファイルサイズは10MB未満である必要があります",uploadSuccessWithName:"ドキュメント「{{name}}」が正常にアップロードされました",removeSuccess:"ドキュメントが正常に削除されました",removeFailed:"ドキュメントの削除に失敗しました",removeError:"ドキュメントの削除中にエラーが発生しました",clickToUpload:"クリックしてアップロード",orDragAndDrop:"またはドラッグ&ドロップ",fileTypesAndSize:"PDFまたはTXTファイル(最大10MB)",uploadedDocuments:"アップロードされたドキュメント",removeDocument:"ドキュメントを削除"},Om={speak:"読み上げ",stop:"停止",speaking:"読み上げ中...",generateFailed:"音声の生成に失敗しました",playbackFailed:"音声の再生に失敗しました",stopSpeaking:"読み上げを停止",generatingSpeech:"音声を生成中...",readAloud:"音声で読み上げ"},Em={title:"アーティファクト",code:"コード",preview:"プレビュー",copy:"コードをコピー",copied:"コピーしました!",download:"ダウンロード",expand:"展開",collapse:"折りたたむ",openInNewTab:"新しいタブで開く",invalidSvg:"無効なSVGコンテンツ",invalidJson:"無効なJSONコンテンツ",previewMode:"プレビューモード",codeMode:"コードモード",copyContent:"コンテンツをコピー",openInPanel:"パネルで開く",openInNewWindow:"新しいウィンドウで開く",created:"作成日",closePanelEsc:"パネルを閉じる(Esc)",copyButton:"コピー",open:"開く",dragEdgeToResize:"端をドラッグしてサイズ変更"},Lm={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:"ペルソナのインポートに失敗しました"},Gm={common:mm,brand:pm,auth:gm,setup:hm,chat:bm,sidebar:km,user:fm,settings:ym,models:vm,personas:xm,gallery:Sm,errors:wm,keyboard:Pm,modelManager:Mm,personaManager:Dm,personaForm:Am,personaCard:zm,userManager:jm,chatMessage:Tm,imageGallery:Nm,imageGeneration:Im,errorBoundary:Cm,documents:Fm,ttsButton:Om,artifacts:Em,personaImportExport:Lm},Bm={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:"사용자 정의",mode:"모드",multiUser:"다중 사용자",remove:"제거"},Km={name:"Libre WebUI",shortName:"Libre"},Hm={login:{title:"다시 오신 것을 환영합니다",subtitle:"계속하려면 계정에 로그인하세요",username:"사용자 이름",usernamePlaceholder:"사용자 이름을 입력하세요",password:"비밀번호",passwordPlaceholder:"비밀번호를 입력하세요",signIn:"로그인",signingIn:"로그인 중...",noAccount:"계정이 없으신가요?",signUpHere:"여기서 가입하세요",loginSuccess:"로그인 성공!",loginFailed:"로그인 실패",checkCredentials:"로그인 실패. 자격 증명을 확인하세요.",enterBoth:"사용자 이름과 비밀번호를 모두 입력하세요",githubSuccess:"GitHub 로그인 성공!",githubFailed:"GitHub 인증 실패",githubVerifyFailed:"GitHub 인증 확인 실패"},signup:{title:"계정 만들기",subtitle:"새 계정을 등록하세요",username:"사용자 이름",usernamePlaceholder:"사용자 이름을 선택하세요",email:"이메일",emailPlaceholder:"your@email.com",password:"비밀번호",passwordPlaceholder:"비밀번호를 선택하세요",confirmPassword:"비밀번호 확인",confirmPasswordPlaceholder:"비밀번호를 다시 입력하세요",createAccount:"계정 만들기",creatingAccount:"계정 생성 중...",hasAccount:"이미 계정이 있으신가요?",signInHere:"여기서 로그인하세요",signupSuccess:"계정이 성공적으로 생성되었습니다!",signupFailed:"가입 실패",tryAgain:"가입 실패. 다시 시도해주세요.",usernameRequired:"사용자 이름과 비밀번호가 필요합니다",passwordMismatch:"비밀번호가 일치하지 않습니다",passwordTooShort:"비밀번호는 최소 6자 이상이어야 합니다"},logout:{button:"로그아웃",success:"성공적으로 로그아웃되었습니다"},oauth:{continueWith:"{{provider}}로 계속하기",connectingTo:"{{provider}}에 연결 중...",github:"GitHub",huggingFace:"Hugging Face"}},Rm={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:"비밀번호를 입력하세요 (최소 6자)",confirmPlaceholder:"비밀번호를 다시 입력하세요",creating:"생성 중...",createAdmin:"관리자 만들기",success:"관리자 계정이 성공적으로 생성되었습니다!",failed:"관리자 계정 생성 실패",fillAllFields:"모든 필드를 입력하세요",note:"이것은 Libre WebUI 인스턴스의 기본 관리자 계정이 됩니다"},encryptionKey:{title:"암호화 키 저장",subtitle:"중요: 이 키를 저장하세요",description:"이 암호화 키는 민감한 데이터를 보호합니다. 안전하게 저장하세요 - 데이터베이스를 복원해야 할 때 필요합니다.",warning:"경고",warningText:"이 키를 분실하고 데이터베이스를 복원해야 하는 경우, 암호화된 데이터(API 키, 환경설정)를 복구할 수 없습니다.",label:"암호화 키",loading:"로딩 중...",copyToClipboard:"클립보드에 복사",copied:"암호화 키가 클립보드에 복사되었습니다!",copyFailed:"키를 클립보드에 복사하지 못했습니다",envNote:"이 키는 backend/.env 파일에 ENCRYPTION_KEY로도 저장됩니다",acknowledgment:"암호화 키를 안전한 장소에 저장했으며, 분실 시 데이터 손실이 발생할 수 있음을 이해합니다.",confirmRequired:"암호화 키를 저장했음을 확인하세요",continue:"Libre WebUI로 계속"}},Um={greeting:{morning:"좋은 아침입니다",afternoon:"좋은 오후입니다",evening:"좋은 저녁입니다",night:"안녕히 주무세요"},welcome:{helpToday:"오늘 무엇을 도와드릴까요?",helpTonight:"오늘 밤 무엇을 도와드릴까요?"},input:{placeholder:"메시지를 보내세요",messagePlaceholder:"메시지...",attachImages:"이미지 첨부",attachments:"첨부 파일 및 고급 기능",sendMessage:"메시지 보내기",stopGeneration:"생성 중지"},session:{new:"새 채팅",private:"비공개",privateMode:"비공개 모드",privateDescription:"이 대화는 저장되지 않습니다",privateTooltip:"저장되지 않는 비공개 대화 시작",deleteConfirm:"이 채팅을 삭제하시겠습니까?",generatingTitle:"제목 생성 중",noChats:"채팅이 없습니다",createFirst:"위에서 첫 번째 채팅을 만드세요",chats:"채팅",renameChat:"채팅 이름 변경",deleteChat:"채팅 삭제"},persona:{applied:"페르소나 적용됨",label:"페르소나"},model:{updated:"모델 업데이트됨",noModels:"사용 가능한 모델 없음",noModelsDescription:"사용 가능한 모델이 없습니다. Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"사용 가능한 모델이 없습니다. Ollama가 실행 중이고 모델이 설치되어 있는지 확인하세요."},footer:{disclaimer:"LLM은 실수를 할 수 있습니다 - 중요한 정보는 확인하세요",images:"이미지 {{count}}개",images_plural:"이미지 {{count}}개",structuredOutput:"구조화된 출력"},mediaUpload:{dropImagesHere:"여기에 이미지를 놓거나",supportedFormats:"지원: JPG, PNG, GIF, WebP (각 최대 10MB)",browse:"찾아보기"},structuredOutput:{title:"응답 형식",none:"없음 (자연어)",noneDescription:"기본 자연어 응답",json:"JSON",jsonDescription:"구조화된 JSON 형식",list:"목록",listDescription:"항목 배열",summary:"요약",summaryDescription:"핵심 사항이 포함된 문서 요약",analysis:"분석",analysisDescription:"장단점이 포함된 구조화된 분석",custom:"사용자 정의 스키마",customDescription:"자신만의 JSON 스키마 정의",customSchema:"사용자 정의 JSON 스키마",schemaPreview:"스키마 미리보기",applySchema:"스키마 적용",cancel:"취소",enabled:"구조화된 출력 활성화됨"}},$m={navigation:{chat:"채팅",models:"모델",personas:"페르소나",imagine:"이미지 생성",settings:"설정",userManagement:"사용자 관리",signOut:"로그아웃"},toggleSize:"사이드바 크기 전환",expandSidebar:"사이드바 확장"},Vm={menu:{changePicture:"사진 변경",settings:"설정",userManagement:"사용자 관리",logout:"로그아웃"},avatar:{title:"프로필 사진 변경",updated:"프로필 사진이 업데이트되었습니다",updateFailed:"프로필 사진 업데이트 실패",saving:"저장 중..."},profile:{noEmail:"이메일 없음"}},Wm={title:"설정",tabs:{appearance:"외관",model:"모델",systemMessage:"시스템 메시지",plugins:"플러그인",generation:"생성",documents:"문서",tts:"음성 합성",imageGen:"이미지 생성",data:"데이터",about:"정보"},appearance:{title:"외관",language:{title:"언어",description:"선호하는 언어를 선택하세요"},theme:{title:"테마",light:"라이트",dark:"다크",amoled:"퓨어 블랙",system:"시스템"},chatInterface:{title:"채팅 인터페이스",showUsername:"사용자 이름 표시",showUsernameDescription:"채팅 메시지에 사용자 이름 표시"},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:"페르소나"},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 키를 입력하세요"}},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:"문서 임베딩 활성화"},documents:{title:"문서 설정",embeddings:{title:"임베딩",enable:"문서 임베딩 활성화",model:"임베딩 모델",modelDescription:"문서 임베딩에 사용할 모델 선택",chunkSize:"청크 크기",chunkSizeInTokens:"(토큰 단위)",chunkSizeDescription:"임베딩을 위한 텍스트 청크 크기",chunkOverlap:"청크 겹침",chunkOverlapInTokens:"(토큰 단위)",chunkOverlapDescription:"연속 청크 간의 겹침",similarityThreshold:"유사도 임계값",similarityDescription:"결과를 포함하기 위한 최소 유사도 점수",status:"임베딩 상태",statusLabel:"상태",available:"사용 가능",unavailable:"사용 불가",chunksWithEmbeddings:"임베딩이 있는 청크",coverage:"커버리지",regenerate:"임베딩 재생성",regenerating:"재생성 중..."}},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.5배",speedNormal:"1.0배",speedFast:"2.0배",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:"오류"},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:"문서",reportIssue:"문제 보고",reportIssueDescription:"버그 보고서 및 기능 요청"},version:"버전 {{version}}"}},qm={title:"모델",subtitle:"Ollama 모델 풀, 관리 및 모니터링",installed:"설치된 모델",available:"사용 가능한 모델",pull:"모델 풀",pulling:"풀 중...",delete:"모델 삭제",deleting:"삭제 중...",size:"크기",modified:"수정됨",family:"계열",parameters:"매개변수",quantization:"양자화",noModels:"설치된 모델 없음",pullFirst:"시작하려면 모델을 풀하세요"},Jm={title:"페르소나",create:"페르소나 만들기",edit:"페르소나 편집",delete:"페르소나 삭제",name:"이름",description:"설명",systemPrompt:"시스템 프롬프트",model:"모델",avatar:"아바타",background:"배경",noPersonas:"만들어진 페르소나 없음",createFirst:"채팅 경험을 사용자 정의하려면 첫 번째 페르소나를 만드세요"},_m={title:"갤러리",subtitle:"AI 생성 이미지 갤러리",imageCount:"이미지 {{count}}개",generate:"이미지 생성",generateDescription:"AI로 이미지 만들기",generating:"생성 중...",prompt:"프롬프트",promptPlaceholder:"생성하려는 이미지를 설명하세요...",noImages:"아직 생성된 이미지 없음",download:"다운로드",delete:"삭제",regenerate:"재생성",model:"모델",size:"크기",quality:"품질",created:"생성됨"},Ym={generic:"오류가 발생했습니다",network:"네트워크 오류. 연결을 확인하세요.",unauthorized:"이 작업을 수행할 권한이 없습니다.",notFound:"요청한 리소스를 찾을 수 없습니다.",serverError:"서버 오류. 나중에 다시 시도하세요.",validation:"입력을 확인하고 다시 시도하세요."},Zm={title:"키보드 단축키",toggleSidebar:"사이드바 전환",openSettings:"설정 열기",toggleDarkMode:"다크 모드 전환",showShortcuts:"키보드 단축키 표시",closeModals:"모달 닫기",groups:{navigation:"탐색",settings:"설정",general:"일반",chat:"채팅"},actions:{sendMessage:"메시지 보내기",newLine:"메시지에 새 줄"},footer:"{{key1}} 또는 {{key2}}를 눌러 이 도움말 표시",tooltip:"키보드 단축키"},Xm={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:"모델 이름을 입력하세요"},progress:{starting:"초기화 중...",pulling:"모델 다운로드 중...",verifying:"무결성 확인 중...",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
|
|
16
|
+
SYSTEM You are a helpful assistant.`,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:"최근 업데이트"}}},Qm={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}} 실패"},ep={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:"저장 실패"}},ap={enhanced:"향상됨",systemPrompt:"시스템 프롬프트",memories:"메모리",use:"사용",editTooltip:"페르소나 편집",downloadTooltip:"페르소나 다운로드",backup:"백업",exportDNA:"DNA 내보내기",wipeMemories:"메모리 지우기",wipeConfirm:"이 페르소나의 모든 메모리를 지우시겠습니까? 이 작업은 취소할 수 없습니다.",wipeSuccess:"메모리 {{count}}개가 지워졌습니다",backupSuccess:"페르소나 백업이 성공적으로 다운로드되었습니다",dnaSuccess:"페르소나 DNA가 성공적으로 내보내졌습니다",failed:"{{action}} 실패"},tp={title:"사용자 관리",subtitle:"사용자 계정 및 권한 관리",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:"사용자 업데이트 실패"}},np={you:"나",assistant:"어시스턴트",system:"시스템",copy:"복사",copyMessage:"메시지 복사",copied:"복사됨!",regenerate:"재생성",regenerateResponse:"응답 재생성",edit:"편집",editSystemMessage:"시스템 메시지 편집",saveChanges:"변경사항 저장",cancelEditing:"편집 취소",delete:"삭제",deleteConfirm:"이 메시지를 삭제하시겠습니까?",branch:"분기",speaking:"말하는 중...",speakMessage:"메시지 읽기",stopSpeaking:"읽기 중지",showMore:"더 보기",showLess:"접기",thinking:"생각 중",systemMessagePlaceholder:"시스템 메시지를 입력하세요...",fullSizeImage:"전체 크기 이미지",startConversation:"대화 시작하기",startConversationDescription:"AI 어시스턴트와 채팅을 시작하려면 메시지를 보내세요. 질문하고, 코드 도움을 받거나, 자연스러운 대화를 나누세요.",scrollToBottom:"맨 아래로 스크롤",newMessages:"새 메시지"},rp={title:"이미지 갤러리",noImages:"아직 이미지 없음",noImagesHint:"오른쪽 패널을 사용하여 첫 번째 이미지를 생성하세요",delete:"삭제",download:"다운로드",deleteConfirm:"이 이미지를 삭제하시겠습니까?",deleteSuccess:"이미지가 삭제되었습니다",deleteFailed:"이미지 삭제 실패",downloadFailed:"이미지 다운로드 실패",loadMore:"더 보기 ({{current}}/{{total}})",loadFailed:"갤러리 로드 실패"},ip={title:"이미지 생성",prompt:"프롬프트",promptPlaceholder:"만들고 싶은 이미지를 설명하세요...",model:"모델",selectModel:"모델 선택",noModels:"사용 가능한 이미지 생성 모델 없음",configurePlugin:"이미지 생성을 지원하는 플러그인을 구성하세요",size:"크기",quality:"품질",style:"스타일",generate:"생성",generating:"생성 중...",success:"이미지가 성공적으로 생성되었습니다",failed:"이미지 생성 실패",enterPrompt:"프롬프트를 입력하세요",promptTooLong:"프롬프트가 최대 {{max}}자를 초과합니다"},op={title:"문제가 발생했습니다",description:"예기치 않은 오류가 발생했습니다. 페이지를 새로고침해 보세요.",tryAgain:"페이지 새로고침",goHome:"홈으로 가기",errorDetails:"오류 세부정보 (개발용)"},sp={title:"문서",upload:"문서 업로드",uploading:"업로드 중...",noDocuments:"업로드된 문서 없음",uploadHint:"대화에서 사용할 문서를 업로드하세요",delete:"삭제",deleteConfirm:"이 문서를 삭제하시겠습니까?",deleteSuccess:"문서가 삭제되었습니다",deleteFailed:"문서 삭제 실패",uploadSuccess:"문서가 성공적으로 업로드되었습니다",uploadFailed:"문서 업로드 실패",types:"지원: PDF, TXT, MD, DOCX",unsupportedFileType:"PDF와 TXT 파일만 지원됩니다",fileSizeTooLarge:"파일 크기는 10MB 미만이어야 합니다",uploadSuccessWithName:'문서 "{{name}}"이(가) 성공적으로 업로드되었습니다',removeSuccess:"문서가 성공적으로 제거되었습니다",removeFailed:"문서 제거 실패",removeError:"문서를 제거하는 중 오류가 발생했습니다",clickToUpload:"클릭하여 업로드",orDragAndDrop:"또는 드래그 앤 드롭",fileTypesAndSize:"PDF 또는 TXT 파일 최대 10MB",uploadedDocuments:"업로드된 문서",removeDocument:"문서 제거"},lp={speak:"읽기",stop:"중지",speaking:"읽는 중...",generateFailed:"음성 생성 실패",playbackFailed:"오디오 재생 실패",stopSpeaking:"읽기 중지",generatingSpeech:"음성 생성 중...",readAloud:"소리로 읽기"},dp={title:"아티팩트",code:"코드",preview:"미리보기",copy:"코드 복사",copied:"복사됨!",download:"다운로드",expand:"확장",collapse:"접기",openInNewTab:"새 탭에서 열기",invalidSvg:"잘못된 SVG 콘텐츠",invalidJson:"잘못된 JSON 콘텐츠",previewMode:"미리보기 모드",codeMode:"코드 모드",copyContent:"콘텐츠 복사",openInPanel:"패널에서 열기",openInNewWindow:"새 창에서 열기",created:"생성됨",closePanelEsc:"패널 닫기 (Esc)",copyButton:"복사",open:"열기",dragEdgeToResize:"가장자리를 끌어 크기 조절"},cp={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:"페르소나 가져오기 실패"},up={common:Bm,brand:Km,auth:Hm,setup:Rm,chat:Um,sidebar:$m,user:Vm,settings:Wm,models:qm,personas:Jm,gallery:_m,errors:Ym,keyboard:Zm,modelManager:Xm,personaManager:Qm,personaForm:ep,personaCard:ap,userManager:tp,chatMessage:np,imageGallery:rp,imageGeneration:ip,errorBoundary:op,documents:sp,ttsButton:lp,artifacts:dp,personaImportExport:cp},mp={loading:"Memuatkan...",save:"Simpan",saving:"Menyimpan...",cancel:"Batal",delete:"Padam",edit:"Sunting",close:"Tutup",back:"Kembali",next:"Seterusnya",confirm:"Sahkan",error:"Ralat",success:"Berjaya",warning:"Amaran",or:"atau",optional:"pilihan",enabled:"Diaktifkan",disabled:"Dinyahaktifkan",on:"Hidup",off:"Mati",yes:"Ya",no:"Tidak",search:"Cari",noResults:"Tiada hasil ditemui",retry:"Cuba Semula",refresh:"Muat Semula",download:"Muat Turun",upload:"Muat Naik",export:"Eksport",import:"Import",reset:"Tetapkan Semula",apply:"Guna",clear:"Kosongkan",all:"Semua",none:"Tiada",default:"Lalai",custom:"Tersuai",mode:"Mod",multiUser:"Berbilang Pengguna",remove:"Buang"},pp={name:"Libre WebUI",shortName:"Libre"},gp={login:{title:"Selamat Kembali",subtitle:"Log masuk ke akaun anda untuk meneruskan",username:"Nama Pengguna",usernamePlaceholder:"Masukkan nama pengguna anda",password:"Kata Laluan",passwordPlaceholder:"Masukkan kata laluan anda",signIn:"Log Masuk",signingIn:"Sedang log masuk...",noAccount:"Belum mempunyai akaun?",signUpHere:"Daftar di sini",loginSuccess:"Berjaya log masuk!",loginFailed:"Gagal log masuk",checkCredentials:"Gagal log masuk. Sila semak kelayakan anda.",enterBoth:"Sila masukkan nama pengguna dan kata laluan",githubSuccess:"Berjaya log masuk melalui GitHub!",githubFailed:"Pengesahan GitHub gagal",githubVerifyFailed:"Gagal mengesahkan pengesahan GitHub"},signup:{title:"Cipta Akaun",subtitle:"Daftar untuk akaun baharu anda",username:"Nama Pengguna",usernamePlaceholder:"Pilih nama pengguna",email:"E-mel",emailPlaceholder:"emel@anda.com",password:"Kata Laluan",passwordPlaceholder:"Pilih kata laluan",confirmPassword:"Sahkan Kata Laluan",confirmPasswordPlaceholder:"Sahkan kata laluan anda",createAccount:"Cipta Akaun",creatingAccount:"Sedang mencipta akaun...",hasAccount:"Sudah mempunyai akaun?",signInHere:"Log masuk di sini",signupSuccess:"Akaun berjaya dicipta!",signupFailed:"Gagal mendaftar",tryAgain:"Gagal mendaftar. Sila cuba lagi.",usernameRequired:"Nama pengguna dan kata laluan diperlukan",passwordMismatch:"Kata laluan tidak sepadan",passwordTooShort:"Kata laluan mesti sekurang-kurangnya 6 aksara"},logout:{button:"Log keluar",success:"Berjaya log keluar"},oauth:{continueWith:"Teruskan dengan {{provider}}",connectingTo:"Menyambung ke {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hp={welcome:{title:"Selamat Datang ke Libre WebUI",subtitle:"Mari Mulakan",description:"Sediakan Libre WebUI anda dalam beberapa langkah mudah",createAdmin:"Cipta Akaun Pentadbir",features:{secure:{title:"Selamat & Peribadi",description:"Perbualan anda kekal dalam peranti anda"},fast:{title:"Pantas & Responsif",description:"Dioptimumkan untuk kelajuan dan prestasi"},openSource:{title:"Sumber Terbuka",description:"Perisian percuma dan sumber terbuka"}}},admin:{title:"Cipta Akaun Pentadbir",subtitle:"Persediaan Pentadbir",description:"Cipta akaun pentadbir pertama untuk Libre WebUI anda",usernamePlaceholder:"Masukkan nama pengguna pentadbir",passwordPlaceholder:"Masukkan kata laluan (min 6 aksara)",confirmPlaceholder:"Sahkan kata laluan anda",creating:"Sedang mencipta...",createAdmin:"Cipta Pentadbir",success:"Akaun pentadbir berjaya dicipta!",failed:"Gagal mencipta akaun pentadbir",fillAllFields:"Sila isi semua ruangan",note:"Ini akan menjadi akaun pentadbir utama untuk Libre WebUI anda"},encryptionKey:{title:"Simpan Kunci Penyulitan Anda",subtitle:"Penting: Simpan Kunci Ini",description:"Kunci penyulitan ini melindungi data sensitif anda. Simpan dengan selamat - anda memerlukannya jika perlu memulihkan pangkalan data anda.",warning:"Amaran",warningText:"Jika anda kehilangan kunci ini dan perlu memulihkan pangkalan data anda, data yang disulitkan (kunci API, keutamaan) tidak dapat dipulihkan.",label:"Kunci Penyulitan Anda",loading:"Memuatkan...",copyToClipboard:"Salin ke papan keratan",copied:"Kunci penyulitan disalin ke papan keratan!",copyFailed:"Gagal menyalin kunci ke papan keratan",envNote:"Kunci ini juga disimpan dalam fail backend/.env anda sebagai ENCRYPTION_KEY",acknowledgment:"Saya telah menyimpan kunci penyulitan saya di lokasi yang selamat dan memahami bahawa kehilangannya boleh menyebabkan kehilangan data.",confirmRequired:"Sila sahkan bahawa anda telah menyimpan kunci penyulitan",continue:"Teruskan ke Libre WebUI"}},bp={greeting:{morning:"Selamat pagi",afternoon:"Selamat petang",evening:"Selamat petang",night:"Selamat malam"},welcome:{helpToday:"Apa yang boleh saya bantu hari ini?",helpTonight:"Apa yang boleh saya bantu malam ini?"},input:{placeholder:"Hantar mesej",messagePlaceholder:"Mesej...",attachImages:"Lampirkan imej",attachments:"Lampiran dan ciri lanjutan",sendMessage:"Hantar mesej",stopGeneration:"Hentikan penjanaan"},session:{new:"Sembang Baharu",private:"Peribadi",privateMode:"Mod Peribadi",privateDescription:"Perbualan ini tidak akan disimpan",privateTooltip:"Mulakan perbualan peribadi yang tidak akan disimpan",deleteConfirm:"Adakah anda pasti mahu memadamkan sembang ini?",generatingTitle:"Menjana tajuk",noChats:"Belum ada sembang",createFirst:"Cipta sembang pertama anda di atas",chats:"Sembang",renameChat:"Namakan semula sembang",deleteChat:"Padam sembang"},persona:{applied:"Persona digunakan",label:"Persona"},model:{updated:"Model dikemas kini",noModels:"Tiada model tersedia",noModelsDescription:"Tiada model tersedia. Pastikan Ollama sedang berjalan dan mempunyai model yang dipasang.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Tiada model tersedia. Sila pastikan Ollama sedang berjalan dan model telah dipasang."},footer:{disclaimer:"LLM boleh membuat kesilapan - sahkan maklumat penting",images:"{{count}} imej",images_plural:"{{count}} imej",structuredOutput:"Output berstruktur"},mediaUpload:{dropImagesHere:"Lepaskan imej di sini atau",supportedFormats:"Sokongan: JPG, PNG, GIF, WebP (maks 10MB setiap satu)",browse:"layari"},structuredOutput:{title:"Format Respons",none:"Tiada (Bahasa Semula Jadi)",noneDescription:"Respons bahasa semula jadi lalai",json:"JSON",jsonDescription:"Format JSON berstruktur",list:"Senarai",listDescription:"Tatasusunan item",summary:"Ringkasan",summaryDescription:"Ringkasan dokumen dengan perkara utama",analysis:"Analisis",analysisDescription:"Analisis berstruktur dengan kebaikan/keburukan",custom:"Skema Tersuai",customDescription:"Tentukan skema JSON anda sendiri",customSchema:"Skema JSON tersuai",schemaPreview:"Pratonton Skema",applySchema:"Gunakan Skema",cancel:"Batal",enabled:"Output berstruktur diaktifkan"}},kp={navigation:{chat:"Sembang",models:"Model",personas:"Persona",imagine:"Bayangkan",settings:"Tetapan",userManagement:"Pengurusan Pengguna",signOut:"Log Keluar"},toggleSize:"Togol saiz bar sisi",expandSidebar:"Kembangkan bar sisi"},fp={menu:{changePicture:"Tukar Gambar",settings:"Tetapan",userManagement:"Pengurusan Pengguna",logout:"Log keluar"},avatar:{title:"Tukar Gambar Profil",updated:"Gambar profil dikemas kini",updateFailed:"Gagal mengemas kini gambar profil",saving:"Menyimpan..."},profile:{noEmail:"Tiada e-mel diberikan"}},yp={title:"Tetapan",tabs:{appearance:"Penampilan",model:"Model",systemMessage:"Mesej Sistem",plugins:"Plugin",generation:"Penjanaan",documents:"Dokumen",tts:"Teks ke Pertuturan",imageGen:"Penjanaan Imej",data:"Data",about:"Perihal"},appearance:{title:"Penampilan",language:{title:"Bahasa",description:"Pilih bahasa pilihan anda"},theme:{title:"Tema",light:"Cerah",dark:"Gelap",amoled:"Hitam Tulen",system:"Sistem"},chatInterface:{title:"Antara Muka Sembang",showUsername:"Tunjukkan Nama Pengguna",showUsernameDescription:"Paparkan nama pengguna dalam mesej sembang"},background:{title:"Imej Latar Belakang",enable:"Aktifkan imej latar belakang",enableDescription:"Tunjukkan latar belakang tersuai dengan kesan kabur",blur:"Kabur",opacity:"Kelegapan",upload:"Muat naik imej latar belakang",dragDrop:"Seret dan lepas imej atau klik untuk melayari",chooseImage:"Pilih Imej"}},saveSettings:"Simpan Tetapan",model:{title:"Tetapan Model",defaultModel:"Model Lalai",defaultModelDescription:"Model ini akan digunakan secara lalai untuk perbualan baharu",selectModel:"Pilih model",updateAll:"Kemas Kini Semua Model",updateAllDescription:"Semak kemas kini dan muat turun versi terkini semua model yang dipasang",updateAllButton:"Kemas Kini Semua",updating:"Mengemas kini model...",currentModelInfo:"Maklumat Model Semasa",name:"Nama",size:"Saiz",family:"Keluarga",format:"Format",status:"Status",statusStarting:"Memulakan...",statusComplete:"Selesai",statusError:"Ralat",bulkOperations:"Operasi Pukal",autoTitle:{title:"Penjanaan Tajuk Auto",enable:"Aktifkan Tajuk Auto",enableDescription:"Jana tajuk secara automatik untuk perbualan baharu",taskModel:"Model Tugas",selectTaskModel:"Pilih model tugas",taskModelDescription:"Model yang digunakan untuk menjana tajuk perbualan"},persona:"Persona"},systemMessage:{title:"Mesej Sistem",description:"Tetapkan mesej sistem tersuai yang akan digunakan untuk semua perbualan baharu.",placeholder:"Masukkan mesej sistem...",saved:"Mesej sistem disimpan",saveFailed:"Gagal menyimpan mesej sistem"},plugins:{title:"Plugin",description:"Urus plugin yang dipasang",addNew:"Tambah Plugin Baharu",upload:"Muat Naik Plugin",addJson:"Tambah JSON",uploading:"Memuat naik...",jsonPlaceholder:"Tampal konfigurasi JSON plugin...",install:"Pasang Plugin",noPlugins:"Tiada plugin dipasang",noPluginsDescription:"Tambah plugin untuk memanjangkan fungsi",loading:"Memuatkan plugin...",installed:"Plugin Dipasang",active:"Plugin Aktif",activeLabel:"Aktif",inactive:"Tidak Aktif",activate:"Aktifkan",deactivate:"Nyahaktifkan",models:"model",apiKeySet:"Kunci API Ditetapkan",apiKeyConfiguration:"Konfigurasi Kunci API",apiKeyEnvAlternative:"Sebagai alternatif, tetapkan",environmentVariable:"pemboleh ubah persekitaran",apiKeyConfigured:"Kunci API dikonfigurasi",apiKeyPlaceholder:"Masukkan kunci API anda...",saveApiKey:"Simpan Kunci API",apiKey:{title:"Kunci API",placeholder:"Masukkan kunci API",save:"Simpan Kunci",remove:"Buang Kunci",configured:"Kunci API Dikonfigurasi",notConfigured:"Kunci API Diperlukan",saved:"Kunci API berjaya disimpan",removed:"Kunci API dibuang",saveFailed:"Gagal menyimpan kunci API",removeFailed:"Gagal membuang kunci API",enterKey:"Sila masukkan kunci API"}},generation:{title:"Pilihan Penjanaan",description:"Konfigurasi cara AI menjana respons",coreParameters:"Parameter Teras",temperature:"Suhu",temperatureDescription:"Mengawal rawak. Nilai lebih rendah lebih fokus, nilai lebih tinggi lebih kreatif.",topP:"Top P",topPDescription:"Mengawal kepelbagaian melalui persampelan nukleus. Nilai lebih rendah fokus pada token berkemungkinan.",topK:"Top K",topKDescription:"Menghadkan pemilihan token kepada K teratas yang paling berkemungkinan. Tetapkan 0 untuk nyahaktif.",minP:"Min P",minPDescription:"Ambang kebarangkalian minimum untuk pemilihan token.",generationControl:"Kawalan Penjanaan",maxTokens:"Token Maksimum",maxTokensDescription:"Bilangan maksimum token untuk dijana dalam respons.",repeatPenalty:"Penalti Ulangan",repeatPenaltyDescription:"Menghukum token berulang. Nilai lebih tinggi mengurangkan pengulangan.",contextLength:"Panjang Konteks",contextLengthDescription:"Saiz tingkap konteks maksimum untuk perbualan.",seed:"Benih",optional:"pilihan",random:"Rawak",seedDescription:"Tetapkan benih khusus untuk output yang boleh diulang.",advancedOptions:"Pilihan Lanjutan",presencePenalty:"Penalti Kehadiran",presencePenaltyDescription:"Menghukum token yang muncul dalam konteks.",frequencyPenalty:"Penalti Kekerapan",frequencyPenaltyDescription:"Menghukum token yang kerap digunakan.",stopSequences:"Urutan Berhenti",commaSeparated:"dipisahkan koma",stopSequencesDescription:"Token tersuai yang akan menghentikan penjanaan apabila ditemui.",resetDefaults:"Tetap Semula ke Lalai",saveOptions:"Simpan Pilihan",embeddingSettings:"Tetapan Pembenaman",enableEmbeddings:"Aktifkan Pembenaman Dokumen"},documents:{title:"Tetapan Dokumen",embeddings:{title:"Pembenaman",enable:"Aktifkan pembenaman dokumen",model:"Model Pembenaman",modelDescription:"Pilih model yang digunakan untuk pembenaman dokumen",chunkSize:"Saiz Cebisan",chunkSizeInTokens:"(dalam token)",chunkSizeDescription:"Saiz cebisan teks untuk pembenaman",chunkOverlap:"Pertindihan Cebisan",chunkOverlapInTokens:"(dalam token)",chunkOverlapDescription:"Pertindihan antara cebisan berturutan",similarityThreshold:"Ambang Persamaan",similarityDescription:"Skor persamaan minimum untuk memasukkan hasil",status:"Status Pembenaman",statusLabel:"Status",available:"Tersedia",unavailable:"Tidak Tersedia",chunksWithEmbeddings:"Cebisan dengan pembenaman",coverage:"Liputan",regenerate:"Jana Semula Pembenaman",regenerating:"Menjana semula..."}},tts:{title:"Teks ke Pertuturan",description:"Konfigurasi tetapan teks ke pertuturan untuk membaca mesej dengan kuat",loadingProviders:"Memuatkan penyedia TTS...",noProviders:"Tiada Penyedia TTS",noProvidersDescription:"Konfigurasi plugin dengan sokongan TTS untuk mengaktifkan teks ke pertuturan",enable:"Aktifkan TTS",enableDescription:"Benarkan teks ke pertuturan untuk mesej pembantu",autoPlay:"Main Auto Respons",autoPlayDescription:"Baca mesej pembantu baharu secara automatik dengan kuat",streamSentences:"Strim Ayat",streamSentencesDescription:"Main audio ayat demi ayat berbanding menunggu mesej penuh. Disyorkan untuk TTS tempatan bagi mengelakkan tamat masa pada mesej panjang.",voiceConfiguration:"Konfigurasi Suara",model:"Model TTS",modelDescription:"Pilih model untuk penjanaan teks ke pertuturan",voice:"Suara",selectVoice:"Pilih suara",voiceDescription:"Pilih suara untuk teks ke pertuturan",speed:"Kelajuan",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Penyedia Tersedia",models:"model",test:"Uji",testing:"Menguji...",stop:"Berhenti"},imageGen:{title:"Penjanaan Imej",description:"Konfigurasi tetapan dan penyedia penjanaan imej",loadingProviders:"Memuatkan penyedia penjanaan imej...",noProviders:"Tiada Penyedia Penjanaan Imej",noProvidersDescription:"Konfigurasi plugin dengan sokongan penjanaan imej",enable:"Aktifkan Penjanaan Imej",enableDescription:"Benarkan penjanaan imej AI dalam perbualan",configuration:"Konfigurasi",model:"Model",modelDescription:"Pilih model untuk penjanaan imej",size:"Saiz",sizeDescription:"Resolusi imej yang dijana",quality:"Kualiti",qualityDescription:"Tahap kualiti imej yang dijana",style:"Gaya",styleDescription:"Pratetap gaya untuk imej yang dijana",availableProviders:"Penyedia Tersedia",models:"model"},data:{title:"Pengurusan Data",export:"Eksport Data",exportDescription:"Muat turun semua data anda termasuk keutamaan, sesi dan dokumen.",exportAll:"Eksport Semua Data",import:"Import Data",importDescription:"Import data dari eksport sebelumnya.",importData:"Import Data",importing:"Mengimport...",clearSessions:"Kosongkan Sesi",clearSessionsDescription:"Padam semua sesi sembang. Tindakan ini tidak boleh dibatalkan.",clearAll:"Kosongkan Semua",clearing:"Mengosongkan...",importOptions:"Pilihan Import",importOptionsDescription:"Pilih cara mengendalikan data sedia ada",skipDuplicates:"Langkau pendua",overwrite:"Tulis ganti sedia ada",importResults:"Hasil Import",preferences:"Keutamaan",imported:"Diimport",failed:"Gagal",sessions:"Sesi",importedLabel:"diimport",skipped:"dilangkau",documents:"Dokumen",errors:"Ralat"},about:{title:"Perihal",versionLabel:"Versi",ollama:{title:"Status Ollama",version:"Versi",healthy:"Sihat",unhealthy:"Tidak Sihat"},stats:{models:"Model",sessions:"Sesi"},features:{privacy:{title:"Privasi Diutamakan",description:"Data anda kekal dalam peranti anda"},openSource:{title:"Sumber Terbuka",description:"Perisian percuma dan sumber terbuka"},localInference:{title:"Inferens Tempatan",description:"Jalankan model AI secara tempatan dengan Ollama"}},openSourceBy:"Sumber terbuka oleh {{company}}",links:{title:"Pautan",github:"GitHub",githubDescription:"Lihat kod sumber dan sumbang",website:"Laman Web",websiteDescription:"Lawati laman web kami",ollama:"Ollama",ollamaDescription:"Ketahui lebih lanjut tentang Ollama",documentation:"Dokumentasi",reportIssue:"Laporkan Isu",reportIssueDescription:"Laporan pepijat & permintaan ciri"},version:"Versi {{version}}"}},vp={title:"Model",subtitle:"Tarik, urus dan pantau model Ollama anda",installed:"Model Dipasang",available:"Model Tersedia",pull:"Tarik Model",pulling:"Menarik...",delete:"Padam Model",deleting:"Memadamkan...",size:"Saiz",modified:"Diubah Suai",family:"Keluarga",parameters:"Parameter",quantization:"Kuantisasi",noModels:"Tiada model dipasang",pullFirst:"Tarik model untuk bermula"},xp={title:"Persona",create:"Cipta Persona",edit:"Sunting Persona",delete:"Padam Persona",name:"Nama",description:"Penerangan",systemPrompt:"Arahan Sistem",model:"Model",avatar:"Avatar",background:"Latar Belakang",noPersonas:"Tiada persona dicipta",createFirst:"Cipta persona pertama anda untuk menyesuaikan pengalaman sembang"},Sp={title:"Galeri",subtitle:"Galeri imej yang dijana AI anda",imageCount:"{{count}} imej",generate:"Jana Imej",generateDescription:"Cipta imej dengan AI",generating:"Menjana...",prompt:"Arahan",promptPlaceholder:"Terangkan imej yang anda mahu jana...",noImages:"Belum ada imej dijana",download:"Muat Turun",delete:"Padam",regenerate:"Jana Semula",model:"Model",size:"Saiz",quality:"Kualiti",created:"Dicipta"},wp={generic:"Ralat telah berlaku",network:"Ralat rangkaian. Sila semak sambungan anda.",unauthorized:"Anda tidak dibenarkan melakukan tindakan ini.",notFound:"Sumber yang diminta tidak ditemui.",serverError:"Ralat pelayan. Sila cuba lagi kemudian.",validation:"Sila semak input anda dan cuba lagi."},Pp={title:"Pintasan Papan Kekunci",toggleSidebar:"Togol bar sisi",openSettings:"Buka tetapan",toggleDarkMode:"Togol mod gelap",showShortcuts:"Tunjukkan pintasan papan kekunci",closeModals:"Tutup modal",groups:{navigation:"Navigasi",settings:"Tetapan",general:"Umum",chat:"Sembang"},actions:{sendMessage:"Hantar mesej",newLine:"Baris baharu dalam mesej"},footer:"Tekan {{key1}} atau {{key2}} untuk menunjukkan bantuan ini",tooltip:"Pintasan papan kekunci"},Mp={title:"Model",loading:"Memuatkan model...",systemStatus:{online:"Ollama Dalam Talian",offline:"Ollama Luar Talian",models:"model",models_plural:"model",running:"berjalan",vram:"VRAM"},sections:{pull:"Tarik Model Baharu",library:"Layari Pustaka",running:"Model Sedang Berjalan",local:"Model Tempatan",advanced:"Tindakan Lanjutan",huggingface:"HuggingFace Hub"},pull:{placeholder:"Masukkan nama model (cth., llama3.2:3b, deepseek-r1:14b)",button:"Tarik",cancel:"Batal",popular:"Model popular:",browseAll:"Layari semua model di ollama.com",success:"Model {{name}} berjaya ditarik",cancelled:"Tarikan model dibatalkan",failed:"Gagal menarik model",enterName:"Sila masukkan nama model"},progress:{starting:"Memulakan...",pulling:"Memuat turun model...",verifying:"Mengesahkan integriti...",writing:"Menulis manifes...",cleaning:"Membersihkan..."},library:{available:"tersedia",search:"Cari model...",noResults:"Tiada model ditemui yang sepadan dengan kriteria anda",installed:"Dipasang",more:"+{{count}} lagi",refresh:"Muat Semula Pustaka"},local:{noModels:"Belum ada model dipasang",pullToStart:"Tarik model di atas untuk bermula",installed:"dipasang",running:"Berjalan",info:"Maklumat",copy:"Salin",delete:"Padam",deleteConfirm:'Adakah anda pasti mahu memadamkan model "{{name}}"?',deleteSuccess:"Model {{name}} berjaya dipadam",deleteFailed:"Gagal memadamkan model"},advanced:{createModel:"Cipta Model",fromModelfile:"Dari Modelfile",copyModel:"Salin Model",duplicateExisting:"Duplikasi sedia ada",testEmbeddings:"Uji Pembenaman",generateVectors:"Jana vektor",healthCheck:"Semakan Kesihatan",testConnection:"Uji sambungan",healthy:"Ollama sihat!"},modals:{details:{title:"Butiran Model",info:"Maklumat Model",family:"Keluarga",parameters:"Parameter",quantization:"Kuantisasi",format:"Format",systemPrompt:"Arahan Sistem",template:"Templat",license:"Lesen",modelfile:"Modelfile",noDetails:"Tiada butiran tersedia"},copy:{title:"Salin Model",source:"Model Sumber",selectModel:"Pilih model...",newName:"Nama Model Baharu",placeholder:"cth., model-tersuai-saya",copying:"Menyalin...",button:"Salin Model",success:"Model disalin ke {{name}}",failed:"Gagal menyalin model",enterBoth:"Sila masukkan kedua-dua nama sumber dan destinasi"},create:{title:"Cipta Model Tersuai",name:"Nama Model",namePlaceholder:"cth., pembantu-saya",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
17
|
+
SYSTEM Anda adalah pembantu yang berguna.`,docs:"Dokumentasi Modelfile",docsLink:"untuk rujukan sintaks",creating:"Mencipta...",button:"Cipta Model",success:"Model {{name}} berjaya dicipta",failed:"Gagal mencipta model",enterBoth:"Sila masukkan nama model dan kandungan Modelfile"},embeddings:{title:"Uji Pembenaman",model:"Model Pembenaman",selectModel:"Pilih model...",recommended:"Disyorkan: nomic-embed-text, mxbai-embed-large",input:"Teks Input",placeholder:"Masukkan teks untuk menjana pembenaman...",generating:"Menjana...",button:"Jana Pembenaman",result:"Hasil ({{count}} dimensi)",success:"Menjana vektor pembenaman {{count}} dimensi",failed:"Gagal menjana pembenaman",enterBoth:"Sila pilih model dan masukkan teks"}},huggingface:{browseAll:"Layari semua di HuggingFace",checkingGguf:"Mencari fail GGUF...",noGgufAvailable:"Tiada fail GGUF tersedia untuk muat turun terus ke Ollama",ggufFilesCount:"Fail GGUF ({{count}}) - Muat turun terus ke Ollama",noModelsFound:"Tiada model dijumpai",noResults:"Tiada model dijumpai. Cuba laraskan carian atau penapis anda.",browseAllLink:"Lihat semua",search:"Cari model HuggingFace...",by:"oleh",gated:"Akses terhad",viewOnHF:"Lihat di HuggingFace",sortDownloads:"Muat turun",sortLikes:"Suka",sortRecent:"Terkini",taskTextGeneration:"Penjanaan Teks",taskTextToSpeech:"Teks ke Pertuturan",taskTextToImage:"Teks ke Imej",taskSpeechRecognition:"Pengecaman Pertuturan",tasks:{textGen:"Penjanaan Teks",tts:"Teks ke Pertuturan",image:"Teks ke Imej",stt:"Pengecaman Pertuturan"},sort:{downloads:"Paling Banyak Dimuat Turun",likes:"Paling Disukai",recent:"Dikemas Kini Baru-baru Ini"}}},Dp={title:"Persona",subtitle:"Cipta dan urus persona AI dengan personaliti, ingatan dan tingkah laku tersuai",loading:"Memuatkan persona...",createButton:"Cipta Persona",importExport:"Import/Eksport",stats:{title:"Persona Anda",count:"{{count}} persona dicipta",count_plural:"{{count}} persona dicipta"},empty:{title:"Belum ada persona",description:"Cipta persona pertama anda untuk bermula dengan interaksi AI yang diperibadikan",button:"Cipta Persona Pertama Anda"},deleteConfirm:'Adakah anda pasti mahu memadamkan "{{name}}"?',deleteSuccess:'Persona "{{name}}" berjaya dipadam',downloadSuccess:'Persona "{{name}}" berjaya dimuat turun',failed:"Gagal {{action}} persona"},Ap={title:{create:"Cipta Persona Baharu",edit:"Sunting Persona"},subtitle:{create:"Cipta persona AI baharu dengan personaliti, sistem ingatan dan keupayaan pembelajaran adaptif tersuai",edit:"Sesuaikan persona AI anda dengan ingatan lanjutan, pembelajaran adaptif dan parameter pintar"},loading:"Memuatkan borang...",saved:"Disimpan",tabs:{basic:"Asas",parameters:"Parameter",memory:"Ingatan & Pembelajaran",advanced:"Lanjutan"},basic:{name:"Nama",namePlaceholder:"Masukkan nama persona",model:"Model",selectModel:"Pilih model",description:"Penerangan",descriptionPlaceholder:"Terangkan persona anda...",systemPrompt:"Arahan Sistem",systemPromptPlaceholder:"Masukkan arahan sistem yang mentakrifkan tingkah laku persona anda...",systemPromptHint:"Arahan sistem mentakrifkan cara persona anda akan bertingkah laku dan memberi respons."},parameters:{temperature:"Suhu",temperatureHint:"Mengawal kreativiti vs konsistensi",topP:"Top-P",topPHint:"Mengawal kepelbagaian respons",topK:"Top-K",topKHint:"Menghadkan perbendaharaan kata kepada token top-k",contextWindow:"Tetingkap Konteks",contextWindowHint:"Panjang maksimum sejarah perbualan",maxTokens:"Token Maksimum",maxTokensHint:"Panjang respons maksimum",repeatPenalty:"Penalti Ulangan",repeatPenaltyHint:"Mengurangkan respons berulang"},memory:{title:"Sistem Ingatan",subtitle:"Persona mengingati perbualan dari masa ke masa",enableHint:"Aktifkan sistem ingatan untuk membolehkan persona anda mengingati perbualan dan membina konteks dari masa ke masa.",loading:"Memuatkan status ingatan...",noData:"Belum ada data ingatan",memories:"Ingatan",mbUsed:"MB Digunakan",lastBackup:"Sandaran Terakhir",never:"Tidak Pernah",maxMemories:"Ingatan Maksimum",maxMemoriesHint:"Berapa banyak ingatan yang boleh disimpan persona ini",retention:"Pengekalan Ingatan",retentionHint:"Hari untuk menyimpan ingatan sebelum pembersihan",autoCleanup:"Pembersihan auto ingatan lama",wipeAll:"Padam Semua Ingatan",wipeCannot:"Ini tidak boleh dibatalkan",wipeButton:"Padam",wiping:"Memadamkan...",wipeConfirm:"Adakah anda pasti mahu memadamkan semua ingatan? Ini tidak boleh dibatalkan.",wipeSuccess:"Memadamkan {{count}} ingatan"},learning:{title:"Pembelajaran Adaptif",subtitle:"Persona berkembang berdasarkan interaksi",enableHint:"Aktifkan pembelajaran adaptif untuk membolehkan persona anda berkembang dan memperibadikan respons berdasarkan interaksi anda.",speed:"Kelajuan Pembelajaran",slow:"Perlahan",slowDesc:"Perubahan beransur-ansur",balanced:"Seimbang",balancedDesc:"Kadar sederhana",fast:"Pantas",fastDesc:"Penyesuaian cepat",autoAdapt:"Penyesuaian auto kepada keutamaan pengguna",whatLearns:"Apa yang persona pelajari:",conversationTone:"Nada perbualan",responseStyle:"Gaya respons",userPreferences:"Keutamaan pengguna",topicInterests:"Minat topik"},advanced:{embeddingModel:"Model Pembenaman",embeddingHint:"Pilih model yang digunakan untuk pengekodan ingatan dan carian semantik. Model pembenaman ditunjukkan dahulu, diikuti model lain yang tersedia.",noModels:"Tiada model ditemui",embeddingModels:"Model Pembenaman",otherModels:"Model Lain",installHint:"Pasang model pembenaman:",recommended:"Disyorkan: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Perihal Tetapan Lanjutan",aboutDescription:"Model pembenaman digunakan oleh sistem ingatan untuk memahami makna semantik dan mencari ingatan yang berkaitan semasa perbualan. Pilih model yang sepadan dengan kes penggunaan dan sumber anda."},actions:{cancel:"Batal",save:"Simpan",saving:"Menyimpan...",saveClose:"Simpan & Tutup",create:"Cipta"},success:{created:"Persona dicipta",updated:"Persona dikemas kini"},error:{saveFailed:"Gagal menyimpan"}},zp={enhanced:"Dipertingkat",systemPrompt:"Arahan Sistem",memories:"ingatan",use:"Guna",editTooltip:"Sunting persona",downloadTooltip:"Muat turun persona",backup:"Sandaran",exportDNA:"Eksport DNA",wipeMemories:"Padam Ingatan",wipeConfirm:"Adakah anda pasti mahu memadamkan semua ingatan untuk persona ini? Tindakan ini tidak boleh dibatalkan.",wipeSuccess:"Memadamkan {{count}} ingatan",backupSuccess:"Sandaran persona berjaya dimuat turun",dnaSuccess:"DNA persona berjaya dieksport",failed:"Gagal {{action}}"},jp={title:"Pengurusan Pengguna",subtitle:"Urus akaun pengguna dan kebenaran",loading:"Memuatkan pengguna...",createUser:"Cipta Pengguna",search:"Cari pengguna...",noUsers:"Tiada pengguna ditemui",noUsersMatching:"Tiada pengguna sepadan dengan carian anda",columns:{user:"Pengguna",email:"E-mel",role:"Peranan",created:"Dicipta",actions:"Tindakan"},roles:{admin:"Pentadbir",user:"Pengguna"},noEmail:"Tiada e-mel",deleteConfirm:'Adakah anda pasti mahu memadamkan pengguna "{{name}}"?',deleteSuccess:"Pengguna berjaya dipadam",deleteFailed:"Gagal memadamkan pengguna",cannotDeleteSelf:"Anda tidak boleh memadamkan akaun anda sendiri",form:{title:{create:"Cipta Pengguna",edit:"Sunting Pengguna"},username:"Nama Pengguna",usernamePlaceholder:"Masukkan nama pengguna",email:"E-mel",emailPlaceholder:"Masukkan e-mel (pilihan)",password:"Kata Laluan",passwordPlaceholder:"Masukkan kata laluan",passwordHint:"Biarkan kosong untuk mengekalkan kata laluan semasa",role:"Peranan",creating:"Mencipta...",updating:"Mengemas kini...",createButton:"Cipta Pengguna",updateButton:"Kemas Kini Pengguna",createSuccess:"Pengguna berjaya dicipta",updateSuccess:"Pengguna berjaya dikemas kini",createFailed:"Gagal mencipta pengguna",updateFailed:"Gagal mengemas kini pengguna"}},Tp={you:"Anda",assistant:"Pembantu",system:"Sistem",copy:"Salin",copyMessage:"Salin mesej",copied:"Disalin!",regenerate:"Jana Semula",regenerateResponse:"Jana semula respons",edit:"Sunting",editSystemMessage:"Sunting mesej sistem",saveChanges:"Simpan perubahan",cancelEditing:"Batal penyuntingan",delete:"Padam",deleteConfirm:"Padam mesej ini?",branch:"Cabang",speaking:"Bercakap...",speakMessage:"Sebut mesej",stopSpeaking:"Hentikan pertuturan",showMore:"Tunjuk lebih",showLess:"Tunjuk kurang",thinking:"Berfikir",systemMessagePlaceholder:"Masukkan mesej sistem anda...",fullSizeImage:"Imej saiz penuh",startConversation:"Mulakan perbualan",startConversationDescription:"Hantar mesej untuk mula berbual dengan pembantu AI anda. Tanya soalan, dapatkan bantuan dengan kod atau berbual secara semula jadi.",scrollToBottom:"Tatal ke bawah",newMessages:"Mesej baharu"},Np={title:"Galeri Imej",noImages:"Belum ada imej",noImagesHint:"Jana imej pertama anda menggunakan panel di sebelah kanan",delete:"Padam",download:"Muat Turun",deleteConfirm:"Adakah anda pasti mahu memadamkan imej ini?",deleteSuccess:"Imej dipadam",deleteFailed:"Gagal memadamkan imej",downloadFailed:"Gagal memuat turun imej",loadMore:"Muatkan Lagi ({{current}} daripada {{total}})",loadFailed:"Gagal memuatkan galeri"},Ip={title:"Jana Imej",prompt:"Arahan",promptPlaceholder:"Terangkan imej yang anda mahu cipta...",model:"Model",selectModel:"Pilih model",noModels:"Tiada model penjanaan imej tersedia",configurePlugin:"Konfigurasi plugin dengan sokongan penjanaan imej",size:"Saiz",quality:"Kualiti",style:"Gaya",generate:"Jana",generating:"Menjana...",success:"Imej berjaya dijana",failed:"Gagal menjana imej",enterPrompt:"Sila masukkan arahan",promptTooLong:"Prompt melebihi panjang maksimum {{max}} aksara"},Cp={title:"Sesuatu tidak kena",description:"Kami menghadapi ralat yang tidak dijangka. Sila cuba muat semula halaman.",tryAgain:"Muat Semula Halaman",goHome:"Pergi ke Laman Utama",errorDetails:"Butiran Ralat (Pembangunan)"},Fp={title:"Dokumen",upload:"Muat Naik Dokumen",uploading:"Memuat naik...",noDocuments:"Tiada dokumen dimuat naik",uploadHint:"Muat naik dokumen untuk digunakan dalam perbualan anda",delete:"Padam",deleteConfirm:"Adakah anda pasti mahu memadamkan dokumen ini?",deleteSuccess:"Dokumen dipadam",deleteFailed:"Gagal memadamkan dokumen",uploadSuccess:"Dokumen berjaya dimuat naik",uploadFailed:"Gagal memuat naik dokumen",types:"Disokong: PDF, TXT, MD, DOCX",unsupportedFileType:"Hanya fail PDF dan TXT yang disokong",fileSizeTooLarge:"Saiz fail mesti kurang daripada 10MB",uploadSuccessWithName:'Dokumen "{{name}}" berjaya dimuat naik',removeSuccess:"Dokumen berjaya dibuang",removeFailed:"Gagal membuang dokumen",removeError:"Ralat berlaku semasa membuang dokumen",clickToUpload:"Klik untuk muat naik",orDragAndDrop:"atau seret dan lepas",fileTypesAndSize:"Fail PDF atau TXT sehingga 10MB",uploadedDocuments:"Dokumen Dimuat Naik",removeDocument:"Buang dokumen"},Op={speak:"Sebut",stop:"Berhenti",speaking:"Bercakap...",generateFailed:"Gagal menjana pertuturan",playbackFailed:"Main balik audio gagal",stopSpeaking:"Hentikan pertuturan",generatingSpeech:"Menjana pertuturan...",readAloud:"Baca dengan kuat"},Ep={title:"Artifak",code:"Kod",preview:"Pratonton",copy:"Salin kod",copied:"Disalin!",download:"Muat Turun",expand:"Kembangkan",collapse:"Kecilkan",openInNewTab:"Buka dalam tab baharu",invalidSvg:"Kandungan SVG tidak sah",invalidJson:"Kandungan JSON tidak sah",previewMode:"Mod pratonton",codeMode:"Mod kod",copyContent:"Salin kandungan",openInPanel:"Buka dalam panel",openInNewWindow:"Buka dalam tetingkap baharu",created:"Dicipta",closePanelEsc:"Tutup panel (Esc)",copyButton:"Salin",open:"Buka",dragEdgeToResize:"Seret tepi untuk mengubah saiz"},Lp={title:"Import & Eksport Persona",description:"Eksport persona anda untuk dikongsi atau import persona daripada orang lain",exportPersonas:"Eksport Persona",importPersonas:"Import Persona",noPersonasToExport:"Tiada persona untuk dieksport",personasAvailable:"{{count}} persona tersedia",personasAvailable_plural:"{{count}} persona tersedia",exportAll:"Eksport Semua",uploadJsonFile:"Muat Naik Fail JSON",pasteJsonLabel:"Tampal Data JSON",pasteJsonPlaceholder:"Tampal data JSON persona di sini...",importing:"Mengimport...",importButton:"Import Persona",expectedFormat:"Format JSON yang Dijangka:",exportSuccess:'Persona "{{name}}" berjaya dieksport',exportFailed:"Gagal mengeksport persona",exportAllSuccess:"Semua {{count}} persona berjaya dieksport",exportAllFailed:"Gagal mengeksport persona",pasteJsonData:"Sila tampal data JSON persona",importMultipleSuccess:"Berjaya mengimport {{count}} persona",importMultipleFailed:"Gagal mengimport {{count}} persona",importNoneFailed:"Gagal mengimport mana-mana persona",importSuccess:"Persona berjaya diimport",importFailed:"Gagal mengimport persona"},Gp={common:mp,brand:pp,auth:gp,setup:hp,chat:bp,sidebar:kp,user:fp,settings:yp,models:vp,personas:xp,gallery:Sp,errors:wp,keyboard:Pp,modelManager:Mp,personaManager:Dp,personaForm:Ap,personaCard:zp,userManager:jp,chatMessage:Tp,imageGallery:Np,imageGeneration:Ip,errorBoundary:Cp,documents:Fp,ttsButton:Op,artifacts:Ep,personaImportExport:Lp},Bp={loading:"Laden...",save:"Opslaan",saving:"Opslaan...",cancel:"Annuleren",delete:"Verwijderen",edit:"Bewerken",close:"Sluiten",back:"Terug",next:"Volgende",confirm:"Bevestigen",error:"Fout",success:"Gelukt",warning:"Waarschuwing",or:"of",optional:"optioneel",enabled:"Ingeschakeld",disabled:"Uitgeschakeld",on:"Aan",off:"Uit",yes:"Ja",no:"Nee",search:"Zoeken",noResults:"Geen resultaten gevonden",retry:"Opnieuw proberen",refresh:"Vernieuwen",download:"Downloaden",upload:"Uploaden",export:"Exporteren",import:"Importeren",reset:"Resetten",apply:"Toepassen",clear:"Wissen",all:"Alle",none:"Geen",default:"Standaard",custom:"Aangepast",mode:"Modus",multiUser:"Meerdere gebruikers",remove:"Verwijderen"},Kp={name:"Libre WebUI",shortName:"Libre"},Hp={login:{title:"Welkom terug",subtitle:"Meld u aan bij uw account om door te gaan",username:"Gebruikersnaam",usernamePlaceholder:"Voer uw gebruikersnaam in",password:"Wachtwoord",passwordPlaceholder:"Voer uw wachtwoord in",signIn:"Aanmelden",signingIn:"Aanmelden...",noAccount:"Nog geen account?",signUpHere:"Registreer hier",loginSuccess:"Succesvol aangemeld!",loginFailed:"Aanmelden mislukt",checkCredentials:"Aanmelden mislukt. Controleer uw gegevens.",enterBoth:"Voer zowel gebruikersnaam als wachtwoord in",githubSuccess:"GitHub-aanmelding gelukt!",githubFailed:"GitHub-authenticatie mislukt",githubVerifyFailed:"Verificatie van GitHub-authenticatie mislukt"},signup:{title:"Account aanmaken",subtitle:"Registreer voor een nieuw account",username:"Gebruikersnaam",usernamePlaceholder:"Kies een gebruikersnaam",email:"E-mail",emailPlaceholder:"uw@email.nl",password:"Wachtwoord",passwordPlaceholder:"Kies een wachtwoord",confirmPassword:"Wachtwoord bevestigen",confirmPasswordPlaceholder:"Bevestig uw wachtwoord",createAccount:"Account aanmaken",creatingAccount:"Account aanmaken...",hasAccount:"Heeft u al een account?",signInHere:"Hier aanmelden",signupSuccess:"Account succesvol aangemaakt!",signupFailed:"Registratie mislukt",tryAgain:"Registratie mislukt. Probeer het opnieuw.",usernameRequired:"Gebruikersnaam en wachtwoord zijn verplicht",passwordMismatch:"Wachtwoorden komen niet overeen",passwordTooShort:"Wachtwoord moet minimaal 6 tekens bevatten"},logout:{button:"Uitloggen",success:"Succesvol uitgelogd"},oauth:{continueWith:"Doorgaan met {{provider}}",connectingTo:"Verbinden met {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rp={welcome:{title:"Welkom bij Libre WebUI",subtitle:"Laten we beginnen",description:"Stel uw Libre WebUI-instantie in met slechts een paar stappen",createAdmin:"Admin-account aanmaken",features:{secure:{title:"Veilig & Privé",description:"Uw gesprekken blijven op uw apparaat"},fast:{title:"Snel & Responsief",description:"Geoptimaliseerd voor snelheid en prestaties"},openSource:{title:"Open Source",description:"Vrije en open source software"}}},admin:{title:"Admin-account aanmaken",subtitle:"Administrator instellen",description:"Maak het eerste admin-account aan voor uw Libre WebUI-instantie",usernamePlaceholder:"Voer admin-gebruikersnaam in",passwordPlaceholder:"Voer wachtwoord in (min. 6 tekens)",confirmPlaceholder:"Bevestig uw wachtwoord",creating:"Aanmaken...",createAdmin:"Admin aanmaken",success:"Admin-account succesvol aangemaakt!",failed:"Kon admin-account niet aanmaken",fillAllFields:"Vul alle velden in",note:"Dit wordt het primaire beheerdersaccount voor uw Libre WebUI-instantie"},encryptionKey:{title:"Bewaar uw encryptiesleutel",subtitle:"Belangrijk: Bewaar deze sleutel",description:"Deze encryptiesleutel beschermt uw gevoelige gegevens. Bewaar deze veilig - u heeft hem nodig als u ooit uw database moet herstellen.",warning:"Waarschuwing",warningText:"Als u deze sleutel verliest en uw database moet herstellen, zijn uw versleutelde gegevens (API-sleutels, voorkeuren) onherstelbaar.",label:"Uw encryptiesleutel",loading:"Laden...",copyToClipboard:"Kopiëren naar klembord",copied:"Encryptiesleutel gekopieerd naar klembord!",copyFailed:"Kon sleutel niet kopiëren naar klembord",envNote:"Deze sleutel is ook opgeslagen in uw backend/.env bestand als ENCRYPTION_KEY",acknowledgment:"Ik heb mijn encryptiesleutel op een veilige locatie opgeslagen en begrijp dat verlies ervan kan leiden tot gegevensverlies.",confirmRequired:"Bevestig dat u de encryptiesleutel heeft opgeslagen",continue:"Doorgaan naar Libre WebUI"}},Up={greeting:{morning:"Goedemorgen",afternoon:"Goedemiddag",evening:"Goedenavond",night:"Goedenacht"},welcome:{helpToday:"Waarmee kan ik u vandaag helpen?",helpTonight:"Waarmee kan ik u vanavond helpen?"},input:{placeholder:"Stuur een bericht",messagePlaceholder:"Bericht...",attachImages:"Afbeeldingen toevoegen",attachments:"Bijlagen en geavanceerde functies",sendMessage:"Bericht versturen",stopGeneration:"Generatie stoppen"},session:{new:"Nieuwe chat",private:"Privé",privateMode:"Privémodus",privateDescription:"Dit gesprek wordt niet opgeslagen",privateTooltip:"Start een privégesprek dat niet wordt opgeslagen",deleteConfirm:"Weet u zeker dat u deze chat wilt verwijderen?",generatingTitle:"Titel genereren",noChats:"Nog geen chats",createFirst:"Maak hierboven uw eerste chat",chats:"Chats",renameChat:"Chat hernoemen",deleteChat:"Chat verwijderen"},persona:{applied:"Persona toegepast",label:"Persona"},model:{updated:"Model bijgewerkt",noModels:"Geen modellen beschikbaar",noModelsDescription:"Geen modellen beschikbaar. Zorg ervoor dat Ollama draait en modellen zijn geïnstalleerd.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Geen modellen beschikbaar. Zorg ervoor dat Ollama draait en modellen zijn geïnstalleerd."},footer:{disclaimer:"LLM kan fouten maken - verifieer belangrijke informatie",images:"{{count}} afbeelding",images_plural:"{{count}} afbeeldingen",structuredOutput:"Gestructureerde uitvoer"},mediaUpload:{dropImagesHere:"Sleep afbeeldingen hierheen of",supportedFormats:"Ondersteunt: JPG, PNG, GIF, WebP (max 10 MB per stuk)",browse:"bladeren"},structuredOutput:{title:"Antwoordformaat",none:"Geen (natuurlijke taal)",noneDescription:"Standaard natuurlijke taal antwoord",json:"JSON",jsonDescription:"Gestructureerd JSON-formaat",list:"Lijst",listDescription:"Array van items",summary:"Samenvatting",summaryDescription:"Documentsamenvatting met kernpunten",analysis:"Analyse",analysisDescription:"Gestructureerde analyse met voor- en nadelen",custom:"Aangepast schema",customDescription:"Definieer uw eigen JSON-schema",customSchema:"Aangepast JSON-schema",schemaPreview:"Schema-voorbeeld",applySchema:"Schema toepassen",cancel:"Annuleren",enabled:"Gestructureerde uitvoer ingeschakeld"}},$p={navigation:{chat:"Chat",models:"Modellen",personas:"Personas",imagine:"Genereren",settings:"Instellingen",userManagement:"Gebruikersbeheer",signOut:"Uitloggen"},toggleSize:"Zijbalk grootte wijzigen",expandSidebar:"Zijbalk uitvouwen"},Vp={menu:{changePicture:"Foto wijzigen",settings:"Instellingen",userManagement:"Gebruikersbeheer",logout:"Uitloggen"},avatar:{title:"Profielfoto wijzigen",updated:"Profielfoto bijgewerkt",updateFailed:"Kon profielfoto niet bijwerken",saving:"Opslaan..."},profile:{noEmail:"Geen e-mail opgegeven"}},Wp={title:"Instellingen",tabs:{appearance:"Weergave",model:"Model",systemMessage:"Systeembericht",plugins:"Plugins",generation:"Generatie",documents:"Documenten",tts:"Tekst-naar-spraak",imageGen:"Beeldgeneratie",data:"Gegevens",about:"Over"},appearance:{title:"Weergave",language:{title:"Taal",description:"Selecteer uw voorkeurstaal"},theme:{title:"Thema",light:"Licht",dark:"Donker",amoled:"Puur Zwart",system:"Systeem"},chatInterface:{title:"Chat-interface",showUsername:"Gebruikersnaam tonen",showUsernameDescription:"Gebruikersnaam weergeven in chatberichten"},background:{title:"Achtergrondafbeelding",enable:"Achtergrondafbeelding inschakelen",enableDescription:"Aangepaste achtergrond met vervagingseffect tonen",blur:"Vervaging",opacity:"Dekking",upload:"Achtergrondafbeelding uploaden",dragDrop:"Sleep een afbeelding of klik om te bladeren",chooseImage:"Afbeelding kiezen"}},saveSettings:"Instellingen opslaan",model:{title:"Modelinstellingen",defaultModel:"Standaardmodel",defaultModelDescription:"Dit model wordt standaard gebruikt voor nieuwe gesprekken",selectModel:"Selecteer een model",updateAll:"Alle modellen bijwerken",updateAllDescription:"Controleer op updates en download de nieuwste versies van alle geïnstalleerde modellen",updateAllButton:"Alles bijwerken",updating:"Modellen bijwerken...",currentModelInfo:"Huidige modelinfo",name:"Naam",size:"Grootte",family:"Familie",format:"Formaat",status:"Status",statusStarting:"Starten...",statusComplete:"Voltooid",statusError:"Fout",bulkOperations:"Bulkbewerkingen",autoTitle:{title:"Automatische titelgeneratie",enable:"Auto-titel inschakelen",enableDescription:"Automatisch titels genereren voor nieuwe gesprekken",taskModel:"Taakmodel",selectTaskModel:"Selecteer taakmodel",taskModelDescription:"Model gebruikt voor het genereren van gesprekstitels"},persona:"Persona"},systemMessage:{title:"Systeembericht",description:"Stel een aangepast systeembericht in dat wordt gebruikt voor alle nieuwe gesprekken.",placeholder:"Voer een systeembericht in...",saved:"Systeembericht opgeslagen",saveFailed:"Kon systeembericht niet opslaan"},plugins:{title:"Plugins",description:"Beheer uw geïnstalleerde plugins",addNew:"Nieuwe plugin toevoegen",upload:"Plugin uploaden",addJson:"JSON toevoegen",uploading:"Uploaden...",jsonPlaceholder:"Plak plugin JSON-configuratie...",install:"Plugin installeren",noPlugins:"Geen plugins geïnstalleerd",noPluginsDescription:"Voeg een plugin toe om functionaliteit uit te breiden",loading:"Plugins laden...",installed:"Geïnstalleerde plugins",active:"Actieve plugins",activeLabel:"Actief",inactive:"Inactief",activate:"Activeren",deactivate:"Deactiveren",models:"modellen",apiKeySet:"API-sleutel ingesteld",apiKeyConfiguration:"API-sleutel configuratie",apiKeyEnvAlternative:"U kunt ook de",environmentVariable:"omgevingsvariabele",apiKeyConfigured:"API-sleutel geconfigureerd",apiKeyPlaceholder:"Voer uw API-sleutel in...",saveApiKey:"API-sleutel opslaan",apiKey:{title:"API-sleutel",placeholder:"Voer API-sleutel in",save:"Sleutel opslaan",remove:"Sleutel verwijderen",configured:"API-sleutel geconfigureerd",notConfigured:"API-sleutel vereist",saved:"API-sleutel succesvol opgeslagen",removed:"API-sleutel verwijderd",saveFailed:"Kon API-sleutel niet opslaan",removeFailed:"Kon API-sleutel niet verwijderen",enterKey:"Voer een API-sleutel in"}},generation:{title:"Generatieopties",description:"Configureer hoe de AI antwoorden genereert",coreParameters:"Kernparameters",temperature:"Temperatuur",temperatureDescription:"Regelt willekeurigheid. Lagere waarden zijn meer gefocust, hogere waarden creatiever.",topP:"Top P",topPDescription:"Regelt diversiteit via nucleus sampling. Lagere waarden focussen op waarschijnlijke tokens.",topK:"Top K",topKDescription:"Beperkt tokenselectie tot de K meest waarschijnlijke. Stel in op 0 om uit te schakelen.",minP:"Min P",minPDescription:"Minimale waarschijnlijkheidsdrempel voor tokenselectie.",generationControl:"Generatiecontrole",maxTokens:"Max tokens",maxTokensDescription:"Maximaal aantal te genereren tokens in het antwoord.",repeatPenalty:"Herhalingsboete",repeatPenaltyDescription:"Bestraft herhaalde tokens. Hogere waarden verminderen herhaling.",contextLength:"Contextlengte",contextLengthDescription:"Maximale contextvenstergrootte voor gesprekken.",seed:"Seed",optional:"optioneel",random:"Willekeurig",seedDescription:"Stel een specifieke seed in voor reproduceerbare uitvoer.",advancedOptions:"Geavanceerde opties",presencePenalty:"Aanwezigheidsboete",presencePenaltyDescription:"Bestraft tokens die in de context voorkomen.",frequencyPenalty:"Frequentieboete",frequencyPenaltyDescription:"Bestraft vaak gebruikte tokens.",stopSequences:"Stopsequenties",commaSeparated:"kommagescheiden",stopSequencesDescription:"Aangepaste tokens die de generatie stoppen wanneer ze worden aangetroffen.",resetDefaults:"Resetten naar standaard",saveOptions:"Opties opslaan",embeddingSettings:"Embedding-instellingen",enableEmbeddings:"Document-embeddings inschakelen"},documents:{title:"Documentinstellingen",embeddings:{title:"Embeddings",enable:"Document-embeddings inschakelen",model:"Embedding-model",modelDescription:"Selecteer het model voor document-embedding",chunkSize:"Chunkgrootte",chunkSizeInTokens:"(in tokens)",chunkSizeDescription:"Grootte van tekstchunks voor embedding",chunkOverlap:"Chunk-overlap",chunkOverlapInTokens:"(in tokens)",chunkOverlapDescription:"Overlap tussen opeenvolgende chunks",similarityThreshold:"Gelijkheidsdrempel",similarityDescription:"Minimale gelijkheidsscore om resultaten op te nemen",status:"Embedding-status",statusLabel:"Status",available:"Beschikbaar",unavailable:"Niet beschikbaar",chunksWithEmbeddings:"Chunks met embeddings",coverage:"Dekking",regenerate:"Embeddings opnieuw genereren",regenerating:"Opnieuw genereren..."}},tts:{title:"Tekst-naar-spraak",description:"Configureer tekst-naar-spraak instellingen voor het voorlezen van berichten",loadingProviders:"TTS-providers laden...",noProviders:"Geen TTS-providers",noProvidersDescription:"Configureer een plugin met TTS-ondersteuning om tekst-naar-spraak in te schakelen",enable:"TTS inschakelen",enableDescription:"Tekst-naar-spraak toestaan voor assistentberichten",autoPlay:"Automatisch afspelen",autoPlayDescription:"Nieuwe assistentberichten automatisch voorlezen",streamSentences:"Zinnen streamen",streamSentencesDescription:"Audio zin voor zin afspelen in plaats van te wachten op het volledige bericht. Aanbevolen voor lokale TTS om time-outs bij lange berichten te voorkomen.",voiceConfiguration:"Stemconfiguratie",model:"TTS-model",modelDescription:"Selecteer het model voor tekst-naar-spraak generatie",voice:"Stem",selectVoice:"Selecteer een stem",voiceDescription:"Kies de stem voor tekst-naar-spraak",speed:"Snelheid",speedSlow:"0,5x",speedNormal:"1,0x",speedFast:"2,0x",availableProviders:"Beschikbare providers",models:"modellen",test:"Testen",testing:"Testen...",stop:"Stoppen"},imageGen:{title:"Beeldgeneratie",description:"Configureer beeldgeneratie-instellingen en providers",loadingProviders:"Beeldgeneratie-providers laden...",noProviders:"Geen beeldgeneratie-providers",noProvidersDescription:"Configureer een plugin met beeldgeneratie-ondersteuning",enable:"Beeldgeneratie inschakelen",enableDescription:"AI-beeldgeneratie in gesprekken toestaan",configuration:"Configuratie",model:"Model",modelDescription:"Selecteer het model voor beeldgeneratie",size:"Grootte",sizeDescription:"Resolutie van gegenereerde afbeeldingen",quality:"Kwaliteit",qualityDescription:"Kwaliteitsniveau van gegenereerde afbeeldingen",style:"Stijl",styleDescription:"Stijlpreset voor gegenereerde afbeeldingen",availableProviders:"Beschikbare providers",models:"modellen"},data:{title:"Gegevensbeheer",export:"Gegevens exporteren",exportDescription:"Download al uw gegevens inclusief voorkeuren, sessies en documenten.",exportAll:"Alle gegevens exporteren",import:"Gegevens importeren",importDescription:"Importeer gegevens van een eerdere export.",importData:"Gegevens importeren",importing:"Importeren...",clearSessions:"Sessies wissen",clearSessionsDescription:"Verwijder alle chatsessies. Deze actie kan niet ongedaan worden gemaakt.",clearAll:"Alles wissen",clearing:"Wissen...",importOptions:"Importopties",importOptionsDescription:"Kies hoe om te gaan met bestaande gegevens",skipDuplicates:"Duplicaten overslaan",overwrite:"Bestaande overschrijven",importResults:"Importresultaten",preferences:"Voorkeuren",imported:"Geïmporteerd",failed:"Mislukt",sessions:"Sessies",importedLabel:"geïmporteerd",skipped:"overgeslagen",documents:"Documenten",errors:"Fouten"},about:{title:"Over",versionLabel:"Versie",ollama:{title:"Ollama-status",version:"Versie",healthy:"Gezond",unhealthy:"Ongezond"},stats:{models:"Modellen",sessions:"Sessies"},features:{privacy:{title:"Privacy eerst",description:"Uw gegevens blijven op uw apparaat"},openSource:{title:"Open Source",description:"Vrije en open source software"},localInference:{title:"Lokale inferentie",description:"Voer AI-modellen lokaal uit met Ollama"}},openSourceBy:"Open source door {{company}}",links:{title:"Links",github:"GitHub",githubDescription:"Bekijk broncode en draag bij",website:"Website",websiteDescription:"Bezoek onze website",ollama:"Ollama",ollamaDescription:"Meer informatie over Ollama",documentation:"Documentatie",reportIssue:"Problemen melden",reportIssueDescription:"Bugmeldingen & functieverzoeken"},version:"Versie {{version}}"}},qp={title:"Modellen",subtitle:"Pull, beheer en monitor uw Ollama-modellen",installed:"Geïnstalleerde modellen",available:"Beschikbare modellen",pull:"Model ophalen",pulling:"Ophalen...",delete:"Model verwijderen",deleting:"Verwijderen...",size:"Grootte",modified:"Gewijzigd",family:"Familie",parameters:"Parameters",quantization:"Kwantisatie",noModels:"Geen modellen geïnstalleerd",pullFirst:"Haal een model op om te beginnen"},Jp={title:"Personas",create:"Persona aanmaken",edit:"Persona bewerken",delete:"Persona verwijderen",name:"Naam",description:"Beschrijving",systemPrompt:"Systeemprompt",model:"Model",avatar:"Avatar",background:"Achtergrond",noPersonas:"Geen personas aangemaakt",createFirst:"Maak uw eerste persona om uw chatervaring aan te passen"},_p={title:"Galerij",subtitle:"Uw AI-gegenereerde afbeeldingengalerij",imageCount:"{{count}} afbeeldingen",generate:"Afbeelding genereren",generateDescription:"Maak afbeeldingen met AI",generating:"Genereren...",prompt:"Prompt",promptPlaceholder:"Beschrijf de afbeelding die u wilt genereren...",noImages:"Nog geen afbeeldingen gegenereerd",download:"Downloaden",delete:"Verwijderen",regenerate:"Opnieuw genereren",model:"Model",size:"Grootte",quality:"Kwaliteit",created:"Aangemaakt"},Yp={generic:"Er is een fout opgetreden",network:"Netwerkfout. Controleer uw verbinding.",unauthorized:"U bent niet bevoegd om deze actie uit te voeren.",notFound:"De gevraagde bron is niet gevonden.",serverError:"Serverfout. Probeer het later opnieuw.",validation:"Controleer uw invoer en probeer het opnieuw."},Zp={title:"Sneltoetsen",toggleSidebar:"Zijbalk wisselen",openSettings:"Instellingen openen",toggleDarkMode:"Donkere modus wisselen",showShortcuts:"Sneltoetsen tonen",closeModals:"Dialogen sluiten",groups:{navigation:"Navigatie",settings:"Instellingen",general:"Algemeen",chat:"Chat"},actions:{sendMessage:"Bericht versturen",newLine:"Nieuwe regel in bericht"},footer:"Druk op {{key1}} of {{key2}} om deze hulp te tonen",tooltip:"Sneltoetsen"},Xp={title:"Modellen",loading:"Modellen laden...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"model",models_plural:"modellen",running:"actief",vram:"VRAM"},sections:{pull:"Nieuw model ophalen",library:"Bibliotheek doorzoeken",running:"Actieve modellen",local:"Lokale modellen",advanced:"Geavanceerde acties",huggingface:"HuggingFace Hub"},pull:{placeholder:"Voer modelnaam in (bijv. llama3.2:3b, deepseek-r1:14b)",button:"Ophalen",cancel:"Annuleren",popular:"Populaire modellen:",browseAll:"Bekijk alle modellen op ollama.com",success:"Model {{name}} succesvol opgehaald",cancelled:"Model ophalen geannuleerd",failed:"Kon model niet ophalen",enterName:"Voer een modelnaam in"},progress:{starting:"Initialiseren...",pulling:"Model downloaden...",verifying:"Integriteit verifiëren...",writing:"Manifest schrijven...",cleaning:"Opruimen..."},library:{available:"beschikbaar",search:"Modellen zoeken...",noResults:"Geen modellen gevonden die aan uw criteria voldoen",installed:"Geïnstalleerd",more:"+{{count}} meer",refresh:"Bibliotheek vernieuwen"},local:{noModels:"Nog geen modellen geïnstalleerd",pullToStart:"Haal hierboven een model op om te beginnen",installed:"geïnstalleerd",running:"Actief",info:"Info",copy:"Kopiëren",delete:"Verwijderen",deleteConfirm:'Weet u zeker dat u model "{{name}}" wilt verwijderen?',deleteSuccess:"Model {{name}} succesvol verwijderd",deleteFailed:"Kon model niet verwijderen"},advanced:{createModel:"Model aanmaken",fromModelfile:"Vanuit Modelfile",copyModel:"Model kopiëren",duplicateExisting:"Bestaande dupliceren",testEmbeddings:"Embeddings testen",generateVectors:"Vectoren genereren",healthCheck:"Gezondheidscontrole",testConnection:"Verbinding testen",healthy:"Ollama is gezond!"},modals:{details:{title:"Modeldetails",info:"Modelinformatie",family:"Familie",parameters:"Parameters",quantization:"Kwantisatie",format:"Formaat",systemPrompt:"Systeemprompt",template:"Sjabloon",license:"Licentie",modelfile:"Modelfile",noDetails:"Geen details beschikbaar"},copy:{title:"Model kopiëren",source:"Bronmodel",selectModel:"Selecteer een model...",newName:"Nieuwe modelnaam",placeholder:"bijv. mijn-aangepast-model",copying:"Kopiëren...",button:"Model kopiëren",success:"Model gekopieerd naar {{name}}",failed:"Kon model niet kopiëren",enterBoth:"Voer zowel bron- als doelnamen in"},create:{title:"Aangepast model aanmaken",name:"Modelnaam",namePlaceholder:"bijv. mijn-assistent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
18
|
+
SYSTEM Je bent een behulpzame assistent.`,docs:"Modelfile-documentatie",docsLink:"voor syntaxreferentie",creating:"Aanmaken...",button:"Model aanmaken",success:"Model {{name}} succesvol aangemaakt",failed:"Kon model niet aanmaken",enterBoth:"Voer modelnaam en Modelfile-inhoud in"},embeddings:{title:"Embeddings testen",model:"Embedding-model",selectModel:"Selecteer een model...",recommended:"Aanbevolen: nomic-embed-text, mxbai-embed-large",input:"Invoertekst",placeholder:"Voer tekst in om embeddings voor te genereren...",generating:"Genereren...",button:"Embeddings genereren",result:"Resultaat ({{count}} dimensies)",success:"{{count}}-dimensionale embeddingvector gegenereerd",failed:"Kon embeddings niet genereren",enterBoth:"Selecteer een model en voer tekst in"}},huggingface:{browseAll:"Alles bekijken op HuggingFace",checkingGguf:"GGUF-bestanden zoeken...",noGgufAvailable:"Geen GGUF-bestanden beschikbaar voor directe Ollama pull",ggufFilesCount:"GGUF-bestanden ({{count}}) - Direct naar Ollama pullen",noModelsFound:"Geen modellen gevonden",noResults:"Geen modellen gevonden. Probeer je zoekopdracht of filters aan te passen.",browseAllLink:"Alles bekijken",search:"HuggingFace-modellen zoeken...",by:"door",gated:"Beperkte toegang",viewOnHF:"Bekijk op HuggingFace",sortDownloads:"Downloads",sortLikes:"Likes",sortRecent:"Recent",taskTextGeneration:"Tekstgeneratie",taskTextToSpeech:"Tekst naar spraak",taskTextToImage:"Tekst naar afbeelding",taskSpeechRecognition:"Spraakherkenning",tasks:{textGen:"Tekstgeneratie",tts:"Tekst naar spraak",image:"Tekst naar afbeelding",stt:"Spraakherkenning"},sort:{downloads:"Meest gedownload",likes:"Meest geliked",recent:"Recent bijgewerkt"}}},Qp={title:"Personas",subtitle:"Maak en beheer AI-personas met aangepaste persoonlijkheden, herinneringen en gedragingen",loading:"Personas laden...",createButton:"Persona aanmaken",importExport:"Import/Export",stats:{title:"Uw personas",count:"{{count}} persona aangemaakt",count_plural:"{{count}} personas aangemaakt"},empty:{title:"Nog geen personas",description:"Maak uw eerste persona voor gepersonaliseerde AI-interacties",button:"Maak uw eerste persona"},deleteConfirm:'Weet u zeker dat u "{{name}}" wilt verwijderen?',deleteSuccess:'Persona "{{name}}" succesvol verwijderd',downloadSuccess:'Persona "{{name}}" succesvol gedownload',failed:"Kon persona niet {{action}}"},eg={title:{create:"Nieuwe persona aanmaken",edit:"Persona bewerken"},subtitle:{create:"Maak een nieuwe AI-persona met aangepaste persoonlijkheid, geheugensystemen en adaptieve leermogelijkheden",edit:"Pas uw AI-persona aan met geavanceerd geheugen, adaptief leren en intelligente parameters"},loading:"Formulier laden...",saved:"Opgeslagen",tabs:{basic:"Basis",parameters:"Parameters",memory:"Geheugen & Leren",advanced:"Geavanceerd"},basic:{name:"Naam",namePlaceholder:"Voer personanaam in",model:"Model",selectModel:"Selecteer een model",description:"Beschrijving",descriptionPlaceholder:"Beschrijf uw persona...",systemPrompt:"Systeemprompt",systemPromptPlaceholder:"Voer de systeemprompt in die het gedrag van uw persona definieert...",systemPromptHint:"De systeemprompt bepaalt hoe uw persona zich gedraagt en reageert."},parameters:{temperature:"Temperatuur",temperatureHint:"Regelt creativiteit vs. consistentie",topP:"Top-P",topPHint:"Regelt antwoorddiversiteit",topK:"Top-K",topKHint:"Beperkt vocabulaire tot top-k tokens",contextWindow:"Contextvenster",contextWindowHint:"Maximale gespreksgeschiedenislengte",maxTokens:"Max tokens",maxTokensHint:"Maximale antwoordlengte",repeatPenalty:"Herhalingsboete",repeatPenaltyHint:"Vermindert repetitieve antwoorden"},memory:{title:"Geheugensysteem",subtitle:"Persona onthoudt gesprekken door de tijd",enableHint:"Schakel het geheugensysteem in om uw persona gesprekken te laten onthouden en context op te bouwen.",loading:"Geheugenstatus laden...",noData:"Nog geen geheugengegevens",memories:"Herinneringen",mbUsed:"MB gebruikt",lastBackup:"Laatste back-up",never:"Nooit",maxMemories:"Maximum herinneringen",maxMemoriesHint:"Hoeveel herinneringen deze persona kan opslaan",retention:"Geheugenretentie",retentionHint:"Dagen om herinneringen te bewaren vóór opruiming",autoCleanup:"Oude herinneringen automatisch opruimen",wipeAll:"Alle herinneringen wissen",wipeCannot:"Dit kan niet ongedaan worden gemaakt",wipeButton:"Wissen",wiping:"Wissen...",wipeConfirm:"Weet u zeker dat u alle herinneringen wilt wissen? Dit kan niet ongedaan worden gemaakt.",wipeSuccess:"{{count}} herinneringen gewist"},learning:{title:"Adaptief leren",subtitle:"Persona evolueert op basis van interacties",enableHint:"Schakel adaptief leren in om uw persona te laten evolueren en antwoorden te personaliseren op basis van uw interacties.",speed:"Leersnelheid",slow:"Langzaam",slowDesc:"Geleidelijke veranderingen",balanced:"Gebalanceerd",balancedDesc:"Gematigd tempo",fast:"Snel",fastDesc:"Snelle aanpassing",autoAdapt:"Automatisch aanpassen aan gebruikersvoorkeuren",whatLearns:"Wat de persona leert:",conversationTone:"Gesprekstoon",responseStyle:"Antwoordstijl",userPreferences:"Gebruikersvoorkeuren",topicInterests:"Onderwerpsinteresses"},advanced:{embeddingModel:"Embedding-model",embeddingHint:"Selecteer het model voor geheugencodering en semantisch zoeken. Embedding-modellen worden eerst getoond, gevolgd door andere beschikbare modellen.",noModels:"Geen modellen gevonden",embeddingModels:"Embedding-modellen",otherModels:"Andere modellen",installHint:"Installeer een embedding-model:",recommended:"Aanbevolen: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Over geavanceerde instellingen",aboutDescription:"Het embedding-model wordt door het geheugensysteem gebruikt om semantische betekenis te begrijpen en relevante herinneringen te vinden tijdens gesprekken. Kies een model dat past bij uw gebruikssituatie en beschikbare bronnen."},actions:{cancel:"Annuleren",save:"Opslaan",saving:"Opslaan...",saveClose:"Opslaan & sluiten",create:"Aanmaken"},success:{created:"Persona aangemaakt",updated:"Persona bijgewerkt"},error:{saveFailed:"Opslaan mislukt"}},ag={enhanced:"Verbeterd",systemPrompt:"Systeemprompt",memories:"herinneringen",use:"Gebruiken",editTooltip:"Persona bewerken",downloadTooltip:"Persona downloaden",backup:"Back-up",exportDNA:"DNA exporteren",wipeMemories:"Herinneringen wissen",wipeConfirm:"Weet u zeker dat u alle herinneringen voor deze persona wilt wissen? Deze actie kan niet ongedaan worden gemaakt.",wipeSuccess:"{{count}} herinneringen gewist",backupSuccess:"Persona-back-up succesvol gedownload",dnaSuccess:"Persona-DNA succesvol geëxporteerd",failed:"{{action}} mislukt"},tg={title:"Gebruikersbeheer",subtitle:"Beheer gebruikersaccounts en rechten",loading:"Gebruikers laden...",createUser:"Gebruiker aanmaken",search:"Gebruikers zoeken...",noUsers:"Geen gebruikers gevonden",noUsersMatching:"Geen gebruikers die overeenkomen met uw zoekopdracht",columns:{user:"Gebruiker",email:"E-mail",role:"Rol",created:"Aangemaakt",actions:"Acties"},roles:{admin:"Admin",user:"Gebruiker"},noEmail:"Geen e-mail",deleteConfirm:'Weet u zeker dat u gebruiker "{{name}}" wilt verwijderen?',deleteSuccess:"Gebruiker succesvol verwijderd",deleteFailed:"Kon gebruiker niet verwijderen",cannotDeleteSelf:"U kunt uw eigen account niet verwijderen",form:{title:{create:"Gebruiker aanmaken",edit:"Gebruiker bewerken"},username:"Gebruikersnaam",usernamePlaceholder:"Voer gebruikersnaam in",email:"E-mail",emailPlaceholder:"Voer e-mail in (optioneel)",password:"Wachtwoord",passwordPlaceholder:"Voer wachtwoord in",passwordHint:"Laat leeg om huidig wachtwoord te behouden",role:"Rol",creating:"Aanmaken...",updating:"Bijwerken...",createButton:"Gebruiker aanmaken",updateButton:"Gebruiker bijwerken",createSuccess:"Gebruiker succesvol aangemaakt",updateSuccess:"Gebruiker succesvol bijgewerkt",createFailed:"Kon gebruiker niet aanmaken",updateFailed:"Kon gebruiker niet bijwerken"}},ng={you:"U",assistant:"Assistent",system:"Systeem",copy:"Kopiëren",copyMessage:"Bericht kopiëren",copied:"Gekopieerd!",regenerate:"Opnieuw genereren",regenerateResponse:"Antwoord opnieuw genereren",edit:"Bewerken",editSystemMessage:"Systeembericht bewerken",saveChanges:"Wijzigingen opslaan",cancelEditing:"Bewerken annuleren",delete:"Verwijderen",deleteConfirm:"Dit bericht verwijderen?",branch:"Vertakking",speaking:"Spreekt...",speakMessage:"Bericht voorlezen",stopSpeaking:"Voorlezen stoppen",showMore:"Meer tonen",showLess:"Minder tonen",thinking:"Denkt",systemMessagePlaceholder:"Voer uw systeembericht in...",fullSizeImage:"Afbeelding op volledige grootte",startConversation:"Start een gesprek",startConversationDescription:"Stuur een bericht om te beginnen met chatten met uw AI-assistent. Stel vragen, krijg hulp met code of voer een natuurlijk gesprek.",scrollToBottom:"Naar beneden scrollen",newMessages:"Nieuwe berichten"},rg={title:"Afbeeldingengalerij",noImages:"Nog geen afbeeldingen",noImagesHint:"Genereer uw eerste afbeelding via het paneel rechts",delete:"Verwijderen",download:"Downloaden",deleteConfirm:"Weet u zeker dat u deze afbeelding wilt verwijderen?",deleteSuccess:"Afbeelding verwijderd",deleteFailed:"Kon afbeelding niet verwijderen",downloadFailed:"Kon afbeelding niet downloaden",loadMore:"Meer laden ({{current}} van {{total}})",loadFailed:"Kon galerij niet laden"},ig={title:"Afbeelding genereren",prompt:"Prompt",promptPlaceholder:"Beschrijf de afbeelding die u wilt maken...",model:"Model",selectModel:"Selecteer model",noModels:"Geen beeldgeneratiemodellen beschikbaar",configurePlugin:"Configureer een plugin met beeldgeneratie-ondersteuning",size:"Grootte",quality:"Kwaliteit",style:"Stijl",generate:"Genereren",generating:"Genereren...",success:"Afbeelding succesvol gegenereerd",failed:"Kon afbeelding niet genereren",enterPrompt:"Voer een prompt in",promptTooLong:"Prompt overschrijdt de maximale lengte van {{max}} tekens"},og={title:"Er is iets misgegaan",description:"We zijn een onverwachte fout tegengekomen. Probeer de pagina te vernieuwen.",tryAgain:"Pagina vernieuwen",goHome:"Naar startpagina",errorDetails:"Foutdetails (Ontwikkeling)"},sg={title:"Documenten",upload:"Document uploaden",uploading:"Uploaden...",noDocuments:"Geen documenten geüpload",uploadHint:"Upload documenten om te gebruiken in uw gesprekken",delete:"Verwijderen",deleteConfirm:"Weet u zeker dat u dit document wilt verwijderen?",deleteSuccess:"Document verwijderd",deleteFailed:"Kon document niet verwijderen",uploadSuccess:"Document succesvol geüpload",uploadFailed:"Kon document niet uploaden",types:"Ondersteund: PDF, TXT, MD, DOCX",unsupportedFileType:"Alleen PDF- en TXT-bestanden worden ondersteund",fileSizeTooLarge:"Bestandsgrootte moet kleiner zijn dan 10 MB",uploadSuccessWithName:'Document "{{name}}" succesvol geüpload',removeSuccess:"Document succesvol verwijderd",removeFailed:"Kon document niet verwijderen",removeError:"Er is een fout opgetreden bij het verwijderen van het document",clickToUpload:"Klik om te uploaden",orDragAndDrop:"of sleep en plaats",fileTypesAndSize:"PDF- of TXT-bestanden tot 10 MB",uploadedDocuments:"Geüploade documenten",removeDocument:"Document verwijderen"},lg={speak:"Voorlezen",stop:"Stoppen",speaking:"Spreekt...",generateFailed:"Kon spraak niet genereren",playbackFailed:"Audio afspelen mislukt",stopSpeaking:"Voorlezen stoppen",generatingSpeech:"Spraak genereren...",readAloud:"Voorlezen"},dg={title:"Artefacten",code:"Code",preview:"Voorbeeld",copy:"Code kopiëren",copied:"Gekopieerd!",download:"Downloaden",expand:"Uitvouwen",collapse:"Invouwen",openInNewTab:"Openen in nieuw tabblad",invalidSvg:"Ongeldige SVG-inhoud",invalidJson:"Ongeldige JSON-inhoud",previewMode:"Voorbeeldmodus",codeMode:"Codemodus",copyContent:"Inhoud kopiëren",openInPanel:"Openen in paneel",openInNewWindow:"Openen in nieuw venster",created:"Aangemaakt",closePanelEsc:"Paneel sluiten (Esc)",copyButton:"Kopiëren",open:"Openen",dragEdgeToResize:"Sleep rand om grootte aan te passen"},cg={title:"Personas importeren & exporteren",description:"Exporteer uw personas om te delen of importeer personas van anderen",exportPersonas:"Personas exporteren",importPersonas:"Personas importeren",noPersonasToExport:"Geen personas om te exporteren",personasAvailable:"{{count}} persona beschikbaar",personasAvailable_plural:"{{count}} personas beschikbaar",exportAll:"Alles exporteren",uploadJsonFile:"JSON-bestand uploaden",pasteJsonLabel:"JSON-gegevens plakken",pasteJsonPlaceholder:"Plak persona JSON-gegevens hier...",importing:"Importeren...",importButton:"Persona('s) importeren",expectedFormat:"Verwacht JSON-formaat:",exportSuccess:'Persona "{{name}}" succesvol geëxporteerd',exportFailed:"Kon persona niet exporteren",exportAllSuccess:"Alle {{count}} personas succesvol geëxporteerd",exportAllFailed:"Kon personas niet exporteren",pasteJsonData:"Plak de persona JSON-gegevens",importMultipleSuccess:"{{count}} personas succesvol geïmporteerd",importMultipleFailed:"Kon {{count}} personas niet importeren",importNoneFailed:"Kon geen personas importeren",importSuccess:"Persona succesvol geïmporteerd",importFailed:"Kon persona niet importeren"},ug={common:Bp,brand:Kp,auth:Hp,setup:Rp,chat:Up,sidebar:$p,user:Vp,settings:Wp,models:qp,personas:Jp,gallery:_p,errors:Yp,keyboard:Zp,modelManager:Xp,personaManager:Qp,personaForm:eg,personaCard:ag,userManager:tg,chatMessage:ng,imageGallery:rg,imageGeneration:ig,errorBoundary:og,documents:sg,ttsButton:lg,artifacts:dg,personaImportExport:cg},mg={loading:"Ładowanie...",save:"Zapisz",saving:"Zapisywanie...",cancel:"Anuluj",delete:"Usuń",edit:"Edytuj",close:"Zamknij",back:"Wstecz",next:"Dalej",confirm:"Potwierdź",error:"Błąd",success:"Sukces",warning:"Ostrzeżenie",or:"lub",optional:"opcjonalne",enabled:"Włączone",disabled:"Wyłączone",on:"Wł.",off:"Wył.",yes:"Tak",no:"Nie",search:"Szukaj",noResults:"Brak wyników",retry:"Ponów",refresh:"Odśwież",download:"Pobierz",upload:"Wyślij",export:"Eksportuj",import:"Importuj",reset:"Resetuj",apply:"Zastosuj",clear:"Wyczyść",all:"Wszystkie",none:"Żadne",default:"Domyślne",custom:"Własne",mode:"Tryb",multiUser:"Wielu użytkowników",remove:"Usuń"},pg={name:"Libre WebUI",shortName:"Libre"},gg={login:{title:"Witaj ponownie",subtitle:"Zaloguj się na swoje konto, aby kontynuować",username:"Nazwa użytkownika",usernamePlaceholder:"Wprowadź nazwę użytkownika",password:"Hasło",passwordPlaceholder:"Wprowadź hasło",signIn:"Zaloguj się",signingIn:"Logowanie...",noAccount:"Nie masz konta?",signUpHere:"Zarejestruj się tutaj",loginSuccess:"Logowanie pomyślne!",loginFailed:"Logowanie nie powiodło się",checkCredentials:"Logowanie nie powiodło się. Sprawdź swoje dane.",enterBoth:"Wprowadź nazwę użytkownika i hasło",githubSuccess:"Logowanie przez GitHub pomyślne!",githubFailed:"Uwierzytelnianie GitHub nie powiodło się",githubVerifyFailed:"Nie udało się zweryfikować uwierzytelnienia GitHub"},signup:{title:"Utwórz konto",subtitle:"Zarejestruj nowe konto",username:"Nazwa użytkownika",usernamePlaceholder:"Wybierz nazwę użytkownika",email:"Email",emailPlaceholder:"twoj@email.com",password:"Hasło",passwordPlaceholder:"Wybierz hasło",confirmPassword:"Potwierdź hasło",confirmPasswordPlaceholder:"Potwierdź hasło",createAccount:"Utwórz konto",creatingAccount:"Tworzenie konta...",hasAccount:"Masz już konto?",signInHere:"Zaloguj się tutaj",signupSuccess:"Konto utworzone pomyślnie!",signupFailed:"Rejestracja nie powiodła się",tryAgain:"Rejestracja nie powiodła się. Spróbuj ponownie.",usernameRequired:"Nazwa użytkownika i hasło są wymagane",passwordMismatch:"Hasła nie pasują do siebie",passwordTooShort:"Hasło musi mieć co najmniej 6 znaków"},logout:{button:"Wyloguj się",success:"Wylogowano pomyślnie"},oauth:{continueWith:"Kontynuuj z {{provider}}",connectingTo:"Łączenie z {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hg={welcome:{title:"Witaj w Libre WebUI",subtitle:"Rozpocznijmy",description:"Skonfiguruj Libre WebUI w kilku prostych krokach",createAdmin:"Utwórz konto administratora",features:{secure:{title:"Bezpieczny i prywatny",description:"Twoje rozmowy pozostają na Twoim urządzeniu"},fast:{title:"Szybki i responsywny",description:"Zoptymalizowany pod kątem szybkości i wydajności"},openSource:{title:"Otwarty kod źródłowy",description:"Bezpłatne oprogramowanie open source"}}},admin:{title:"Utwórz konto administratora",subtitle:"Konfiguracja administratora",description:"Utwórz pierwsze konto administratora dla Twojej instancji Libre WebUI",usernamePlaceholder:"Wprowadź nazwę administratora",passwordPlaceholder:"Wprowadź hasło (min. 6 znaków)",confirmPlaceholder:"Potwierdź hasło",creating:"Tworzenie...",createAdmin:"Utwórz administratora",success:"Konto administratora utworzone pomyślnie!",failed:"Nie udało się utworzyć konta administratora",fillAllFields:"Wypełnij wszystkie pola",note:"To będzie główne konto administratora dla Twojej instancji Libre WebUI"},encryptionKey:{title:"Zapisz klucz szyfrowania",subtitle:"Ważne: Zapisz ten klucz",description:"Ten klucz szyfrowania chroni Twoje poufne dane. Przechowuj go bezpiecznie - będziesz go potrzebować, jeśli kiedykolwiek będziesz musiał przywrócić bazę danych.",warning:"Ostrzeżenie",warningText:"Jeśli stracisz ten klucz i będziesz musiał przywrócić bazę danych, Twoje zaszyfrowane dane (klucze API, preferencje) będą nie do odzyskania.",label:"Twój klucz szyfrowania",loading:"Ładowanie...",copyToClipboard:"Kopiuj do schowka",copied:"Klucz szyfrowania skopiowany!",copyFailed:"Nie udało się skopiować klucza",envNote:"Ten klucz jest również zapisany w pliku backend/.env jako ENCRYPTION_KEY",acknowledgment:"Zapisałem klucz szyfrowania w bezpiecznym miejscu i rozumiem, że jego utrata może spowodować utratę danych.",confirmRequired:"Potwierdź, że zapisałeś klucz szyfrowania",continue:"Kontynuuj do Libre WebUI"}},bg={greeting:{morning:"Dzień dobry",afternoon:"Dzień dobry",evening:"Dobry wieczór",night:"Dobranoc"},welcome:{helpToday:"W czym mogę dziś pomóc?",helpTonight:"W czym mogę dziś wieczorem pomóc?"},input:{placeholder:"Wyślij wiadomość",messagePlaceholder:"Wiadomość...",attachImages:"Załącz obrazy",attachments:"Załączniki i zaawansowane funkcje",sendMessage:"Wyślij wiadomość",stopGeneration:"Zatrzymaj generowanie"},session:{new:"Nowy czat",private:"Prywatny",privateMode:"Tryb prywatny",privateDescription:"Ta rozmowa nie zostanie zapisana",privateTooltip:"Rozpocznij prywatną rozmowę, która nie zostanie zapisana",deleteConfirm:"Czy na pewno chcesz usunąć ten czat?",generatingTitle:"Generowanie tytułu",noChats:"Brak czatów",createFirst:"Utwórz swój pierwszy czat powyżej",chats:"Czaty",renameChat:"Zmień nazwę czatu",deleteChat:"Usuń czat"},persona:{applied:"Persona zastosowana",label:"Persona"},model:{updated:"Model zaktualizowany",noModels:"Brak dostępnych modeli",noModelsDescription:"Brak dostępnych modeli. Upewnij się, że Ollama działa i modele są zainstalowane.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Brak dostępnych modeli. Upewnij się, że Ollama działa i modele są zainstalowane."},footer:{disclaimer:"LLM może popełniać błędy - weryfikuj ważne informacje",images:"{{count}} obraz",images_plural:"{{count}} obrazów",structuredOutput:"Strukturalne wyjście"},mediaUpload:{dropImagesHere:"Upuść obrazy tutaj lub",supportedFormats:"Obsługiwane: JPG, PNG, GIF, WebP (maks. 10MB każdy)",browse:"przeglądaj"},structuredOutput:{title:"Format odpowiedzi",none:"Brak (język naturalny)",noneDescription:"Domyślna odpowiedź w języku naturalnym",json:"JSON",jsonDescription:"Strukturalny format JSON",list:"Lista",listDescription:"Tablica elementów",summary:"Podsumowanie",summaryDescription:"Podsumowanie dokumentu z kluczowymi punktami",analysis:"Analiza",analysisDescription:"Strukturalna analiza z zaletami/wadami",custom:"Własny schemat",customDescription:"Zdefiniuj własny schemat JSON",customSchema:"Własny schemat JSON",schemaPreview:"Podgląd schematu",applySchema:"Zastosuj schemat",cancel:"Anuluj",enabled:"Strukturalne wyjście włączone"}},kg={navigation:{chat:"Czat",models:"Modele",personas:"Persony",imagine:"Generuj",settings:"Ustawienia",userManagement:"Zarządzanie użytkownikami",signOut:"Wyloguj się"},toggleSize:"Zmień rozmiar panelu bocznego",expandSidebar:"Rozwiń panel boczny"},fg={menu:{changePicture:"Zmień zdjęcie",settings:"Ustawienia",userManagement:"Zarządzanie użytkownikami",logout:"Wyloguj się"},avatar:{title:"Zmień zdjęcie profilowe",updated:"Zdjęcie profilowe zaktualizowane",updateFailed:"Nie udało się zaktualizować zdjęcia profilowego",saving:"Zapisywanie..."},profile:{noEmail:"Brak adresu email"}},yg={title:"Ustawienia",tabs:{appearance:"Wygląd",model:"Model",systemMessage:"Wiadomość systemowa",plugins:"Wtyczki",generation:"Generowanie",documents:"Dokumenty",tts:"Tekst na mowę",imageGen:"Generowanie obrazów",data:"Dane",about:"O programie"},appearance:{title:"Wygląd",language:{title:"Język",description:"Wybierz preferowany język"},theme:{title:"Motyw",light:"Jasny",dark:"Ciemny",amoled:"Czysta Czerń",system:"Systemowy"},chatInterface:{title:"Interfejs czatu",showUsername:"Pokaż nazwę użytkownika",showUsernameDescription:"Wyświetlaj nazwę użytkownika w wiadomościach czatu"},background:{title:"Obraz tła",enable:"Włącz obraz tła",enableDescription:"Pokaż własne tło z efektem rozmycia",blur:"Rozmycie",opacity:"Przezroczystość",upload:"Wyślij obraz tła",dragDrop:"Przeciągnij i upuść obraz lub kliknij, aby przeglądać",chooseImage:"Wybierz obraz"}},saveSettings:"Zapisz ustawienia",model:{title:"Ustawienia modelu",defaultModel:"Domyślny model",defaultModelDescription:"Ten model będzie używany domyślnie dla nowych rozmów",selectModel:"Wybierz model",updateAll:"Zaktualizuj wszystkie modele",updateAllDescription:"Sprawdź aktualizacje i pobierz najnowsze wersje wszystkich zainstalowanych modeli",updateAllButton:"Zaktualizuj wszystkie",updating:"Aktualizowanie modeli...",currentModelInfo:"Informacje o bieżącym modelu",name:"Nazwa",size:"Rozmiar",family:"Rodzina",format:"Format",status:"Status",statusStarting:"Uruchamianie...",statusComplete:"Zakończono",statusError:"Błąd",bulkOperations:"Operacje masowe",autoTitle:{title:"Automatyczne generowanie tytułów",enable:"Włącz automatyczne tytuły",enableDescription:"Automatycznie generuj tytuły dla nowych rozmów",taskModel:"Model zadań",selectTaskModel:"Wybierz model zadań",taskModelDescription:"Model używany do generowania tytułów rozmów"},persona:"Persona"},systemMessage:{title:"Wiadomość systemowa",description:"Ustaw własną wiadomość systemową, która będzie używana dla wszystkich nowych rozmów.",placeholder:"Wprowadź wiadomość systemową...",saved:"Wiadomość systemowa zapisana",saveFailed:"Nie udało się zapisać wiadomości systemowej"},plugins:{title:"Wtyczki",description:"Zarządzaj zainstalowanymi wtyczkami",addNew:"Dodaj nową wtyczkę",upload:"Wyślij wtyczkę",addJson:"Dodaj JSON",uploading:"Wysyłanie...",jsonPlaceholder:"Wklej konfigurację JSON wtyczki...",install:"Zainstaluj wtyczkę",noPlugins:"Brak zainstalowanych wtyczek",noPluginsDescription:"Dodaj wtyczkę, aby rozszerzyć funkcjonalność",loading:"Ładowanie wtyczek...",installed:"Zainstalowane wtyczki",active:"Aktywne wtyczki",activeLabel:"Aktywna",inactive:"Nieaktywna",activate:"Aktywuj",deactivate:"Dezaktywuj",models:"modeli",apiKeySet:"Klucz API ustawiony",apiKeyConfiguration:"Konfiguracja klucza API",apiKeyEnvAlternative:"Alternatywnie, ustaw",environmentVariable:"zmienną środowiskową",apiKeyConfigured:"Klucz API skonfigurowany",apiKeyPlaceholder:"Wprowadź klucz API...",saveApiKey:"Zapisz klucz API",apiKey:{title:"Klucz API",placeholder:"Wprowadź klucz API",save:"Zapisz klucz",remove:"Usuń klucz",configured:"Klucz API skonfigurowany",notConfigured:"Wymagany klucz API",saved:"Klucz API zapisany pomyślnie",removed:"Klucz API usunięty",saveFailed:"Nie udało się zapisać klucza API",removeFailed:"Nie udało się usunąć klucza API",enterKey:"Wprowadź klucz API"}},generation:{title:"Opcje generowania",description:"Skonfiguruj sposób generowania odpowiedzi przez AI",coreParameters:"Podstawowe parametry",temperature:"Temperatura",temperatureDescription:"Kontroluje losowość. Niższe wartości są bardziej skupione, wyższe bardziej kreatywne.",topP:"Top P",topPDescription:"Kontroluje różnorodność przez próbkowanie jądrowe. Niższe wartości koncentrują się na prawdopodobnych tokenach.",topK:"Top K",topKDescription:"Ogranicza wybór tokenów do K najbardziej prawdopodobnych. Ustaw 0, aby wyłączyć.",minP:"Min P",minPDescription:"Minimalny próg prawdopodobieństwa dla wyboru tokenów.",generationControl:"Kontrola generowania",maxTokens:"Maks. tokenów",maxTokensDescription:"Maksymalna liczba tokenów do wygenerowania w odpowiedzi.",repeatPenalty:"Kara za powtórzenia",repeatPenaltyDescription:"Karze powtarzające się tokeny. Wyższe wartości zmniejszają powtórzenia.",contextLength:"Długość kontekstu",contextLengthDescription:"Maksymalny rozmiar okna kontekstowego dla rozmów.",seed:"Seed",optional:"opcjonalne",random:"Losowy",seedDescription:"Ustaw konkretny seed dla powtarzalnych wyników.",advancedOptions:"Zaawansowane opcje",presencePenalty:"Kara za obecność",presencePenaltyDescription:"Karze tokeny, które pojawiają się w kontekście.",frequencyPenalty:"Kara za częstotliwość",frequencyPenaltyDescription:"Karze często używane tokeny.",stopSequences:"Sekwencje stop",commaSeparated:"rozdzielone przecinkami",stopSequencesDescription:"Własne tokeny, które zatrzymają generowanie po napotkaniu.",resetDefaults:"Przywróć domyślne",saveOptions:"Zapisz opcje",embeddingSettings:"Ustawienia embeddingów",enableEmbeddings:"Włącz embeddingi dokumentów"},documents:{title:"Ustawienia dokumentów",embeddings:{title:"Embeddingi",enable:"Włącz embeddingi dokumentów",model:"Model embeddingów",modelDescription:"Wybierz model do embeddingu dokumentów",chunkSize:"Rozmiar części",chunkSizeInTokens:"(w tokenach)",chunkSizeDescription:"Rozmiar fragmentów tekstu do embeddingu",chunkOverlap:"Nakładanie części",chunkOverlapInTokens:"(w tokenach)",chunkOverlapDescription:"Nakładanie między kolejnymi fragmentami",similarityThreshold:"Próg podobieństwa",similarityDescription:"Minimalny wynik podobieństwa do uwzględnienia wyników",status:"Status embeddingów",statusLabel:"Status",available:"Dostępny",unavailable:"Niedostępny",chunksWithEmbeddings:"Fragmenty z embeddingami",coverage:"Pokrycie",regenerate:"Regeneruj embeddingi",regenerating:"Regenerowanie..."}},tts:{title:"Tekst na mowę",description:"Skonfiguruj ustawienia syntezy mowy do odczytywania wiadomości",loadingProviders:"Ładowanie dostawców TTS...",noProviders:"Brak dostawców TTS",noProvidersDescription:"Skonfiguruj wtyczkę z obsługą TTS, aby włączyć syntezę mowy",enable:"Włącz TTS",enableDescription:"Zezwól na syntezę mowy dla wiadomości asystenta",autoPlay:"Automatyczne odtwarzanie odpowiedzi",autoPlayDescription:"Automatycznie odczytuj nowe wiadomości asystenta",streamSentences:"Strumieniuj zdania",streamSentencesDescription:"Odtwarzaj dźwięk zdanie po zdaniu zamiast czekać na pełną wiadomość. Zalecane dla lokalnego TTS, aby uniknąć przekroczenia limitu czasu dla długich wiadomości.",voiceConfiguration:"Konfiguracja głosu",model:"Model TTS",modelDescription:"Wybierz model do syntezy mowy",voice:"Głos",selectVoice:"Wybierz głos",voiceDescription:"Wybierz głos do syntezy mowy",speed:"Szybkość",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Dostępni dostawcy",models:"modeli",test:"Test",testing:"Testowanie...",stop:"Stop"},imageGen:{title:"Generowanie obrazów",description:"Skonfiguruj ustawienia i dostawców generowania obrazów",loadingProviders:"Ładowanie dostawców generowania obrazów...",noProviders:"Brak dostawców generowania obrazów",noProvidersDescription:"Skonfiguruj wtyczkę z obsługą generowania obrazów",enable:"Włącz generowanie obrazów",enableDescription:"Zezwól na generowanie obrazów AI w rozmowach",configuration:"Konfiguracja",model:"Model",modelDescription:"Wybierz model do generowania obrazów",size:"Rozmiar",sizeDescription:"Rozdzielczość generowanych obrazów",quality:"Jakość",qualityDescription:"Poziom jakości generowanych obrazów",style:"Styl",styleDescription:"Preset stylu dla generowanych obrazów",availableProviders:"Dostępni dostawcy",models:"modeli"},data:{title:"Zarządzanie danymi",export:"Eksportuj dane",exportDescription:"Pobierz wszystkie swoje dane, w tym preferencje, sesje i dokumenty.",exportAll:"Eksportuj wszystkie dane",import:"Importuj dane",importDescription:"Importuj dane z poprzedniego eksportu.",importData:"Importuj dane",importing:"Importowanie...",clearSessions:"Wyczyść sesje",clearSessionsDescription:"Usuń wszystkie sesje czatu. Tej akcji nie można cofnąć.",clearAll:"Wyczyść wszystko",clearing:"Czyszczenie...",importOptions:"Opcje importu",importOptionsDescription:"Wybierz sposób obsługi istniejących danych",skipDuplicates:"Pomiń duplikaty",overwrite:"Nadpisz istniejące",importResults:"Wyniki importu",preferences:"Preferencje",imported:"Zaimportowano",failed:"Niepowodzenie",sessions:"Sesje",importedLabel:"zaimportowano",skipped:"pominięto",documents:"Dokumenty",errors:"Błędy"},about:{title:"O programie",versionLabel:"Wersja",ollama:{title:"Status Ollama",version:"Wersja",healthy:"Działa",unhealthy:"Nie działa"},stats:{models:"Modele",sessions:"Sesje"},features:{privacy:{title:"Prywatność przede wszystkim",description:"Twoje dane pozostają na Twoim urządzeniu"},openSource:{title:"Otwarty kod źródłowy",description:"Bezpłatne oprogramowanie open source"},localInference:{title:"Lokalna inferencja",description:"Uruchamiaj modele AI lokalnie z Ollama"}},openSourceBy:"Otwarty kod źródłowy od {{company}}",links:{title:"Linki",github:"GitHub",githubDescription:"Zobacz kod źródłowy i współtwórz",website:"Strona internetowa",websiteDescription:"Odwiedź naszą stronę",ollama:"Ollama",ollamaDescription:"Dowiedz się więcej o Ollama",documentation:"Dokumentacja",reportIssue:"Zgłoś problem",reportIssueDescription:"Raporty błędów i prośby o funkcje"},version:"Wersja {{version}}"}},vg={title:"Modele",subtitle:"Pobieraj, zarządzaj i monitoruj swoje modele Ollama",installed:"Zainstalowane modele",available:"Dostępne modele",pull:"Pobierz model",pulling:"Pobieranie...",delete:"Usuń model",deleting:"Usuwanie...",size:"Rozmiar",modified:"Zmodyfikowano",family:"Rodzina",parameters:"Parametry",quantization:"Kwantyzacja",noModels:"Brak zainstalowanych modeli",pullFirst:"Pobierz model, aby rozpocząć"},xg={title:"Persony",create:"Utwórz personę",edit:"Edytuj personę",delete:"Usuń personę",name:"Nazwa",description:"Opis",systemPrompt:"Prompt systemowy",model:"Model",avatar:"Awatar",background:"Tło",noPersonas:"Brak utworzonych person",createFirst:"Utwórz swoją pierwszą personę, aby dostosować doświadczenie czatu"},Sg={title:"Galeria",subtitle:"Twoja galeria obrazów wygenerowanych przez AI",imageCount:"{{count}} obrazów",generate:"Generuj obraz",generateDescription:"Twórz obrazy za pomocą AI",generating:"Generowanie...",prompt:"Prompt",promptPlaceholder:"Opisz obraz, który chcesz wygenerować...",noImages:"Nie wygenerowano jeszcze żadnych obrazów",download:"Pobierz",delete:"Usuń",regenerate:"Regeneruj",model:"Model",size:"Rozmiar",quality:"Jakość",created:"Utworzono"},wg={generic:"Wystąpił błąd",network:"Błąd sieci. Sprawdź połączenie.",unauthorized:"Nie masz uprawnień do wykonania tej akcji.",notFound:"Żądany zasób nie został znaleziony.",serverError:"Błąd serwera. Spróbuj ponownie później.",validation:"Sprawdź wprowadzone dane i spróbuj ponownie."},Pg={title:"Skróty klawiaturowe",toggleSidebar:"Przełącz panel boczny",openSettings:"Otwórz ustawienia",toggleDarkMode:"Przełącz tryb ciemny",showShortcuts:"Pokaż skróty klawiaturowe",closeModals:"Zamknij okna modalne",groups:{navigation:"Nawigacja",settings:"Ustawienia",general:"Ogólne",chat:"Czat"},actions:{sendMessage:"Wyślij wiadomość",newLine:"Nowa linia w wiadomości"},footer:"Naciśnij {{key1}} lub {{key2}}, aby wyświetlić tę pomoc",tooltip:"Skróty klawiaturowe"},Mg={title:"Modele",loading:"Ładowanie modeli...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"model",models_plural:"modeli",running:"działa",vram:"VRAM"},sections:{pull:"Pobierz nowy model",library:"Przeglądaj bibliotekę",running:"Działające modele",local:"Lokalne modele",advanced:"Zaawansowane akcje",huggingface:"HuggingFace Hub"},pull:{placeholder:"Wprowadź nazwę modelu (np. llama3.2:3b, deepseek-r1:14b)",button:"Pobierz",cancel:"Anuluj",popular:"Popularne modele:",browseAll:"Przeglądaj wszystkie modele na ollama.com",success:"Model {{name}} pobrany pomyślnie",cancelled:"Pobieranie modelu anulowane",failed:"Nie udało się pobrać modelu",enterName:"Wprowadź nazwę modelu"},progress:{starting:"Inicjalizacja...",pulling:"Pobieranie modelu...",verifying:"Weryfikacja integralności...",writing:"Zapisywanie manifestu...",cleaning:"Czyszczenie..."},library:{available:"dostępne",search:"Szukaj modeli...",noResults:"Nie znaleziono modeli pasujących do kryteriów",installed:"Zainstalowano",more:"+{{count}} więcej",refresh:"Odśwież bibliotekę"},local:{noModels:"Brak zainstalowanych modeli",pullToStart:"Pobierz model powyżej, aby rozpocząć",installed:"zainstalowano",running:"Działa",info:"Info",copy:"Kopiuj",delete:"Usuń",deleteConfirm:'Czy na pewno chcesz usunąć model "{{name}}"?',deleteSuccess:"Model {{name}} usunięty pomyślnie",deleteFailed:"Nie udało się usunąć modelu"},advanced:{createModel:"Utwórz model",fromModelfile:"Z Modelfile",copyModel:"Kopiuj model",duplicateExisting:"Duplikuj istniejący",testEmbeddings:"Testuj embeddingi",generateVectors:"Generuj wektory",healthCheck:"Sprawdzenie zdrowia",testConnection:"Test połączenia",healthy:"Ollama jest zdrowy!"},modals:{details:{title:"Szczegóły modelu",info:"Informacje o modelu",family:"Rodzina",parameters:"Parametry",quantization:"Kwantyzacja",format:"Format",systemPrompt:"Prompt systemowy",template:"Szablon",license:"Licencja",modelfile:"Modelfile",noDetails:"Brak dostępnych szczegółów"},copy:{title:"Kopiuj model",source:"Model źródłowy",selectModel:"Wybierz model...",newName:"Nowa nazwa modelu",placeholder:"np. moj-wlasny-model",copying:"Kopiowanie...",button:"Kopiuj model",success:"Model skopiowany jako {{name}}",failed:"Nie udało się skopiować modelu",enterBoth:"Wprowadź nazwy modelu źródłowego i docelowego"},create:{title:"Utwórz własny model",name:"Nazwa modelu",namePlaceholder:"np. moj-asystent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
19
|
+
SYSTEM Jesteś pomocnym asystentem.`,docs:"Dokumentacja Modelfile",docsLink:"dla odniesienia do składni",creating:"Tworzenie...",button:"Utwórz model",success:"Model {{name}} utworzony pomyślnie",failed:"Nie udało się utworzyć modelu",enterBoth:"Wprowadź nazwę modelu i zawartość Modelfile"},embeddings:{title:"Testuj embeddingi",model:"Model embeddingów",selectModel:"Wybierz model...",recommended:"Zalecane: nomic-embed-text, mxbai-embed-large",input:"Tekst wejściowy",placeholder:"Wprowadź tekst do wygenerowania embeddingów...",generating:"Generowanie...",button:"Generuj embeddingi",result:"Wynik ({{count}} wymiarów)",success:"Wygenerowano {{count}}-wymiarowy wektor embeddingu",failed:"Nie udało się wygenerować embeddingów",enterBoth:"Wybierz model i wprowadź tekst"}},huggingface:{browseAll:"Przeglądaj wszystko na HuggingFace",checkingGguf:"Wyszukiwanie plików GGUF...",noGgufAvailable:"Brak plików GGUF do bezpośredniego pobrania do Ollama",ggufFilesCount:"Pliki GGUF ({{count}}) - Pobierz bezpośrednio do Ollama",noModelsFound:"Nie znaleziono modeli",noResults:"Nie znaleziono modeli. Spróbuj dostosować wyszukiwanie lub filtry.",browseAllLink:"Zobacz wszystko",search:"Szukaj modeli HuggingFace...",by:"przez",gated:"Ograniczony dostęp",viewOnHF:"Zobacz na HuggingFace",sortDownloads:"Pobrania",sortLikes:"Polubienia",sortRecent:"Ostatnie",taskTextGeneration:"Generowanie tekstu",taskTextToSpeech:"Tekst na mowę",taskTextToImage:"Tekst na obraz",taskSpeechRecognition:"Rozpoznawanie mowy",tasks:{textGen:"Generowanie tekstu",tts:"Tekst na mowę",image:"Tekst na obraz",stt:"Rozpoznawanie mowy"},sort:{downloads:"Najpopularniejsze",likes:"Najbardziej lubiane",recent:"Ostatnio zaktualizowane"}}},Dg={title:"Persony",subtitle:"Twórz i zarządzaj personami AI z unikalnymi osobowościami, pamięcią i zachowaniami",loading:"Ładowanie person...",createButton:"Utwórz personę",importExport:"Import/Eksport",stats:{title:"Twoje persony",count:"{{count}} persona utworzona",count_plural:"{{count}} person utworzonych"},empty:{title:"Brak person",description:"Utwórz swoją pierwszą personę, aby rozpocząć spersonalizowane interakcje z AI",button:"Utwórz pierwszą personę"},deleteConfirm:'Czy na pewno chcesz usunąć "{{name}}"?',deleteSuccess:'Persona "{{name}}" usunięta pomyślnie',downloadSuccess:'Persona "{{name}}" pobrana pomyślnie',failed:"Nie udało się {{action}} persony"},Ag={title:{create:"Utwórz nową personę",edit:"Edytuj personę"},subtitle:{create:"Utwórz nową personę AI z unikalną osobowością, systemem pamięci i adaptacyjnym uczeniem",edit:"Dostosuj swoją personę AI z zaawansowaną pamięcią, adaptacyjnym uczeniem i inteligentnymi parametrami"},loading:"Ładowanie formularza...",saved:"Zapisano",tabs:{basic:"Podstawowe",parameters:"Parametry",memory:"Pamięć i uczenie",advanced:"Zaawansowane"},basic:{name:"Nazwa",namePlaceholder:"Wprowadź nazwę persony",model:"Model",selectModel:"Wybierz model",description:"Opis",descriptionPlaceholder:"Opisz swoją personę...",systemPrompt:"Prompt systemowy",systemPromptPlaceholder:"Wprowadź prompt systemowy definiujący zachowanie persony...",systemPromptHint:"Prompt systemowy definiuje, jak Twoja persona będzie się zachowywać i odpowiadać."},parameters:{temperature:"Temperatura",temperatureHint:"Kontroluje kreatywność vs spójność",topP:"Top-P",topPHint:"Kontroluje różnorodność odpowiedzi",topK:"Top-K",topKHint:"Ogranicza słownik do top-k tokenów",contextWindow:"Okno kontekstowe",contextWindowHint:"Maksymalna długość historii rozmowy",maxTokens:"Maks. tokenów",maxTokensHint:"Maksymalna długość odpowiedzi",repeatPenalty:"Kara za powtórzenia",repeatPenaltyHint:"Zmniejsza powtarzające się odpowiedzi"},memory:{title:"System pamięci",subtitle:"Persona zapamiętuje rozmowy z czasem",enableHint:"Włącz system pamięci, aby Twoja persona zapamiętywała rozmowy i budowała kontekst z czasem.",loading:"Ładowanie statusu pamięci...",noData:"Brak danych pamięci",memories:"Wspomnienia",mbUsed:"MB użyte",lastBackup:"Ostatnia kopia",never:"Nigdy",maxMemories:"Maksimum wspomnień",maxMemoriesHint:"Ile wspomnień może przechowywać persona",retention:"Retencja pamięci",retentionHint:"Dni przechowywania wspomnień przed czyszczeniem",autoCleanup:"Automatyczne czyszczenie starych wspomnień",wipeAll:"Wyczyść wszystkie wspomnienia",wipeCannot:"Tej akcji nie można cofnąć",wipeButton:"Wyczyść",wiping:"Czyszczenie...",wipeConfirm:"Czy na pewno chcesz wyczyścić wszystkie wspomnienia? Tej akcji nie można cofnąć.",wipeSuccess:"Wyczyszczono {{count}} wspomnień"},learning:{title:"Adaptacyjne uczenie",subtitle:"Persona ewoluuje na podstawie interakcji",enableHint:"Włącz adaptacyjne uczenie, aby persona ewoluowała i personalizowała odpowiedzi na podstawie Twoich interakcji.",speed:"Szybkość uczenia",slow:"Wolna",slowDesc:"Stopniowe zmiany",balanced:"Zrównoważona",balancedDesc:"Umiarkowane tempo",fast:"Szybka",fastDesc:"Szybka adaptacja",autoAdapt:"Automatyczna adaptacja do preferencji użytkownika",whatLearns:"Czego uczy się persona:",conversationTone:"Ton rozmowy",responseStyle:"Styl odpowiedzi",userPreferences:"Preferencje użytkownika",topicInterests:"Zainteresowania tematyczne"},advanced:{embeddingModel:"Model embeddingów",embeddingHint:"Wybierz model używany do kodowania pamięci i wyszukiwania semantycznego. Modele embeddingów są pokazane jako pierwsze, następnie inne dostępne modele.",noModels:"Nie znaleziono modeli",embeddingModels:"Modele embeddingów",otherModels:"Inne modele",installHint:"Zainstaluj model embeddingów:",recommended:"Zalecane: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"O zaawansowanych ustawieniach",aboutDescription:"Model embeddingów jest używany przez system pamięci do rozumienia znaczenia semantycznego i znajdowania odpowiednich wspomnień podczas rozmów. Wybierz model odpowiedni do Twojego przypadku użycia i dostępnych zasobów."},actions:{cancel:"Anuluj",save:"Zapisz",saving:"Zapisywanie...",saveClose:"Zapisz i zamknij",create:"Utwórz"},success:{created:"Persona utworzona",updated:"Persona zaktualizowana"},error:{saveFailed:"Nie udało się zapisać"}},zg={enhanced:"Ulepszona",systemPrompt:"Prompt systemowy",memories:"wspomnień",use:"Użyj",editTooltip:"Edytuj personę",downloadTooltip:"Pobierz personę",backup:"Kopia zapasowa",exportDNA:"Eksportuj DNA",wipeMemories:"Wyczyść wspomnienia",wipeConfirm:"Czy na pewno chcesz wyczyścić wszystkie wspomnienia tej persony? Tej akcji nie można cofnąć.",wipeSuccess:"Wyczyszczono {{count}} wspomnień",backupSuccess:"Kopia zapasowa persony pobrana pomyślnie",dnaSuccess:"DNA persony wyeksportowane pomyślnie",failed:"Nie udało się {{action}}"},jg={title:"Zarządzanie użytkownikami",subtitle:"Zarządzaj kontami użytkowników i uprawnieniami",loading:"Ładowanie użytkowników...",createUser:"Utwórz użytkownika",search:"Szukaj użytkowników...",noUsers:"Nie znaleziono użytkowników",noUsersMatching:"Nie znaleziono użytkowników pasujących do wyszukiwania",columns:{user:"Użytkownik",email:"Email",role:"Rola",created:"Utworzono",actions:"Akcje"},roles:{admin:"Administrator",user:"Użytkownik"},noEmail:"Brak emaila",deleteConfirm:'Czy na pewno chcesz usunąć użytkownika "{{name}}"?',deleteSuccess:"Użytkownik usunięty pomyślnie",deleteFailed:"Nie udało się usunąć użytkownika",cannotDeleteSelf:"Nie możesz usunąć własnego konta",form:{title:{create:"Utwórz użytkownika",edit:"Edytuj użytkownika"},username:"Nazwa użytkownika",usernamePlaceholder:"Wprowadź nazwę użytkownika",email:"Email",emailPlaceholder:"Wprowadź email (opcjonalnie)",password:"Hasło",passwordPlaceholder:"Wprowadź hasło",passwordHint:"Pozostaw puste, aby zachować obecne hasło",role:"Rola",creating:"Tworzenie...",updating:"Aktualizowanie...",createButton:"Utwórz użytkownika",updateButton:"Zaktualizuj użytkownika",createSuccess:"Użytkownik utworzony pomyślnie",updateSuccess:"Użytkownik zaktualizowany pomyślnie",createFailed:"Nie udało się utworzyć użytkownika",updateFailed:"Nie udało się zaktualizować użytkownika"}},Tg={you:"Ty",assistant:"Asystent",system:"System",copy:"Kopiuj",copyMessage:"Kopiuj wiadomość",copied:"Skopiowano!",regenerate:"Regeneruj",regenerateResponse:"Regeneruj odpowiedź",edit:"Edytuj",editSystemMessage:"Edytuj wiadomość systemową",saveChanges:"Zapisz zmiany",cancelEditing:"Anuluj edycję",delete:"Usuń",deleteConfirm:"Usunąć tę wiadomość?",branch:"Gałąź",speaking:"Mówienie...",speakMessage:"Odczytaj wiadomość",stopSpeaking:"Zatrzymaj mówienie",showMore:"Pokaż więcej",showLess:"Pokaż mniej",thinking:"Myślenie",systemMessagePlaceholder:"Wprowadź wiadomość systemową...",fullSizeImage:"Pełnowymiarowy obraz",startConversation:"Rozpocznij rozmowę",startConversationDescription:"Wyślij wiadomość, aby rozpocząć rozmowę z asystentem AI. Zadawaj pytania, uzyskaj pomoc z kodem lub prowadź naturalną rozmowę.",scrollToBottom:"Przewiń na dół",newMessages:"Nowe wiadomości"},Ng={title:"Galeria obrazów",noImages:"Brak obrazów",noImagesHint:"Wygeneruj swój pierwszy obraz za pomocą panelu po prawej",delete:"Usuń",download:"Pobierz",deleteConfirm:"Czy na pewno chcesz usunąć ten obraz?",deleteSuccess:"Obraz usunięty",deleteFailed:"Nie udało się usunąć obrazu",downloadFailed:"Nie udało się pobrać obrazu",loadMore:"Załaduj więcej ({{current}} z {{total}})",loadFailed:"Nie udało się załadować galerii"},Ig={title:"Generuj obraz",prompt:"Prompt",promptPlaceholder:"Opisz obraz, który chcesz utworzyć...",model:"Model",selectModel:"Wybierz model",noModels:"Brak dostępnych modeli generowania obrazów",configurePlugin:"Skonfiguruj wtyczkę z obsługą generowania obrazów",size:"Rozmiar",quality:"Jakość",style:"Styl",generate:"Generuj",generating:"Generowanie...",success:"Obraz wygenerowany pomyślnie",failed:"Nie udało się wygenerować obrazu",enterPrompt:"Wprowadź prompt",promptTooLong:"Prompt przekracza maksymalną długość {{max}} znaków"},Cg={title:"Coś poszło nie tak",description:"Wystąpił nieoczekiwany błąd. Spróbuj odświeżyć stronę.",tryAgain:"Odśwież stronę",goHome:"Przejdź do strony głównej",errorDetails:"Szczegóły błędu (programowanie)"},Fg={title:"Dokumenty",upload:"Wyślij dokument",uploading:"Wysyłanie...",noDocuments:"Brak przesłanych dokumentów",uploadHint:"Prześlij dokumenty do użycia w rozmowach",delete:"Usuń",deleteConfirm:"Czy na pewno chcesz usunąć ten dokument?",deleteSuccess:"Dokument usunięty",deleteFailed:"Nie udało się usunąć dokumentu",uploadSuccess:"Dokument przesłany pomyślnie",uploadFailed:"Nie udało się przesłać dokumentu",types:"Obsługiwane: PDF, TXT, MD, DOCX",unsupportedFileType:"Obsługiwane są tylko pliki PDF i TXT",fileSizeTooLarge:"Rozmiar pliku musi być mniejszy niż 10MB",uploadSuccessWithName:'Dokument "{{name}}" przesłany pomyślnie',removeSuccess:"Dokument usunięty pomyślnie",removeFailed:"Nie udało się usunąć dokumentu",removeError:"Wystąpił błąd podczas usuwania dokumentu",clickToUpload:"Kliknij, aby przesłać",orDragAndDrop:"lub przeciągnij i upuść",fileTypesAndSize:"Pliki PDF lub TXT do 10MB",uploadedDocuments:"Przesłane dokumenty",removeDocument:"Usuń dokument"},Og={speak:"Mów",stop:"Stop",speaking:"Mówienie...",generateFailed:"Nie udało się wygenerować mowy",playbackFailed:"Odtwarzanie audio nie powiodło się",stopSpeaking:"Zatrzymaj mówienie",generatingSpeech:"Generowanie mowy...",readAloud:"Czytaj na głos"},Eg={title:"Artefakty",code:"Kod",preview:"Podgląd",copy:"Kopiuj kod",copied:"Skopiowano!",download:"Pobierz",expand:"Rozwiń",collapse:"Zwiń",openInNewTab:"Otwórz w nowej karcie",invalidSvg:"Nieprawidłowa zawartość SVG",invalidJson:"Nieprawidłowa zawartość JSON",previewMode:"Tryb podglądu",codeMode:"Tryb kodu",copyContent:"Kopiuj zawartość",openInPanel:"Otwórz w panelu",openInNewWindow:"Otwórz w nowym oknie",created:"Utworzono",closePanelEsc:"Zamknij panel (Esc)",copyButton:"Kopiuj",open:"Otwórz",dragEdgeToResize:"Przeciągnij krawędź, aby zmienić rozmiar"},Lg={title:"Import i eksport person",description:"Eksportuj swoje persony, aby je udostępnić lub importuj persony innych",exportPersonas:"Eksportuj persony",importPersonas:"Importuj persony",noPersonasToExport:"Brak person do eksportu",personasAvailable:"{{count}} persona dostępna",personasAvailable_plural:"{{count}} person dostępnych",exportAll:"Eksportuj wszystkie",uploadJsonFile:"Prześlij plik JSON",pasteJsonLabel:"Wklej dane JSON",pasteJsonPlaceholder:"Wklej dane JSON persony tutaj...",importing:"Importowanie...",importButton:"Importuj personę(y)",expectedFormat:"Oczekiwany format JSON:",exportSuccess:'Persona "{{name}}" wyeksportowana pomyślnie',exportFailed:"Nie udało się wyeksportować persony",exportAllSuccess:"Wszystkie {{count}} persony wyeksportowane pomyślnie",exportAllFailed:"Nie udało się wyeksportować person",pasteJsonData:"Wklej dane JSON persony",importMultipleSuccess:"Pomyślnie zaimportowano {{count}} person",importMultipleFailed:"Nie udało się zaimportować {{count}} person",importNoneFailed:"Nie udało się zaimportować żadnej persony",importSuccess:"Persona zaimportowana pomyślnie",importFailed:"Nie udało się zaimportować persony"},Gg={common:mg,brand:pg,auth:gg,setup:hg,chat:bg,sidebar:kg,user:fg,settings:yg,models:vg,personas:xg,gallery:Sg,errors:wg,keyboard:Pg,modelManager:Mg,personaManager:Dg,personaForm:Ag,personaCard:zg,userManager:jg,chatMessage:Tg,imageGallery:Ng,imageGeneration:Ig,errorBoundary:Cg,documents:Fg,ttsButton:Og,artifacts:Eg,personaImportExport:Lg},Bg={loading:"Carregando...",save:"Salvar",saving:"Salvando...",cancel:"Cancelar",delete:"Excluir",edit:"Editar",close:"Fechar",back:"Voltar",next:"Próximo",confirm:"Confirmar",error:"Erro",success:"Sucesso",warning:"Aviso",or:"ou",optional:"opcional",enabled:"Ativado",disabled:"Desativado",on:"Ligado",off:"Desligado",yes:"Sim",no:"Não",search:"Pesquisar",noResults:"Nenhum resultado encontrado",retry:"Tentar novamente",refresh:"Atualizar",download:"Baixar",upload:"Enviar",export:"Exportar",import:"Importar",reset:"Redefinir",apply:"Aplicar",clear:"Limpar",all:"Todos",none:"Nenhum",default:"Padrão",custom:"Personalizado",mode:"Modo",multiUser:"Multiusuário",remove:"Remover"},Kg={name:"Libre WebUI",shortName:"Libre"},Hg={login:{title:"Bem-vindo de volta",subtitle:"Entre na sua conta para continuar",username:"Usuário",usernamePlaceholder:"Digite seu nome de usuário",password:"Senha",passwordPlaceholder:"Digite sua senha",signIn:"Entrar",signingIn:"Entrando...",noAccount:"Não tem uma conta?",signUpHere:"Cadastre-se aqui",loginSuccess:"Login realizado com sucesso!",loginFailed:"Falha no login",checkCredentials:"Falha no login. Por favor, verifique suas credenciais.",enterBoth:"Por favor, digite o usuário e a senha",githubSuccess:"Login com GitHub realizado com sucesso!",githubFailed:"Falha na autenticação do GitHub",githubVerifyFailed:"Falha ao verificar autenticação do GitHub"},signup:{title:"Criar conta",subtitle:"Cadastre-se para criar sua nova conta",username:"Usuário",usernamePlaceholder:"Escolha um nome de usuário",email:"E-mail",emailPlaceholder:"seu@email.com",password:"Senha",passwordPlaceholder:"Escolha uma senha",confirmPassword:"Confirmar senha",confirmPasswordPlaceholder:"Confirme sua senha",createAccount:"Criar conta",creatingAccount:"Criando conta...",hasAccount:"Já tem uma conta?",signInHere:"Entre aqui",signupSuccess:"Conta criada com sucesso!",signupFailed:"Falha no cadastro",tryAgain:"Falha no cadastro. Por favor, tente novamente.",usernameRequired:"Usuário e senha são obrigatórios",passwordMismatch:"As senhas não coincidem",passwordTooShort:"A senha deve ter pelo menos 6 caracteres"},logout:{button:"Sair",success:"Desconectado com sucesso"},oauth:{continueWith:"Continuar com {{provider}}",connectingTo:"Conectando ao {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rg={welcome:{title:"Bem-vindo ao Libre WebUI",subtitle:"Vamos começar",description:"Configure sua instância do Libre WebUI em poucos passos",createAdmin:"Criar conta de administrador",features:{secure:{title:"Seguro e Privado",description:"Suas conversas ficam no seu dispositivo"},fast:{title:"Rápido e Responsivo",description:"Otimizado para velocidade e desempenho"},openSource:{title:"Código Aberto",description:"Software livre e de código aberto"}}},admin:{title:"Criar conta de administrador",subtitle:"Configuração do Administrador",description:"Crie a primeira conta de administrador para sua instância do Libre WebUI",usernamePlaceholder:"Digite o nome de usuário do admin",passwordPlaceholder:"Digite a senha (mín. 6 caracteres)",confirmPlaceholder:"Confirme sua senha",creating:"Criando...",createAdmin:"Criar Admin",success:"Conta de administrador criada com sucesso!",failed:"Falha ao criar conta de administrador",fillAllFields:"Por favor, preencha todos os campos",note:"Esta será a conta de administrador principal da sua instância do Libre WebUI"},encryptionKey:{title:"Salve sua chave de criptografia",subtitle:"Importante: Salve esta chave",description:"Esta chave de criptografia protege seus dados sensíveis. Guarde-a com segurança - você precisará dela caso precise restaurar seu banco de dados.",warning:"Aviso",warningText:"Se você perder esta chave e precisar restaurar seu banco de dados, seus dados criptografados (chaves de API, preferências) serão irrecuperáveis.",label:"Sua chave de criptografia",loading:"Carregando...",copyToClipboard:"Copiar para a área de transferência",copied:"Chave de criptografia copiada!",copyFailed:"Falha ao copiar a chave",envNote:"Esta chave também está salva no arquivo backend/.env como ENCRYPTION_KEY",acknowledgment:"Salvei minha chave de criptografia em um local seguro e entendo que perdê-la pode resultar em perda de dados.",confirmRequired:"Por favor, confirme que você salvou a chave de criptografia",continue:"Continuar para o Libre WebUI"}},Ug={greeting:{morning:"Bom dia",afternoon:"Boa tarde",evening:"Boa tarde",night:"Boa noite"},welcome:{helpToday:"Como posso ajudar você hoje?",helpTonight:"Como posso ajudar você esta noite?"},input:{placeholder:"Envie uma mensagem",messagePlaceholder:"Mensagem...",attachImages:"Anexar imagens",attachments:"Anexos e recursos avançados",sendMessage:"Enviar mensagem",stopGeneration:"Parar geração"},session:{new:"Nova conversa",private:"Privado",privateMode:"Modo Privado",privateDescription:"Esta conversa não será salva",privateTooltip:"Iniciar uma conversa privada que não será salva",deleteConfirm:"Tem certeza de que deseja excluir esta conversa?",generatingTitle:"Gerando título",noChats:"Nenhuma conversa ainda",createFirst:"Crie sua primeira conversa acima",chats:"Conversas",renameChat:"Renomear conversa",deleteChat:"Excluir conversa"},persona:{applied:"Persona aplicada",label:"Persona"},model:{updated:"Modelo atualizado",noModels:"Nenhum modelo disponível",noModelsDescription:"Nenhum modelo disponível. Certifique-se de que o Ollama está em execução e tem modelos instalados.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Nenhum modelo disponível. Verifique se o Ollama está em execução e se os modelos estão instalados."},footer:{disclaimer:"IAs podem cometer erros - verifique informações importantes",images:"{{count}} imagem",images_plural:"{{count}} imagens",structuredOutput:"Saída estruturada"},mediaUpload:{dropImagesHere:"Solte as imagens aqui ou",supportedFormats:"Formatos suportados: JPG, PNG, GIF, WebP (máx. 10MB cada)",browse:"procure"},structuredOutput:{title:"Formato de Resposta",none:"Nenhum (Linguagem Natural)",noneDescription:"Resposta padrão em linguagem natural",json:"JSON",jsonDescription:"Formato JSON estruturado",list:"Lista",listDescription:"Array de itens",summary:"Resumo",summaryDescription:"Resumo do documento com pontos-chave",analysis:"Análise",analysisDescription:"Análise estruturada com prós e contras",custom:"Esquema Personalizado",customDescription:"Defina seu próprio esquema JSON",customSchema:"Esquema JSON personalizado",schemaPreview:"Pré-visualização do Esquema",applySchema:"Aplicar Esquema",cancel:"Cancelar",enabled:"Saída estruturada ativada"}},$g={navigation:{chat:"Chat",models:"Modelos",personas:"Personas",imagine:"Imaginar",settings:"Configurações",userManagement:"Gerenciamento de Usuários",signOut:"Sair"},toggleSize:"Alternar tamanho da barra lateral",expandSidebar:"Expandir barra lateral"},Vg={menu:{changePicture:"Alterar foto",settings:"Configurações",userManagement:"Gerenciamento de Usuários",logout:"Sair"},avatar:{title:"Alterar foto de perfil",updated:"Foto de perfil atualizada",updateFailed:"Falha ao atualizar foto de perfil",saving:"Salvando..."},profile:{noEmail:"E-mail não informado"}},Wg=JSON.parse('{"title":"Configurações","tabs":{"appearance":"Aparência","model":"Modelo","systemMessage":"Mensagem do Sistema","plugins":"Plugins","generation":"Geração","documents":"Documentos","tts":"Texto para Fala","imageGen":"Geração de Imagens","data":"Dados","about":"Sobre"},"appearance":{"title":"Aparência","language":{"title":"Idioma","description":"Selecione seu idioma preferido"},"theme":{"title":"Tema","light":"Claro","dark":"Escuro","amoled":"Preto Puro","system":"Sistema"},"chatInterface":{"title":"Interface do Chat","showUsername":"Mostrar nome de usuário","showUsernameDescription":"Exibir nome de usuário nas mensagens do chat"},"background":{"title":"Imagem de Fundo","enable":"Ativar imagem de fundo","enableDescription":"Mostrar fundo personalizado com efeito de desfoque","blur":"Desfoque","opacity":"Opacidade","upload":"Enviar imagem de fundo","dragDrop":"Arraste e solte uma imagem ou clique para procurar","chooseImage":"Escolher Imagem"}},"saveSettings":"Salvar Configurações","model":{"title":"Configurações do Modelo","defaultModel":"Modelo Padrão","defaultModelDescription":"Este modelo será usado por padrão para novas conversas","selectModel":"Selecione um modelo","updateAll":"Atualizar Todos os Modelos","updateAllDescription":"Verificar atualizações e baixar as versões mais recentes de todos os modelos instalados","updateAllButton":"Atualizar Todos","updating":"Atualizando modelos...","currentModelInfo":"Informações do Modelo Atual","name":"Nome","size":"Tamanho","family":"Família","format":"Formato","status":"Status","statusStarting":"Iniciando...","statusComplete":"Completo","statusError":"Erro","bulkOperations":"Operações em Lote","autoTitle":{"title":"Geração Automática de Títulos","enable":"Ativar Título Automático","enableDescription":"Gerar automaticamente títulos para novas conversas","taskModel":"Modelo de Tarefas","selectTaskModel":"Selecione o modelo de tarefas","taskModelDescription":"Modelo usado para gerar títulos das conversas"},"persona":"Persona"},"systemMessage":{"title":"Mensagem do Sistema","description":"Defina uma mensagem de sistema personalizada que será usada para todas as novas conversas.","placeholder":"Digite uma mensagem de sistema...","saved":"Mensagem do sistema salva","saveFailed":"Falha ao salvar mensagem do sistema"},"plugins":{"title":"Plugins","description":"Gerencie seus plugins instalados","addNew":"Adicionar Novo Plugin","upload":"Enviar Plugin","addJson":"Adicionar JSON","uploading":"Enviando...","jsonPlaceholder":"Cole a configuração JSON do plugin...","install":"Instalar Plugin","noPlugins":"Nenhum plugin instalado","noPluginsDescription":"Adicione um plugin para estender a funcionalidade","loading":"Carregando plugins...","installed":"Plugins Instalados","active":"Plugins Ativos","activeLabel":"Ativo","inactive":"Inativo","activate":"Ativar","deactivate":"Desativar","models":"modelos","apiKeySet":"Chave de API Definida","apiKeyConfiguration":"Configuração da Chave de API","apiKeyEnvAlternative":"Alternativamente, defina a","environmentVariable":"variável de ambiente","apiKeyConfigured":"Chave de API configurada","apiKeyPlaceholder":"Digite sua chave de API...","saveApiKey":"Salvar Chave de API","apiKey":{"title":"Chave de API","placeholder":"Digite a chave de API","save":"Salvar Chave","remove":"Remover Chave","configured":"Chave de API Configurada","notConfigured":"Chave de API Necessária","saved":"Chave de API salva com sucesso","removed":"Chave de API removida","saveFailed":"Falha ao salvar chave de API","removeFailed":"Falha ao remover chave de API","enterKey":"Por favor, digite uma chave de API"}},"generation":{"title":"Opções de Geração","description":"Configure como a IA gera as respostas","coreParameters":"Parâmetros Principais","temperature":"Temperatura","temperatureDescription":"Controla a aleatoriedade. Valores baixos são mais focados, valores altos mais criativos.","topP":"Top P","topPDescription":"Controla a diversidade via amostragem de núcleo. Valores baixos focam em tokens prováveis.","topK":"Top K","topKDescription":"Limita a seleção de tokens aos K mais prováveis. Defina 0 para desativar.","minP":"Min P","minPDescription":"Limite mínimo de probabilidade para seleção de tokens.","generationControl":"Controle de Geração","maxTokens":"Máximo de Tokens","maxTokensDescription":"Número máximo de tokens a gerar na resposta.","repeatPenalty":"Penalidade de Repetição","repeatPenaltyDescription":"Penaliza tokens repetidos. Valores mais altos reduzem repetições.","contextLength":"Tamanho do Contexto","contextLengthDescription":"Tamanho máximo da janela de contexto para conversas.","seed":"Semente","optional":"opcional","random":"Aleatório","seedDescription":"Defina uma semente específica para resultados reproduzíveis.","advancedOptions":"Opções Avançadas","presencePenalty":"Penalidade de Presença","presencePenaltyDescription":"Penaliza tokens que aparecem no contexto.","frequencyPenalty":"Penalidade de Frequência","frequencyPenaltyDescription":"Penaliza tokens usados frequentemente.","stopSequences":"Sequências de Parada","commaSeparated":"separadas por vírgula","stopSequencesDescription":"Tokens personalizados que interromperão a geração quando encontrados.","resetDefaults":"Restaurar Padrões","saveOptions":"Salvar Opções","embeddingSettings":"Configurações de Embedding","enableEmbeddings":"Ativar Embeddings de Documentos"},"documents":{"title":"Configurações de Documentos","embeddings":{"title":"Embeddings","enable":"Ativar embeddings de documentos","model":"Modelo de Embedding","modelDescription":"Selecione o modelo usado para embedding de documentos","chunkSize":"Tamanho do Chunk","chunkSizeInTokens":"(em tokens)","chunkSizeDescription":"Tamanho dos pedaços de texto para embedding","chunkOverlap":"Sobreposição de Chunks","chunkOverlapInTokens":"(em tokens)","chunkOverlapDescription":"Sobreposição entre chunks consecutivos","similarityThreshold":"Limite de Similaridade","similarityDescription":"Pontuação mínima de similaridade para incluir resultados","status":"Status do Embedding","statusLabel":"Status","available":"Disponível","unavailable":"Indisponível","chunksWithEmbeddings":"Chunks com embeddings","coverage":"Cobertura","regenerate":"Regenerar Embeddings","regenerating":"Regenerando..."}},"tts":{"title":"Texto para Fala","description":"Configure as configurações de texto para fala para ler mensagens em voz alta","loadingProviders":"Carregando provedores de TTS...","noProviders":"Nenhum Provedor de TTS","noProvidersDescription":"Configure um plugin com suporte a TTS para ativar texto para fala","enable":"Ativar TTS","enableDescription":"Permitir texto para fala nas mensagens do assistente","autoPlay":"Reprodução Automática de Respostas","autoPlayDescription":"Ler automaticamente novas mensagens do assistente em voz alta","streamSentences":"Transmitir Frases","streamSentencesDescription":"Reproduzir áudio frase por frase em vez de esperar pela mensagem completa. Recomendado para TTS local para evitar timeouts em mensagens longas.","voiceConfiguration":"Configuração de Voz","model":"Modelo TTS","modelDescription":"Selecione o modelo para geração de texto para fala","voice":"Voz","selectVoice":"Selecione uma voz","voiceDescription":"Escolha a voz para texto para fala","speed":"Velocidade","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"Provedores Disponíveis","models":"modelos","test":"Testar","testing":"Testando...","stop":"Parar"},"imageGen":{"title":"Geração de Imagens","description":"Configure as configurações e provedores de geração de imagens","loadingProviders":"Carregando provedores de geração de imagens...","noProviders":"Nenhum Provedor de Geração de Imagens","noProvidersDescription":"Configure um plugin com suporte a geração de imagens","enable":"Ativar Geração de Imagens","enableDescription":"Permitir geração de imagens por IA nas conversas","configuration":"Configuração","model":"Modelo","modelDescription":"Selecione o modelo para geração de imagens","size":"Tamanho","sizeDescription":"Resolução das imagens geradas","quality":"Qualidade","qualityDescription":"Nível de qualidade das imagens geradas","style":"Estilo","styleDescription":"Predefinição de estilo para imagens geradas","availableProviders":"Provedores Disponíveis","models":"modelos"},"data":{"title":"Gerenciamento de Dados","export":"Exportar Dados","exportDescription":"Baixe todos os seus dados, incluindo preferências, sessões e documentos.","exportAll":"Exportar Todos os Dados","import":"Importar Dados","importDescription":"Importe dados de uma exportação anterior.","importData":"Importar Dados","importing":"Importando...","clearSessions":"Limpar Sessões","clearSessionsDescription":"Exclua todas as sessões de chat. Esta ação não pode ser desfeita.","clearAll":"Limpar Tudo","clearing":"Limpando...","importOptions":"Opções de Importação","importOptionsDescription":"Escolha como lidar com dados existentes","skipDuplicates":"Ignorar duplicados","overwrite":"Sobrescrever existentes","importResults":"Resultados da Importação","preferences":"Preferências","imported":"Importado","failed":"Falhou","sessions":"Sessões","importedLabel":"importado","skipped":"ignorado","documents":"Documentos","errors":"Erros"},"about":{"title":"Sobre","versionLabel":"Versão","ollama":{"title":"Status do Ollama","version":"Versão","healthy":"Saudável","unhealthy":"Com problemas"},"stats":{"models":"Modelos","sessions":"Sessões"},"features":{"privacy":{"title":"Privacidade em Primeiro Lugar","description":"Seus dados ficam no seu dispositivo"},"openSource":{"title":"Código Aberto","description":"Software livre e de código aberto"},"localInference":{"title":"Inferência Local","description":"Execute modelos de IA localmente com o Ollama"}},"openSourceBy":"Código aberto por {{company}}","links":{"title":"Links","github":"GitHub","githubDescription":"Veja o código-fonte e contribua","website":"Site","websiteDescription":"Visite nosso site","ollama":"Ollama","ollamaDescription":"Saiba mais sobre o Ollama","documentation":"Documentação","reportIssue":"Relatar Problemas","reportIssueDescription":"Reportar bugs e solicitar recursos"},"version":"Versão {{version}}"}}'),qg={title:"Modelos",subtitle:"Baixe, gerencie e monitore seus modelos do Ollama",installed:"Modelos Instalados",available:"Modelos Disponíveis",pull:"Baixar Modelo",pulling:"Baixando...",delete:"Excluir Modelo",deleting:"Excluindo...",size:"Tamanho",modified:"Modificado",family:"Família",parameters:"Parâmetros",quantization:"Quantização",noModels:"Nenhum modelo instalado",pullFirst:"Baixe um modelo para começar"},Jg={title:"Personas",create:"Criar Persona",edit:"Editar Persona",delete:"Excluir Persona",name:"Nome",description:"Descrição",systemPrompt:"Prompt do Sistema",model:"Modelo",avatar:"Avatar",background:"Plano de Fundo",noPersonas:"Nenhuma persona criada",createFirst:"Crie sua primeira persona para personalizar sua experiência de chat"},_g={title:"Galeria",subtitle:"Sua galeria de imagens geradas por IA",imageCount:"{{count}} imagens",generate:"Gerar Imagem",generateDescription:"Crie imagens com IA",generating:"Gerando...",prompt:"Prompt",promptPlaceholder:"Descreva a imagem que você deseja gerar...",noImages:"Nenhuma imagem gerada ainda",download:"Baixar",delete:"Excluir",regenerate:"Regenerar",model:"Modelo",size:"Tamanho",quality:"Qualidade",created:"Criado"},Yg={generic:"Ocorreu um erro",network:"Erro de rede. Por favor, verifique sua conexão.",unauthorized:"Você não está autorizado a realizar esta ação.",notFound:"O recurso solicitado não foi encontrado.",serverError:"Erro do servidor. Por favor, tente novamente mais tarde.",validation:"Por favor, verifique sua entrada e tente novamente."},Zg={title:"Atalhos de Teclado",toggleSidebar:"Alternar barra lateral",openSettings:"Abrir configurações",toggleDarkMode:"Alternar modo escuro",showShortcuts:"Mostrar atalhos de teclado",closeModals:"Fechar modais",groups:{navigation:"Navegação",settings:"Configurações",general:"Geral",chat:"Chat"},actions:{sendMessage:"Enviar mensagem",newLine:"Nova linha na mensagem"},footer:"Pressione {{key1}} ou {{key2}} para mostrar esta ajuda",tooltip:"Atalhos de teclado"},Xg={title:"Modelos",loading:"Carregando modelos...",systemStatus:{online:"Ollama Online",offline:"Ollama Offline",models:"modelo",models_plural:"modelos",running:"em execução",vram:"VRAM"},sections:{pull:"Baixar Novo Modelo",library:"Explorar Biblioteca",running:"Modelos em Execução",local:"Modelos Locais",advanced:"Ações Avançadas",huggingface:"HuggingFace Hub"},pull:{placeholder:"Digite o nome do modelo (ex.: llama3.2:3b, deepseek-r1:14b)",button:"Baixar",cancel:"Cancelar",popular:"Modelos populares:",browseAll:"Explorar todos os modelos em ollama.com",success:"Modelo {{name}} baixado com sucesso",cancelled:"Download do modelo cancelado",failed:"Falha ao baixar modelo",enterName:"Por favor, digite o nome do modelo"},progress:{starting:"Inicializando...",pulling:"Baixando modelo...",verifying:"Verificando integridade...",writing:"Escrevendo manifesto...",cleaning:"Limpando..."},library:{available:"disponível",search:"Pesquisar modelos...",noResults:"Nenhum modelo encontrado com seus critérios",installed:"Instalado",more:"+{{count}} mais",refresh:"Atualizar Biblioteca"},local:{noModels:"Nenhum modelo instalado ainda",pullToStart:"Baixe um modelo acima para começar",installed:"instalado",running:"Em execução",info:"Info",copy:"Copiar",delete:"Excluir",deleteConfirm:'Tem certeza de que deseja excluir o modelo "{{name}}"?',deleteSuccess:"Modelo {{name}} excluído com sucesso",deleteFailed:"Falha ao excluir modelo"},advanced:{createModel:"Criar Modelo",fromModelfile:"A partir de Modelfile",copyModel:"Copiar Modelo",duplicateExisting:"Duplicar existente",testEmbeddings:"Testar Embeddings",generateVectors:"Gerar vetores",healthCheck:"Verificação de Saúde",testConnection:"Testar conexão",healthy:"O Ollama está saudável!"},modals:{details:{title:"Detalhes do Modelo",info:"Informações do Modelo",family:"Família",parameters:"Parâmetros",quantization:"Quantização",format:"Formato",systemPrompt:"Prompt do Sistema",template:"Template",license:"Licença",modelfile:"Modelfile",noDetails:"Nenhum detalhe disponível"},copy:{title:"Copiar Modelo",source:"Modelo de Origem",selectModel:"Selecione um modelo...",newName:"Nome do Novo Modelo",placeholder:"ex.: meu-modelo-personalizado",copying:"Copiando...",button:"Copiar Modelo",success:"Modelo copiado para {{name}}",failed:"Falha ao copiar modelo",enterBoth:"Por favor, digite os nomes de origem e destino"},create:{title:"Criar Modelo Personalizado",name:"Nome do Modelo",namePlaceholder:"ex.: meu-assistente",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
20
|
+
SYSTEM Você é um assistente útil.`,docs:"Documentação do Modelfile",docsLink:"para referência de sintaxe",creating:"Criando...",button:"Criar Modelo",success:"Modelo {{name}} criado com sucesso",failed:"Falha ao criar modelo",enterBoth:"Por favor, digite o nome do modelo e o conteúdo do Modelfile"},embeddings:{title:"Testar Embeddings",model:"Modelo de Embedding",selectModel:"Selecione um modelo...",recommended:"Recomendados: nomic-embed-text, mxbai-embed-large",input:"Texto de Entrada",placeholder:"Digite o texto para gerar embeddings...",generating:"Gerando...",button:"Gerar Embeddings",result:"Resultado ({{count}} dimensões)",success:"Vetor de embedding de {{count}} dimensões gerado",failed:"Falha ao gerar embeddings",enterBoth:"Por favor, selecione um modelo e digite o texto"}},huggingface:{browseAll:"Ver tudo no HuggingFace",checkingGguf:"Verificando arquivos GGUF...",noGgufAvailable:"Nenhum arquivo GGUF disponível para pull direto do Ollama",ggufFilesCount:"Arquivos GGUF ({{count}}) - Pull direto para Ollama",noModelsFound:"Nenhum modelo encontrado",noResults:"Nenhum modelo encontrado. Tente ajustar sua pesquisa ou filtros.",browseAllLink:"Ver tudo",search:"Pesquisar modelos HuggingFace...",by:"por",gated:"Acesso restrito",viewOnHF:"Ver no HuggingFace",sortDownloads:"Downloads",sortLikes:"Curtidas",sortRecent:"Recente",taskTextGeneration:"Geração de texto",taskTextToSpeech:"Texto para fala",taskTextToImage:"Texto para imagem",taskSpeechRecognition:"Reconhecimento de voz",tasks:{textGen:"Geração de texto",tts:"Texto para fala",image:"Texto para imagem",stt:"Reconhecimento de voz"},sort:{downloads:"Mais baixados",likes:"Mais curtidos",recent:"Atualizados recentemente"}}},Qg={title:"Personas",subtitle:"Crie e gerencie personas de IA com personalidades, memórias e comportamentos personalizados",loading:"Carregando personas...",createButton:"Criar Persona",importExport:"Importar/Exportar",stats:{title:"Suas Personas",count:"{{count}} persona criada",count_plural:"{{count}} personas criadas"},empty:{title:"Nenhuma persona ainda",description:"Crie sua primeira persona para começar com interações de IA personalizadas",button:"Criar Sua Primeira Persona"},deleteConfirm:'Tem certeza de que deseja excluir "{{name}}"?',deleteSuccess:'Persona "{{name}}" excluída com sucesso',downloadSuccess:'Persona "{{name}}" baixada com sucesso',failed:"Falha ao {{action}} persona"},eh={title:{create:"Criar Nova Persona",edit:"Editar Persona"},subtitle:{create:"Crie uma nova persona de IA com personalidade, sistemas de memória e capacidades de aprendizado adaptativo personalizados",edit:"Personalize sua persona de IA com memória avançada, aprendizado adaptativo e parâmetros inteligentes"},loading:"Carregando formulário...",saved:"Salvo",tabs:{basic:"Básico",parameters:"Parâmetros",memory:"Memória e Aprendizado",advanced:"Avançado"},basic:{name:"Nome",namePlaceholder:"Digite o nome da persona",model:"Modelo",selectModel:"Selecione um modelo",description:"Descrição",descriptionPlaceholder:"Descreva sua persona...",systemPrompt:"Prompt do Sistema",systemPromptPlaceholder:"Digite o prompt do sistema que define o comportamento da sua persona...",systemPromptHint:"O prompt do sistema define como sua persona se comportará e responderá."},parameters:{temperature:"Temperatura",temperatureHint:"Controla criatividade vs consistência",topP:"Top-P",topPHint:"Controla a diversidade das respostas",topK:"Top-K",topKHint:"Limita o vocabulário aos top-k tokens",contextWindow:"Janela de Contexto",contextWindowHint:"Comprimento máximo do histórico de conversas",maxTokens:"Máximo de Tokens",maxTokensHint:"Comprimento máximo da resposta",repeatPenalty:"Penalidade de Repetição",repeatPenaltyHint:"Reduz respostas repetitivas"},memory:{title:"Sistema de Memória",subtitle:"A persona lembra conversas ao longo do tempo",enableHint:"Ative o sistema de memória para permitir que sua persona lembre conversas e construa contexto ao longo do tempo.",loading:"Carregando status da memória...",noData:"Nenhum dado de memória ainda",memories:"Memórias",mbUsed:"MB Usado",lastBackup:"Último Backup",never:"Nunca",maxMemories:"Máximo de Memórias",maxMemoriesHint:"Quantas memórias esta persona pode armazenar",retention:"Retenção de Memória",retentionHint:"Dias para manter memórias antes da limpeza",autoCleanup:"Limpar memórias antigas automaticamente",wipeAll:"Apagar Todas as Memórias",wipeCannot:"Esta ação não pode ser desfeita",wipeButton:"Apagar",wiping:"Apagando...",wipeConfirm:"Tem certeza de que deseja apagar todas as memórias? Esta ação não pode ser desfeita.",wipeSuccess:"{{count}} memórias apagadas"},learning:{title:"Aprendizado Adaptativo",subtitle:"A persona evolui com base nas interações",enableHint:"Ative o aprendizado adaptativo para permitir que sua persona evolua e personalize respostas com base em suas interações.",speed:"Velocidade de Aprendizado",slow:"Lento",slowDesc:"Mudanças graduais",balanced:"Equilibrado",balancedDesc:"Ritmo moderado",fast:"Rápido",fastDesc:"Adaptação rápida",autoAdapt:"Adaptar automaticamente às preferências do usuário",whatLearns:"O que a persona aprende:",conversationTone:"Tom da conversa",responseStyle:"Estilo de resposta",userPreferences:"Preferências do usuário",topicInterests:"Interesses por tópicos"},advanced:{embeddingModel:"Modelo de Embedding",embeddingHint:"Selecione o modelo usado para codificação de memória e busca semântica. Modelos de embedding são mostrados primeiro, seguidos por outros modelos disponíveis.",noModels:"Nenhum modelo encontrado",embeddingModels:"Modelos de Embedding",otherModels:"Outros Modelos",installHint:"Instale um modelo de embedding:",recommended:"Recomendados: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Sobre Configurações Avançadas",aboutDescription:"O modelo de embedding é usado pelo sistema de memória para entender o significado semântico e encontrar memórias relevantes durante as conversas. Escolha um modelo que corresponda ao seu caso de uso e recursos disponíveis."},actions:{cancel:"Cancelar",save:"Salvar",saving:"Salvando...",saveClose:"Salvar e Fechar",create:"Criar"},success:{created:"Persona criada",updated:"Persona atualizada"},error:{saveFailed:"Falha ao salvar"}},ah={enhanced:"Aprimorada",systemPrompt:"Prompt do Sistema",memories:"memórias",use:"Usar",editTooltip:"Editar persona",downloadTooltip:"Baixar persona",backup:"Backup",exportDNA:"Exportar DNA",wipeMemories:"Apagar Memórias",wipeConfirm:"Tem certeza de que deseja apagar todas as memórias desta persona? Esta ação não pode ser desfeita.",wipeSuccess:"{{count}} memórias apagadas",backupSuccess:"Backup da persona baixado com sucesso",dnaSuccess:"DNA da persona exportado com sucesso",failed:"Falha ao {{action}}"},th={title:"Gerenciamento de Usuários",subtitle:"Gerencie contas de usuários e permissões",loading:"Carregando usuários...",createUser:"Criar Usuário",search:"Pesquisar usuários...",noUsers:"Nenhum usuário encontrado",noUsersMatching:"Nenhum usuário corresponde à sua pesquisa",columns:{user:"Usuário",email:"E-mail",role:"Função",created:"Criado",actions:"Ações"},roles:{admin:"Admin",user:"Usuário"},noEmail:"Sem e-mail",deleteConfirm:'Tem certeza de que deseja excluir o usuário "{{name}}"?',deleteSuccess:"Usuário excluído com sucesso",deleteFailed:"Falha ao excluir usuário",cannotDeleteSelf:"Você não pode excluir sua própria conta",form:{title:{create:"Criar Usuário",edit:"Editar Usuário"},username:"Usuário",usernamePlaceholder:"Digite o nome de usuário",email:"E-mail",emailPlaceholder:"Digite o e-mail (opcional)",password:"Senha",passwordPlaceholder:"Digite a senha",passwordHint:"Deixe em branco para manter a senha atual",role:"Função",creating:"Criando...",updating:"Atualizando...",createButton:"Criar Usuário",updateButton:"Atualizar Usuário",createSuccess:"Usuário criado com sucesso",updateSuccess:"Usuário atualizado com sucesso",createFailed:"Falha ao criar usuário",updateFailed:"Falha ao atualizar usuário"}},nh={you:"Você",assistant:"Assistente",system:"Sistema",copy:"Copiar",copyMessage:"Copiar mensagem",copied:"Copiado!",regenerate:"Regenerar",regenerateResponse:"Regenerar resposta",edit:"Editar",editSystemMessage:"Editar mensagem do sistema",saveChanges:"Salvar alterações",cancelEditing:"Cancelar edição",delete:"Excluir",deleteConfirm:"Excluir esta mensagem?",branch:"Ramificar",speaking:"Falando...",speakMessage:"Falar mensagem",stopSpeaking:"Parar de falar",showMore:"Mostrar mais",showLess:"Mostrar menos",thinking:"Pensando",systemMessagePlaceholder:"Digite sua mensagem do sistema...",fullSizeImage:"Imagem em tamanho real",startConversation:"Inicie uma conversa",startConversationDescription:"Envie uma mensagem para começar a conversar com seu assistente de IA. Faça perguntas, obtenha ajuda com código ou tenha uma conversa natural.",scrollToBottom:"Rolar para o final",newMessages:"Novas mensagens"},rh={title:"Galeria de Imagens",noImages:"Nenhuma imagem ainda",noImagesHint:"Gere sua primeira imagem usando o painel à direita",delete:"Excluir",download:"Baixar",deleteConfirm:"Tem certeza de que deseja excluir esta imagem?",deleteSuccess:"Imagem excluída",deleteFailed:"Falha ao excluir imagem",downloadFailed:"Falha ao baixar imagem",loadMore:"Carregar Mais ({{current}} de {{total}})",loadFailed:"Falha ao carregar galeria"},ih={title:"Gerar Imagem",prompt:"Prompt",promptPlaceholder:"Descreva a imagem que você deseja criar...",model:"Modelo",selectModel:"Selecionar modelo",noModels:"Nenhum modelo de geração de imagens disponível",configurePlugin:"Configure um plugin com suporte a geração de imagens",size:"Tamanho",quality:"Qualidade",style:"Estilo",generate:"Gerar",generating:"Gerando...",success:"Imagem gerada com sucesso",failed:"Falha ao gerar imagem",enterPrompt:"Por favor, digite um prompt",promptTooLong:"O prompt excede o comprimento máximo de {{max}} caracteres"},oh={title:"Algo deu errado",description:"Encontramos um erro inesperado. Por favor, tente atualizar a página.",tryAgain:"Atualizar Página",goHome:"Ir para Início",errorDetails:"Detalhes do Erro (Desenvolvimento)"},sh={title:"Documentos",upload:"Enviar Documento",uploading:"Enviando...",noDocuments:"Nenhum documento enviado",uploadHint:"Envie documentos para usar em suas conversas",delete:"Excluir",deleteConfirm:"Tem certeza de que deseja excluir este documento?",deleteSuccess:"Documento excluído",deleteFailed:"Falha ao excluir documento",uploadSuccess:"Documento enviado com sucesso",uploadFailed:"Falha ao enviar documento",types:"Suportados: PDF, TXT, MD, DOCX",unsupportedFileType:"Apenas arquivos PDF e TXT são suportados",fileSizeTooLarge:"O tamanho do arquivo deve ser menor que 10MB",uploadSuccessWithName:'Documento "{{name}}" enviado com sucesso',removeSuccess:"Documento removido com sucesso",removeFailed:"Falha ao remover documento",removeError:"Ocorreu um erro ao remover o documento",clickToUpload:"Clique para enviar",orDragAndDrop:"ou arraste e solte",fileTypesAndSize:"Arquivos PDF ou TXT até 10MB",uploadedDocuments:"Documentos Enviados",removeDocument:"Remover documento"},lh={speak:"Falar",stop:"Parar",speaking:"Falando...",generateFailed:"Falha ao gerar fala",playbackFailed:"Falha na reprodução do áudio",stopSpeaking:"Parar de falar",generatingSpeech:"Gerando fala...",readAloud:"Ler em voz alta"},dh={title:"Artefatos",code:"Código",preview:"Pré-visualização",copy:"Copiar código",copied:"Copiado!",download:"Baixar",expand:"Expandir",collapse:"Recolher",openInNewTab:"Abrir em nova aba",invalidSvg:"Conteúdo SVG inválido",invalidJson:"Conteúdo JSON inválido",previewMode:"Modo de pré-visualização",codeMode:"Modo de código",copyContent:"Copiar conteúdo",openInPanel:"Abrir no painel",openInNewWindow:"Abrir em nova janela",created:"Criado",closePanelEsc:"Fechar painel (Esc)",copyButton:"Copiar",open:"Abrir",dragEdgeToResize:"Arraste a borda para redimensionar"},ch={title:"Importar e Exportar Personas",description:"Exporte suas personas para compartilhá-las ou importe personas de outros",exportPersonas:"Exportar Personas",importPersonas:"Importar Personas",noPersonasToExport:"Nenhuma persona para exportar",personasAvailable:"{{count}} persona disponível",personasAvailable_plural:"{{count}} personas disponíveis",exportAll:"Exportar Todas",uploadJsonFile:"Enviar Arquivo JSON",pasteJsonLabel:"Colar Dados JSON",pasteJsonPlaceholder:"Cole os dados JSON da persona aqui...",importing:"Importando...",importButton:"Importar Persona(s)",expectedFormat:"Formato JSON Esperado:",exportSuccess:'Persona "{{name}}" exportada com sucesso',exportFailed:"Falha ao exportar persona",exportAllSuccess:"Todas as {{count}} personas exportadas com sucesso",exportAllFailed:"Falha ao exportar personas",pasteJsonData:"Por favor, cole os dados JSON da persona",importMultipleSuccess:"{{count}} personas importadas com sucesso",importMultipleFailed:"Falha ao importar {{count}} personas",importNoneFailed:"Falha ao importar qualquer persona",importSuccess:"Persona importada com sucesso",importFailed:"Falha ao importar persona"},uh={common:Bg,brand:Kg,auth:Hg,setup:Rg,chat:Ug,sidebar:$g,user:Vg,settings:Wg,models:qg,personas:Jg,gallery:_g,errors:Yg,keyboard:Zg,modelManager:Xg,personaManager:Qg,personaForm:eh,personaCard:ah,userManager:th,chatMessage:nh,imageGallery:rh,imageGeneration:ih,errorBoundary:oh,documents:sh,ttsButton:lh,artifacts:dh,personaImportExport:ch},mh={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:"Пользовательский",mode:"Режим",multiUser:"Многопользовательский",remove:"Удалить"},ph={name:"Libre WebUI",shortName:"Libre"},gh={login:{title:"С возвращением",subtitle:"Войдите в свой аккаунт, чтобы продолжить",username:"Имя пользователя",usernamePlaceholder:"Введите имя пользователя",password:"Пароль",passwordPlaceholder:"Введите пароль",signIn:"Войти",signingIn:"Вход...",noAccount:"Нет аккаунта?",signUpHere:"Зарегистрируйтесь здесь",loginSuccess:"Вход выполнен успешно!",loginFailed:"Ошибка входа",checkCredentials:"Ошибка входа. Проверьте учётные данные.",enterBoth:"Пожалуйста, введите имя пользователя и пароль",githubSuccess:"Вход через GitHub выполнен успешно!",githubFailed:"Ошибка аутентификации GitHub",githubVerifyFailed:"Не удалось проверить аутентификацию GitHub"},signup:{title:"Создать аккаунт",subtitle:"Зарегистрируйте новый аккаунт",username:"Имя пользователя",usernamePlaceholder:"Выберите имя пользователя",email:"Эл. почта",emailPlaceholder:"ваш@email.com",password:"Пароль",passwordPlaceholder:"Выберите пароль",confirmPassword:"Подтвердите пароль",confirmPasswordPlaceholder:"Подтвердите ваш пароль",createAccount:"Создать аккаунт",creatingAccount:"Создание аккаунта...",hasAccount:"Уже есть аккаунт?",signInHere:"Войдите здесь",signupSuccess:"Аккаунт успешно создан!",signupFailed:"Ошибка регистрации",tryAgain:"Ошибка регистрации. Попробуйте снова.",usernameRequired:"Имя пользователя и пароль обязательны",passwordMismatch:"Пароли не совпадают",passwordTooShort:"Пароль должен содержать не менее 6 символов"},logout:{button:"Выйти",success:"Выход выполнен успешно"},oauth:{continueWith:"Продолжить через {{provider}}",connectingTo:"Подключение к {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hh={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:"Введите пароль (мин. 6 символов)",confirmPlaceholder:"Подтвердите пароль",creating:"Создание...",createAdmin:"Создать администратора",success:"Аккаунт администратора успешно создан!",failed:"Не удалось создать аккаунт администратора",fillAllFields:"Пожалуйста, заполните все поля",note:"Это будет основной аккаунт администратора для вашего экземпляра Libre WebUI"},encryptionKey:{title:"Сохраните ваш ключ шифрования",subtitle:"Важно: Сохраните этот ключ",description:"Этот ключ шифрования защищает ваши конфиденциальные данные. Храните его надёжно — он понадобится при восстановлении базы данных.",warning:"Предупреждение",warningText:"Если вы потеряете этот ключ и вам потребуется восстановить базу данных, ваши зашифрованные данные (API-ключи, настройки) будут утеряны безвозвратно.",label:"Ваш ключ шифрования",loading:"Загрузка...",copyToClipboard:"Копировать в буфер обмена",copied:"Ключ шифрования скопирован в буфер обмена!",copyFailed:"Не удалось скопировать ключ в буфер обмена",envNote:"Этот ключ также сохранён в файле backend/.env как ENCRYPTION_KEY",acknowledgment:"Я сохранил ключ шифрования в надёжном месте и понимаю, что его потеря может привести к утрате данных.",confirmRequired:"Пожалуйста, подтвердите, что вы сохранили ключ шифрования",continue:"Продолжить к Libre WebUI"}},bh={greeting:{morning:"Доброе утро",afternoon:"Добрый день",evening:"Добрый вечер",night:"Доброй ночи"},welcome:{helpToday:"Чем могу помочь сегодня?",helpTonight:"Чем могу помочь сегодня вечером?"},input:{placeholder:"Отправить сообщение",messagePlaceholder:"Сообщение...",attachImages:"Прикрепить изображения",attachments:"Вложения и дополнительные функции",sendMessage:"Отправить сообщение",stopGeneration:"Остановить генерацию"},session:{new:"Новый чат",private:"Приватный",privateMode:"Приватный режим",privateDescription:"Этот разговор не будет сохранён",privateTooltip:"Начать приватный разговор, который не будет сохранён",deleteConfirm:"Вы уверены, что хотите удалить этот чат?",generatingTitle:"Генерация заголовка",noChats:"Чатов пока нет",createFirst:"Создайте свой первый чат выше",chats:"Чаты",renameChat:"Переименовать чат",deleteChat:"Удалить чат"},persona:{applied:"Персона применена",label:"Персона"},model:{updated:"Модель обновлена",noModels:"Модели недоступны",noModelsDescription:"Модели недоступны. Убедитесь, что Ollama запущен и модели установлены.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Модели недоступны. Убедитесь, что Ollama запущен и модели установлены."},footer:{disclaimer:"ИИ может ошибаться — проверяйте важную информацию",images:"{{count}} изображение",images_plural:"{{count}} изображений",structuredOutput:"Структурированный вывод"},mediaUpload:{dropImagesHere:"Перетащите изображения сюда или",supportedFormats:"Поддерживаются: JPG, PNG, GIF, WebP (макс. 10 МБ каждый)",browse:"выберите"},structuredOutput:{title:"Формат ответа",none:"Нет (естественный язык)",noneDescription:"Стандартный ответ на естественном языке",json:"JSON",jsonDescription:"Структурированный формат JSON",list:"Список",listDescription:"Массив элементов",summary:"Резюме",summaryDescription:"Краткое изложение документа с ключевыми моментами",analysis:"Анализ",analysisDescription:"Структурированный анализ с плюсами/минусами",custom:"Пользовательская схема",customDescription:"Определите собственную JSON-схему",customSchema:"Пользовательская JSON-схема",schemaPreview:"Предпросмотр схемы",applySchema:"Применить схему",cancel:"Отмена",enabled:"Структурированный вывод включён"}},kh={navigation:{chat:"Чат",models:"Модели",personas:"Персоны",imagine:"Изображения",settings:"Настройки",userManagement:"Управление пользователями",signOut:"Выйти"},toggleSize:"Переключить размер боковой панели",expandSidebar:"Развернуть боковую панель"},fh={menu:{changePicture:"Изменить фото",settings:"Настройки",userManagement:"Управление пользователями",logout:"Выйти"},avatar:{title:"Изменить фото профиля",updated:"Фото профиля обновлено",updateFailed:"Не удалось обновить фото профиля",saving:"Сохранение..."},profile:{noEmail:"Эл. почта не указана"}},yh=JSON.parse('{"title":"Настройки","tabs":{"appearance":"Внешний вид","model":"Модель","systemMessage":"Системное сообщение","plugins":"Плагины","generation":"Генерация","documents":"Документы","tts":"Синтез речи","imageGen":"Генерация изображений","data":"Данные","about":"О программе"},"appearance":{"title":"Внешний вид","language":{"title":"Язык","description":"Выберите предпочтительный язык"},"theme":{"title":"Тема","light":"Светлая","dark":"Тёмная","amoled":"Глубокий Чёрный","system":"Системная"},"chatInterface":{"title":"Интерфейс чата","showUsername":"Показывать имя пользователя","showUsernameDescription":"Отображать имя пользователя в сообщениях чата"},"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":"Персона"},"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-ключ"}},"generation":{"title":"Параметры генерации","description":"Настройте, как ИИ генерирует ответы","coreParameters":"Основные параметры","temperature":"Температура","temperatureDescription":"Контролирует случайность. Низкие значения — более точные, высокие — более творческие.","topP":"Top P","topPDescription":"Контролирует разнообразие через nucleus sampling. Низкие значения фокусируются на вероятных токенах.","topK":"Top K","topKDescription":"Ограничивает выбор токенов до K наиболее вероятных. Установите 0 для отключения.","minP":"Min P","minPDescription":"Минимальный порог вероятности для выбора токена.","generationControl":"Управление генерацией","maxTokens":"Макс. токенов","maxTokensDescription":"Максимальное количество токенов для генерации в ответе.","repeatPenalty":"Штраф за повторение","repeatPenaltyDescription":"Штрафует повторяющиеся токены. Высокие значения уменьшают повторения.","contextLength":"Длина контекста","contextLengthDescription":"Максимальный размер окна контекста для разговоров.","seed":"Seed","optional":"необязательно","random":"Случайный","seedDescription":"Установите конкретный seed для воспроизводимых результатов.","advancedOptions":"Расширенные параметры","presencePenalty":"Штраф за присутствие","presencePenaltyDescription":"Штрафует токены, появляющиеся в контексте.","frequencyPenalty":"Штраф за частоту","frequencyPenaltyDescription":"Штрафует часто используемые токены.","stopSequences":"Стоп-последовательности","commaSeparated":"через запятую","stopSequencesDescription":"Пользовательские токены, которые остановят генерацию при обнаружении.","resetDefaults":"Сбросить по умолчанию","saveOptions":"Сохранить параметры","embeddingSettings":"Настройки встраивания","enableEmbeddings":"Включить встраивание документов"},"documents":{"title":"Настройки документов","embeddings":{"title":"Встраивание","enable":"Включить встраивание документов","model":"Модель встраивания","modelDescription":"Выберите модель для встраивания документов","chunkSize":"Размер фрагмента","chunkSizeInTokens":"(в токенах)","chunkSizeDescription":"Размер текстовых фрагментов для встраивания","chunkOverlap":"Перекрытие фрагментов","chunkOverlapInTokens":"(в токенах)","chunkOverlapDescription":"Перекрытие между последовательными фрагментами","similarityThreshold":"Порог сходства","similarityDescription":"Минимальный балл сходства для включения результатов","status":"Статус встраивания","statusLabel":"Статус","available":"Доступно","unavailable":"Недоступно","chunksWithEmbeddings":"Фрагментов со встраиванием","coverage":"Покрытие","regenerate":"Перегенерировать встраивания","regenerating":"Перегенерация..."}},"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":"Разрешить генерацию изображений ИИ в разговорах","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":"Ошибки"},"about":{"title":"О программе","versionLabel":"Версия","ollama":{"title":"Статус Ollama","version":"Версия","healthy":"Работает","unhealthy":"Не работает"},"stats":{"models":"Модели","sessions":"Сессии"},"features":{"privacy":{"title":"Конфиденциальность прежде всего","description":"Ваши данные остаются на вашем устройстве"},"openSource":{"title":"Открытый исходный код","description":"Бесплатное программное обеспечение с открытым исходным кодом"},"localInference":{"title":"Локальный вывод","description":"Запускайте модели ИИ локально с Ollama"}},"openSourceBy":"Открытый исходный код от {{company}}","links":{"title":"Ссылки","github":"GitHub","githubDescription":"Просмотр исходного кода и участие","website":"Веб-сайт","websiteDescription":"Посетите наш веб-сайт","ollama":"Ollama","ollamaDescription":"Узнайте больше об Ollama","documentation":"Документация","reportIssue":"Сообщить о проблеме","reportIssueDescription":"Отчёты об ошибках и запросы функций"},"version":"Версия {{version}}"}}'),vh={title:"Модели",subtitle:"Загружайте, управляйте и отслеживайте ваши модели Ollama",installed:"Установленные модели",available:"Доступные модели",pull:"Загрузить модель",pulling:"Загрузка...",delete:"Удалить модель",deleting:"Удаление...",size:"Размер",modified:"Изменено",family:"Семейство",parameters:"Параметры",quantization:"Квантование",noModels:"Модели не установлены",pullFirst:"Загрузите модель, чтобы начать"},xh={title:"Персоны",create:"Создать персону",edit:"Редактировать персону",delete:"Удалить персону",name:"Имя",description:"Описание",systemPrompt:"Системный промпт",model:"Модель",avatar:"Аватар",background:"Фон",noPersonas:"Персоны не созданы",createFirst:"Создайте вашу первую персону для настройки опыта общения"},Sh={title:"Галерея",subtitle:"Ваша галерея изображений, созданных ИИ",imageCount:"{{count}} изображений",generate:"Создать изображение",generateDescription:"Создавайте изображения с помощью ИИ",generating:"Создание...",prompt:"Промпт",promptPlaceholder:"Опишите изображение, которое хотите создать...",noImages:"Изображения ещё не созданы",download:"Скачать",delete:"Удалить",regenerate:"Пересоздать",model:"Модель",size:"Размер",quality:"Качество",created:"Создано"},wh={generic:"Произошла ошибка",network:"Сетевая ошибка. Проверьте подключение.",unauthorized:"У вас нет прав для выполнения этого действия.",notFound:"Запрошенный ресурс не найден.",serverError:"Ошибка сервера. Попробуйте позже.",validation:"Проверьте введённые данные и попробуйте снова."},Ph={title:"Горячие клавиши",toggleSidebar:"Переключить боковую панель",openSettings:"Открыть настройки",toggleDarkMode:"Переключить тёмный режим",showShortcuts:"Показать горячие клавиши",closeModals:"Закрыть окна",groups:{navigation:"Навигация",settings:"Настройки",general:"Общие",chat:"Чат"},actions:{sendMessage:"Отправить сообщение",newLine:"Новая строка в сообщении"},footer:"Нажмите {{key1}} или {{key2}} для показа справки",tooltip:"Горячие клавиши"},Mh={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:"Пожалуйста, введите название модели"},progress:{starting:"Инициализация...",pulling:"Загрузка модели...",verifying:"Проверка целостности...",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
|
|
21
|
+
SYSTEM You are a helpful assistant.`,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:"Нет доступных GGUF-файлов для прямой загрузки в Ollama",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:"Недавно обновлённые"}}},Dh={title:"Персоны",subtitle:"Создавайте и управляйте персонами ИИ с пользовательскими личностями, памятью и поведением",loading:"Загрузка персон...",createButton:"Создать персону",importExport:"Импорт/Экспорт",stats:{title:"Ваши персоны",count:"Создано {{count}} персона",count_plural:"Создано {{count}} персон"},empty:{title:"Персон пока нет",description:"Создайте вашу первую персону для персонализированного взаимодействия с ИИ",button:"Создать вашу первую персону"},deleteConfirm:'Вы уверены, что хотите удалить "{{name}}"?',deleteSuccess:'Персона "{{name}}" успешно удалена',downloadSuccess:'Персона "{{name}}" успешно скачана',failed:"Не удалось {{action}} персону"},Ah={title:{create:"Создать новую персону",edit:"Редактировать персону"},subtitle:{create:"Создайте новую персону ИИ с пользовательской личностью, системой памяти и адаптивным обучением",edit:"Настройте вашу персону ИИ с расширенной памятью, адаптивным обучением и интеллектуальными параметрами"},loading:"Загрузка формы...",saved:"Сохранено",tabs:{basic:"Основное",parameters:"Параметры",memory:"Память и обучение",advanced:"Расширенное"},basic:{name:"Имя",namePlaceholder:"Введите имя персоны",model:"Модель",selectModel:"Выберите модель",description:"Описание",descriptionPlaceholder:"Опишите вашу персону...",systemPrompt:"Системный промпт",systemPromptPlaceholder:"Введите системный промпт, определяющий поведение вашей персоны...",systemPromptHint:"Системный промпт определяет, как ваша персона будет себя вести и отвечать."},parameters:{temperature:"Температура",temperatureHint:"Контролирует креативность vs последовательность",topP:"Top-P",topPHint:"Контролирует разнообразие ответов",topK:"Top-K",topKHint:"Ограничивает словарь до top-k токенов",contextWindow:"Окно контекста",contextWindowHint:"Максимальная длина истории разговора",maxTokens:"Макс. токенов",maxTokensHint:"Максимальная длина ответа",repeatPenalty:"Штраф за повторение",repeatPenaltyHint:"Уменьшает повторяющиеся ответы"},memory:{title:"Система памяти",subtitle:"Персона запоминает разговоры со временем",enableHint:"Включите систему памяти, чтобы ваша персона запоминала разговоры и накапливала контекст со временем.",loading:"Загрузка статуса памяти...",noData:"Данных памяти пока нет",memories:"Воспоминания",mbUsed:"МБ использовано",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:"Не удалось сохранить"}},zh={enhanced:"Улучшенная",systemPrompt:"Системный промпт",memories:"воспоминаний",use:"Использовать",editTooltip:"Редактировать персону",downloadTooltip:"Скачать персону",backup:"Бэкап",exportDNA:"Экспорт ДНК",wipeMemories:"Очистить память",wipeConfirm:"Вы уверены, что хотите очистить всю память этой персоны? Это действие нельзя отменить.",wipeSuccess:"Очищено {{count}} воспоминаний",backupSuccess:"Бэкап персоны успешно скачан",dnaSuccess:"ДНК персоны успешно экспортирована",failed:"Не удалось {{action}}"},jh={title:"Управление пользователями",subtitle:"Управление аккаунтами и правами пользователей",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:"Не удалось обновить пользователя"}},Th={you:"Вы",assistant:"Ассистент",system:"Система",copy:"Копировать",copyMessage:"Копировать сообщение",copied:"Скопировано!",regenerate:"Пересоздать",regenerateResponse:"Пересоздать ответ",edit:"Редактировать",editSystemMessage:"Редактировать системное сообщение",saveChanges:"Сохранить изменения",cancelEditing:"Отменить редактирование",delete:"Удалить",deleteConfirm:"Удалить это сообщение?",branch:"Ветка",speaking:"Озвучивание...",speakMessage:"Озвучить сообщение",stopSpeaking:"Остановить озвучивание",showMore:"Показать больше",showLess:"Показать меньше",thinking:"Думает",systemMessagePlaceholder:"Введите ваше системное сообщение...",fullSizeImage:"Изображение в полном размере",startConversation:"Начать разговор",startConversationDescription:"Отправьте сообщение, чтобы начать общение с вашим ИИ-ассистентом. Задавайте вопросы, получайте помощь с кодом или ведите обычный разговор.",scrollToBottom:"Прокрутить вниз",newMessages:"Новые сообщения"},Nh={title:"Галерея изображений",noImages:"Изображений пока нет",noImagesHint:"Создайте первое изображение с помощью панели справа",delete:"Удалить",download:"Скачать",deleteConfirm:"Вы уверены, что хотите удалить это изображение?",deleteSuccess:"Изображение удалено",deleteFailed:"Не удалось удалить изображение",downloadFailed:"Не удалось скачать изображение",loadMore:"Загрузить ещё ({{current}} из {{total}})",loadFailed:"Не удалось загрузить галерею"},Ih={title:"Создать изображение",prompt:"Промпт",promptPlaceholder:"Опишите изображение, которое хотите создать...",model:"Модель",selectModel:"Выберите модель",noModels:"Модели генерации изображений недоступны",configurePlugin:"Настройте плагин с поддержкой генерации изображений",size:"Размер",quality:"Качество",style:"Стиль",generate:"Создать",generating:"Создание...",success:"Изображение успешно создано",failed:"Не удалось создать изображение",enterPrompt:"Пожалуйста, введите промпт",promptTooLong:"Промпт превышает максимальную длину в {{max}} символов"},Ch={title:"Что-то пошло не так",description:"Произошла непредвиденная ошибка. Попробуйте обновить страницу.",tryAgain:"Обновить страницу",goHome:"На главную",errorDetails:"Детали ошибки (Разработка)"},Fh={title:"Документы",upload:"Загрузить документ",uploading:"Загрузка...",noDocuments:"Документы не загружены",uploadHint:"Загрузите документы для использования в разговорах",delete:"Удалить",deleteConfirm:"Вы уверены, что хотите удалить этот документ?",deleteSuccess:"Документ удалён",deleteFailed:"Не удалось удалить документ",uploadSuccess:"Документ успешно загружен",uploadFailed:"Не удалось загрузить документ",types:"Поддерживаются: PDF, TXT, MD, DOCX",unsupportedFileType:"Поддерживаются только файлы PDF и TXT",fileSizeTooLarge:"Размер файла должен быть менее 10 МБ",uploadSuccessWithName:'Документ "{{name}}" успешно загружен',removeSuccess:"Документ успешно удалён",removeFailed:"Не удалось удалить документ",removeError:"Произошла ошибка при удалении документа",clickToUpload:"Нажмите для загрузки",orDragAndDrop:"или перетащите",fileTypesAndSize:"Файлы PDF или TXT до 10 МБ",uploadedDocuments:"Загруженные документы",removeDocument:"Удалить документ"},Oh={speak:"Озвучить",stop:"Стоп",speaking:"Озвучивание...",generateFailed:"Не удалось сгенерировать речь",playbackFailed:"Ошибка воспроизведения аудио",stopSpeaking:"Остановить озвучивание",generatingSpeech:"Генерация речи...",readAloud:"Читать вслух"},Eh={title:"Артефакты",code:"Код",preview:"Предпросмотр",copy:"Копировать код",copied:"Скопировано!",download:"Скачать",expand:"Развернуть",collapse:"Свернуть",openInNewTab:"Открыть в новой вкладке",invalidSvg:"Недопустимое содержимое SVG",invalidJson:"Недопустимое содержимое JSON",previewMode:"Режим предпросмотра",codeMode:"Режим кода",copyContent:"Копировать содержимое",openInPanel:"Открыть в панели",openInNewWindow:"Открыть в новом окне",created:"Создано",closePanelEsc:"Закрыть панель (Esc)",copyButton:"Копировать",open:"Открыть",dragEdgeToResize:"Перетащите край для изменения размера"},Lh={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:"Не удалось импортировать персону"},Gh={common:mh,brand:ph,auth:gh,setup:hh,chat:bh,sidebar:kh,user:fh,settings:yh,models:vh,personas:xh,gallery:Sh,errors:wh,keyboard:Ph,modelManager:Mh,personaManager:Dh,personaForm:Ah,personaCard:zh,userManager:jh,chatMessage:Th,imageGallery:Nh,imageGeneration:Ih,errorBoundary:Ch,documents:Fh,ttsButton:Oh,artifacts:Eh,personaImportExport:Lh},Bh={loading:"Laddar...",save:"Spara",saving:"Sparar...",cancel:"Avbryt",delete:"Radera",edit:"Redigera",close:"Stäng",back:"Tillbaka",next:"Nästa",confirm:"Bekräfta",error:"Fel",success:"Lyckades",warning:"Varning",or:"eller",optional:"valfritt",enabled:"Aktiverad",disabled:"Inaktiverad",on:"På",off:"Av",yes:"Ja",no:"Nej",search:"Sök",noResults:"Inga resultat hittades",retry:"Försök igen",refresh:"Uppdatera",download:"Ladda ner",upload:"Ladda upp",export:"Exportera",import:"Importera",reset:"Återställ",apply:"Tillämpa",clear:"Rensa",all:"Alla",none:"Ingen",default:"Standard",custom:"Anpassad",mode:"Läge",multiUser:"Fleranvändare",remove:"Ta bort"},Kh={name:"Libre WebUI",shortName:"Libre"},Hh={login:{title:"Välkommen tillbaka",subtitle:"Logga in på ditt konto för att fortsätta",username:"Användarnamn",usernamePlaceholder:"Ange ditt användarnamn",password:"Lösenord",passwordPlaceholder:"Ange ditt lösenord",signIn:"Logga in",signingIn:"Loggar in...",noAccount:"Har du inget konto?",signUpHere:"Registrera dig här",loginSuccess:"Inloggningen lyckades!",loginFailed:"Inloggningen misslyckades",checkCredentials:"Inloggningen misslyckades. Kontrollera dina uppgifter.",enterBoth:"Ange både användarnamn och lösenord",githubSuccess:"GitHub-inloggningen lyckades!",githubFailed:"GitHub-autentiseringen misslyckades",githubVerifyFailed:"Kunde inte verifiera GitHub-autentiseringen"},signup:{title:"Skapa konto",subtitle:"Registrera ett nytt konto",username:"Användarnamn",usernamePlaceholder:"Välj ett användarnamn",email:"E-post",emailPlaceholder:"din@epost.se",password:"Lösenord",passwordPlaceholder:"Välj ett lösenord",confirmPassword:"Bekräfta lösenord",confirmPasswordPlaceholder:"Bekräfta ditt lösenord",createAccount:"Skapa konto",creatingAccount:"Skapar konto...",hasAccount:"Har du redan ett konto?",signInHere:"Logga in här",signupSuccess:"Kontot skapades!",signupFailed:"Registreringen misslyckades",tryAgain:"Registreringen misslyckades. Försök igen.",usernameRequired:"Användarnamn och lösenord krävs",passwordMismatch:"Lösenorden matchar inte",passwordTooShort:"Lösenordet måste vara minst 6 tecken långt"},logout:{button:"Logga ut",success:"Utloggningen lyckades"},oauth:{continueWith:"Fortsätt med {{provider}}",connectingTo:"Ansluter till {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rh={welcome:{title:"Välkommen till Libre WebUI",subtitle:"Låt oss komma igång",description:"Konfigurera din Libre WebUI-instans i några enkla steg",createAdmin:"Skapa administratörskonto",features:{secure:{title:"Säker och privat",description:"Dina konversationer stannar på din enhet"},fast:{title:"Snabb och responsiv",description:"Optimerad för hastighet och prestanda"},openSource:{title:"Öppen källkod",description:"Fri och öppen mjukvara"}}},admin:{title:"Skapa administratörskonto",subtitle:"Administratörskonfiguration",description:"Skapa det första administratörskontot för din Libre WebUI-instans",usernamePlaceholder:"Ange administratörens användarnamn",passwordPlaceholder:"Ange lösenord (minst 6 tecken)",confirmPlaceholder:"Bekräfta ditt lösenord",creating:"Skapar...",createAdmin:"Skapa administratör",success:"Administratörskontot skapades!",failed:"Kunde inte skapa administratörskonto",fillAllFields:"Fyll i alla fält",note:"Detta blir det primära administratörskontot för din Libre WebUI-instans"},encryptionKey:{title:"Spara din krypteringsnyckel",subtitle:"Viktigt: Spara denna nyckel",description:"Denna krypteringsnyckel skyddar dina känsliga data. Förvara den säkert - du behöver den om du någonsin behöver återställa din databas.",warning:"Varning",warningText:"Om du förlorar denna nyckel och behöver återställa din databas kommer din krypterade data (API-nycklar, inställningar) att vara oåterkalleligt förlorad.",label:"Din krypteringsnyckel",loading:"Laddar...",copyToClipboard:"Kopiera till urklipp",copied:"Krypteringsnyckeln kopierades till urklipp!",copyFailed:"Kunde inte kopiera nyckeln till urklipp",envNote:"Denna nyckel sparas också i din backend/.env-fil som ENCRYPTION_KEY",acknowledgment:"Jag har sparat min krypteringsnyckel på ett säkert ställe och förstår att förlust av den kan resultera i dataförlust.",confirmRequired:"Bekräfta att du har sparat krypteringsnyckeln",continue:"Fortsätt till Libre WebUI"}},Uh={greeting:{morning:"God morgon",afternoon:"God eftermiddag",evening:"God kväll",night:"God natt"},welcome:{helpToday:"Vad kan jag hjälpa till med idag?",helpTonight:"Vad kan jag hjälpa till med ikväll?"},input:{placeholder:"Skicka ett meddelande",messagePlaceholder:"Meddelande...",attachImages:"Bifoga bilder",attachments:"Bilagor och avancerade funktioner",sendMessage:"Skicka meddelande",stopGeneration:"Stoppa generering"},session:{new:"Ny chatt",private:"Privat",privateMode:"Privat läge",privateDescription:"Denna konversation sparas inte",privateTooltip:"Starta en privat konversation som inte sparas",deleteConfirm:"Är du säker på att du vill radera denna chatt?",generatingTitle:"Genererar titel",noChats:"Inga chattar ännu",createFirst:"Skapa din första chatt ovan",chats:"Chattar",renameChat:"Byt namn på chatt",deleteChat:"Radera chatt"},persona:{applied:"Persona tillämpad",label:"Persona"},model:{updated:"Modell uppdaterad",noModels:"Inga modeller tillgängliga",noModelsDescription:"Inga modeller tillgängliga. Se till att Ollama körs och har modeller installerade.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Inga modeller tillgängliga. Se till att Ollama körs och modeller är installerade."},footer:{disclaimer:"AI kan göra misstag - verifiera viktig information",images:"{{count}} bild",images_plural:"{{count}} bilder",structuredOutput:"Strukturerad utdata"},mediaUpload:{dropImagesHere:"Släpp bilder här eller",supportedFormats:"Stöder: JPG, PNG, GIF, WebP (max 10MB vardera)",browse:"bläddra"},structuredOutput:{title:"Svarsformat",none:"Inget (naturligt språk)",noneDescription:"Standardsvar i naturligt språk",json:"JSON",jsonDescription:"Strukturerat JSON-format",list:"Lista",listDescription:"Array av objekt",summary:"Sammanfattning",summaryDescription:"Dokumentsammanfattning med huvudpunkter",analysis:"Analys",analysisDescription:"Strukturerad analys med för- och nackdelar",custom:"Anpassat schema",customDescription:"Definiera ditt eget JSON-schema",customSchema:"Anpassat JSON-schema",schemaPreview:"Schemaförhandsgranskning",applySchema:"Tillämpa schema",cancel:"Avbryt",enabled:"Strukturerad utdata aktiverad"}},$h={navigation:{chat:"Chatt",models:"Modeller",personas:"Personas",imagine:"Skapa bild",settings:"Inställningar",userManagement:"Användarhantering",signOut:"Logga ut"},toggleSize:"Växla sidofältets storlek",expandSidebar:"Expandera sidofältet"},Vh={menu:{changePicture:"Ändra bild",settings:"Inställningar",userManagement:"Användarhantering",logout:"Logga ut"},avatar:{title:"Ändra profilbild",updated:"Profilbilden uppdaterad",updateFailed:"Kunde inte uppdatera profilbilden",saving:"Sparar..."},profile:{noEmail:"Ingen e-post angiven"}},Wh={title:"Inställningar",tabs:{appearance:"Utseende",model:"Modell",systemMessage:"Systemmeddelande",plugins:"Tillägg",generation:"Generering",documents:"Dokument",tts:"Text-till-tal",imageGen:"Bildgenerering",data:"Data",about:"Om"},appearance:{title:"Utseende",language:{title:"Språk",description:"Välj ditt föredragna språk"},theme:{title:"Tema",light:"Ljust",dark:"Mörkt",amoled:"Djupsvart",system:"System"},chatInterface:{title:"Chattgränssnitt",showUsername:"Visa användarnamn",showUsernameDescription:"Visa användarnamn i chattmeddelanden"},background:{title:"Bakgrundsbild",enable:"Aktivera bakgrundsbild",enableDescription:"Visa anpassad bakgrund med oskärpa",blur:"Oskärpa",opacity:"Opacitet",upload:"Ladda upp bakgrundsbild",dragDrop:"Dra och släpp en bild eller klicka för att bläddra",chooseImage:"Välj bild"}},saveSettings:"Spara inställningar",model:{title:"Modellinställningar",defaultModel:"Standardmodell",defaultModelDescription:"Denna modell används som standard för nya konversationer",selectModel:"Välj en modell",updateAll:"Uppdatera alla modeller",updateAllDescription:"Sök efter uppdateringar och hämta senaste versionerna av alla installerade modeller",updateAllButton:"Uppdatera alla",updating:"Uppdaterar modeller...",currentModelInfo:"Information om nuvarande modell",name:"Namn",size:"Storlek",family:"Familj",format:"Format",status:"Status",statusStarting:"Startar...",statusComplete:"Klar",statusError:"Fel",bulkOperations:"Massoperationer",autoTitle:{title:"Automatisk titelgenerering",enable:"Aktivera automatisk titel",enableDescription:"Generera automatiskt titlar för nya konversationer",taskModel:"Uppgiftsmodell",selectTaskModel:"Välj uppgiftsmodell",taskModelDescription:"Modell som används för att generera konversationstitlar"},persona:"Persona"},systemMessage:{title:"Systemmeddelande",description:"Ställ in ett anpassat systemmeddelande som används för alla nya konversationer.",placeholder:"Ange ett systemmeddelande...",saved:"Systemmeddelande sparat",saveFailed:"Kunde inte spara systemmeddelande"},plugins:{title:"Tillägg",description:"Hantera dina installerade tillägg",addNew:"Lägg till nytt tillägg",upload:"Ladda upp tillägg",addJson:"Lägg till JSON",uploading:"Laddar upp...",jsonPlaceholder:"Klistra in tilläggs-JSON-konfiguration...",install:"Installera tillägg",noPlugins:"Inga tillägg installerade",noPluginsDescription:"Lägg till ett tillägg för att utöka funktionaliteten",loading:"Laddar tillägg...",installed:"Installerade tillägg",active:"Aktiva tillägg",activeLabel:"Aktiv",inactive:"Inaktiv",activate:"Aktivera",deactivate:"Inaktivera",models:"modeller",apiKeySet:"API-nyckel inställd",apiKeyConfiguration:"API-nyckelkonfiguration",apiKeyEnvAlternative:"Alternativt, ställ in",environmentVariable:"miljövariabel",apiKeyConfigured:"API-nyckel konfigurerad",apiKeyPlaceholder:"Ange din API-nyckel...",saveApiKey:"Spara API-nyckel",apiKey:{title:"API-nyckel",placeholder:"Ange API-nyckel",save:"Spara nyckel",remove:"Ta bort nyckel",configured:"API-nyckel konfigurerad",notConfigured:"API-nyckel krävs",saved:"API-nyckeln sparades",removed:"API-nyckeln togs bort",saveFailed:"Kunde inte spara API-nyckel",removeFailed:"Kunde inte ta bort API-nyckel",enterKey:"Ange en API-nyckel"}},generation:{title:"Genereringsalternativ",description:"Konfigurera hur AI:n genererar svar",coreParameters:"Kärnparametrar",temperature:"Temperatur",temperatureDescription:"Styr slumpmässighet. Lägre värden är mer fokuserade, högre värden mer kreativa.",topP:"Top P",topPDescription:"Styr mångfald via kärnsampling. Lägre värden fokuserar på sannolika tokens.",topK:"Top K",topKDescription:"Begränsar tokenval till de K mest sannolika. Sätt till 0 för att inaktivera.",minP:"Min P",minPDescription:"Minsta sannolikhetströskel för tokenval.",generationControl:"Genereringskontroll",maxTokens:"Max tokens",maxTokensDescription:"Maximalt antal tokens att generera i svaret.",repeatPenalty:"Upprepningsstraff",repeatPenaltyDescription:"Bestraffar upprepade tokens. Högre värden minskar upprepning.",contextLength:"Kontextlängd",contextLengthDescription:"Maximal kontextfönsterstorlek för konversationer.",seed:"Seed",optional:"valfritt",random:"Slumpmässig",seedDescription:"Ställ in en specifik seed för reproducerbara resultat.",advancedOptions:"Avancerade alternativ",presencePenalty:"Närvarostraff",presencePenaltyDescription:"Bestraffar tokens som förekommer i kontexten.",frequencyPenalty:"Frekvensstraff",frequencyPenaltyDescription:"Bestraffar ofta använda tokens.",stopSequences:"Stoppsekvenser",commaSeparated:"kommaseparerade",stopSequencesDescription:"Anpassade tokens som stoppar genereringen när de påträffas.",resetDefaults:"Återställ till standardvärden",saveOptions:"Spara alternativ",embeddingSettings:"Inbäddningsinställningar",enableEmbeddings:"Aktivera dokumentinbäddningar"},documents:{title:"Dokumentinställningar",embeddings:{title:"Inbäddningar",enable:"Aktivera dokumentinbäddningar",model:"Inbäddningsmodell",modelDescription:"Välj modell för dokumentinbäddning",chunkSize:"Segmentstorlek",chunkSizeInTokens:"(i tokens)",chunkSizeDescription:"Storlek på textsegment för inbäddning",chunkOverlap:"Segmentöverlappning",chunkOverlapInTokens:"(i tokens)",chunkOverlapDescription:"Överlappning mellan på varandra följande segment",similarityThreshold:"Likhetströskel",similarityDescription:"Minsta likhetspoäng för att inkludera resultat",status:"Inbäddningsstatus",statusLabel:"Status",available:"Tillgänglig",unavailable:"Ej tillgänglig",chunksWithEmbeddings:"Segment med inbäddningar",coverage:"Täckning",regenerate:"Regenerera inbäddningar",regenerating:"Regenererar..."}},tts:{title:"Text-till-tal",description:"Konfigurera text-till-tal-inställningar för uppläsning av meddelanden",loadingProviders:"Laddar TTS-leverantörer...",noProviders:"Inga TTS-leverantörer",noProvidersDescription:"Konfigurera ett tillägg med TTS-stöd för att aktivera text-till-tal",enable:"Aktivera TTS",enableDescription:"Tillåt text-till-tal för assistentmeddelanden",autoPlay:"Spela upp svar automatiskt",autoPlayDescription:"Läs automatiskt upp nya assistentmeddelanden",streamSentences:"Strömma meningar",streamSentencesDescription:"Spela upp ljud mening för mening istället för att vänta på hela meddelandet. Rekommenderas för lokal TTS för att undvika timeout vid långa meddelanden.",voiceConfiguration:"Röstkonfiguration",model:"TTS-modell",modelDescription:"Välj modell för text-till-tal-generering",voice:"Röst",selectVoice:"Välj en röst",voiceDescription:"Välj röst för text-till-tal",speed:"Hastighet",speedSlow:"0,5x",speedNormal:"1,0x",speedFast:"2,0x",availableProviders:"Tillgängliga leverantörer",models:"modeller",test:"Testa",testing:"Testar...",stop:"Stoppa"},imageGen:{title:"Bildgenerering",description:"Konfigurera bildgenereringsinställningar och leverantörer",loadingProviders:"Laddar bildgenereringsleverantörer...",noProviders:"Inga bildgenereringsleverantörer",noProvidersDescription:"Konfigurera ett tillägg med bildgenereringsstöd",enable:"Aktivera bildgenerering",enableDescription:"Tillåt AI-bildgenerering i konversationer",configuration:"Konfiguration",model:"Modell",modelDescription:"Välj modell för bildgenerering",size:"Storlek",sizeDescription:"Upplösning för genererade bilder",quality:"Kvalitet",qualityDescription:"Kvalitetsnivå för genererade bilder",style:"Stil",styleDescription:"Stilförinställning för genererade bilder",availableProviders:"Tillgängliga leverantörer",models:"modeller"},data:{title:"Datahantering",export:"Exportera data",exportDescription:"Ladda ner all din data inklusive inställningar, sessioner och dokument.",exportAll:"Exportera all data",import:"Importera data",importDescription:"Importera data från en tidigare export.",importData:"Importera data",importing:"Importerar...",clearSessions:"Rensa sessioner",clearSessionsDescription:"Radera alla chattsessioner. Denna åtgärd kan inte ångras.",clearAll:"Rensa alla",clearing:"Rensar...",importOptions:"Importalternativ",importOptionsDescription:"Välj hur befintlig data ska hanteras",skipDuplicates:"Hoppa över dubbletter",overwrite:"Skriv över befintliga",importResults:"Importresultat",preferences:"Inställningar",imported:"Importerade",failed:"Misslyckades",sessions:"Sessioner",importedLabel:"importerade",skipped:"hoppades över",documents:"Dokument",errors:"Fel"},about:{title:"Om",versionLabel:"Version",ollama:{title:"Ollama-status",version:"Version",healthy:"Fungerar",unhealthy:"Fungerar inte"},stats:{models:"Modeller",sessions:"Sessioner"},features:{privacy:{title:"Integritet först",description:"Din data stannar på din enhet"},openSource:{title:"Öppen källkod",description:"Fri och öppen mjukvara"},localInference:{title:"Lokal inferens",description:"Kör AI-modeller lokalt med Ollama"}},openSourceBy:"Öppen källkod av {{company}}",links:{title:"Länkar",github:"GitHub",githubDescription:"Visa källkod och bidra",website:"Webbplats",websiteDescription:"Besök vår webbplats",ollama:"Ollama",ollamaDescription:"Läs mer om Ollama",documentation:"Dokumentation",reportIssue:"Rapportera problem",reportIssueDescription:"Felrapporter och funktionsförfrågningar"},version:"Version {{version}}"}},qh={title:"Modeller",subtitle:"Hämta, hantera och övervaka dina Ollama-modeller",installed:"Installerade modeller",available:"Tillgängliga modeller",pull:"Hämta modell",pulling:"Hämtar...",delete:"Radera modell",deleting:"Raderar...",size:"Storlek",modified:"Ändrad",family:"Familj",parameters:"Parametrar",quantization:"Kvantisering",noModels:"Inga modeller installerade",pullFirst:"Hämta en modell för att komma igång"},Jh={title:"Personas",create:"Skapa persona",edit:"Redigera persona",delete:"Radera persona",name:"Namn",description:"Beskrivning",systemPrompt:"Systemprompt",model:"Modell",avatar:"Avatar",background:"Bakgrund",noPersonas:"Inga personas skapade",createFirst:"Skapa din första persona för att anpassa din chattupplevelse"},_h={title:"Galleri",subtitle:"Ditt AI-genererade bildgalleri",imageCount:"{{count}} bilder",generate:"Generera bild",generateDescription:"Skapa bilder med AI",generating:"Genererar...",prompt:"Prompt",promptPlaceholder:"Beskriv bilden du vill generera...",noImages:"Inga bilder genererade ännu",download:"Ladda ner",delete:"Radera",regenerate:"Generera om",model:"Modell",size:"Storlek",quality:"Kvalitet",created:"Skapad"},Yh={generic:"Ett fel uppstod",network:"Nätverksfel. Kontrollera din anslutning.",unauthorized:"Du har inte behörighet att utföra denna åtgärd.",notFound:"Den begärda resursen hittades inte.",serverError:"Serverfel. Försök igen senare.",validation:"Kontrollera din inmatning och försök igen."},Zh={title:"Tangentbordsgenvägar",toggleSidebar:"Växla sidofält",openSettings:"Öppna inställningar",toggleDarkMode:"Växla mörkt läge",showShortcuts:"Visa tangentbordsgenvägar",closeModals:"Stäng dialogrutor",groups:{navigation:"Navigering",settings:"Inställningar",general:"Allmänt",chat:"Chatt"},actions:{sendMessage:"Skicka meddelande",newLine:"Ny rad i meddelande"},footer:"Tryck {{key1}} eller {{key2}} för att visa denna hjälp",tooltip:"Tangentbordsgenvägar"},Xh={title:"Modeller",loading:"Laddar modeller...",systemStatus:{online:"Ollama online",offline:"Ollama offline",models:"modell",models_plural:"modeller",running:"körs",vram:"VRAM"},sections:{pull:"Hämta ny modell",library:"Bläddra i bibliotek",running:"Aktiva modeller",local:"Lokala modeller",advanced:"Avancerade åtgärder",huggingface:"HuggingFace Hub"},pull:{placeholder:"Ange modellnamn (t.ex. llama3.2:3b, deepseek-r1:14b)",button:"Hämta",cancel:"Avbryt",popular:"Populära modeller:",browseAll:"Bläddra bland alla modeller på ollama.com",success:"Modellen {{name}} hämtades",cancelled:"Modellhämtning avbruten",failed:"Kunde inte hämta modell",enterName:"Ange ett modellnamn"},progress:{starting:"Initierar...",pulling:"Laddar ner modell...",verifying:"Verifierar integritet...",writing:"Skriver manifest...",cleaning:"Städar upp..."},library:{available:"tillgänglig",search:"Sök modeller...",noResults:"Inga modeller hittades som matchar dina kriterier",installed:"Installerad",more:"+{{count}} fler",refresh:"Uppdatera bibliotek"},local:{noModels:"Inga modeller installerade ännu",pullToStart:"Hämta en modell ovan för att komma igång",installed:"installerad",running:"Körs",info:"Info",copy:"Kopiera",delete:"Radera",deleteConfirm:'Är du säker på att du vill radera modellen "{{name}}"?',deleteSuccess:"Modellen {{name}} raderades",deleteFailed:"Kunde inte radera modell"},advanced:{createModel:"Skapa modell",fromModelfile:"Från Modelfile",copyModel:"Kopiera modell",duplicateExisting:"Duplicera befintlig",testEmbeddings:"Testa inbäddningar",generateVectors:"Generera vektorer",healthCheck:"Hälsokontroll",testConnection:"Testa anslutning",healthy:"Ollama fungerar!"},modals:{details:{title:"Modelldetaljer",info:"Modellinformation",family:"Familj",parameters:"Parametrar",quantization:"Kvantisering",format:"Format",systemPrompt:"Systemprompt",template:"Mall",license:"Licens",modelfile:"Modelfile",noDetails:"Inga detaljer tillgängliga"},copy:{title:"Kopiera modell",source:"Källmodell",selectModel:"Välj en modell...",newName:"Nytt modellnamn",placeholder:"t.ex. min-anpassade-modell",copying:"Kopierar...",button:"Kopiera modell",success:"Modellen kopierades till {{name}}",failed:"Kunde inte kopiera modell",enterBoth:"Ange både käll- och målnamn"},create:{title:"Skapa anpassad modell",name:"Modellnamn",namePlaceholder:"t.ex. min-assistent",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
22
|
+
SYSTEM Du är en hjälpsam assistent.`,docs:"Modelfile-dokumentation",docsLink:"för syntaxreferens",creating:"Skapar...",button:"Skapa modell",success:"Modellen {{name}} skapades",failed:"Kunde inte skapa modell",enterBoth:"Ange modellnamn och Modelfile-innehåll"},embeddings:{title:"Testa inbäddningar",model:"Inbäddningsmodell",selectModel:"Välj en modell...",recommended:"Rekommenderade: nomic-embed-text, mxbai-embed-large",input:"Inmatningstext",placeholder:"Ange text att generera inbäddningar för...",generating:"Genererar...",button:"Generera inbäddningar",result:"Resultat ({{count}} dimensioner)",success:"Genererade {{count}}-dimensionell inbäddningsvektor",failed:"Kunde inte generera inbäddningar",enterBoth:"Välj en modell och ange text"}},huggingface:{browseAll:"Bläddra bland alla på HuggingFace",checkingGguf:"Söker efter GGUF-filer...",noGgufAvailable:"Inga GGUF-filer tillgängliga för direkt Ollama-hämtning",ggufFilesCount:"GGUF-filer ({{count}}) - Hämta direkt till Ollama",noModelsFound:"Inga modeller hittades",noResults:"Inga modeller hittades. Försök justera din sökning eller filter.",browseAllLink:"Visa alla",search:"Sök HuggingFace-modeller...",by:"av",gated:"Begränsad åtkomst",viewOnHF:"Visa på HuggingFace",sortDownloads:"Nedladdningar",sortLikes:"Gillar",sortRecent:"Senaste",taskTextGeneration:"Textgenerering",taskTextToSpeech:"Text till tal",taskTextToImage:"Text till bild",taskSpeechRecognition:"Taligenkänning",tasks:{textGen:"Textgenerering",tts:"Text till tal",image:"Text till bild",stt:"Taligenkänning"},sort:{downloads:"Mest nedladdade",likes:"Mest gillade",recent:"Nyligen uppdaterade"}}},Qh={title:"Personas",subtitle:"Skapa och hantera AI-personas med anpassade personligheter, minnen och beteenden",loading:"Laddar personas...",createButton:"Skapa persona",importExport:"Importera/Exportera",stats:{title:"Dina personas",count:"{{count}} persona skapad",count_plural:"{{count}} personas skapade"},empty:{title:"Inga personas ännu",description:"Skapa din första persona för att komma igång med personaliserade AI-interaktioner",button:"Skapa din första persona"},deleteConfirm:'Är du säker på att du vill radera "{{name}}"?',deleteSuccess:'Persona "{{name}}" raderades',downloadSuccess:'Persona "{{name}}" laddades ner',failed:"Kunde inte {{action}} persona"},eb={title:{create:"Skapa ny persona",edit:"Redigera persona"},subtitle:{create:"Skapa en ny AI-persona med anpassad personlighet, minnessystem och adaptiv inlärning",edit:"Anpassa din AI-persona med avancerat minne, adaptiv inlärning och intelligenta parametrar"},loading:"Laddar formulär...",saved:"Sparad",tabs:{basic:"Grundläggande",parameters:"Parametrar",memory:"Minne och inlärning",advanced:"Avancerat"},basic:{name:"Namn",namePlaceholder:"Ange personans namn",model:"Modell",selectModel:"Välj en modell",description:"Beskrivning",descriptionPlaceholder:"Beskriv din persona...",systemPrompt:"Systemprompt",systemPromptPlaceholder:"Ange systemprompten som definierar din personas beteende...",systemPromptHint:"Systemprompten definierar hur din persona kommer att bete sig och svara."},parameters:{temperature:"Temperatur",temperatureHint:"Styr kreativitet kontra konsekvens",topP:"Top-P",topPHint:"Styr svarsmångfald",topK:"Top-K",topKHint:"Begränsar vokabulär till top-k tokens",contextWindow:"Kontextfönster",contextWindowHint:"Maximal konversationshistoriklängd",maxTokens:"Max tokens",maxTokensHint:"Maximal svarslängd",repeatPenalty:"Upprepningsstraff",repeatPenaltyHint:"Minskar upprepande svar"},memory:{title:"Minnessystem",subtitle:"Persona minns konversationer över tid",enableHint:"Aktivera minnessystemet för att låta din persona komma ihåg konversationer och bygga upp kontext över tid.",loading:"Laddar minnesstatus...",noData:"Ingen minnesdata ännu",memories:"Minnen",mbUsed:"MB använt",lastBackup:"Senaste säkerhetskopiering",never:"Aldrig",maxMemories:"Maximala minnen",maxMemoriesHint:"Hur många minnen denna persona kan lagra",retention:"Minnesbevarande",retentionHint:"Dagar att behålla minnen före rensning",autoCleanup:"Automatisk rensning av gamla minnen",wipeAll:"Radera alla minnen",wipeCannot:"Detta kan inte ångras",wipeButton:"Radera",wiping:"Raderar...",wipeConfirm:"Är du säker på att du vill radera alla minnen? Detta kan inte ångras.",wipeSuccess:"Raderade {{count}} minnen"},learning:{title:"Adaptiv inlärning",subtitle:"Persona utvecklas baserat på interaktioner",enableHint:"Aktivera adaptiv inlärning för att låta din persona utvecklas och personalisera svar baserat på dina interaktioner.",speed:"Inlärningshastighet",slow:"Långsam",slowDesc:"Gradvisa förändringar",balanced:"Balanserad",balancedDesc:"Måttlig takt",fast:"Snabb",fastDesc:"Snabb anpassning",autoAdapt:"Anpassa automatiskt till användarpreferenser",whatLearns:"Vad personan lär sig:",conversationTone:"Konversationston",responseStyle:"Svarsstil",userPreferences:"Användarpreferenser",topicInterests:"Ämnesintressen"},advanced:{embeddingModel:"Inbäddningsmodell",embeddingHint:"Välj modell för minneskodning och semantisk sökning. Inbäddningsmodeller visas först, följt av andra tillgängliga modeller.",noModels:"Inga modeller hittades",embeddingModels:"Inbäddningsmodeller",otherModels:"Andra modeller",installHint:"Installera en inbäddningsmodell:",recommended:"Rekommenderade: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Om avancerade inställningar",aboutDescription:"Inbäddningsmodellen används av minnessystemet för att förstå semantisk betydelse och hitta relevanta minnen under konversationer. Välj en modell som passar ditt användningsfall och tillgängliga resurser."},actions:{cancel:"Avbryt",save:"Spara",saving:"Sparar...",saveClose:"Spara och stäng",create:"Skapa"},success:{created:"Persona skapad",updated:"Persona uppdaterad"},error:{saveFailed:"Kunde inte spara"}},ab={enhanced:"Förbättrad",systemPrompt:"Systemprompt",memories:"minnen",use:"Använd",editTooltip:"Redigera persona",downloadTooltip:"Ladda ner persona",backup:"Säkerhetskopiera",exportDNA:"Exportera DNA",wipeMemories:"Radera minnen",wipeConfirm:"Är du säker på att du vill radera alla minnen för denna persona? Denna åtgärd kan inte ångras.",wipeSuccess:"Raderade {{count}} minnen",backupSuccess:"Personans säkerhetskopia laddades ner",dnaSuccess:"Personans DNA exporterades",failed:"Kunde inte {{action}}"},tb={title:"Användarhantering",subtitle:"Hantera användarkonton och behörigheter",loading:"Laddar användare...",createUser:"Skapa användare",search:"Sök användare...",noUsers:"Inga användare hittades",noUsersMatching:"Inga användare matchar din sökning",columns:{user:"Användare",email:"E-post",role:"Roll",created:"Skapad",actions:"Åtgärder"},roles:{admin:"Administratör",user:"Användare"},noEmail:"Ingen e-post",deleteConfirm:'Är du säker på att du vill radera användaren "{{name}}"?',deleteSuccess:"Användaren raderades",deleteFailed:"Kunde inte radera användare",cannotDeleteSelf:"Du kan inte radera ditt eget konto",form:{title:{create:"Skapa användare",edit:"Redigera användare"},username:"Användarnamn",usernamePlaceholder:"Ange användarnamn",email:"E-post",emailPlaceholder:"Ange e-post (valfritt)",password:"Lösenord",passwordPlaceholder:"Ange lösenord",passwordHint:"Lämna tomt för att behålla nuvarande lösenord",role:"Roll",creating:"Skapar...",updating:"Uppdaterar...",createButton:"Skapa användare",updateButton:"Uppdatera användare",createSuccess:"Användaren skapades",updateSuccess:"Användaren uppdaterades",createFailed:"Kunde inte skapa användare",updateFailed:"Kunde inte uppdatera användare"}},nb={you:"Du",assistant:"Assistent",system:"System",copy:"Kopiera",copyMessage:"Kopiera meddelande",copied:"Kopierat!",regenerate:"Generera om",regenerateResponse:"Generera om svar",edit:"Redigera",editSystemMessage:"Redigera systemmeddelande",saveChanges:"Spara ändringar",cancelEditing:"Avbryt redigering",delete:"Radera",deleteConfirm:"Radera detta meddelande?",branch:"Förgrena",speaking:"Talar...",speakMessage:"Läs upp meddelande",stopSpeaking:"Sluta tala",showMore:"Visa mer",showLess:"Visa mindre",thinking:"Tänker",systemMessagePlaceholder:"Ange ditt systemmeddelande...",fullSizeImage:"Fullstor bild",startConversation:"Starta en konversation",startConversationDescription:"Skicka ett meddelande för att börja chatta med din AI-assistent. Ställ frågor, få hjälp med kod eller ha en naturlig konversation.",scrollToBottom:"Scrolla till botten",newMessages:"Nya meddelanden"},rb={title:"Bildgalleri",noImages:"Inga bilder ännu",noImagesHint:"Generera din första bild med panelen till höger",delete:"Radera",download:"Ladda ner",deleteConfirm:"Är du säker på att du vill radera denna bild?",deleteSuccess:"Bilden raderades",deleteFailed:"Kunde inte radera bild",downloadFailed:"Kunde inte ladda ner bild",loadMore:"Ladda fler ({{current}} av {{total}})",loadFailed:"Kunde inte ladda galleri"},ib={title:"Generera bild",prompt:"Prompt",promptPlaceholder:"Beskriv bilden du vill skapa...",model:"Modell",selectModel:"Välj modell",noModels:"Inga bildgenereringsmodeller tillgängliga",configurePlugin:"Konfigurera ett tillägg med bildgenereringsstöd",size:"Storlek",quality:"Kvalitet",style:"Stil",generate:"Generera",generating:"Genererar...",success:"Bilden genererades",failed:"Kunde inte generera bild",enterPrompt:"Ange en prompt",promptTooLong:"Prompten överstiger maxlängden på {{max}} tecken"},ob={title:"Något gick fel",description:"Vi stötte på ett oväntat fel. Försök att uppdatera sidan.",tryAgain:"Uppdatera sidan",goHome:"Gå till startsidan",errorDetails:"Feldetaljer (utveckling)"},sb={title:"Dokument",upload:"Ladda upp dokument",uploading:"Laddar upp...",noDocuments:"Inga dokument uppladdade",uploadHint:"Ladda upp dokument för att använda i dina konversationer",delete:"Radera",deleteConfirm:"Är du säker på att du vill radera detta dokument?",deleteSuccess:"Dokumentet raderades",deleteFailed:"Kunde inte radera dokument",uploadSuccess:"Dokumentet laddades upp",uploadFailed:"Kunde inte ladda upp dokument",types:"Stöder: PDF, TXT, MD, DOCX",unsupportedFileType:"Endast PDF- och TXT-filer stöds",fileSizeTooLarge:"Filstorleken måste vara mindre än 10MB",uploadSuccessWithName:'Dokumentet "{{name}}" laddades upp',removeSuccess:"Dokumentet togs bort",removeFailed:"Kunde inte ta bort dokument",removeError:"Ett fel uppstod vid borttagning av dokumentet",clickToUpload:"Klicka för att ladda upp",orDragAndDrop:"eller dra och släpp",fileTypesAndSize:"PDF- eller TXT-filer upp till 10MB",uploadedDocuments:"Uppladdade dokument",removeDocument:"Ta bort dokument"},lb={speak:"Tala",stop:"Stoppa",speaking:"Talar...",generateFailed:"Kunde inte generera tal",playbackFailed:"Ljuduppspelning misslyckades",stopSpeaking:"Sluta tala",generatingSpeech:"Genererar tal...",readAloud:"Läs högt"},db={title:"Artefakter",code:"Kod",preview:"Förhandsgranskning",copy:"Kopiera kod",copied:"Kopierat!",download:"Ladda ner",expand:"Expandera",collapse:"Minimera",openInNewTab:"Öppna i ny flik",invalidSvg:"Ogiltigt SVG-innehåll",invalidJson:"Ogiltigt JSON-innehåll",previewMode:"Förhandsgranskningsläge",codeMode:"Kodläge",copyContent:"Kopiera innehåll",openInPanel:"Öppna i panel",openInNewWindow:"Öppna i nytt fönster",created:"Skapad",closePanelEsc:"Stäng panel (Esc)",copyButton:"Kopiera",open:"Öppna",dragEdgeToResize:"Dra i kanten för att ändra storlek"},cb={title:"Importera och exportera personas",description:"Exportera dina personas för att dela dem eller importera personas från andra",exportPersonas:"Exportera personas",importPersonas:"Importera personas",noPersonasToExport:"Inga personas att exportera",personasAvailable:"{{count}} persona tillgänglig",personasAvailable_plural:"{{count}} personas tillgängliga",exportAll:"Exportera alla",uploadJsonFile:"Ladda upp JSON-fil",pasteJsonLabel:"Klistra in JSON-data",pasteJsonPlaceholder:"Klistra in persona JSON-data här...",importing:"Importerar...",importButton:"Importera persona(s)",expectedFormat:"Förväntat JSON-format:",exportSuccess:'Persona "{{name}}" exporterades',exportFailed:"Kunde inte exportera persona",exportAllSuccess:"Alla {{count}} personas exporterades",exportAllFailed:"Kunde inte exportera personas",pasteJsonData:"Klistra in persona JSON-data",importMultipleSuccess:"Importerade {{count}} personas",importMultipleFailed:"Kunde inte importera {{count}} personas",importNoneFailed:"Kunde inte importera några personas",importSuccess:"Persona importerades",importFailed:"Kunde inte importera persona"},ub={common:Bh,brand:Kh,auth:Hh,setup:Rh,chat:Uh,sidebar:$h,user:Vh,settings:Wh,models:qh,personas:Jh,gallery:_h,errors:Yh,keyboard:Zh,modelManager:Xh,personaManager:Qh,personaForm:eb,personaCard:ab,userManager:tb,chatMessage:nb,imageGallery:rb,imageGeneration:ib,errorBoundary:ob,documents:sb,ttsButton:lb,artifacts:db,personaImportExport:cb},mb={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:"กำหนดเอง",mode:"โหมด",multiUser:"หลายผู้ใช้",remove:"ลบ"},pb={name:"Libre WebUI",shortName:"Libre"},gb={login:{title:"ยินดีต้อนรับกลับ",subtitle:"เข้าสู่ระบบเพื่อดำเนินการต่อ",username:"ชื่อผู้ใช้",usernamePlaceholder:"ป้อนชื่อผู้ใช้",password:"รหัสผ่าน",passwordPlaceholder:"ป้อนรหัสผ่าน",signIn:"เข้าสู่ระบบ",signingIn:"กำลังเข้าสู่ระบบ...",noAccount:"ยังไม่มีบัญชี?",signUpHere:"สมัครที่นี่",loginSuccess:"เข้าสู่ระบบสำเร็จ!",loginFailed:"เข้าสู่ระบบล้มเหลว",checkCredentials:"เข้าสู่ระบบล้มเหลว กรุณาตรวจสอบข้อมูลประจำตัว",enterBoth:"กรุณาป้อนชื่อผู้ใช้และรหัสผ่าน",githubSuccess:"เข้าสู่ระบบ GitHub สำเร็จ!",githubFailed:"การยืนยันตัวตน GitHub ล้มเหลว",githubVerifyFailed:"ไม่สามารถยืนยันการยืนยันตัวตน GitHub"},signup:{title:"สร้างบัญชี",subtitle:"ลงทะเบียนสำหรับบัญชีใหม่",username:"ชื่อผู้ใช้",usernamePlaceholder:"เลือกชื่อผู้ใช้",email:"อีเมล",emailPlaceholder:"your@email.com",password:"รหัสผ่าน",passwordPlaceholder:"เลือกรหัสผ่าน",confirmPassword:"ยืนยันรหัสผ่าน",confirmPasswordPlaceholder:"ยืนยันรหัสผ่านของคุณ",createAccount:"สร้างบัญชี",creatingAccount:"กำลังสร้างบัญชี...",hasAccount:"มีบัญชีอยู่แล้ว?",signInHere:"เข้าสู่ระบบที่นี่",signupSuccess:"สร้างบัญชีสำเร็จ!",signupFailed:"สมัครสมาชิกล้มเหลว",tryAgain:"สมัครสมาชิกล้มเหลว กรุณาลองอีกครั้ง",usernameRequired:"ต้องระบุชื่อผู้ใช้และรหัสผ่าน",passwordMismatch:"รหัสผ่านไม่ตรงกัน",passwordTooShort:"รหัสผ่านต้องมีอย่างน้อย 6 ตัวอักษร"},logout:{button:"ออกจากระบบ",success:"ออกจากระบบสำเร็จ"},oauth:{continueWith:"ดำเนินการต่อด้วย {{provider}}",connectingTo:"กำลังเชื่อมต่อกับ {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hb={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:"ป้อนรหัสผ่าน (ขั้นต่ำ 6 ตัวอักษร)",confirmPlaceholder:"ยืนยันรหัสผ่านของคุณ",creating:"กำลังสร้าง...",createAdmin:"สร้างผู้ดูแลระบบ",success:"สร้างบัญชีผู้ดูแลระบบสำเร็จ!",failed:"ไม่สามารถสร้างบัญชีผู้ดูแลระบบ",fillAllFields:"กรุณากรอกข้อมูลทุกช่อง",note:"นี่จะเป็นบัญชีผู้ดูแลระบบหลักสำหรับ Libre WebUI ของคุณ"},encryptionKey:{title:"บันทึกคีย์เข้ารหัสของคุณ",subtitle:"สำคัญ: บันทึกคีย์นี้",description:"คีย์เข้ารหัสนี้ปกป้องข้อมูลที่ละเอียดอ่อนของคุณ เก็บไว้อย่างปลอดภัย - คุณจะต้องใช้หากต้องกู้คืนฐานข้อมูล",warning:"คำเตือน",warningText:"หากคุณสูญเสียคีย์นี้และต้องกู้คืนฐานข้อมูล ข้อมูลที่เข้ารหัส (คีย์ API, การตั้งค่า) จะไม่สามารถกู้คืนได้",label:"คีย์เข้ารหัสของคุณ",loading:"กำลังโหลด...",copyToClipboard:"คัดลอกไปยังคลิปบอร์ด",copied:"คัดลอกคีย์เข้ารหัสไปยังคลิปบอร์ดแล้ว!",copyFailed:"ไม่สามารถคัดลอกคีย์ไปยังคลิปบอร์ด",envNote:"คีย์นี้ยังถูกบันทึกในไฟล์ backend/.env เป็น ENCRYPTION_KEY",acknowledgment:"ฉันได้บันทึกคีย์เข้ารหัสในที่ปลอดภัยและเข้าใจว่าการสูญเสียอาจส่งผลให้ข้อมูลสูญหาย",confirmRequired:"กรุณายืนยันว่าคุณได้บันทึกคีย์เข้ารหัสแล้ว",continue:"ดำเนินการต่อไปยัง Libre WebUI"}},bb={greeting:{morning:"สวัสดีตอนเช้า",afternoon:"สวัสดีตอนบ่าย",evening:"สวัสดีตอนเย็น",night:"สวัสดีตอนดึก"},welcome:{helpToday:"วันนี้ฉันช่วยอะไรได้บ้าง?",helpTonight:"คืนนี้ฉันช่วยอะไรได้บ้าง?"},input:{placeholder:"ส่งข้อความ",messagePlaceholder:"ข้อความ...",attachImages:"แนบรูปภาพ",attachments:"ไฟล์แนบและฟีเจอร์ขั้นสูง",sendMessage:"ส่งข้อความ",stopGeneration:"หยุดการสร้าง"},session:{new:"แชทใหม่",private:"ส่วนตัว",privateMode:"โหมดส่วนตัว",privateDescription:"การสนทนานี้จะไม่ถูกบันทึก",privateTooltip:"เริ่มการสนทนาส่วนตัวที่จะไม่ถูกบันทึก",deleteConfirm:"คุณแน่ใจหรือไม่ว่าต้องการลบแชทนี้?",generatingTitle:"กำลังสร้างชื่อเรื่อง",noChats:"ยังไม่มีแชท",createFirst:"สร้างแชทแรกของคุณด้านบน",chats:"แชท",renameChat:"เปลี่ยนชื่อแชท",deleteChat:"ลบแชท"},persona:{applied:"ใช้เพอร์โซน่าแล้ว",label:"เพอร์โซน่า"},model:{updated:"อัปเดตโมเดลแล้ว",noModels:"ไม่มีโมเดลที่ใช้ได้",noModelsDescription:"ไม่มีโมเดลที่ใช้ได้ ตรวจสอบให้แน่ใจว่า Ollama กำลังทำงานและติดตั้งโมเดลแล้ว",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"ไม่มีโมเดลที่ใช้ได้ กรุณาตรวจสอบให้แน่ใจว่า Ollama กำลังทำงานและติดตั้งโมเดลแล้ว"},footer:{disclaimer:"LLM อาจทำผิดพลาด - ตรวจสอบข้อมูลสำคัญ",images:"{{count}} รูปภาพ",images_plural:"{{count}} รูปภาพ",structuredOutput:"เอาต์พุตที่มีโครงสร้าง"},mediaUpload:{dropImagesHere:"วางรูปภาพที่นี่หรือ",supportedFormats:"รองรับ: JPG, PNG, GIF, WebP (สูงสุด 10MB ต่อไฟล์)",browse:"เรียกดู"},structuredOutput:{title:"รูปแบบการตอบกลับ",none:"ไม่มี (ภาษาธรรมชาติ)",noneDescription:"การตอบกลับภาษาธรรมชาติเริ่มต้น",json:"JSON",jsonDescription:"รูปแบบ JSON ที่มีโครงสร้าง",list:"รายการ",listDescription:"อาร์เรย์ของรายการ",summary:"สรุป",summaryDescription:"สรุปเอกสารพร้อมประเด็นสำคัญ",analysis:"การวิเคราะห์",analysisDescription:"การวิเคราะห์ที่มีโครงสร้างพร้อมข้อดี/ข้อเสีย",custom:"สกีมากำหนดเอง",customDescription:"กำหนดสกีมา JSON ของคุณเอง",customSchema:"สกีมา JSON กำหนดเอง",schemaPreview:"ดูตัวอย่างสกีมา",applySchema:"ใช้สกีมา",cancel:"ยกเลิก",enabled:"เปิดใช้เอาต์พุตที่มีโครงสร้างแล้ว"}},kb={navigation:{chat:"แชท",models:"โมเดล",personas:"เพอร์โซน่า",imagine:"จินตนาการ",settings:"การตั้งค่า",userManagement:"จัดการผู้ใช้",signOut:"ออกจากระบบ"},toggleSize:"สลับขนาดแถบด้านข้าง",expandSidebar:"ขยายแถบด้านข้าง"},fb={menu:{changePicture:"เปลี่ยนรูปภาพ",settings:"การตั้งค่า",userManagement:"จัดการผู้ใช้",logout:"ออกจากระบบ"},avatar:{title:"เปลี่ยนรูปโปรไฟล์",updated:"อัปเดตรูปโปรไฟล์แล้ว",updateFailed:"ไม่สามารถอัปเดตรูปโปรไฟล์",saving:"กำลังบันทึก..."},profile:{noEmail:"ไม่มีอีเมล"}},yb={title:"การตั้งค่า",tabs:{appearance:"รูปลักษณ์",model:"โมเดล",systemMessage:"ข้อความระบบ",plugins:"ปลั๊กอิน",generation:"การสร้าง",documents:"เอกสาร",tts:"ข้อความเป็นเสียง",imageGen:"สร้างรูปภาพ",data:"ข้อมูล",about:"เกี่ยวกับ"},appearance:{title:"รูปลักษณ์",language:{title:"ภาษา",description:"เลือกภาษาที่คุณต้องการ"},theme:{title:"ธีม",light:"สว่าง",dark:"มืด",amoled:"ดำสนิท",system:"ระบบ"},chatInterface:{title:"อินเทอร์เฟซแชท",showUsername:"แสดงชื่อผู้ใช้",showUsernameDescription:"แสดงชื่อผู้ใช้ในข้อความแชท"},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:"เพอร์โซน่า"},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 Key แล้ว",apiKeyConfiguration:"การกำหนดค่า API Key",apiKeyEnvAlternative:"หรือตั้งค่าตัวแปร",environmentVariable:"ตัวแปรสภาพแวดล้อม",apiKeyConfigured:"กำหนดค่า API Key แล้ว",apiKeyPlaceholder:"ป้อน API Key ของคุณ...",saveApiKey:"บันทึก API Key",apiKey:{title:"API Key",placeholder:"ป้อน API Key",save:"บันทึก Key",remove:"ลบ Key",configured:"กำหนดค่า API Key แล้ว",notConfigured:"ต้องการ API Key",saved:"บันทึก API Key สำเร็จ",removed:"ลบ API Key แล้ว",saveFailed:"ไม่สามารถบันทึก API Key",removeFailed:"ไม่สามารถลบ API Key",enterKey:"กรุณาป้อน API Key"}},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:"Seed",optional:"ไม่บังคับ",random:"สุ่ม",seedDescription:"ตั้ง seed เฉพาะสำหรับผลลัพธ์ที่ทำซ้ำได้",advancedOptions:"ตัวเลือกขั้นสูง",presencePenalty:"โทษการมีอยู่",presencePenaltyDescription:"ลงโทษโทเค็นที่ปรากฏในบริบท",frequencyPenalty:"โทษความถี่",frequencyPenaltyDescription:"ลงโทษโทเค็นที่ใช้บ่อย",stopSequences:"ลำดับหยุด",commaSeparated:"คั่นด้วยเครื่องหมายจุลภาค",stopSequencesDescription:"โทเค็นกำหนดเองที่จะหยุดการสร้างเมื่อพบ",resetDefaults:"รีเซ็ตเป็นค่าเริ่มต้น",saveOptions:"บันทึกตัวเลือก",embeddingSettings:"การตั้งค่า Embedding",enableEmbeddings:"เปิดใช้ Document Embeddings"},documents:{title:"การตั้งค่าเอกสาร",embeddings:{title:"Embeddings",enable:"เปิดใช้ document embeddings",model:"โมเดล Embedding",modelDescription:"เลือกโมเดลที่ใช้สำหรับ document embedding",chunkSize:"ขนาด Chunk",chunkSizeInTokens:"(เป็นโทเค็น)",chunkSizeDescription:"ขนาดของ text chunks สำหรับ embedding",chunkOverlap:"Chunk Overlap",chunkOverlapInTokens:"(เป็นโทเค็น)",chunkOverlapDescription:"การทับซ้อนระหว่าง chunks ที่ต่อเนื่องกัน",similarityThreshold:"เกณฑ์ความคล้ายคลึง",similarityDescription:"คะแนนความคล้ายคลึงขั้นต่ำเพื่อรวมผลลัพธ์",status:"สถานะ Embedding",statusLabel:"สถานะ",available:"พร้อมใช้งาน",unavailable:"ไม่พร้อมใช้งาน",chunksWithEmbeddings:"Chunks ที่มี embeddings",coverage:"ความครอบคลุม",regenerate:"สร้าง Embeddings ใหม่",regenerating:"กำลังสร้างใหม่..."}},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:"ข้อผิดพลาด"},about:{title:"เกี่ยวกับ",versionLabel:"เวอร์ชัน",ollama:{title:"สถานะ Ollama",version:"เวอร์ชัน",healthy:"สมบูรณ์",unhealthy:"ไม่สมบูรณ์"},stats:{models:"โมเดล",sessions:"เซสชัน"},features:{privacy:{title:"ความเป็นส่วนตัวเป็นอันดับแรก",description:"ข้อมูลของคุณอยู่ในอุปกรณ์ของคุณ"},openSource:{title:"โอเพ่นซอร์ส",description:"ซอฟต์แวร์ฟรีและโอเพ่นซอร์ส"},localInference:{title:"การประมวลผลในเครื่อง",description:"รันโมเดล AI ในเครื่องด้วย Ollama"}},openSourceBy:"โอเพ่นซอร์สโดย {{company}}",links:{title:"ลิงก์",github:"GitHub",githubDescription:"ดูซอร์สโค้ดและมีส่วนร่วม",website:"เว็บไซต์",websiteDescription:"เยี่ยมชมเว็บไซต์ของเรา",ollama:"Ollama",ollamaDescription:"เรียนรู้เพิ่มเติมเกี่ยวกับ Ollama",documentation:"เอกสาร",reportIssue:"รายงานปัญหา",reportIssueDescription:"รายงานบั๊กและคำขอฟีเจอร์"},version:"เวอร์ชัน {{version}}"}},vb={title:"โมเดล",subtitle:"ดาวน์โหลด จัดการ และตรวจสอบโมเดล Ollama ของคุณ",installed:"โมเดลที่ติดตั้ง",available:"โมเดลที่มี",pull:"ดาวน์โหลดโมเดล",pulling:"กำลังดาวน์โหลด...",delete:"ลบโมเดล",deleting:"กำลังลบ...",size:"ขนาด",modified:"แก้ไขล่าสุด",family:"ตระกูล",parameters:"พารามิเตอร์",quantization:"การควอนไทเซชัน",noModels:"ไม่มีโมเดลที่ติดตั้ง",pullFirst:"ดาวน์โหลดโมเดลเพื่อเริ่มต้น"},xb={title:"เพอร์โซน่า",create:"สร้างเพอร์โซน่า",edit:"แก้ไขเพอร์โซน่า",delete:"ลบเพอร์โซน่า",name:"ชื่อ",description:"คำอธิบาย",systemPrompt:"Prompt ระบบ",model:"โมเดล",avatar:"อวาตาร์",background:"พื้นหลัง",noPersonas:"ยังไม่มีเพอร์โซน่า",createFirst:"สร้างเพอร์โซน่าแรกของคุณเพื่อปรับแต่งประสบการณ์การแชท"},Sb={title:"แกลเลอรี",subtitle:"แกลเลอรีรูปภาพที่สร้างโดย AI ของคุณ",imageCount:"{{count}} รูปภาพ",generate:"สร้างรูปภาพ",generateDescription:"สร้างรูปภาพด้วย AI",generating:"กำลังสร้าง...",prompt:"Prompt",promptPlaceholder:"อธิบายรูปภาพที่คุณต้องการสร้าง...",noImages:"ยังไม่มีรูปภาพที่สร้าง",download:"ดาวน์โหลด",delete:"ลบ",regenerate:"สร้างใหม่",model:"โมเดล",size:"ขนาด",quality:"คุณภาพ",created:"สร้างเมื่อ"},wb={generic:"เกิดข้อผิดพลาด",network:"ข้อผิดพลาดเครือข่าย กรุณาตรวจสอบการเชื่อมต่อ",unauthorized:"คุณไม่ได้รับอนุญาตให้ดำเนินการนี้",notFound:"ไม่พบทรัพยากรที่ร้องขอ",serverError:"ข้อผิดพลาดเซิร์ฟเวอร์ กรุณาลองอีกครั้งภายหลัง",validation:"กรุณาตรวจสอบข้อมูลที่ป้อนและลองอีกครั้ง"},Pb={title:"คีย์ลัด",toggleSidebar:"สลับแถบด้านข้าง",openSettings:"เปิดการตั้งค่า",toggleDarkMode:"สลับโหมดมืด",showShortcuts:"แสดงคีย์ลัด",closeModals:"ปิดหน้าต่าง",groups:{navigation:"การนำทาง",settings:"การตั้งค่า",general:"ทั่วไป",chat:"แชท"},actions:{sendMessage:"ส่งข้อความ",newLine:"บรรทัดใหม่ในข้อความ"},footer:"กด {{key1}} หรือ {{key2}} เพื่อแสดงความช่วยเหลือนี้",tooltip:"คีย์ลัด"},Mb={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:"กรุณาป้อนชื่อโมเดล"},progress:{starting:"กำลังเริ่มต้น...",pulling:"กำลังดาวน์โหลดโมเดล...",verifying:"กำลังตรวจสอบความถูกต้อง...",writing:"กำลังเขียน manifest...",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:"ทดสอบ Embeddings",generateVectors:"สร้างเวกเตอร์",healthCheck:"ตรวจสอบสุขภาพ",testConnection:"ทดสอบการเชื่อมต่อ",healthy:"Ollama สมบูรณ์!"},modals:{details:{title:"รายละเอียดโมเดล",info:"ข้อมูลโมเดล",family:"ตระกูล",parameters:"พารามิเตอร์",quantization:"การควอนไทเซชัน",format:"รูปแบบ",systemPrompt:"Prompt ระบบ",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
|
|
23
|
+
SYSTEM You are a helpful assistant.`,docs:"เอกสาร Modelfile",docsLink:"สำหรับอ้างอิงไวยากรณ์",creating:"กำลังสร้าง...",button:"สร้างโมเดล",success:"สร้างโมเดล {{name}} สำเร็จ",failed:"ไม่สามารถสร้างโมเดล",enterBoth:"กรุณาป้อนชื่อโมเดลและเนื้อหา Modelfile"},embeddings:{title:"ทดสอบ Embeddings",model:"โมเดล Embedding",selectModel:"เลือกโมเดล...",recommended:"แนะนำ: nomic-embed-text, mxbai-embed-large",input:"ข้อความนำเข้า",placeholder:"ป้อนข้อความเพื่อสร้าง embeddings...",generating:"กำลังสร้าง...",button:"สร้าง Embeddings",result:"ผลลัพธ์ ({{count}} มิติ)",success:"สร้างเวกเตอร์ embedding {{count}} มิติ",failed:"ไม่สามารถสร้าง embeddings",enterBoth:"กรุณาเลือกโมเดลและป้อนข้อความ"}},huggingface:{browseAll:"ดูทั้งหมดบน HuggingFace",checkingGguf:"กำลังค้นหาไฟล์ GGUF...",noGgufAvailable:"ไม่มีไฟล์ GGUF สำหรับดึงไปยัง Ollama โดยตรง",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:"อัปเดตล่าสุด"}}},Db={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}} เพอร์โซน่า"},Ab={title:{create:"สร้างเพอร์โซน่าใหม่",edit:"แก้ไขเพอร์โซน่า"},subtitle:{create:"สร้างเพอร์โซน่า AI ใหม่พร้อมบุคลิกภาพกำหนดเอง ระบบความจำ และความสามารถในการเรียนรู้แบบปรับตัว",edit:"ปรับแต่งเพอร์โซน่า AI ของคุณด้วยความจำขั้นสูง การเรียนรู้แบบปรับตัว และพารามิเตอร์อัจฉริยะ"},loading:"กำลังโหลดฟอร์ม...",saved:"บันทึกแล้ว",tabs:{basic:"พื้นฐาน",parameters:"พารามิเตอร์",memory:"ความจำและการเรียนรู้",advanced:"ขั้นสูง"},basic:{name:"ชื่อ",namePlaceholder:"ป้อนชื่อเพอร์โซน่า",model:"โมเดล",selectModel:"เลือกโมเดล",description:"คำอธิบาย",descriptionPlaceholder:"อธิบายเพอร์โซน่าของคุณ...",systemPrompt:"Prompt ระบบ",systemPromptPlaceholder:"ป้อน prompt ระบบที่กำหนดพฤติกรรมเพอร์โซน่าของคุณ...",systemPromptHint:"Prompt ระบบกำหนดว่าเพอร์โซน่าของคุณจะทำงานและตอบสนองอย่างไร"},parameters:{temperature:"อุณหภูมิ",temperatureHint:"ควบคุมความสร้างสรรค์เทียบกับความสม่ำเสมอ",topP:"Top-P",topPHint:"ควบคุมความหลากหลายของการตอบกลับ",topK:"Top-K",topKHint:"จำกัดคำศัพท์เป็น top-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:"โมเดล Embedding",embeddingHint:"เลือกโมเดลที่ใช้สำหรับการเข้ารหัสความจำและการค้นหาเชิงความหมาย โมเดล embedding แสดงก่อน ตามด้วยโมเดลอื่นที่มี",noModels:"ไม่พบโมเดล",embeddingModels:"โมเดล Embedding",otherModels:"โมเดลอื่น",installHint:"ติดตั้งโมเดล embedding:",recommended:"แนะนำ: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"เกี่ยวกับการตั้งค่าขั้นสูง",aboutDescription:"โมเดล embedding ถูกใช้โดยระบบความจำเพื่อเข้าใจความหมายเชิงความหมายและค้นหาความจำที่เกี่ยวข้องระหว่างการสนทนา เลือกโมเดลที่ตรงกับกรณีการใช้งานและทรัพยากรที่มี"},actions:{cancel:"ยกเลิก",save:"บันทึก",saving:"กำลังบันทึก...",saveClose:"บันทึกและปิด",create:"สร้าง"},success:{created:"สร้างเพอร์โซน่าแล้ว",updated:"อัปเดตเพอร์โซน่าแล้ว"},error:{saveFailed:"ไม่สามารถบันทึก"}},zb={enhanced:"ปรับปรุงแล้ว",systemPrompt:"Prompt ระบบ",memories:"ความจำ",use:"ใช้",editTooltip:"แก้ไขเพอร์โซน่า",downloadTooltip:"ดาวน์โหลดเพอร์โซน่า",backup:"สำรองข้อมูล",exportDNA:"ส่งออก DNA",wipeMemories:"ล้างความจำ",wipeConfirm:"คุณแน่ใจหรือไม่ว่าต้องการล้างความจำทั้งหมดของเพอร์โซน่านี้? การดำเนินการนี้ไม่สามารถยกเลิกได้",wipeSuccess:"ล้าง {{count}} ความจำแล้ว",backupSuccess:"ดาวน์โหลดสำรองข้อมูลเพอร์โซน่าสำเร็จ",dnaSuccess:"ส่งออก DNA เพอร์โซน่าสำเร็จ",failed:"ไม่สามารถ {{action}}"},jb={title:"จัดการผู้ใช้",subtitle:"จัดการบัญชีและสิทธิ์ผู้ใช้",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:"ไม่สามารถอัปเดตผู้ใช้"}},Tb={you:"คุณ",assistant:"ผู้ช่วย",system:"ระบบ",copy:"คัดลอก",copyMessage:"คัดลอกข้อความ",copied:"คัดลอกแล้ว!",regenerate:"สร้างใหม่",regenerateResponse:"สร้างการตอบกลับใหม่",edit:"แก้ไข",editSystemMessage:"แก้ไขข้อความระบบ",saveChanges:"บันทึกการเปลี่ยนแปลง",cancelEditing:"ยกเลิกการแก้ไข",delete:"ลบ",deleteConfirm:"ลบข้อความนี้?",branch:"สาขา",speaking:"กำลังพูด...",speakMessage:"พูดข้อความ",stopSpeaking:"หยุดพูด",showMore:"แสดงเพิ่มเติม",showLess:"แสดงน้อยลง",thinking:"กำลังคิด",systemMessagePlaceholder:"ป้อนข้อความระบบของคุณ...",fullSizeImage:"รูปภาพขนาดเต็ม",startConversation:"เริ่มการสนทนา",startConversationDescription:"ส่งข้อความเพื่อเริ่มแชทกับผู้ช่วย AI ของคุณ ถามคำถาม ขอความช่วยเหลือเรื่องโค้ด หรือสนทนาตามธรรมชาติ",scrollToBottom:"เลื่อนไปด้านล่าง",newMessages:"ข้อความใหม่"},Nb={title:"แกลเลอรีรูปภาพ",noImages:"ยังไม่มีรูปภาพ",noImagesHint:"สร้างรูปภาพแรกของคุณโดยใช้แผงด้านขวา",delete:"ลบ",download:"ดาวน์โหลด",deleteConfirm:"คุณแน่ใจหรือไม่ว่าต้องการลบรูปภาพนี้?",deleteSuccess:"ลบรูปภาพแล้ว",deleteFailed:"ไม่สามารถลบรูปภาพ",downloadFailed:"ไม่สามารถดาวน์โหลดรูปภาพ",loadMore:"โหลดเพิ่มเติม ({{current}} จาก {{total}})",loadFailed:"ไม่สามารถโหลดแกลเลอรี"},Ib={title:"สร้างรูปภาพ",prompt:"Prompt",promptPlaceholder:"อธิบายรูปภาพที่คุณต้องการสร้าง...",model:"โมเดล",selectModel:"เลือกโมเดล",noModels:"ไม่มีโมเดลสร้างรูปภาพที่ใช้ได้",configurePlugin:"กำหนดค่าปลั๊กอินที่รองรับการสร้างรูปภาพ",size:"ขนาด",quality:"คุณภาพ",style:"สไตล์",generate:"สร้าง",generating:"กำลังสร้าง...",success:"สร้างรูปภาพสำเร็จ",failed:"ไม่สามารถสร้างรูปภาพ",enterPrompt:"กรุณาป้อน prompt",promptTooLong:"พรอมต์เกินความยาวสูงสุด {{max}} ตัวอักษร"},Cb={title:"เกิดข้อผิดพลาด",description:"เราพบข้อผิดพลาดที่ไม่คาดคิด กรุณาลองรีเฟรชหน้า",tryAgain:"รีเฟรชหน้า",goHome:"ไปหน้าแรก",errorDetails:"รายละเอียดข้อผิดพลาด (การพัฒนา)"},Fb={title:"เอกสาร",upload:"อัปโหลดเอกสาร",uploading:"กำลังอัปโหลด...",noDocuments:"ยังไม่มีเอกสารที่อัปโหลด",uploadHint:"อัปโหลดเอกสารเพื่อใช้ในการสนทนาของคุณ",delete:"ลบ",deleteConfirm:"คุณแน่ใจหรือไม่ว่าต้องการลบเอกสารนี้?",deleteSuccess:"ลบเอกสารแล้ว",deleteFailed:"ไม่สามารถลบเอกสาร",uploadSuccess:"อัปโหลดเอกสารสำเร็จ",uploadFailed:"ไม่สามารถอัปโหลดเอกสาร",types:"รองรับ: PDF, TXT, MD, DOCX",unsupportedFileType:"รองรับเฉพาะไฟล์ PDF และ TXT",fileSizeTooLarge:"ขนาดไฟล์ต้องน้อยกว่า 10MB",uploadSuccessWithName:'อัปโหลดเอกสาร "{{name}}" สำเร็จ',removeSuccess:"ลบเอกสารสำเร็จ",removeFailed:"ไม่สามารถลบเอกสาร",removeError:"เกิดข้อผิดพลาดขณะลบเอกสาร",clickToUpload:"คลิกเพื่ออัปโหลด",orDragAndDrop:"หรือลากและวาง",fileTypesAndSize:"ไฟล์ PDF หรือ TXT ขนาดสูงสุด 10MB",uploadedDocuments:"เอกสารที่อัปโหลด",removeDocument:"ลบเอกสาร"},Ob={speak:"พูด",stop:"หยุด",speaking:"กำลังพูด...",generateFailed:"ไม่สามารถสร้างเสียง",playbackFailed:"การเล่นเสียงล้มเหลว",stopSpeaking:"หยุดพูด",generatingSpeech:"กำลังสร้างเสียง...",readAloud:"อ่านออกเสียง"},Eb={title:"Artifacts",code:"โค้ด",preview:"ดูตัวอย่าง",copy:"คัดลอกโค้ด",copied:"คัดลอกแล้ว!",download:"ดาวน์โหลด",expand:"ขยาย",collapse:"ยุบ",openInNewTab:"เปิดในแท็บใหม่",invalidSvg:"เนื้อหา SVG ไม่ถูกต้อง",invalidJson:"เนื้อหา JSON ไม่ถูกต้อง",previewMode:"โหมดดูตัวอย่าง",codeMode:"โหมดโค้ด",copyContent:"คัดลอกเนื้อหา",openInPanel:"เปิดในแผง",openInNewWindow:"เปิดในหน้าต่างใหม่",created:"สร้างเมื่อ",closePanelEsc:"ปิดแผง (Esc)",copyButton:"คัดลอก",open:"เปิด",dragEdgeToResize:"ลากขอบเพื่อปรับขนาด"},Lb={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:"ไม่สามารถนำเข้าเพอร์โซน่า"},Gb={common:mb,brand:pb,auth:gb,setup:hb,chat:bb,sidebar:kb,user:fb,settings:yb,models:vb,personas:xb,gallery:Sb,errors:wb,keyboard:Pb,modelManager:Mb,personaManager:Db,personaForm:Ab,personaCard:zb,userManager:jb,chatMessage:Tb,imageGallery:Nb,imageGeneration:Ib,errorBoundary:Cb,documents:Fb,ttsButton:Ob,artifacts:Eb,personaImportExport:Lb},Bb={loading:"Yükleniyor...",save:"Kaydet",saving:"Kaydediliyor...",cancel:"İptal",delete:"Sil",edit:"Düzenle",close:"Kapat",back:"Geri",next:"İleri",confirm:"Onayla",error:"Hata",success:"Başarılı",warning:"Uyarı",or:"veya",optional:"isteğe bağlı",enabled:"Etkin",disabled:"Devre Dışı",on:"Açık",off:"Kapalı",yes:"Evet",no:"Hayır",search:"Ara",noResults:"Sonuç bulunamadı",retry:"Tekrar Dene",refresh:"Yenile",download:"İndir",upload:"Yükle",export:"Dışa Aktar",import:"İçe Aktar",reset:"Sıfırla",apply:"Uygula",clear:"Temizle",all:"Tümü",none:"Hiçbiri",default:"Varsayılan",custom:"Özel",mode:"Mod",multiUser:"Çok Kullanıcılı",remove:"Kaldır"},Kb={name:"Libre WebUI",shortName:"Libre"},Hb={login:{title:"Tekrar Hoş Geldiniz",subtitle:"Devam etmek için hesabınıza giriş yapın",username:"Kullanıcı Adı",usernamePlaceholder:"Kullanıcı adınızı girin",password:"Şifre",passwordPlaceholder:"Şifrenizi girin",signIn:"Giriş Yap",signingIn:"Giriş yapılıyor...",noAccount:"Hesabınız yok mu?",signUpHere:"Buradan kayıt olun",loginSuccess:"Giriş başarılı!",loginFailed:"Giriş başarısız",checkCredentials:"Giriş başarısız. Lütfen bilgilerinizi kontrol edin.",enterBoth:"Lütfen kullanıcı adı ve şifrenizi girin",githubSuccess:"GitHub girişi başarılı!",githubFailed:"GitHub kimlik doğrulaması başarısız",githubVerifyFailed:"GitHub kimlik doğrulaması doğrulanamadı"},signup:{title:"Hesap Oluştur",subtitle:"Yeni hesabınız için kayıt olun",username:"Kullanıcı Adı",usernamePlaceholder:"Bir kullanıcı adı seçin",email:"E-posta",emailPlaceholder:"email@adresiniz.com",password:"Şifre",passwordPlaceholder:"Bir şifre belirleyin",confirmPassword:"Şifre Onayı",confirmPasswordPlaceholder:"Şifrenizi tekrar girin",createAccount:"Hesap Oluştur",creatingAccount:"Hesap oluşturuluyor...",hasAccount:"Zaten hesabınız var mı?",signInHere:"Buradan giriş yapın",signupSuccess:"Hesap başarıyla oluşturuldu!",signupFailed:"Kayıt başarısız",tryAgain:"Kayıt başarısız. Lütfen tekrar deneyin.",usernameRequired:"Kullanıcı adı ve şifre gereklidir",passwordMismatch:"Şifreler eşleşmiyor",passwordTooShort:"Şifre en az 6 karakter olmalıdır"},logout:{button:"Çıkış Yap",success:"Başarıyla çıkış yapıldı"},oauth:{continueWith:"{{provider}} ile devam et",connectingTo:"{{provider}} bağlanılıyor...",github:"GitHub",huggingFace:"Hugging Face"}},Rb={welcome:{title:"Libre WebUI'ye Hoş Geldiniz",subtitle:"Başlayalım",description:"Libre WebUI kurulumunuzu birkaç adımda tamamlayın",createAdmin:"Yönetici Hesabı Oluştur",features:{secure:{title:"Güvenli ve Gizli",description:"Konuşmalarınız cihazınızda kalır"},fast:{title:"Hızlı ve Duyarlı",description:"Hız ve performans için optimize edilmiş"},openSource:{title:"Açık Kaynak",description:"Özgür ve açık kaynaklı yazılım"}}},admin:{title:"Yönetici Hesabı Oluştur",subtitle:"Yönetici Kurulumu",description:"Libre WebUI kurulumunuz için ilk yönetici hesabını oluşturun",usernamePlaceholder:"Yönetici kullanıcı adını girin",passwordPlaceholder:"Şifre girin (en az 6 karakter)",confirmPlaceholder:"Şifrenizi onaylayın",creating:"Oluşturuluyor...",createAdmin:"Yönetici Oluştur",success:"Yönetici hesabı başarıyla oluşturuldu!",failed:"Yönetici hesabı oluşturulamadı",fillAllFields:"Lütfen tüm alanları doldurun",note:"Bu, Libre WebUI kurulumunuz için ana yönetici hesabı olacaktır"},encryptionKey:{title:"Şifreleme Anahtarınızı Kaydedin",subtitle:"Önemli: Bu Anahtarı Kaydedin",description:"Bu şifreleme anahtarı hassas verilerinizi korur. Güvenli bir yerde saklayın - veritabanınızı geri yüklemeniz gerekirse buna ihtiyacınız olacak.",warning:"Uyarı",warningText:"Bu anahtarı kaybederseniz ve veritabanınızı geri yüklemeniz gerekirse, şifrelenmiş verileriniz (API anahtarları, tercihler) kurtarılamaz.",label:"Şifreleme Anahtarınız",loading:"Yükleniyor...",copyToClipboard:"Panoya kopyala",copied:"Şifreleme anahtarı panoya kopyalandı!",copyFailed:"Anahtar panoya kopyalanamadı",envNote:"Bu anahtar ayrıca backend/.env dosyanızda ENCRYPTION_KEY olarak kaydedilmiştir",acknowledgment:"Şifreleme anahtarımı güvenli bir yerde sakladım ve kaybetmenin veri kaybına yol açabileceğini anlıyorum.",confirmRequired:"Lütfen şifreleme anahtarını kaydettiğinizi onaylayın",continue:"Libre WebUI'ye Devam Et"}},Ub={greeting:{morning:"Günaydın",afternoon:"İyi günler",evening:"İyi akşamlar",night:"İyi geceler"},welcome:{helpToday:"Bugün size nasıl yardımcı olabilirim?",helpTonight:"Bu gece size nasıl yardımcı olabilirim?"},input:{placeholder:"Bir mesaj gönderin",messagePlaceholder:"Mesaj...",attachImages:"Görsel ekle",attachments:"Ekler ve gelişmiş özellikler",sendMessage:"Mesaj gönder",stopGeneration:"Üretimi durdur"},session:{new:"Yeni Sohbet",private:"Gizli",privateMode:"Gizli Mod",privateDescription:"Bu konuşma kaydedilmeyecek",privateTooltip:"Kaydedilmeyecek gizli bir konuşma başlat",deleteConfirm:"Bu sohbeti silmek istediğinizden emin misiniz?",generatingTitle:"Başlık oluşturuluyor",noChats:"Henüz sohbet yok",createFirst:"Yukarıdan ilk sohbetinizi oluşturun",chats:"Sohbetler",renameChat:"Sohbeti yeniden adlandır",deleteChat:"Sohbeti sil"},persona:{applied:"Persona uygulandı",label:"Persona"},model:{updated:"Model güncellendi",noModels:"Kullanılabilir model yok",noModelsDescription:"Kullanılabilir model yok. Ollama'nın çalıştığından ve modellerin yüklü olduğundan emin olun.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Kullanılabilir model yok. Lütfen Ollama'nın çalıştığından ve modellerin yüklü olduğundan emin olun."},footer:{disclaimer:"Yapay zeka hata yapabilir - önemli bilgileri doğrulayın",images:"{{count}} görsel",images_plural:"{{count}} görsel",structuredOutput:"Yapılandırılmış çıktı"},mediaUpload:{dropImagesHere:"Görselleri buraya bırakın veya",supportedFormats:"Desteklenen: JPG, PNG, GIF, WebP (maks. 10MB)",browse:"göz atın"},structuredOutput:{title:"Yanıt Formatı",none:"Yok (Doğal Dil)",noneDescription:"Varsayılan doğal dil yanıtı",json:"JSON",jsonDescription:"Yapılandırılmış JSON formatı",list:"Liste",listDescription:"Öğe dizisi",summary:"Özet",summaryDescription:"Ana noktaları içeren belge özeti",analysis:"Analiz",analysisDescription:"Artılar/eksiler içeren yapılandırılmış analiz",custom:"Özel Şema",customDescription:"Kendi JSON şemanızı tanımlayın",customSchema:"Özel JSON şeması",schemaPreview:"Şema Önizleme",applySchema:"Şemayı Uygula",cancel:"İptal",enabled:"Yapılandırılmış çıktı etkin"}},$b={navigation:{chat:"Sohbet",models:"Modeller",personas:"Personalar",imagine:"Hayal Et",settings:"Ayarlar",userManagement:"Kullanıcı Yönetimi",signOut:"Çıkış Yap"},toggleSize:"Kenar çubuğu boyutunu değiştir",expandSidebar:"Kenar çubuğunu genişlet"},Vb={menu:{changePicture:"Resmi Değiştir",settings:"Ayarlar",userManagement:"Kullanıcı Yönetimi",logout:"Çıkış Yap"},avatar:{title:"Profil Resmini Değiştir",updated:"Profil resmi güncellendi",updateFailed:"Profil resmi güncellenemedi",saving:"Kaydediliyor..."},profile:{noEmail:"E-posta belirtilmemiş"}},Wb={title:"Ayarlar",tabs:{appearance:"Görünüm",model:"Model",systemMessage:"Sistem Mesajı",plugins:"Eklentiler",generation:"Üretim",documents:"Belgeler",tts:"Metin-Konuşma",imageGen:"Görsel Üretimi",data:"Veri",about:"Hakkında"},appearance:{title:"Görünüm",language:{title:"Dil",description:"Tercih ettiğiniz dili seçin"},theme:{title:"Tema",light:"Açık",dark:"Koyu",amoled:"Saf Siyah",system:"Sistem"},chatInterface:{title:"Sohbet Arayüzü",showUsername:"Kullanıcı Adını Göster",showUsernameDescription:"Sohbet mesajlarında kullanıcı adını görüntüle"},background:{title:"Arka Plan Görseli",enable:"Arka plan görselini etkinleştir",enableDescription:"Bulanıklık efektli özel arka plan göster",blur:"Bulanıklık",opacity:"Opaklık",upload:"Arka plan görseli yükle",dragDrop:"Bir görsel sürükleyip bırakın veya göz atmak için tıklayın",chooseImage:"Görsel Seç"}},saveSettings:"Ayarları Kaydet",model:{title:"Model Ayarları",defaultModel:"Varsayılan Model",defaultModelDescription:"Bu model yeni konuşmalarda varsayılan olarak kullanılacak",selectModel:"Bir model seçin",updateAll:"Tüm Modelleri Güncelle",updateAllDescription:"Güncellemeleri kontrol et ve tüm yüklü modellerin en son sürümlerini çek",updateAllButton:"Tümünü Güncelle",updating:"Modeller güncelleniyor...",currentModelInfo:"Mevcut Model Bilgisi",name:"Ad",size:"Boyut",family:"Aile",format:"Format",status:"Durum",statusStarting:"Başlatılıyor...",statusComplete:"Tamamlandı",statusError:"Hata",bulkOperations:"Toplu İşlemler",autoTitle:{title:"Otomatik Başlık Oluşturma",enable:"Otomatik Başlığı Etkinleştir",enableDescription:"Yeni konuşmalar için otomatik başlık oluştur",taskModel:"Görev Modeli",selectTaskModel:"Görev modelini seçin",taskModelDescription:"Konuşma başlıkları oluşturmak için kullanılan model"},persona:"Kişilik"},systemMessage:{title:"Sistem Mesajı",description:"Tüm yeni konuşmalarda kullanılacak özel bir sistem mesajı belirleyin.",placeholder:"Bir sistem mesajı girin...",saved:"Sistem mesajı kaydedildi",saveFailed:"Sistem mesajı kaydedilemedi"},plugins:{title:"Eklentiler",description:"Yüklü eklentilerinizi yönetin",addNew:"Yeni Eklenti Ekle",upload:"Eklenti Yükle",addJson:"JSON Ekle",uploading:"Yükleniyor...",jsonPlaceholder:"Eklenti JSON yapılandırmasını yapıştırın...",install:"Eklentiyi Yükle",noPlugins:"Yüklü eklenti yok",noPluginsDescription:"İşlevselliği genişletmek için bir eklenti ekleyin",loading:"Eklentiler yükleniyor...",installed:"Yüklü Eklentiler",active:"Aktif Eklentiler",activeLabel:"Aktif",inactive:"Pasif",activate:"Etkinleştir",deactivate:"Devre Dışı Bırak",models:"model",apiKeySet:"API Anahtarı Ayarlandı",apiKeyConfiguration:"API Anahtarı Yapılandırması",apiKeyEnvAlternative:"Alternatif olarak,",environmentVariable:"ortam değişkenini ayarlayın",apiKeyConfigured:"API anahtarı yapılandırıldı",apiKeyPlaceholder:"API anahtarınızı girin...",saveApiKey:"API Anahtarını Kaydet",apiKey:{title:"API Anahtarı",placeholder:"API anahtarını girin",save:"Anahtarı Kaydet",remove:"Anahtarı Kaldır",configured:"API Anahtarı Yapılandırıldı",notConfigured:"API Anahtarı Gerekli",saved:"API anahtarı başarıyla kaydedildi",removed:"API anahtarı kaldırıldı",saveFailed:"API anahtarı kaydedilemedi",removeFailed:"API anahtarı kaldırılamadı",enterKey:"Lütfen bir API anahtarı girin"}},generation:{title:"Üretim Seçenekleri",description:"Yapay zekanın yanıtları nasıl ürettiğini yapılandırın",coreParameters:"Temel Parametreler",temperature:"Sıcaklık",temperatureDescription:"Rastgeleliği kontrol eder. Düşük değerler daha odaklı, yüksek değerler daha yaratıcıdır.",topP:"Top P",topPDescription:"Çekirdek örnekleme ile çeşitliliği kontrol eder. Düşük değerler olası tokenlara odaklanır.",topK:"Top K",topKDescription:"Token seçimini en olası K ile sınırlar. Devre dışı bırakmak için 0 ayarlayın.",minP:"Min P",minPDescription:"Token seçimi için minimum olasılık eşiği.",generationControl:"Üretim Kontrolü",maxTokens:"Maksimum Token",maxTokensDescription:"Yanıtta üretilecek maksimum token sayısı.",repeatPenalty:"Tekrar Cezası",repeatPenaltyDescription:"Tekrarlanan tokenleri cezalandırır. Yüksek değerler tekrarı azaltır.",contextLength:"Bağlam Uzunluğu",contextLengthDescription:"Konuşmalar için maksimum bağlam penceresi boyutu.",seed:"Tohum",optional:"isteğe bağlı",random:"Rastgele",seedDescription:"Tekrarlanabilir çıktılar için belirli bir tohum ayarlayın.",advancedOptions:"Gelişmiş Seçenekler",presencePenalty:"Varlık Cezası",presencePenaltyDescription:"Bağlamda görünen tokenleri cezalandırır.",frequencyPenalty:"Sıklık Cezası",frequencyPenaltyDescription:"Sık kullanılan tokenleri cezalandırır.",stopSequences:"Durdurma Dizileri",commaSeparated:"virgülle ayrılmış",stopSequencesDescription:"Karşılaşıldığında üretimi durduracak özel tokenler.",resetDefaults:"Varsayılanlara Sıfırla",saveOptions:"Seçenekleri Kaydet",embeddingSettings:"Gömme Ayarları",enableEmbeddings:"Belge Gömmelerini Etkinleştir"},documents:{title:"Belge Ayarları",embeddings:{title:"Gömmeler",enable:"Belge gömmelerini etkinleştir",model:"Gömme Modeli",modelDescription:"Belge gömme için kullanılan modeli seçin",chunkSize:"Parça Boyutu",chunkSizeInTokens:"(token olarak)",chunkSizeDescription:"Gömme için metin parçalarının boyutu",chunkOverlap:"Parça Örtüşmesi",chunkOverlapInTokens:"(token olarak)",chunkOverlapDescription:"Ardışık parçalar arasındaki örtüşme",similarityThreshold:"Benzerlik Eşiği",similarityDescription:"Sonuçları dahil etmek için minimum benzerlik puanı",status:"Gömme Durumu",statusLabel:"Durum",available:"Mevcut",unavailable:"Mevcut Değil",chunksWithEmbeddings:"Gömmeli parçalar",coverage:"Kapsam",regenerate:"Gömmeleri Yeniden Oluştur",regenerating:"Yeniden oluşturuluyor..."}},tts:{title:"Metin-Konuşma",description:"Mesajları sesli okumak için metin-konuşma ayarlarını yapılandırın",loadingProviders:"TTS sağlayıcıları yükleniyor...",noProviders:"TTS Sağlayıcısı Yok",noProvidersDescription:"Metin-konuşmayı etkinleştirmek için TTS destekli bir eklenti yapılandırın",enable:"TTS'yi Etkinleştir",enableDescription:"Asistan mesajları için metin-konuşmaya izin ver",autoPlay:"Yanıtları Otomatik Oynat",autoPlayDescription:"Yeni asistan mesajlarını otomatik olarak sesli oku",streamSentences:"Cümleleri Aktar",streamSentencesDescription:"Tam mesajı beklemek yerine cümle cümle ses çal. Uzun mesajlarda zaman aşımını önlemek için yerel TTS'de önerilir.",voiceConfiguration:"Ses Yapılandırması",model:"TTS Modeli",modelDescription:"Metin-konuşma üretimi için modeli seçin",voice:"Ses",selectVoice:"Bir ses seçin",voiceDescription:"Metin-konuşma için sesi seçin",speed:"Hız",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Mevcut Sağlayıcılar",models:"model",test:"Test Et",testing:"Test ediliyor...",stop:"Durdur"},imageGen:{title:"Görsel Üretimi",description:"Görsel üretimi ayarlarını ve sağlayıcılarını yapılandırın",loadingProviders:"Görsel üretim sağlayıcıları yükleniyor...",noProviders:"Görsel Üretim Sağlayıcısı Yok",noProvidersDescription:"Görsel üretim destekli bir eklenti yapılandırın",enable:"Görsel Üretimini Etkinleştir",enableDescription:"Konuşmalarda yapay zeka görsel üretimine izin ver",configuration:"Yapılandırma",model:"Model",modelDescription:"Görsel üretimi için modeli seçin",size:"Boyut",sizeDescription:"Üretilen görsellerin çözünürlüğü",quality:"Kalite",qualityDescription:"Üretilen görsellerin kalite düzeyi",style:"Stil",styleDescription:"Üretilen görseller için stil ön ayarı",availableProviders:"Mevcut Sağlayıcılar",models:"model"},data:{title:"Veri Yönetimi",export:"Veriyi Dışa Aktar",exportDescription:"Tercihler, oturumlar ve belgeler dahil tüm verilerinizi indirin.",exportAll:"Tüm Verileri Dışa Aktar",import:"Veriyi İçe Aktar",importDescription:"Önceki bir dışa aktarmadan veri içe aktarın.",importData:"Veriyi İçe Aktar",importing:"İçe aktarılıyor...",clearSessions:"Oturumları Temizle",clearSessionsDescription:"Tüm sohbet oturumlarını sil. Bu işlem geri alınamaz.",clearAll:"Tümünü Temizle",clearing:"Temizleniyor...",importOptions:"İçe Aktarma Seçenekleri",importOptionsDescription:"Mevcut verilerin nasıl işleneceğini seçin",skipDuplicates:"Yinelenenleri atla",overwrite:"Mevcutların üzerine yaz",importResults:"İçe Aktarma Sonuçları",preferences:"Tercihler",imported:"İçe aktarıldı",failed:"Başarısız",sessions:"Oturumlar",importedLabel:"içe aktarıldı",skipped:"atlandı",documents:"Belgeler",errors:"Hatalar"},about:{title:"Hakkında",versionLabel:"Sürüm",ollama:{title:"Ollama Durumu",version:"Sürüm",healthy:"Sağlıklı",unhealthy:"Sağlıksız"},stats:{models:"Modeller",sessions:"Oturumlar"},features:{privacy:{title:"Gizlilik Öncelikli",description:"Verileriniz cihazınızda kalır"},openSource:{title:"Açık Kaynak",description:"Özgür ve açık kaynaklı yazılım"},localInference:{title:"Yerel Çıkarım",description:"Ollama ile yapay zeka modellerini yerel olarak çalıştırın"}},openSourceBy:"{{company}} tarafından açık kaynak",links:{title:"Bağlantılar",github:"GitHub",githubDescription:"Kaynak kodunu görüntüle ve katkıda bulun",website:"Web Sitesi",websiteDescription:"Web sitemizi ziyaret edin",ollama:"Ollama",ollamaDescription:"Ollama hakkında daha fazla bilgi edinin",documentation:"Belgeler",reportIssue:"Sorun Bildir",reportIssueDescription:"Hata raporları ve özellik istekleri"},version:"Sürüm {{version}}"}},qb={title:"Modeller",subtitle:"Ollama modellerinizi çekin, yönetin ve izleyin",installed:"Yüklü Modeller",available:"Mevcut Modeller",pull:"Model Çek",pulling:"Çekiliyor...",delete:"Modeli Sil",deleting:"Siliniyor...",size:"Boyut",modified:"Değiştirilme",family:"Aile",parameters:"Parametreler",quantization:"Niceleme",noModels:"Yüklü model yok",pullFirst:"Başlamak için bir model çekin"},Jb={title:"Personalar",create:"Persona Oluştur",edit:"Personayı Düzenle",delete:"Personayı Sil",name:"Ad",description:"Açıklama",systemPrompt:"Sistem Mesajı",model:"Model",avatar:"Avatar",background:"Arka Plan",noPersonas:"Oluşturulmuş persona yok",createFirst:"Sohbet deneyiminizi özelleştirmek için ilk personanızı oluşturun"},_b={title:"Galeri",subtitle:"Yapay zeka ile üretilen görsel galeriniz",imageCount:"{{count}} görsel",generate:"Görsel Oluştur",generateDescription:"Yapay zeka ile görsel oluşturun",generating:"Oluşturuluyor...",prompt:"Komut",promptPlaceholder:"Oluşturmak istediğiniz görseli tanımlayın...",noImages:"Henüz görsel oluşturulmadı",download:"İndir",delete:"Sil",regenerate:"Yeniden Oluştur",model:"Model",size:"Boyut",quality:"Kalite",created:"Oluşturulma"},Yb={generic:"Bir hata oluştu",network:"Ağ hatası. Lütfen bağlantınızı kontrol edin.",unauthorized:"Bu işlemi gerçekleştirmek için yetkiniz yok.",notFound:"İstenen kaynak bulunamadı.",serverError:"Sunucu hatası. Lütfen daha sonra tekrar deneyin.",validation:"Lütfen girişinizi kontrol edin ve tekrar deneyin."},Zb={title:"Klavye Kısayolları",toggleSidebar:"Kenar çubuğunu aç/kapat",openSettings:"Ayarları aç",toggleDarkMode:"Koyu modu aç/kapat",showShortcuts:"Klavye kısayollarını göster",closeModals:"Modalleri kapat",groups:{navigation:"Gezinme",settings:"Ayarlar",general:"Genel",chat:"Sohbet"},actions:{sendMessage:"Mesaj gönder",newLine:"Mesajda yeni satır"},footer:"Bu yardımı göstermek için {{key1}} veya {{key2}} tuşuna basın",tooltip:"Klavye kısayolları"},Xb={title:"Modeller",loading:"Modeller yükleniyor...",systemStatus:{online:"Ollama Çevrimiçi",offline:"Ollama Çevrimdışı",models:"model",models_plural:"model",running:"çalışıyor",vram:"VRAM"},sections:{pull:"Yeni Model Çek",library:"Kütüphaneye Göz At",running:"Çalışan Modeller",local:"Yerel Modeller",advanced:"Gelişmiş İşlemler",huggingface:"HuggingFace Hub"},pull:{placeholder:"Model adını girin (ör., llama3.2:3b, deepseek-r1:14b)",button:"Çek",cancel:"İptal",popular:"Popüler modeller:",browseAll:"ollama.com'da tüm modellere göz atın",success:"{{name}} modeli başarıyla çekildi",cancelled:"Model çekme iptal edildi",failed:"Model çekilemedi",enterName:"Lütfen bir model adı girin"},progress:{starting:"Başlatılıyor...",pulling:"Model indiriliyor...",verifying:"Bütünlük doğrulanıyor...",writing:"Manifest yazılıyor...",cleaning:"Temizleniyor..."},library:{available:"mevcut",search:"Model ara...",noResults:"Kriterlerinize uyan model bulunamadı",installed:"Yüklü",more:"+{{count}} daha",refresh:"Kütüphaneyi Yenile"},local:{noModels:"Henüz yüklü model yok",pullToStart:"Başlamak için yukarıdan bir model çekin",installed:"yüklü",running:"Çalışıyor",info:"Bilgi",copy:"Kopyala",delete:"Sil",deleteConfirm:'"{{name}}" modelini silmek istediğinizden emin misiniz?',deleteSuccess:"{{name}} modeli başarıyla silindi",deleteFailed:"Model silinemedi"},advanced:{createModel:"Model Oluştur",fromModelfile:"Modelfile'dan",copyModel:"Modeli Kopyala",duplicateExisting:"Mevcut olanı çoğalt",testEmbeddings:"Gömmeleri Test Et",generateVectors:"Vektörler oluştur",healthCheck:"Sağlık Kontrolü",testConnection:"Bağlantıyı test et",healthy:"Ollama sağlıklı!"},modals:{details:{title:"Model Detayları",info:"Model Bilgisi",family:"Aile",parameters:"Parametreler",quantization:"Niceleme",format:"Format",systemPrompt:"Sistem Mesajı",template:"Şablon",license:"Lisans",modelfile:"Modelfile",noDetails:"Detay mevcut değil"},copy:{title:"Modeli Kopyala",source:"Kaynak Model",selectModel:"Bir model seçin...",newName:"Yeni Model Adı",placeholder:"ör., benim-özel-modelim",copying:"Kopyalanıyor...",button:"Modeli Kopyala",success:"Model {{name}} olarak kopyalandı",failed:"Model kopyalanamadı",enterBoth:"Lütfen hem kaynak hem de hedef adlarını girin"},create:{title:"Özel Model Oluştur",name:"Model Adı",namePlaceholder:"ör., benim-asistanım",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
24
|
+
SYSTEM Yardımcı bir asistansınız.`,docs:"Modelfile belgeleri",docsLink:"söz dizimi referansı için",creating:"Oluşturuluyor...",button:"Model Oluştur",success:"{{name}} modeli başarıyla oluşturuldu",failed:"Model oluşturulamadı",enterBoth:"Lütfen model adını ve Modelfile içeriğini girin"},embeddings:{title:"Gömmeleri Test Et",model:"Gömme Modeli",selectModel:"Bir model seçin...",recommended:"Önerilen: nomic-embed-text, mxbai-embed-large",input:"Giriş Metni",placeholder:"Gömme oluşturmak için metin girin...",generating:"Oluşturuluyor...",button:"Gömme Oluştur",result:"Sonuç ({{count}} boyut)",success:"{{count}} boyutlu gömme vektörü oluşturuldu",failed:"Gömme oluşturulamadı",enterBoth:"Lütfen bir model seçin ve metin girin"}},huggingface:{browseAll:"HuggingFace'te tümünü görüntüle",checkingGguf:"GGUF dosyaları aranıyor...",noGgufAvailable:"Doğrudan Ollama çekmesi için GGUF dosyası yok",ggufFilesCount:"GGUF Dosyaları ({{count}}) - Doğrudan Ollama'ya çek",noModelsFound:"Model bulunamadı",noResults:"Model bulunamadı. Aramanızı veya filtrelerinizi ayarlamayı deneyin.",browseAllLink:"Tümünü görüntüle",search:"HuggingFace modellerini ara...",by:"tarafından",gated:"Kısıtlı erişim",viewOnHF:"HuggingFace'te görüntüle",sortDownloads:"İndirmeler",sortLikes:"Beğeniler",sortRecent:"Son",taskTextGeneration:"Metin Oluşturma",taskTextToSpeech:"Metinden Konuşmaya",taskTextToImage:"Metinden Görüntüye",taskSpeechRecognition:"Konuşma Tanıma",tasks:{textGen:"Metin Oluşturma",tts:"Metinden Konuşmaya",image:"Metinden Görüntüye",stt:"Konuşma Tanıma"},sort:{downloads:"En Çok İndirilen",likes:"En Beğenilen",recent:"Son Güncellenen"}}},Qb={title:"Personalar",subtitle:"Özel kişilikler, anılar ve davranışlarla yapay zeka personaları oluşturun ve yönetin",loading:"Personalar yükleniyor...",createButton:"Persona Oluştur",importExport:"İçe/Dışa Aktar",stats:{title:"Personalarınız",count:"{{count}} persona oluşturuldu",count_plural:"{{count}} persona oluşturuldu"},empty:{title:"Henüz persona yok",description:"Kişiselleştirilmiş yapay zeka etkileşimleri için ilk personanızı oluşturun",button:"İlk Personanızı Oluşturun"},deleteConfirm:'"{{name}}" personasını silmek istediğinizden emin misiniz?',deleteSuccess:'"{{name}}" personası başarıyla silindi',downloadSuccess:'"{{name}}" personası başarıyla indirildi',failed:"Persona {{action}} işlemi başarısız"},ek={title:{create:"Yeni Persona Oluştur",edit:"Personayı Düzenle"},subtitle:{create:"Özel kişilik, bellek sistemleri ve uyarlanabilir öğrenme yetenekleriyle yeni bir yapay zeka personası oluşturun",edit:"Gelişmiş bellek, uyarlanabilir öğrenme ve akıllı parametrelerle yapay zeka personanızı özelleştirin"},loading:"Form yükleniyor...",saved:"Kaydedildi",tabs:{basic:"Temel",parameters:"Parametreler",memory:"Bellek ve Öğrenme",advanced:"Gelişmiş"},basic:{name:"Ad",namePlaceholder:"Persona adını girin",model:"Model",selectModel:"Bir model seçin",description:"Açıklama",descriptionPlaceholder:"Personanızı tanımlayın...",systemPrompt:"Sistem Mesajı",systemPromptPlaceholder:"Persona davranışını tanımlayan sistem mesajını girin...",systemPromptHint:"Sistem mesajı, personanızın nasıl davranacağını ve yanıt vereceğini tanımlar."},parameters:{temperature:"Sıcaklık",temperatureHint:"Yaratıcılık ve tutarlılığı kontrol eder",topP:"Top-P",topPHint:"Yanıt çeşitliliğini kontrol eder",topK:"Top-K",topKHint:"Kelime dağarcığını en iyi k tokena sınırlar",contextWindow:"Bağlam Penceresi",contextWindowHint:"Maksimum konuşma geçmişi uzunluğu",maxTokens:"Maksimum Token",maxTokensHint:"Maksimum yanıt uzunluğu",repeatPenalty:"Tekrar Cezası",repeatPenaltyHint:"Tekrarlayan yanıtları azaltır"},memory:{title:"Bellek Sistemi",subtitle:"Persona zaman içinde konuşmaları hatırlar",enableHint:"Personanızın konuşmaları hatırlaması ve zaman içinde bağlam oluşturması için bellek sistemini etkinleştirin.",loading:"Bellek durumu yükleniyor...",noData:"Henüz bellek verisi yok",memories:"Anılar",mbUsed:"MB Kullanıldı",lastBackup:"Son Yedekleme",never:"Hiçbir zaman",maxMemories:"Maksimum Anı",maxMemoriesHint:"Bu personanın kaç anı saklayabileceği",retention:"Bellek Saklama",retentionHint:"Temizlemeden önce anıları saklama günü",autoCleanup:"Eski anıları otomatik temizle",wipeAll:"Tüm Anıları Sil",wipeCannot:"Bu geri alınamaz",wipeButton:"Sil",wiping:"Siliniyor...",wipeConfirm:"Tüm anıları silmek istediğinizden emin misiniz? Bu geri alınamaz.",wipeSuccess:"{{count}} anı silindi"},learning:{title:"Uyarlanabilir Öğrenme",subtitle:"Persona etkileşimlere göre gelişir",enableHint:"Personanızın etkileşimlerinize göre gelişmesi ve yanıtları kişiselleştirmesi için uyarlanabilir öğrenmeyi etkinleştirin.",speed:"Öğrenme Hızı",slow:"Yavaş",slowDesc:"Kademeli değişiklikler",balanced:"Dengeli",balancedDesc:"Orta hız",fast:"Hızlı",fastDesc:"Hızlı adaptasyon",autoAdapt:"Kullanıcı tercihlerine otomatik uyum",whatLearns:"Personanın öğrendikleri:",conversationTone:"Konuşma tonu",responseStyle:"Yanıt stili",userPreferences:"Kullanıcı tercihleri",topicInterests:"Konu ilgi alanları"},advanced:{embeddingModel:"Gömme Modeli",embeddingHint:"Bellek kodlama ve semantik arama için kullanılan modeli seçin. Gömme modelleri önce, ardından diğer mevcut modeller gösterilir.",noModels:"Model bulunamadı",embeddingModels:"Gömme Modelleri",otherModels:"Diğer Modeller",installHint:"Bir gömme modeli yükleyin:",recommended:"Önerilen: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Gelişmiş Ayarlar Hakkında",aboutDescription:"Gömme modeli, bellek sistemi tarafından semantik anlamı anlamak ve konuşmalar sırasında ilgili anıları bulmak için kullanılır. Kullanım durumunuza ve mevcut kaynaklarınıza uygun bir model seçin."},actions:{cancel:"İptal",save:"Kaydet",saving:"Kaydediliyor...",saveClose:"Kaydet ve Kapat",create:"Oluştur"},success:{created:"Persona oluşturuldu",updated:"Persona güncellendi"},error:{saveFailed:"Kaydetme başarısız"}},ak={enhanced:"Gelişmiş",systemPrompt:"Sistem Mesajı",memories:"anı",use:"Kullan",editTooltip:"Personayı düzenle",downloadTooltip:"Personayı indir",backup:"Yedekle",exportDNA:"DNA'yı Dışa Aktar",wipeMemories:"Anıları Sil",wipeConfirm:"Bu personanın tüm anılarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",wipeSuccess:"{{count}} anı silindi",backupSuccess:"Persona yedeği başarıyla indirildi",dnaSuccess:"Persona DNA'sı başarıyla dışa aktarıldı",failed:"{{action}} işlemi başarısız"},tk={title:"Kullanıcı Yönetimi",subtitle:"Kullanıcı hesaplarını ve izinlerini yönetin",loading:"Kullanıcılar yükleniyor...",createUser:"Kullanıcı Oluştur",search:"Kullanıcı ara...",noUsers:"Kullanıcı bulunamadı",noUsersMatching:"Aramanıza uyan kullanıcı yok",columns:{user:"Kullanıcı",email:"E-posta",role:"Rol",created:"Oluşturulma",actions:"İşlemler"},roles:{admin:"Yönetici",user:"Kullanıcı"},noEmail:"E-posta yok",deleteConfirm:'"{{name}}" kullanıcısını silmek istediğinizden emin misiniz?',deleteSuccess:"Kullanıcı başarıyla silindi",deleteFailed:"Kullanıcı silinemedi",cannotDeleteSelf:"Kendi hesabınızı silemezsiniz",form:{title:{create:"Kullanıcı Oluştur",edit:"Kullanıcıyı Düzenle"},username:"Kullanıcı Adı",usernamePlaceholder:"Kullanıcı adını girin",email:"E-posta",emailPlaceholder:"E-posta girin (isteğe bağlı)",password:"Şifre",passwordPlaceholder:"Şifre girin",passwordHint:"Mevcut şifreyi korumak için boş bırakın",role:"Rol",creating:"Oluşturuluyor...",updating:"Güncelleniyor...",createButton:"Kullanıcı Oluştur",updateButton:"Kullanıcıyı Güncelle",createSuccess:"Kullanıcı başarıyla oluşturuldu",updateSuccess:"Kullanıcı başarıyla güncellendi",createFailed:"Kullanıcı oluşturulamadı",updateFailed:"Kullanıcı güncellenemedi"}},nk={you:"Siz",assistant:"Asistan",system:"Sistem",copy:"Kopyala",copyMessage:"Mesajı kopyala",copied:"Kopyalandı!",regenerate:"Yeniden Oluştur",regenerateResponse:"Yanıtı yeniden oluştur",edit:"Düzenle",editSystemMessage:"Sistem mesajını düzenle",saveChanges:"Değişiklikleri kaydet",cancelEditing:"Düzenlemeyi iptal et",delete:"Sil",deleteConfirm:"Bu mesajı silmek istiyor musunuz?",branch:"Dallandır",speaking:"Konuşuluyor...",speakMessage:"Mesajı seslendir",stopSpeaking:"Seslendirmeyi durdur",showMore:"Daha fazla göster",showLess:"Daha az göster",thinking:"Düşünüyor",systemMessagePlaceholder:"Sistem mesajınızı girin...",fullSizeImage:"Tam boyut görsel",startConversation:"Bir konuşma başlatın",startConversationDescription:"Yapay zeka asistanınızla sohbet etmeye başlamak için bir mesaj gönderin. Soru sorun, kod konusunda yardım alın veya doğal bir konuşma yapın.",scrollToBottom:"En alta kaydır",newMessages:"Yeni mesajlar"},rk={title:"Görsel Galerisi",noImages:"Henüz görsel yok",noImagesHint:"Sağdaki paneli kullanarak ilk görselinizi oluşturun",delete:"Sil",download:"İndir",deleteConfirm:"Bu görseli silmek istediğinizden emin misiniz?",deleteSuccess:"Görsel silindi",deleteFailed:"Görsel silinemedi",downloadFailed:"Görsel indirilemedi",loadMore:"Daha Fazla Yükle ({{current}}/{{total}})",loadFailed:"Galeri yüklenemedi"},ik={title:"Görsel Oluştur",prompt:"Komut",promptPlaceholder:"Oluşturmak istediğiniz görseli tanımlayın...",model:"Model",selectModel:"Model seçin",noModels:"Görsel üretim modeli mevcut değil",configurePlugin:"Görsel üretim destekli bir eklenti yapılandırın",size:"Boyut",quality:"Kalite",style:"Stil",generate:"Oluştur",generating:"Oluşturuluyor...",success:"Görsel başarıyla oluşturuldu",failed:"Görsel oluşturulamadı",enterPrompt:"Lütfen bir komut girin",promptTooLong:"İstem {{max}} karakter maksimum uzunluğunu aşıyor"},ok={title:"Bir şeyler yanlış gitti",description:"Beklenmedik bir hatayla karşılaştık. Lütfen sayfayı yenilemeyi deneyin.",tryAgain:"Sayfayı Yenile",goHome:"Ana Sayfaya Git",errorDetails:"Hata Detayları (Geliştirme)"},sk={title:"Belgeler",upload:"Belge Yükle",uploading:"Yükleniyor...",noDocuments:"Yüklü belge yok",uploadHint:"Konuşmalarınızda kullanmak için belge yükleyin",delete:"Sil",deleteConfirm:"Bu belgeyi silmek istediğinizden emin misiniz?",deleteSuccess:"Belge silindi",deleteFailed:"Belge silinemedi",uploadSuccess:"Belge başarıyla yüklendi",uploadFailed:"Belge yüklenemedi",types:"Desteklenen: PDF, TXT, MD, DOCX",unsupportedFileType:"Yalnızca PDF ve TXT dosyaları desteklenir",fileSizeTooLarge:"Dosya boyutu 10MB'dan küçük olmalıdır",uploadSuccessWithName:'"{{name}}" belgesi başarıyla yüklendi',removeSuccess:"Belge başarıyla kaldırıldı",removeFailed:"Belge kaldırılamadı",removeError:"Belge kaldırılırken bir hata oluştu",clickToUpload:"Yüklemek için tıklayın",orDragAndDrop:"veya sürükleyip bırakın",fileTypesAndSize:"10MB'a kadar PDF veya TXT dosyaları",uploadedDocuments:"Yüklenen Belgeler",removeDocument:"Belgeyi kaldır"},lk={speak:"Seslendir",stop:"Durdur",speaking:"Seslendiriliyor...",generateFailed:"Konuşma oluşturulamadı",playbackFailed:"Ses oynatma başarısız",stopSpeaking:"Seslendirmeyi durdur",generatingSpeech:"Konuşma oluşturuluyor...",readAloud:"Sesli oku"},dk={title:"Yapıtlar",code:"Kod",preview:"Önizleme",copy:"Kodu kopyala",copied:"Kopyalandı!",download:"İndir",expand:"Genişlet",collapse:"Daralt",openInNewTab:"Yeni sekmede aç",invalidSvg:"Geçersiz SVG içeriği",invalidJson:"Geçersiz JSON içeriği",previewMode:"Önizleme modu",codeMode:"Kod modu",copyContent:"İçeriği kopyala",openInPanel:"Panelde aç",openInNewWindow:"Yeni pencerede aç",created:"Oluşturulma",closePanelEsc:"Paneli kapat (Esc)",copyButton:"Kopyala",open:"Aç",dragEdgeToResize:"Yeniden boyutlandırmak için kenarı sürükleyin"},ck={title:"Personaları İçe ve Dışa Aktar",description:"Personalarınızı paylaşmak için dışa aktarın veya başkalarından persona içe aktarın",exportPersonas:"Personaları Dışa Aktar",importPersonas:"Personaları İçe Aktar",noPersonasToExport:"Dışa aktarılacak persona yok",personasAvailable:"{{count}} persona mevcut",personasAvailable_plural:"{{count}} persona mevcut",exportAll:"Tümünü Dışa Aktar",uploadJsonFile:"JSON Dosyası Yükle",pasteJsonLabel:"JSON Verisi Yapıştır",pasteJsonPlaceholder:"Persona JSON verisini buraya yapıştırın...",importing:"İçe aktarılıyor...",importButton:"Persona(ları) İçe Aktar",expectedFormat:"Beklenen JSON Formatı:",exportSuccess:'"{{name}}" personası başarıyla dışa aktarıldı',exportFailed:"Persona dışa aktarılamadı",exportAllSuccess:"Tüm {{count}} persona başarıyla dışa aktarıldı",exportAllFailed:"Personalar dışa aktarılamadı",pasteJsonData:"Lütfen persona JSON verisini yapıştırın",importMultipleSuccess:"{{count}} persona başarıyla içe aktarıldı",importMultipleFailed:"{{count}} persona içe aktarılamadı",importNoneFailed:"Hiçbir persona içe aktarılamadı",importSuccess:"Persona başarıyla içe aktarıldı",importFailed:"Persona içe aktarılamadı"},uk={common:Bb,brand:Kb,auth:Hb,setup:Rb,chat:Ub,sidebar:$b,user:Vb,settings:Wb,models:qb,personas:Jb,gallery:_b,errors:Yb,keyboard:Zb,modelManager:Xb,personaManager:Qb,personaForm:ek,personaCard:ak,userManager:tk,chatMessage:nk,imageGallery:rk,imageGeneration:ik,errorBoundary:ok,documents:sk,ttsButton:lk,artifacts:dk,personaImportExport:ck},mk={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:"Власний",mode:"Режим",multiUser:"Багатокористувацький",remove:"Видалити"},pk={name:"Libre WebUI",shortName:"Libre"},gk={login:{title:"З поверненням",subtitle:"Увійдіть до свого облікового запису, щоб продовжити",username:"Ім'я користувача",usernamePlaceholder:"Введіть ім'я користувача",password:"Пароль",passwordPlaceholder:"Введіть пароль",signIn:"Увійти",signingIn:"Вхід...",noAccount:"Немає облікового запису?",signUpHere:"Зареєструйтеся тут",loginSuccess:"Вхід успішний!",loginFailed:"Помилка входу",checkCredentials:"Помилка входу. Перевірте свої облікові дані.",enterBoth:"Введіть ім'я користувача та пароль",githubSuccess:"Вхід через GitHub успішний!",githubFailed:"Помилка автентифікації GitHub",githubVerifyFailed:"Не вдалося перевірити автентифікацію GitHub"},signup:{title:"Створити обліковий запис",subtitle:"Зареєструйте новий обліковий запис",username:"Ім'я користувача",usernamePlaceholder:"Виберіть ім'я користувача",email:"Електронна пошта",emailPlaceholder:"ваша@пошта.com",password:"Пароль",passwordPlaceholder:"Виберіть пароль",confirmPassword:"Підтвердіть пароль",confirmPasswordPlaceholder:"Підтвердіть пароль",createAccount:"Створити обліковий запис",creatingAccount:"Створення облікового запису...",hasAccount:"Вже є обліковий запис?",signInHere:"Увійдіть тут",signupSuccess:"Обліковий запис успішно створено!",signupFailed:"Помилка реєстрації",tryAgain:"Помилка реєстрації. Спробуйте ще раз.",usernameRequired:"Ім'я користувача та пароль обов'язкові",passwordMismatch:"Паролі не збігаються",passwordTooShort:"Пароль має містити щонайменше 6 символів"},logout:{button:"Вийти",success:"Ви успішно вийшли"},oauth:{continueWith:"Продовжити з {{provider}}",connectingTo:"Підключення до {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},hk={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:"Введіть пароль (мін. 6 символів)",confirmPlaceholder:"Підтвердіть пароль",creating:"Створення...",createAdmin:"Створити адміністратора",success:"Обліковий запис адміністратора успішно створено!",failed:"Не вдалося створити обліковий запис адміністратора",fillAllFields:"Заповніть усі поля",note:"Це буде основний обліковий запис адміністратора для вашого екземпляра Libre WebUI"},encryptionKey:{title:"Збережіть ключ шифрування",subtitle:"Важливо: збережіть цей ключ",description:"Цей ключ шифрування захищає ваші конфіденційні дані. Зберігайте його надійно - він знадобиться для відновлення бази даних.",warning:"Попередження",warningText:"Якщо ви втратите цей ключ і вам потрібно буде відновити базу даних, ваші зашифровані дані (API-ключі, налаштування) будуть безповоротно втрачені.",label:"Ваш ключ шифрування",loading:"Завантаження...",copyToClipboard:"Копіювати в буфер обміну",copied:"Ключ шифрування скопійовано!",copyFailed:"Не вдалося скопіювати ключ",envNote:"Цей ключ також збережено у файлі backend/.env як ENCRYPTION_KEY",acknowledgment:"Я зберіг ключ шифрування в надійному місці та розумію, що його втрата може призвести до втрати даних.",confirmRequired:"Підтвердіть, що ви зберегли ключ шифрування",continue:"Продовжити до Libre WebUI"}},bk={greeting:{morning:"Доброго ранку",afternoon:"Доброго дня",evening:"Доброго вечора",night:"Доброї ночі"},welcome:{helpToday:"Чим можу допомогти сьогодні?",helpTonight:"Чим можу допомогти сьогодні ввечері?"},input:{placeholder:"Надіслати повідомлення",messagePlaceholder:"Повідомлення...",attachImages:"Прикріпити зображення",attachments:"Вкладення та розширені функції",sendMessage:"Надіслати повідомлення",stopGeneration:"Зупинити генерацію"},session:{new:"Новий чат",private:"Приватний",privateMode:"Приватний режим",privateDescription:"Ця розмова не буде збережена",privateTooltip:"Почати приватну розмову, яка не буде збережена",deleteConfirm:"Ви впевнені, що хочете видалити цей чат?",generatingTitle:"Генерація заголовка",noChats:"Чатів ще немає",createFirst:"Створіть свій перший чат вище",chats:"Чати",renameChat:"Перейменувати чат",deleteChat:"Видалити чат"},persona:{applied:"Персону застосовано",label:"Персона"},model:{updated:"Модель оновлено",noModels:"Моделі недоступні",noModelsDescription:"Моделі недоступні. Переконайтеся, що Ollama працює та моделі встановлені.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Моделі недоступні. Переконайтеся, що Ollama працює та моделі встановлені."},footer:{disclaimer:"LLM може помилятися - перевіряйте важливу інформацію",images:"{{count}} зображення",images_plural:"{{count}} зображень",structuredOutput:"Структурований вивід"},mediaUpload:{dropImagesHere:"Перетягніть зображення сюди або",supportedFormats:"Підтримується: JPG, PNG, GIF, WebP (макс. 10 МБ кожне)",browse:"оберіть"},structuredOutput:{title:"Формат відповіді",none:"Без формату (природна мова)",noneDescription:"Стандартна відповідь природною мовою",json:"JSON",jsonDescription:"Структурований формат JSON",list:"Список",listDescription:"Масив елементів",summary:"Підсумок",summaryDescription:"Підсумок документа з ключовими пунктами",analysis:"Аналіз",analysisDescription:"Структурований аналіз з перевагами/недоліками",custom:"Власна схема",customDescription:"Визначте власну JSON-схему",customSchema:"Власна JSON-схема",schemaPreview:"Попередній перегляд схеми",applySchema:"Застосувати схему",cancel:"Скасувати",enabled:"Структурований вивід увімкнено"}},kk={navigation:{chat:"Чат",models:"Моделі",personas:"Персони",imagine:"Генерація",settings:"Налаштування",userManagement:"Керування користувачами",signOut:"Вийти"},toggleSize:"Змінити розмір бічної панелі",expandSidebar:"Розгорнути бічну панель"},fk={menu:{changePicture:"Змінити зображення",settings:"Налаштування",userManagement:"Керування користувачами",logout:"Вийти"},avatar:{title:"Змінити фото профілю",updated:"Фото профілю оновлено",updateFailed:"Не вдалося оновити фото профілю",saving:"Збереження..."},profile:{noEmail:"Електронна пошта не вказана"}},yk=JSON.parse(`{"title":"Налаштування","tabs":{"appearance":"Зовнішній вигляд","model":"Модель","systemMessage":"Системне повідомлення","plugins":"Плагіни","generation":"Генерація","documents":"Документи","tts":"Текст у мовлення","imageGen":"Генерація зображень","data":"Дані","about":"Про програму"},"appearance":{"title":"Зовнішній вигляд","language":{"title":"Мова","description":"Виберіть бажану мову"},"theme":{"title":"Тема","light":"Світла","dark":"Темна","amoled":"Глибокий чорний","system":"Системна"},"chatInterface":{"title":"Інтерфейс чату","showUsername":"Показувати ім'я користувача","showUsernameDescription":"Відображати ім'я користувача в повідомленнях чату"},"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":"Персона"},"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-ключ"}},"generation":{"title":"Параметри генерації","description":"Налаштуйте, як AI генерує відповіді","coreParameters":"Основні параметри","temperature":"Температура","temperatureDescription":"Контролює випадковість. Нижчі значення більш зосереджені, вищі — більш креативні.","topP":"Top P","topPDescription":"Контролює різноманітність через nucleus sampling. Нижчі значення фокусуються на ймовірних токенах.","topK":"Top K","topKDescription":"Обмежує вибір токенів до K найімовірніших. Встановіть 0 для вимкнення.","minP":"Min P","minPDescription":"Мінімальний поріг ймовірності для вибору токенів.","generationControl":"Контроль генерації","maxTokens":"Макс. токенів","maxTokensDescription":"Максимальна кількість токенів для генерації у відповіді.","repeatPenalty":"Штраф за повторення","repeatPenaltyDescription":"Штрафує повторювані токени. Вищі значення зменшують повторення.","contextLength":"Довжина контексту","contextLengthDescription":"Максимальний розмір контекстного вікна для розмов.","seed":"Seed","optional":"необов'язково","random":"Випадковий","seedDescription":"Встановіть конкретний seed для відтворюваних результатів.","advancedOptions":"Розширені параметри","presencePenalty":"Штраф за присутність","presencePenaltyDescription":"Штрафує токени, що з'являються в контексті.","frequencyPenalty":"Штраф за частоту","frequencyPenaltyDescription":"Штрафує часто використовувані токени.","stopSequences":"Стоп-послідовності","commaSeparated":"через кому","stopSequencesDescription":"Власні токени, які зупинять генерацію при зустрічі.","resetDefaults":"Скинути до стандартних","saveOptions":"Зберегти параметри","embeddingSettings":"Налаштування ембедингів","enableEmbeddings":"Увімкнути ембединги документів"},"documents":{"title":"Налаштування документів","embeddings":{"title":"Ембединги","enable":"Увімкнути ембединги документів","model":"Модель ембедингів","modelDescription":"Виберіть модель для ембедингу документів","chunkSize":"Розмір частини","chunkSizeInTokens":"(у токенах)","chunkSizeDescription":"Розмір текстових частин для ембедингу","chunkOverlap":"Перекриття частин","chunkOverlapInTokens":"(у токенах)","chunkOverlapDescription":"Перекриття між послідовними частинами","similarityThreshold":"Поріг схожості","similarityDescription":"Мінімальний бал схожості для включення результатів","status":"Статус ембедингів","statusLabel":"Статус","available":"Доступно","unavailable":"Недоступно","chunksWithEmbeddings":"Частини з ембедингами","coverage":"Покриття","regenerate":"Перегенерувати ембединги","regenerating":"Перегенерація..."}},"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":"Помилки"},"about":{"title":"Про програму","versionLabel":"Версія","ollama":{"title":"Статус Ollama","version":"Версія","healthy":"Працює","unhealthy":"Не працює"},"stats":{"models":"Моделі","sessions":"Сесії"},"features":{"privacy":{"title":"Приватність перш за все","description":"Ваші дані залишаються на вашому пристрої"},"openSource":{"title":"Відкритий код","description":"Безкоштовне програмне забезпечення з відкритим кодом"},"localInference":{"title":"Локальний інференс","description":"Запускайте AI-моделі локально з Ollama"}},"openSourceBy":"Відкритий код від {{company}}","links":{"title":"Посилання","github":"GitHub","githubDescription":"Переглянути вихідний код та зробити внесок","website":"Веб-сайт","websiteDescription":"Відвідайте наш веб-сайт","ollama":"Ollama","ollamaDescription":"Дізнайтеся більше про Ollama","documentation":"Документація","reportIssue":"Повідомити про проблему","reportIssueDescription":"Звіти про помилки та запити функцій"},"version":"Версія {{version}}"}}`),vk={title:"Моделі",subtitle:"Завантажуйте, керуйте та моніторте ваші моделі Ollama",installed:"Встановлені моделі",available:"Доступні моделі",pull:"Завантажити модель",pulling:"Завантаження...",delete:"Видалити модель",deleting:"Видалення...",size:"Розмір",modified:"Змінено",family:"Сімейство",parameters:"Параметри",quantization:"Квантизація",noModels:"Моделі не встановлено",pullFirst:"Завантажте модель, щоб почати"},xk={title:"Персони",create:"Створити персону",edit:"Редагувати персону",delete:"Видалити персону",name:"Назва",description:"Опис",systemPrompt:"Системний промпт",model:"Модель",avatar:"Аватар",background:"Фон",noPersonas:"Персони не створено",createFirst:"Створіть свою першу персону, щоб налаштувати досвід чату"},Sk={title:"Галерея",subtitle:"Ваша галерея зображень, згенерованих AI",imageCount:"{{count}} зображень",generate:"Згенерувати зображення",generateDescription:"Створюйте зображення за допомогою AI",generating:"Генерація...",prompt:"Промпт",promptPlaceholder:"Опишіть зображення, яке хочете згенерувати...",noImages:"Зображення ще не згенеровано",download:"Завантажити",delete:"Видалити",regenerate:"Перегенерувати",model:"Модель",size:"Розмір",quality:"Якість",created:"Створено"},wk={generic:"Сталася помилка",network:"Помилка мережі. Перевірте підключення.",unauthorized:"У вас немає дозволу на виконання цієї дії.",notFound:"Запитуваний ресурс не знайдено.",serverError:"Помилка сервера. Спробуйте пізніше.",validation:"Перевірте введені дані та спробуйте ще раз."},Pk={title:"Гарячі клавіші",toggleSidebar:"Перемкнути бічну панель",openSettings:"Відкрити налаштування",toggleDarkMode:"Перемкнути темний режим",showShortcuts:"Показати гарячі клавіші",closeModals:"Закрити модальні вікна",groups:{navigation:"Навігація",settings:"Налаштування",general:"Загальні",chat:"Чат"},actions:{sendMessage:"Надіслати повідомлення",newLine:"Новий рядок у повідомленні"},footer:"Натисніть {{key1}} або {{key2}}, щоб показати цю довідку",tooltip:"Гарячі клавіші"},Mk={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:"Введіть назву моделі"},progress:{starting:"Ініціалізація...",pulling:"Завантаження моделі...",verifying:"Перевірка цілісності...",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
|
|
25
|
+
SYSTEM You are a helpful assistant.`,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:"Немає GGUF-файлів для прямого завантаження в Ollama",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:"Нещодавно оновлені"}}},Dk={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}} персону"},Ak={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:"Контролює креативність vs послідовність",topP:"Top-P",topPHint:"Контролює різноманітність відповідей",topK:"Top-K",topKHint:"Обмежує словник до top-k токенів",contextWindow:"Контекстне вікно",contextWindowHint:"Максимальна довжина історії розмови",maxTokens:"Макс. токенів",maxTokensHint:"Максимальна довжина відповіді",repeatPenalty:"Штраф за повторення",repeatPenaltyHint:"Зменшує повторювані відповіді"},memory:{title:"Система пам'яті",subtitle:"Персона запам'ятовує розмови з часом",enableHint:"Увімкніть систему пам'яті, щоб ваша персона запам'ятовувала розмови та будувала контекст з часом.",loading:"Завантаження статусу пам'яті...",noData:"Даних пам'яті ще немає",memories:"Спогади",mbUsed:"МБ використано",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:"Не вдалося зберегти"}},zk={enhanced:"Покращена",systemPrompt:"Системний промпт",memories:"спогадів",use:"Використати",editTooltip:"Редагувати персону",downloadTooltip:"Завантажити персону",backup:"Бекап",exportDNA:"Експорт ДНК",wipeMemories:"Очистити спогади",wipeConfirm:"Ви впевнені, що хочете очистити всі спогади цієї персони? Цю дію неможливо скасувати.",wipeSuccess:"Очищено {{count}} спогадів",backupSuccess:"Бекап персони успішно завантажено",dnaSuccess:"ДНК персони успішно експортовано",failed:"Не вдалося {{action}}"},jk={title:"Керування користувачами",subtitle:"Керуйте обліковими записами та дозволами користувачів",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:"Не вдалося оновити користувача"}},Tk={you:"Ви",assistant:"Асистент",system:"Система",copy:"Копіювати",copyMessage:"Копіювати повідомлення",copied:"Скопійовано!",regenerate:"Перегенерувати",regenerateResponse:"Перегенерувати відповідь",edit:"Редагувати",editSystemMessage:"Редагувати системне повідомлення",saveChanges:"Зберегти зміни",cancelEditing:"Скасувати редагування",delete:"Видалити",deleteConfirm:"Видалити це повідомлення?",branch:"Гілка",speaking:"Озвучення...",speakMessage:"Озвучити повідомлення",stopSpeaking:"Зупинити озвучення",showMore:"Показати більше",showLess:"Показати менше",thinking:"Обмірковує",systemMessagePlaceholder:"Введіть системне повідомлення...",fullSizeImage:"Повнорозмірне зображення",startConversation:"Почати розмову",startConversationDescription:"Надішліть повідомлення, щоб почати спілкування з AI-асистентом. Ставте запитання, отримуйте допомогу з кодом або ведіть звичайну розмову.",scrollToBottom:"Прокрутити донизу",newMessages:"Нові повідомлення"},Nk={title:"Галерея зображень",noImages:"Зображень ще немає",noImagesHint:"Згенеруйте перше зображення за допомогою панелі праворуч",delete:"Видалити",download:"Завантажити",deleteConfirm:"Ви впевнені, що хочете видалити це зображення?",deleteSuccess:"Зображення видалено",deleteFailed:"Не вдалося видалити зображення",downloadFailed:"Не вдалося завантажити зображення",loadMore:"Завантажити ще ({{current}} з {{total}})",loadFailed:"Не вдалося завантажити галерею"},Ik={title:"Згенерувати зображення",prompt:"Промпт",promptPlaceholder:"Опишіть зображення, яке хочете створити...",model:"Модель",selectModel:"Виберіть модель",noModels:"Моделі генерації зображень недоступні",configurePlugin:"Налаштуйте плагін з підтримкою генерації зображень",size:"Розмір",quality:"Якість",style:"Стиль",generate:"Згенерувати",generating:"Генерація...",success:"Зображення успішно згенеровано",failed:"Не вдалося згенерувати зображення",enterPrompt:"Введіть промпт",promptTooLong:"Промпт перевищує максимальну довжину в {{max}} символів"},Ck={title:"Щось пішло не так",description:"Виникла неочікувана помилка. Спробуйте оновити сторінку.",tryAgain:"Оновити сторінку",goHome:"На головну",errorDetails:"Деталі помилки (розробка)"},Fk={title:"Документи",upload:"Завантажити документ",uploading:"Завантаження...",noDocuments:"Документи не завантажено",uploadHint:"Завантажте документи для використання в розмовах",delete:"Видалити",deleteConfirm:"Ви впевнені, що хочете видалити цей документ?",deleteSuccess:"Документ видалено",deleteFailed:"Не вдалося видалити документ",uploadSuccess:"Документ успішно завантажено",uploadFailed:"Не вдалося завантажити документ",types:"Підтримується: PDF, TXT, MD, DOCX",unsupportedFileType:"Підтримуються лише файли PDF та TXT",fileSizeTooLarge:"Розмір файлу має бути менше 10 МБ",uploadSuccessWithName:'Документ "{{name}}" успішно завантажено',removeSuccess:"Документ успішно видалено",removeFailed:"Не вдалося видалити документ",removeError:"Сталася помилка при видаленні документа",clickToUpload:"Натисніть, щоб завантажити",orDragAndDrop:"або перетягніть",fileTypesAndSize:"PDF або TXT файли до 10 МБ",uploadedDocuments:"Завантажені документи",removeDocument:"Видалити документ"},Ok={speak:"Озвучити",stop:"Зупинити",speaking:"Озвучення...",generateFailed:"Не вдалося згенерувати мовлення",playbackFailed:"Помилка відтворення аудіо",stopSpeaking:"Зупинити озвучення",generatingSpeech:"Генерація мовлення...",readAloud:"Прочитати вголос"},Ek={title:"Артефакти",code:"Код",preview:"Попередній перегляд",copy:"Копіювати код",copied:"Скопійовано!",download:"Завантажити",expand:"Розгорнути",collapse:"Згорнути",openInNewTab:"Відкрити в новій вкладці",invalidSvg:"Недійсний SVG-вміст",invalidJson:"Недійсний JSON-вміст",previewMode:"Режим перегляду",codeMode:"Режим коду",copyContent:"Копіювати вміст",openInPanel:"Відкрити в панелі",openInNewWindow:"Відкрити в новому вікні",created:"Створено",closePanelEsc:"Закрити панель (Esc)",copyButton:"Копіювати",open:"Відкрити",dragEdgeToResize:"Перетягніть край для зміни розміру"},Lk={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:"Не вдалося імпортувати персону"},Gk={common:mk,brand:pk,auth:gk,setup:hk,chat:bk,sidebar:kk,user:fk,settings:yk,models:vk,personas:xk,gallery:Sk,errors:wk,keyboard:Pk,modelManager:Mk,personaManager:Dk,personaForm:Ak,personaCard:zk,userManager:jk,chatMessage:Tk,imageGallery:Nk,imageGeneration:Ik,errorBoundary:Ck,documents:Fk,ttsButton:Ok,artifacts:Ek,personaImportExport:Lk},Bk={loading:"Đang tải...",save:"Lưu",saving:"Đang lưu...",cancel:"Hủy",delete:"Xóa",edit:"Chỉnh sửa",close:"Đóng",back:"Quay lại",next:"Tiếp theo",confirm:"Xác nhận",error:"Lỗi",success:"Thành công",warning:"Cảnh báo",or:"hoặc",optional:"tùy chọn",enabled:"Đã bật",disabled:"Đã tắt",on:"Bật",off:"Tắt",yes:"Có",no:"Không",search:"Tìm kiếm",noResults:"Không tìm thấy kết quả",retry:"Thử lại",refresh:"Làm mới",download:"Tải xuống",upload:"Tải lên",export:"Xuất",import:"Nhập",reset:"Đặt lại",apply:"Áp dụng",clear:"Xóa",all:"Tất cả",none:"Không có",default:"Mặc định",custom:"Tùy chỉnh",mode:"Chế độ",multiUser:"Nhiều người dùng",remove:"Xóa"},Kk={name:"Libre WebUI",shortName:"Libre"},Hk={login:{title:"Chào mừng trở lại",subtitle:"Đăng nhập vào tài khoản của bạn để tiếp tục",username:"Tên người dùng",usernamePlaceholder:"Nhập tên người dùng",password:"Mật khẩu",passwordPlaceholder:"Nhập mật khẩu",signIn:"Đăng nhập",signingIn:"Đang đăng nhập...",noAccount:"Chưa có tài khoản?",signUpHere:"Đăng ký tại đây",loginSuccess:"Đăng nhập thành công!",loginFailed:"Đăng nhập thất bại",checkCredentials:"Đăng nhập thất bại. Vui lòng kiểm tra thông tin đăng nhập.",enterBoth:"Vui lòng nhập cả tên người dùng và mật khẩu",githubSuccess:"Đăng nhập GitHub thành công!",githubFailed:"Xác thực GitHub thất bại",githubVerifyFailed:"Không thể xác minh xác thực GitHub"},signup:{title:"Tạo tài khoản",subtitle:"Đăng ký tài khoản mới",username:"Tên người dùng",usernamePlaceholder:"Chọn tên người dùng",email:"Email",emailPlaceholder:"email@example.com",password:"Mật khẩu",passwordPlaceholder:"Chọn mật khẩu",confirmPassword:"Xác nhận mật khẩu",confirmPasswordPlaceholder:"Xác nhận mật khẩu của bạn",createAccount:"Tạo tài khoản",creatingAccount:"Đang tạo tài khoản...",hasAccount:"Đã có tài khoản?",signInHere:"Đăng nhập tại đây",signupSuccess:"Tạo tài khoản thành công!",signupFailed:"Đăng ký thất bại",tryAgain:"Đăng ký thất bại. Vui lòng thử lại.",usernameRequired:"Tên người dùng và mật khẩu là bắt buộc",passwordMismatch:"Mật khẩu không khớp",passwordTooShort:"Mật khẩu phải có ít nhất 6 ký tự"},logout:{button:"Đăng xuất",success:"Đăng xuất thành công"},oauth:{continueWith:"Tiếp tục với {{provider}}",connectingTo:"Đang kết nối đến {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},Rk={welcome:{title:"Chào mừng đến với Libre WebUI",subtitle:"Hãy bắt đầu",description:"Thiết lập phiên bản Libre WebUI của bạn chỉ trong vài bước",createAdmin:"Tạo tài khoản quản trị",features:{secure:{title:"An toàn & Riêng tư",description:"Cuộc trò chuyện của bạn được lưu trên thiết bị của bạn"},fast:{title:"Nhanh & Phản hồi tốt",description:"Tối ưu hóa cho tốc độ và hiệu suất"},openSource:{title:"Mã nguồn mở",description:"Phần mềm miễn phí và mã nguồn mở"}}},admin:{title:"Tạo tài khoản quản trị",subtitle:"Thiết lập quản trị viên",description:"Tạo tài khoản quản trị đầu tiên cho phiên bản Libre WebUI của bạn",usernamePlaceholder:"Nhập tên người dùng quản trị",passwordPlaceholder:"Nhập mật khẩu (tối thiểu 6 ký tự)",confirmPlaceholder:"Xác nhận mật khẩu của bạn",creating:"Đang tạo...",createAdmin:"Tạo quản trị viên",success:"Tạo tài khoản quản trị thành công!",failed:"Không thể tạo tài khoản quản trị",fillAllFields:"Vui lòng điền tất cả các trường",note:"Đây sẽ là tài khoản quản trị chính cho phiên bản Libre WebUI của bạn"},encryptionKey:{title:"Lưu khóa mã hóa của bạn",subtitle:"Quan trọng: Lưu khóa này",description:"Khóa mã hóa này bảo vệ dữ liệu nhạy cảm của bạn. Lưu trữ nó một cách an toàn - bạn sẽ cần nó nếu bạn cần khôi phục cơ sở dữ liệu.",warning:"Cảnh báo",warningText:"Nếu bạn mất khóa này và cần khôi phục cơ sở dữ liệu, dữ liệu được mã hóa của bạn (khóa API, tùy chọn) sẽ không thể khôi phục.",label:"Khóa mã hóa của bạn",loading:"Đang tải...",copyToClipboard:"Sao chép vào clipboard",copied:"Đã sao chép khóa mã hóa vào clipboard!",copyFailed:"Không thể sao chép khóa vào clipboard",envNote:"Khóa này cũng được lưu trong tệp backend/.env của bạn dưới dạng ENCRYPTION_KEY",acknowledgment:"Tôi đã lưu khóa mã hóa của tôi ở nơi an toàn và hiểu rằng việc mất nó có thể dẫn đến mất dữ liệu.",confirmRequired:"Vui lòng xác nhận rằng bạn đã lưu khóa mã hóa",continue:"Tiếp tục đến Libre WebUI"}},Uk={greeting:{morning:"Chào buổi sáng",afternoon:"Chào buổi chiều",evening:"Chào buổi tối",night:"Chúc ngủ ngon"},welcome:{helpToday:"Tôi có thể giúp gì cho bạn hôm nay?",helpTonight:"Tôi có thể giúp gì cho bạn tối nay?"},input:{placeholder:"Gửi tin nhắn",messagePlaceholder:"Tin nhắn...",attachImages:"Đính kèm hình ảnh",attachments:"Tệp đính kèm và tính năng nâng cao",sendMessage:"Gửi tin nhắn",stopGeneration:"Dừng tạo"},session:{new:"Cuộc trò chuyện mới",private:"Riêng tư",privateMode:"Chế độ riêng tư",privateDescription:"Cuộc trò chuyện này sẽ không được lưu",privateTooltip:"Bắt đầu cuộc trò chuyện riêng tư sẽ không được lưu",deleteConfirm:"Bạn có chắc chắn muốn xóa cuộc trò chuyện này?",generatingTitle:"Đang tạo tiêu đề",noChats:"Chưa có cuộc trò chuyện nào",createFirst:"Tạo cuộc trò chuyện đầu tiên của bạn ở trên",chats:"Cuộc trò chuyện",renameChat:"Đổi tên cuộc trò chuyện",deleteChat:"Xóa cuộc trò chuyện"},persona:{applied:"Đã áp dụng persona",label:"Persona"},model:{updated:"Đã cập nhật mô hình",noModels:"Không có mô hình nào",noModelsDescription:"Không có mô hình nào. Hãy đảm bảo Ollama đang chạy và đã cài đặt các mô hình.",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"Không có mô hình nào. Vui lòng đảm bảo Ollama đang chạy và các mô hình đã được cài đặt."},footer:{disclaimer:"LLM có thể mắc lỗi - hãy xác minh thông tin quan trọng",images:"{{count}} hình ảnh",images_plural:"{{count}} hình ảnh",structuredOutput:"Đầu ra có cấu trúc"},mediaUpload:{dropImagesHere:"Thả hình ảnh vào đây hoặc",supportedFormats:"Hỗ trợ: JPG, PNG, GIF, WebP (tối đa 10MB mỗi file)",browse:"duyệt"},structuredOutput:{title:"Định dạng phản hồi",none:"Không có (Ngôn ngữ tự nhiên)",noneDescription:"Phản hồi ngôn ngữ tự nhiên mặc định",json:"JSON",jsonDescription:"Định dạng JSON có cấu trúc",list:"Danh sách",listDescription:"Mảng các mục",summary:"Tóm tắt",summaryDescription:"Tóm tắt tài liệu với các điểm chính",analysis:"Phân tích",analysisDescription:"Phân tích có cấu trúc với ưu/nhược điểm",custom:"Schema tùy chỉnh",customDescription:"Định nghĩa JSON schema của riêng bạn",customSchema:"JSON schema tùy chỉnh",schemaPreview:"Xem trước Schema",applySchema:"Áp dụng Schema",cancel:"Hủy",enabled:"Đã bật đầu ra có cấu trúc"}},$k={navigation:{chat:"Trò chuyện",models:"Mô hình",personas:"Personas",imagine:"Tưởng tượng",settings:"Cài đặt",userManagement:"Quản lý người dùng",signOut:"Đăng xuất"},toggleSize:"Chuyển đổi kích thước thanh bên",expandSidebar:"Mở rộng thanh bên"},Vk={menu:{changePicture:"Đổi ảnh đại diện",settings:"Cài đặt",userManagement:"Quản lý người dùng",logout:"Đăng xuất"},avatar:{title:"Đổi ảnh hồ sơ",updated:"Đã cập nhật ảnh hồ sơ",updateFailed:"Không thể cập nhật ảnh hồ sơ",saving:"Đang lưu..."},profile:{noEmail:"Chưa cung cấp email"}},Wk={title:"Cài đặt",tabs:{appearance:"Giao diện",model:"Mô hình",systemMessage:"Tin nhắn hệ thống",plugins:"Plugin",generation:"Tạo nội dung",documents:"Tài liệu",tts:"Chuyển văn bản thành giọng nói",imageGen:"Tạo hình ảnh",data:"Dữ liệu",about:"Giới thiệu"},appearance:{title:"Giao diện",language:{title:"Ngôn ngữ",description:"Chọn ngôn ngữ ưa thích của bạn"},theme:{title:"Chủ đề",light:"Sáng",dark:"Tối",amoled:"Đen Thuần",system:"Hệ thống"},chatInterface:{title:"Giao diện trò chuyện",showUsername:"Hiển thị tên người dùng",showUsernameDescription:"Hiển thị tên người dùng trong tin nhắn trò chuyện"},background:{title:"Hình nền",enable:"Bật hình nền",enableDescription:"Hiển thị hình nền tùy chỉnh với hiệu ứng mờ",blur:"Độ mờ",opacity:"Độ trong suốt",upload:"Tải lên hình nền",dragDrop:"Kéo và thả hình ảnh hoặc nhấp để duyệt",chooseImage:"Chọn hình ảnh"}},saveSettings:"Lưu cài đặt",model:{title:"Cài đặt mô hình",defaultModel:"Mô hình mặc định",defaultModelDescription:"Mô hình này sẽ được sử dụng mặc định cho các cuộc trò chuyện mới",selectModel:"Chọn mô hình",updateAll:"Cập nhật tất cả mô hình",updateAllDescription:"Kiểm tra cập nhật và tải phiên bản mới nhất của tất cả mô hình đã cài đặt",updateAllButton:"Cập nhật tất cả",updating:"Đang cập nhật mô hình...",currentModelInfo:"Thông tin mô hình hiện tại",name:"Tên",size:"Kích thước",family:"Họ",format:"Định dạng",status:"Trạng thái",statusStarting:"Đang khởi động...",statusComplete:"Hoàn tất",statusError:"Lỗi",bulkOperations:"Thao tác hàng loạt",autoTitle:{title:"Tự động tạo tiêu đề",enable:"Bật tự động tạo tiêu đề",enableDescription:"Tự động tạo tiêu đề cho các cuộc trò chuyện mới",taskModel:"Mô hình tác vụ",selectTaskModel:"Chọn mô hình tác vụ",taskModelDescription:"Mô hình được sử dụng để tạo tiêu đề cuộc trò chuyện"},persona:"Persona"},systemMessage:{title:"Tin nhắn hệ thống",description:"Đặt tin nhắn hệ thống tùy chỉnh sẽ được sử dụng cho tất cả cuộc trò chuyện mới.",placeholder:"Nhập tin nhắn hệ thống...",saved:"Đã lưu tin nhắn hệ thống",saveFailed:"Không thể lưu tin nhắn hệ thống"},plugins:{title:"Plugin",description:"Quản lý các plugin đã cài đặt của bạn",addNew:"Thêm plugin mới",upload:"Tải lên plugin",addJson:"Thêm JSON",uploading:"Đang tải lên...",jsonPlaceholder:"Dán cấu hình JSON của plugin...",install:"Cài đặt plugin",noPlugins:"Chưa có plugin nào được cài đặt",noPluginsDescription:"Thêm plugin để mở rộng chức năng",loading:"Đang tải plugin...",installed:"Plugin đã cài đặt",active:"Plugin đang hoạt động",activeLabel:"Đang hoạt động",inactive:"Không hoạt động",activate:"Kích hoạt",deactivate:"Vô hiệu hóa",models:"mô hình",apiKeySet:"Đã đặt khóa API",apiKeyConfiguration:"Cấu hình khóa API",apiKeyEnvAlternative:"Hoặc, đặt biến",environmentVariable:"biến môi trường",apiKeyConfigured:"Đã cấu hình khóa API",apiKeyPlaceholder:"Nhập khóa API của bạn...",saveApiKey:"Lưu khóa API",apiKey:{title:"Khóa API",placeholder:"Nhập khóa API",save:"Lưu khóa",remove:"Xóa khóa",configured:"Đã cấu hình khóa API",notConfigured:"Cần khóa API",saved:"Đã lưu khóa API thành công",removed:"Đã xóa khóa API",saveFailed:"Không thể lưu khóa API",removeFailed:"Không thể xóa khóa API",enterKey:"Vui lòng nhập khóa API"}},generation:{title:"Tùy chọn tạo nội dung",description:"Cấu hình cách AI tạo phản hồi",coreParameters:"Tham số cốt lõi",temperature:"Nhiệt độ",temperatureDescription:"Kiểm soát tính ngẫu nhiên. Giá trị thấp hơn tập trung hơn, giá trị cao hơn sáng tạo hơn.",topP:"Top P",topPDescription:"Kiểm soát sự đa dạng thông qua lấy mẫu hạt nhân. Giá trị thấp hơn tập trung vào các token có khả năng cao.",topK:"Top K",topKDescription:"Giới hạn lựa chọn token ở K token có khả năng cao nhất. Đặt 0 để vô hiệu hóa.",minP:"Min P",minPDescription:"Ngưỡng xác suất tối thiểu để lựa chọn token.",generationControl:"Kiểm soát tạo nội dung",maxTokens:"Số token tối đa",maxTokensDescription:"Số token tối đa để tạo trong phản hồi.",repeatPenalty:"Hình phạt lặp lại",repeatPenaltyDescription:"Phạt các token lặp lại. Giá trị cao hơn giảm sự lặp lại.",contextLength:"Độ dài ngữ cảnh",contextLengthDescription:"Kích thước cửa sổ ngữ cảnh tối đa cho cuộc trò chuyện.",seed:"Seed",optional:"tùy chọn",random:"Ngẫu nhiên",seedDescription:"Đặt seed cụ thể cho đầu ra có thể tái tạo.",advancedOptions:"Tùy chọn nâng cao",presencePenalty:"Hình phạt hiện diện",presencePenaltyDescription:"Phạt các token xuất hiện trong ngữ cảnh.",frequencyPenalty:"Hình phạt tần suất",frequencyPenaltyDescription:"Phạt các token được sử dụng thường xuyên.",stopSequences:"Chuỗi dừng",commaSeparated:"phân cách bằng dấu phẩy",stopSequencesDescription:"Các token tùy chỉnh sẽ dừng tạo khi gặp phải.",resetDefaults:"Đặt lại mặc định",saveOptions:"Lưu tùy chọn",embeddingSettings:"Cài đặt nhúng",enableEmbeddings:"Bật nhúng tài liệu"},documents:{title:"Cài đặt tài liệu",embeddings:{title:"Nhúng",enable:"Bật nhúng tài liệu",model:"Mô hình nhúng",modelDescription:"Chọn mô hình được sử dụng để nhúng tài liệu",chunkSize:"Kích thước đoạn",chunkSizeInTokens:"(tính bằng token)",chunkSizeDescription:"Kích thước các đoạn văn bản để nhúng",chunkOverlap:"Độ chồng chéo đoạn",chunkOverlapInTokens:"(tính bằng token)",chunkOverlapDescription:"Độ chồng chéo giữa các đoạn liên tiếp",similarityThreshold:"Ngưỡng tương đồng",similarityDescription:"Điểm tương đồng tối thiểu để bao gồm kết quả",status:"Trạng thái nhúng",statusLabel:"Trạng thái",available:"Khả dụng",unavailable:"Không khả dụng",chunksWithEmbeddings:"Đoạn có nhúng",coverage:"Độ phủ",regenerate:"Tạo lại nhúng",regenerating:"Đang tạo lại..."}},tts:{title:"Chuyển văn bản thành giọng nói",description:"Cấu hình cài đặt chuyển văn bản thành giọng nói để đọc to tin nhắn",loadingProviders:"Đang tải nhà cung cấp TTS...",noProviders:"Không có nhà cung cấp TTS",noProvidersDescription:"Cấu hình plugin hỗ trợ TTS để bật chuyển văn bản thành giọng nói",enable:"Bật TTS",enableDescription:"Cho phép chuyển văn bản thành giọng nói cho tin nhắn trợ lý",autoPlay:"Tự động phát phản hồi",autoPlayDescription:"Tự động đọc to các tin nhắn trợ lý mới",streamSentences:"Phát từng câu",streamSentencesDescription:"Phát âm thanh từng câu một thay vì đợi toàn bộ tin nhắn. Khuyến nghị cho TTS cục bộ để tránh hết thời gian chờ với tin nhắn dài.",voiceConfiguration:"Cấu hình giọng nói",model:"Mô hình TTS",modelDescription:"Chọn mô hình để chuyển văn bản thành giọng nói",voice:"Giọng nói",selectVoice:"Chọn giọng nói",voiceDescription:"Chọn giọng nói để chuyển văn bản thành giọng nói",speed:"Tốc độ",speedSlow:"0.5x",speedNormal:"1.0x",speedFast:"2.0x",availableProviders:"Nhà cung cấp khả dụng",models:"mô hình",test:"Kiểm tra",testing:"Đang kiểm tra...",stop:"Dừng"},imageGen:{title:"Tạo hình ảnh",description:"Cấu hình cài đặt và nhà cung cấp tạo hình ảnh",loadingProviders:"Đang tải nhà cung cấp tạo hình ảnh...",noProviders:"Không có nhà cung cấp tạo hình ảnh",noProvidersDescription:"Cấu hình plugin hỗ trợ tạo hình ảnh",enable:"Bật tạo hình ảnh",enableDescription:"Cho phép tạo hình ảnh AI trong cuộc trò chuyện",configuration:"Cấu hình",model:"Mô hình",modelDescription:"Chọn mô hình để tạo hình ảnh",size:"Kích thước",sizeDescription:"Độ phân giải của hình ảnh được tạo",quality:"Chất lượng",qualityDescription:"Mức chất lượng của hình ảnh được tạo",style:"Phong cách",styleDescription:"Preset phong cách cho hình ảnh được tạo",availableProviders:"Nhà cung cấp khả dụng",models:"mô hình"},data:{title:"Quản lý dữ liệu",export:"Xuất dữ liệu",exportDescription:"Tải xuống tất cả dữ liệu của bạn bao gồm tùy chọn, phiên và tài liệu.",exportAll:"Xuất tất cả dữ liệu",import:"Nhập dữ liệu",importDescription:"Nhập dữ liệu từ bản xuất trước đó.",importData:"Nhập dữ liệu",importing:"Đang nhập...",clearSessions:"Xóa phiên",clearSessionsDescription:"Xóa tất cả phiên trò chuyện. Hành động này không thể hoàn tác.",clearAll:"Xóa tất cả",clearing:"Đang xóa...",importOptions:"Tùy chọn nhập",importOptionsDescription:"Chọn cách xử lý dữ liệu hiện có",skipDuplicates:"Bỏ qua bản sao",overwrite:"Ghi đè hiện có",importResults:"Kết quả nhập",preferences:"Tùy chọn",imported:"Đã nhập",failed:"Thất bại",sessions:"Phiên",importedLabel:"đã nhập",skipped:"đã bỏ qua",documents:"Tài liệu",errors:"Lỗi"},about:{title:"Giới thiệu",versionLabel:"Phiên bản",ollama:{title:"Trạng thái Ollama",version:"Phiên bản",healthy:"Khỏe mạnh",unhealthy:"Không khỏe mạnh"},stats:{models:"Mô hình",sessions:"Phiên"},features:{privacy:{title:"Ưu tiên quyền riêng tư",description:"Dữ liệu của bạn được lưu trên thiết bị của bạn"},openSource:{title:"Mã nguồn mở",description:"Phần mềm miễn phí và mã nguồn mở"},localInference:{title:"Suy luận cục bộ",description:"Chạy mô hình AI cục bộ với Ollama"}},openSourceBy:"Mã nguồn mở bởi {{company}}",links:{title:"Liên kết",github:"GitHub",githubDescription:"Xem mã nguồn và đóng góp",website:"Website",websiteDescription:"Truy cập website của chúng tôi",ollama:"Ollama",ollamaDescription:"Tìm hiểu thêm về Ollama",documentation:"Tài liệu",reportIssue:"Báo cáo vấn đề",reportIssueDescription:"Báo lỗi & yêu cầu tính năng"},version:"Phiên bản {{version}}"}},qk={title:"Mô hình",subtitle:"Tải, quản lý và giám sát mô hình Ollama của bạn",installed:"Mô hình đã cài đặt",available:"Mô hình khả dụng",pull:"Tải mô hình",pulling:"Đang tải...",delete:"Xóa mô hình",deleting:"Đang xóa...",size:"Kích thước",modified:"Đã sửa đổi",family:"Họ",parameters:"Tham số",quantization:"Lượng tử hóa",noModels:"Chưa có mô hình nào được cài đặt",pullFirst:"Tải mô hình để bắt đầu"},Jk={title:"Personas",create:"Tạo Persona",edit:"Chỉnh sửa Persona",delete:"Xóa Persona",name:"Tên",description:"Mô tả",systemPrompt:"Prompt hệ thống",model:"Mô hình",avatar:"Ảnh đại diện",background:"Hình nền",noPersonas:"Chưa có persona nào được tạo",createFirst:"Tạo persona đầu tiên của bạn để tùy chỉnh trải nghiệm trò chuyện"},_k={title:"Thư viện",subtitle:"Thư viện hình ảnh do AI tạo của bạn",imageCount:"{{count}} hình ảnh",generate:"Tạo hình ảnh",generateDescription:"Tạo hình ảnh với AI",generating:"Đang tạo...",prompt:"Prompt",promptPlaceholder:"Mô tả hình ảnh bạn muốn tạo...",noImages:"Chưa có hình ảnh nào được tạo",download:"Tải xuống",delete:"Xóa",regenerate:"Tạo lại",model:"Mô hình",size:"Kích thước",quality:"Chất lượng",created:"Đã tạo"},Yk={generic:"Đã xảy ra lỗi",network:"Lỗi mạng. Vui lòng kiểm tra kết nối của bạn.",unauthorized:"Bạn không được phép thực hiện hành động này.",notFound:"Không tìm thấy tài nguyên được yêu cầu.",serverError:"Lỗi máy chủ. Vui lòng thử lại sau.",validation:"Vui lòng kiểm tra đầu vào của bạn và thử lại."},Zk={title:"Phím tắt",toggleSidebar:"Chuyển đổi thanh bên",openSettings:"Mở cài đặt",toggleDarkMode:"Chuyển đổi chế độ tối",showShortcuts:"Hiển thị phím tắt",closeModals:"Đóng hộp thoại",groups:{navigation:"Điều hướng",settings:"Cài đặt",general:"Chung",chat:"Trò chuyện"},actions:{sendMessage:"Gửi tin nhắn",newLine:"Dòng mới trong tin nhắn"},footer:"Nhấn {{key1}} hoặc {{key2}} để hiển thị trợ giúp này",tooltip:"Phím tắt"},Xk={title:"Mô hình",loading:"Đang tải mô hình...",systemStatus:{online:"Ollama trực tuyến",offline:"Ollama ngoại tuyến",models:"mô hình",models_plural:"mô hình",running:"đang chạy",vram:"VRAM"},sections:{pull:"Tải mô hình mới",library:"Duyệt thư viện",running:"Mô hình đang chạy",local:"Mô hình cục bộ",advanced:"Hành động nâng cao",huggingface:"HuggingFace Hub"},pull:{placeholder:"Nhập tên mô hình (vd: llama3.2:3b, deepseek-r1:14b)",button:"Tải",cancel:"Hủy",popular:"Mô hình phổ biến:",browseAll:"Duyệt tất cả mô hình trên ollama.com",success:"Đã tải mô hình {{name}} thành công",cancelled:"Đã hủy tải mô hình",failed:"Không thể tải mô hình",enterName:"Vui lòng nhập tên mô hình"},progress:{starting:"Đang khởi tạo...",pulling:"Đang tải mô hình...",verifying:"Đang xác minh tính toàn vẹn...",writing:"Đang ghi manifest...",cleaning:"Đang dọn dẹp..."},library:{available:"khả dụng",search:"Tìm kiếm mô hình...",noResults:"Không tìm thấy mô hình nào phù hợp với tiêu chí của bạn",installed:"Đã cài đặt",more:"+{{count}} thêm",refresh:"Làm mới thư viện"},local:{noModels:"Chưa có mô hình nào được cài đặt",pullToStart:"Tải mô hình ở trên để bắt đầu",installed:"đã cài đặt",running:"Đang chạy",info:"Thông tin",copy:"Sao chép",delete:"Xóa",deleteConfirm:'Bạn có chắc chắn muốn xóa mô hình "{{name}}"?',deleteSuccess:"Đã xóa mô hình {{name}} thành công",deleteFailed:"Không thể xóa mô hình"},advanced:{createModel:"Tạo mô hình",fromModelfile:"Từ Modelfile",copyModel:"Sao chép mô hình",duplicateExisting:"Nhân đôi hiện có",testEmbeddings:"Kiểm tra nhúng",generateVectors:"Tạo vector",healthCheck:"Kiểm tra sức khỏe",testConnection:"Kiểm tra kết nối",healthy:"Ollama đang hoạt động tốt!"},modals:{details:{title:"Chi tiết mô hình",info:"Thông tin mô hình",family:"Họ",parameters:"Tham số",quantization:"Lượng tử hóa",format:"Định dạng",systemPrompt:"Prompt hệ thống",template:"Mẫu",license:"Giấy phép",modelfile:"Modelfile",noDetails:"Không có chi tiết"},copy:{title:"Sao chép mô hình",source:"Mô hình nguồn",selectModel:"Chọn mô hình...",newName:"Tên mô hình mới",placeholder:"vd: my-custom-model",copying:"Đang sao chép...",button:"Sao chép mô hình",success:"Đã sao chép mô hình sang {{name}}",failed:"Không thể sao chép mô hình",enterBoth:"Vui lòng nhập cả tên nguồn và tên đích"},create:{title:"Tạo mô hình tùy chỉnh",name:"Tên mô hình",namePlaceholder:"vd: my-assistant",modelfile:"Modelfile",modelfilePlaceholder:`FROM llama3.2
|
|
26
|
+
SYSTEM You are a helpful assistant.`,docs:"Tài liệu Modelfile",docsLink:"để tham khảo cú pháp",creating:"Đang tạo...",button:"Tạo mô hình",success:"Đã tạo mô hình {{name}} thành công",failed:"Không thể tạo mô hình",enterBoth:"Vui lòng nhập tên mô hình và nội dung Modelfile"},embeddings:{title:"Kiểm tra nhúng",model:"Mô hình nhúng",selectModel:"Chọn mô hình...",recommended:"Khuyến nghị: nomic-embed-text, mxbai-embed-large",input:"Văn bản đầu vào",placeholder:"Nhập văn bản để tạo nhúng cho...",generating:"Đang tạo...",button:"Tạo nhúng",result:"Kết quả ({{count}} chiều)",success:"Đã tạo vector nhúng {{count}} chiều",failed:"Không thể tạo nhúng",enterBoth:"Vui lòng chọn mô hình và nhập văn bản"}},huggingface:{browseAll:"Xem tất cả trên HuggingFace",checkingGguf:"Đang tìm tệp GGUF...",noGgufAvailable:"Không có tệp GGUF để tải trực tiếp vào Ollama",ggufFilesCount:"Tệp GGUF ({{count}}) - Tải trực tiếp vào Ollama",noModelsFound:"Không tìm thấy mô hình",noResults:"Không tìm thấy mô hình. Thử điều chỉnh tìm kiếm hoặc bộ lọc.",browseAllLink:"Xem tất cả",search:"Tìm kiếm mô hình HuggingFace...",by:"bởi",gated:"Truy cập hạn chế",viewOnHF:"Xem trên HuggingFace",sortDownloads:"Lượt tải",sortLikes:"Lượt thích",sortRecent:"Gần đây",taskTextGeneration:"Tạo văn bản",taskTextToSpeech:"Văn bản thành giọng nói",taskTextToImage:"Văn bản thành hình ảnh",taskSpeechRecognition:"Nhận dạng giọng nói",tasks:{textGen:"Tạo văn bản",tts:"Văn bản thành giọng nói",image:"Văn bản thành hình ảnh",stt:"Nhận dạng giọng nói"},sort:{downloads:"Tải nhiều nhất",likes:"Được thích nhiều nhất",recent:"Cập nhật gần đây"}}},Qk={title:"Personas",subtitle:"Tạo và quản lý các persona AI với tính cách, bộ nhớ và hành vi tùy chỉnh",loading:"Đang tải personas...",createButton:"Tạo Persona",importExport:"Nhập/Xuất",stats:{title:"Personas của bạn",count:"{{count}} persona đã tạo",count_plural:"{{count}} personas đã tạo"},empty:{title:"Chưa có persona nào",description:"Tạo persona đầu tiên của bạn để bắt đầu với tương tác AI được cá nhân hóa",button:"Tạo Persona đầu tiên của bạn"},deleteConfirm:'Bạn có chắc chắn muốn xóa "{{name}}"?',deleteSuccess:'Đã xóa persona "{{name}}" thành công',downloadSuccess:'Đã tải xuống persona "{{name}}" thành công',failed:"Không thể {{action}} persona"},ef={title:{create:"Tạo Persona mới",edit:"Chỉnh sửa Persona"},subtitle:{create:"Tạo một persona AI mới với tính cách tùy chỉnh, hệ thống bộ nhớ và khả năng học thích ứng",edit:"Tùy chỉnh persona AI của bạn với bộ nhớ nâng cao, học thích ứng và tham số thông minh"},loading:"Đang tải form...",saved:"Đã lưu",tabs:{basic:"Cơ bản",parameters:"Tham số",memory:"Bộ nhớ & Học tập",advanced:"Nâng cao"},basic:{name:"Tên",namePlaceholder:"Nhập tên persona",model:"Mô hình",selectModel:"Chọn mô hình",description:"Mô tả",descriptionPlaceholder:"Mô tả persona của bạn...",systemPrompt:"Prompt hệ thống",systemPromptPlaceholder:"Nhập prompt hệ thống định nghĩa hành vi persona của bạn...",systemPromptHint:"Prompt hệ thống định nghĩa cách persona của bạn sẽ hành xử và phản hồi."},parameters:{temperature:"Nhiệt độ",temperatureHint:"Kiểm soát sự sáng tạo vs nhất quán",topP:"Top-P",topPHint:"Kiểm soát sự đa dạng phản hồi",topK:"Top-K",topKHint:"Giới hạn từ vựng ở top-k token",contextWindow:"Cửa sổ ngữ cảnh",contextWindowHint:"Độ dài lịch sử hội thoại tối đa",maxTokens:"Số token tối đa",maxTokensHint:"Độ dài phản hồi tối đa",repeatPenalty:"Hình phạt lặp lại",repeatPenaltyHint:"Giảm phản hồi lặp lại"},memory:{title:"Hệ thống bộ nhớ",subtitle:"Persona ghi nhớ các cuộc trò chuyện theo thời gian",enableHint:"Bật hệ thống bộ nhớ để cho phép persona của bạn ghi nhớ các cuộc trò chuyện và xây dựng ngữ cảnh theo thời gian.",loading:"Đang tải trạng thái bộ nhớ...",noData:"Chưa có dữ liệu bộ nhớ",memories:"Ký ức",mbUsed:"MB đã dùng",lastBackup:"Sao lưu lần cuối",never:"Chưa bao giờ",maxMemories:"Số ký ức tối đa",maxMemoriesHint:"Số lượng ký ức persona này có thể lưu trữ",retention:"Thời gian giữ ký ức",retentionHint:"Số ngày giữ ký ức trước khi dọn dẹp",autoCleanup:"Tự động dọn dẹp ký ức cũ",wipeAll:"Xóa tất cả ký ức",wipeCannot:"Không thể hoàn tác",wipeButton:"Xóa",wiping:"Đang xóa...",wipeConfirm:"Bạn có chắc chắn muốn xóa tất cả ký ức? Không thể hoàn tác.",wipeSuccess:"Đã xóa {{count}} ký ức"},learning:{title:"Học thích ứng",subtitle:"Persona phát triển dựa trên tương tác",enableHint:"Bật học thích ứng để cho phép persona của bạn phát triển và cá nhân hóa phản hồi dựa trên tương tác của bạn.",speed:"Tốc độ học",slow:"Chậm",slowDesc:"Thay đổi dần dần",balanced:"Cân bằng",balancedDesc:"Tốc độ vừa phải",fast:"Nhanh",fastDesc:"Thích ứng nhanh",autoAdapt:"Tự động thích ứng với sở thích người dùng",whatLearns:"Những gì persona học:",conversationTone:"Giọng điệu hội thoại",responseStyle:"Phong cách phản hồi",userPreferences:"Sở thích người dùng",topicInterests:"Chủ đề quan tâm"},advanced:{embeddingModel:"Mô hình nhúng",embeddingHint:"Chọn mô hình được sử dụng để mã hóa bộ nhớ và tìm kiếm ngữ nghĩa. Các mô hình nhúng được hiển thị trước, sau đó là các mô hình khả dụng khác.",noModels:"Không tìm thấy mô hình",embeddingModels:"Mô hình nhúng",otherModels:"Mô hình khác",installHint:"Cài đặt mô hình nhúng:",recommended:"Khuyến nghị: nomic-embed-text, mxbai-embed-large, bge-m3, snowflake-arctic-embed",aboutTitle:"Về cài đặt nâng cao",aboutDescription:"Mô hình nhúng được sử dụng bởi hệ thống bộ nhớ để hiểu ý nghĩa ngữ nghĩa và tìm các ký ức liên quan trong cuộc trò chuyện. Chọn mô hình phù hợp với trường hợp sử dụng và tài nguyên khả dụng của bạn."},actions:{cancel:"Hủy",save:"Lưu",saving:"Đang lưu...",saveClose:"Lưu & Đóng",create:"Tạo"},success:{created:"Đã tạo persona",updated:"Đã cập nhật persona"},error:{saveFailed:"Không thể lưu"}},af={enhanced:"Nâng cao",systemPrompt:"Prompt hệ thống",memories:"ký ức",use:"Sử dụng",editTooltip:"Chỉnh sửa persona",downloadTooltip:"Tải xuống persona",backup:"Sao lưu",exportDNA:"Xuất DNA",wipeMemories:"Xóa ký ức",wipeConfirm:"Bạn có chắc chắn muốn xóa tất cả ký ức của persona này? Hành động này không thể hoàn tác.",wipeSuccess:"Đã xóa {{count}} ký ức",backupSuccess:"Đã tải xuống bản sao lưu persona thành công",dnaSuccess:"Đã xuất DNA persona thành công",failed:"Không thể {{action}}"},tf={title:"Quản lý người dùng",subtitle:"Quản lý tài khoản và quyền hạn người dùng",loading:"Đang tải người dùng...",createUser:"Tạo người dùng",search:"Tìm kiếm người dùng...",noUsers:"Không tìm thấy người dùng",noUsersMatching:"Không có người dùng nào khớp với tìm kiếm của bạn",columns:{user:"Người dùng",email:"Email",role:"Vai trò",created:"Đã tạo",actions:"Hành động"},roles:{admin:"Quản trị viên",user:"Người dùng"},noEmail:"Không có email",deleteConfirm:'Bạn có chắc chắn muốn xóa người dùng "{{name}}"?',deleteSuccess:"Đã xóa người dùng thành công",deleteFailed:"Không thể xóa người dùng",cannotDeleteSelf:"Bạn không thể xóa tài khoản của chính mình",form:{title:{create:"Tạo người dùng",edit:"Chỉnh sửa người dùng"},username:"Tên người dùng",usernamePlaceholder:"Nhập tên người dùng",email:"Email",emailPlaceholder:"Nhập email (tùy chọn)",password:"Mật khẩu",passwordPlaceholder:"Nhập mật khẩu",passwordHint:"Để trống để giữ mật khẩu hiện tại",role:"Vai trò",creating:"Đang tạo...",updating:"Đang cập nhật...",createButton:"Tạo người dùng",updateButton:"Cập nhật người dùng",createSuccess:"Đã tạo người dùng thành công",updateSuccess:"Đã cập nhật người dùng thành công",createFailed:"Không thể tạo người dùng",updateFailed:"Không thể cập nhật người dùng"}},nf={you:"Bạn",assistant:"Trợ lý",system:"Hệ thống",copy:"Sao chép",copyMessage:"Sao chép tin nhắn",copied:"Đã sao chép!",regenerate:"Tạo lại",regenerateResponse:"Tạo lại phản hồi",edit:"Chỉnh sửa",editSystemMessage:"Chỉnh sửa tin nhắn hệ thống",saveChanges:"Lưu thay đổi",cancelEditing:"Hủy chỉnh sửa",delete:"Xóa",deleteConfirm:"Xóa tin nhắn này?",branch:"Nhánh",speaking:"Đang nói...",speakMessage:"Đọc tin nhắn",stopSpeaking:"Dừng đọc",showMore:"Hiển thị thêm",showLess:"Hiển thị ít hơn",thinking:"Đang suy nghĩ",systemMessagePlaceholder:"Nhập tin nhắn hệ thống của bạn...",fullSizeImage:"Hình ảnh kích thước đầy đủ",startConversation:"Bắt đầu cuộc trò chuyện",startConversationDescription:"Gửi tin nhắn để bắt đầu trò chuyện với trợ lý AI của bạn. Đặt câu hỏi, nhờ giúp đỡ về code, hoặc có một cuộc trò chuyện tự nhiên.",scrollToBottom:"Cuộn xuống dưới",newMessages:"Tin nhắn mới"},rf={title:"Thư viện hình ảnh",noImages:"Chưa có hình ảnh nào",noImagesHint:"Tạo hình ảnh đầu tiên của bạn bằng bảng điều khiển bên phải",delete:"Xóa",download:"Tải xuống",deleteConfirm:"Bạn có chắc chắn muốn xóa hình ảnh này?",deleteSuccess:"Đã xóa hình ảnh",deleteFailed:"Không thể xóa hình ảnh",downloadFailed:"Không thể tải xuống hình ảnh",loadMore:"Tải thêm ({{current}} trong số {{total}})",loadFailed:"Không thể tải thư viện"},of={title:"Tạo hình ảnh",prompt:"Prompt",promptPlaceholder:"Mô tả hình ảnh bạn muốn tạo...",model:"Mô hình",selectModel:"Chọn mô hình",noModels:"Không có mô hình tạo hình ảnh nào khả dụng",configurePlugin:"Cấu hình plugin hỗ trợ tạo hình ảnh",size:"Kích thước",quality:"Chất lượng",style:"Phong cách",generate:"Tạo",generating:"Đang tạo...",success:"Đã tạo hình ảnh thành công",failed:"Không thể tạo hình ảnh",enterPrompt:"Vui lòng nhập prompt",promptTooLong:"Prompt vượt quá độ dài tối đa {{max}} ký tự"},sf={title:"Đã xảy ra lỗi",description:"Chúng tôi gặp phải lỗi không mong muốn. Vui lòng thử làm mới trang.",tryAgain:"Làm mới trang",goHome:"Về trang chủ",errorDetails:"Chi tiết lỗi (Phát triển)"},lf={title:"Tài liệu",upload:"Tải lên tài liệu",uploading:"Đang tải lên...",noDocuments:"Chưa có tài liệu nào được tải lên",uploadHint:"Tải lên tài liệu để sử dụng trong cuộc trò chuyện của bạn",delete:"Xóa",deleteConfirm:"Bạn có chắc chắn muốn xóa tài liệu này?",deleteSuccess:"Đã xóa tài liệu",deleteFailed:"Không thể xóa tài liệu",uploadSuccess:"Đã tải lên tài liệu thành công",uploadFailed:"Không thể tải lên tài liệu",types:"Hỗ trợ: PDF, TXT, MD, DOCX",unsupportedFileType:"Chỉ hỗ trợ file PDF và TXT",fileSizeTooLarge:"Kích thước file phải nhỏ hơn 10MB",uploadSuccessWithName:'Đã tải lên tài liệu "{{name}}" thành công',removeSuccess:"Đã xóa tài liệu thành công",removeFailed:"Không thể xóa tài liệu",removeError:"Đã xảy ra lỗi khi xóa tài liệu",clickToUpload:"Nhấp để tải lên",orDragAndDrop:"hoặc kéo và thả",fileTypesAndSize:"File PDF hoặc TXT tối đa 10MB",uploadedDocuments:"Tài liệu đã tải lên",removeDocument:"Xóa tài liệu"},df={speak:"Đọc",stop:"Dừng",speaking:"Đang đọc...",generateFailed:"Không thể tạo giọng nói",playbackFailed:"Phát lại âm thanh thất bại",stopSpeaking:"Dừng đọc",generatingSpeech:"Đang tạo giọng nói...",readAloud:"Đọc to"},cf={title:"Artifact",code:"Code",preview:"Xem trước",copy:"Sao chép code",copied:"Đã sao chép!",download:"Tải xuống",expand:"Mở rộng",collapse:"Thu gọn",openInNewTab:"Mở trong tab mới",invalidSvg:"Nội dung SVG không hợp lệ",invalidJson:"Nội dung JSON không hợp lệ",previewMode:"Chế độ xem trước",codeMode:"Chế độ code",copyContent:"Sao chép nội dung",openInPanel:"Mở trong bảng điều khiển",openInNewWindow:"Mở trong cửa sổ mới",created:"Đã tạo",closePanelEsc:"Đóng bảng điều khiển (Esc)",copyButton:"Sao chép",open:"Mở",dragEdgeToResize:"Kéo cạnh để thay đổi kích thước"},uf={title:"Nhập & Xuất Personas",description:"Xuất personas của bạn để chia sẻ hoặc nhập personas từ người khác",exportPersonas:"Xuất Personas",importPersonas:"Nhập Personas",noPersonasToExport:"Không có personas để xuất",personasAvailable:"{{count}} persona khả dụng",personasAvailable_plural:"{{count}} personas khả dụng",exportAll:"Xuất tất cả",uploadJsonFile:"Tải lên file JSON",pasteJsonLabel:"Dán dữ liệu JSON",pasteJsonPlaceholder:"Dán dữ liệu JSON persona vào đây...",importing:"Đang nhập...",importButton:"Nhập Persona(s)",expectedFormat:"Định dạng JSON mong đợi:",exportSuccess:'Đã xuất persona "{{name}}" thành công',exportFailed:"Không thể xuất persona",exportAllSuccess:"Đã xuất tất cả {{count}} personas thành công",exportAllFailed:"Không thể xuất personas",pasteJsonData:"Vui lòng dán dữ liệu JSON persona",importMultipleSuccess:"Đã nhập thành công {{count}} personas",importMultipleFailed:"Không thể nhập {{count}} personas",importNoneFailed:"Không thể nhập bất kỳ personas nào",importSuccess:"Đã nhập persona thành công",importFailed:"Không thể nhập persona"},mf={common:Bk,brand:Kk,auth:Hk,setup:Rk,chat:Uk,sidebar:$k,user:Vk,settings:Wk,models:qk,personas:Jk,gallery:_k,errors:Yk,keyboard:Zk,modelManager:Xk,personaManager:Qk,personaForm:ef,personaCard:af,userManager:tf,chatMessage:nf,imageGallery:rf,imageGeneration:of,errorBoundary:sf,documents:lf,ttsButton:df,artifacts:cf,personaImportExport:uf},pf={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:"自定义",mode:"模式",multiUser:"多用户",remove:"移除"},gf={name:"Libre WebUI",shortName:"Libre"},hf={login:{title:"欢迎回来",subtitle:"登录您的账户以继续",username:"用户名",usernamePlaceholder:"请输入用户名",password:"密码",passwordPlaceholder:"请输入密码",signIn:"登录",signingIn:"登录中...",noAccount:"还没有账户?",signUpHere:"点击注册",loginSuccess:"登录成功!",loginFailed:"登录失败",checkCredentials:"登录失败,请检查您的凭据。",enterBoth:"请输入用户名和密码",githubSuccess:"GitHub 登录成功!",githubFailed:"GitHub 认证失败",githubVerifyFailed:"GitHub 认证验证失败"},signup:{title:"创建账户",subtitle:"注册新账户",username:"用户名",usernamePlaceholder:"请选择用户名",email:"电子邮箱",emailPlaceholder:"your@email.com",password:"密码",passwordPlaceholder:"请选择密码",confirmPassword:"确认密码",confirmPasswordPlaceholder:"请再次输入密码",createAccount:"创建账户",creatingAccount:"创建账户中...",hasAccount:"已有账户?",signInHere:"点击登录",signupSuccess:"账户创建成功!",signupFailed:"注册失败",tryAgain:"注册失败,请重试。",usernameRequired:"用户名和密码为必填项",passwordMismatch:"两次输入的密码不一致",passwordTooShort:"密码长度至少为6个字符"},logout:{button:"退出登录",success:"已成功退出登录"},oauth:{continueWith:"使用 {{provider}} 继续",connectingTo:"正在连接 {{provider}}...",github:"GitHub",huggingFace:"Hugging Face"}},bf={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:"请输入密码(至少6个字符)",confirmPlaceholder:"请确认密码",creating:"创建中...",createAdmin:"创建管理员",success:"管理员账户创建成功!",failed:"创建管理员账户失败",fillAllFields:"请填写所有字段",note:"这将是您 Libre WebUI 实例的主管理员账户"},encryptionKey:{title:"保存您的加密密钥",subtitle:"重要:请保存此密钥",description:"此加密密钥用于保护您的敏感数据。请妥善保存——如果需要恢复数据库,您将需要它。",warning:"警告",warningText:"如果您丢失此密钥且需要恢复数据库,您的加密数据(API 密钥、偏好设置)将无法恢复。",label:"您的加密密钥",loading:"加载中...",copyToClipboard:"复制到剪贴板",copied:"加密密钥已复制到剪贴板!",copyFailed:"复制密钥到剪贴板失败",envNote:"此密钥也保存在您的 backend/.env 文件中,名为 ENCRYPTION_KEY",acknowledgment:"我已将加密密钥保存在安全的位置,并了解丢失它可能导致数据丢失。",confirmRequired:"请确认您已保存加密密钥",continue:"继续使用 Libre WebUI"}},kf={greeting:{morning:"早上好",afternoon:"下午好",evening:"晚上好",night:"夜深了"},welcome:{helpToday:"今天我能帮您什么?",helpTonight:"今晚我能帮您什么?"},input:{placeholder:"发送消息",messagePlaceholder:"消息...",attachImages:"添加图片",attachments:"附件和高级功能",sendMessage:"发送消息",stopGeneration:"停止生成"},session:{new:"新对话",private:"私密",privateMode:"私密模式",privateDescription:"此对话不会被保存",privateTooltip:"开始一个不会被保存的私密对话",deleteConfirm:"确定要删除此对话吗?",generatingTitle:"正在生成标题",noChats:"暂无对话",createFirst:"在上方创建您的第一个对话",chats:"对话",renameChat:"重命名对话",deleteChat:"删除对话"},persona:{applied:"已应用角色",label:"角色"},model:{updated:"模型已更新",noModels:"没有可用的模型",noModelsDescription:"没有可用的模型。请确保 Ollama 正在运行并已安装模型。",pullCommand:"ollama pull llama3.2:3b",noModelsTooltip:"没有可用的模型。请确保 Ollama 正在运行并已安装模型。"},footer:{disclaimer:"大语言模型可能会犯错——请核实重要信息",images:"{{count}} 张图片",images_plural:"{{count}} 张图片",structuredOutput:"结构化输出"},mediaUpload:{dropImagesHere:"将图片拖放到此处或",supportedFormats:"支持格式:JPG、PNG、GIF、WebP(每张最大10MB)",browse:"浏览"},structuredOutput:{title:"响应格式",none:"无(自然语言)",noneDescription:"默认自然语言响应",json:"JSON",jsonDescription:"结构化 JSON 格式",list:"列表",listDescription:"项目数组",summary:"摘要",summaryDescription:"包含要点的文档摘要",analysis:"分析",analysisDescription:"包含优缺点的结构化分析",custom:"自定义模式",customDescription:"定义您自己的 JSON 模式",customSchema:"自定义 JSON 模式",schemaPreview:"模式预览",applySchema:"应用模式",cancel:"取消",enabled:"已启用结构化输出"}},ff={navigation:{chat:"对话",models:"模型",personas:"角色",imagine:"创意",settings:"设置",userManagement:"用户管理",signOut:"退出登录"},toggleSize:"切换侧边栏大小",expandSidebar:"展开侧边栏"},yf={menu:{changePicture:"更换头像",settings:"设置",userManagement:"用户管理",logout:"退出登录"},avatar:{title:"更换头像",updated:"头像已更新",updateFailed:"更新头像失败",saving:"保存中..."},profile:{noEmail:"未提供邮箱"}},vf={title:"设置",tabs:{appearance:"外观",model:"模型",systemMessage:"系统消息",plugins:"插件",generation:"生成",documents:"文档",tts:"语音合成",imageGen:"图像生成",data:"数据",about:"关于"},appearance:{title:"外观",language:{title:"语言",description:"选择您偏好的语言"},theme:{title:"主题",light:"浅色",dark:"深色",amoled:"纯黑",system:"跟随系统"},chatInterface:{title:"聊天界面",showUsername:"显示用户名",showUsernameDescription:"在聊天消息中显示用户名"},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:"角色"},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 密钥"}},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:"启用文档嵌入"},documents:{title:"文档设置",embeddings:{title:"嵌入",enable:"启用文档嵌入",model:"嵌入模型",modelDescription:"选择用于文档嵌入的模型",chunkSize:"分块大小",chunkSizeInTokens:"(词元数)",chunkSizeDescription:"嵌入的文本块大小",chunkOverlap:"分块重叠",chunkOverlapInTokens:"(词元数)",chunkOverlapDescription:"连续块之间的重叠",similarityThreshold:"相似度阈值",similarityDescription:"包含结果的最小相似度分数",status:"嵌入状态",statusLabel:"状态",available:"可用",unavailable:"不可用",chunksWithEmbeddings:"带嵌入的分块",coverage:"覆盖率",regenerate:"重新生成嵌入",regenerating:"重新生成中..."}},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:"错误"},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:"文档",reportIssue:"报告问题",reportIssueDescription:"错误报告和功能请求"},version:"版本 {{version}}"}},xf={title:"模型",subtitle:"拉取、管理和监控您的 Ollama 模型",installed:"已安装模型",available:"可用模型",pull:"拉取模型",pulling:"拉取中...",delete:"删除模型",deleting:"删除中...",size:"大小",modified:"修改时间",family:"系列",parameters:"参数",quantization:"量化",noModels:"未安装模型",pullFirst:"拉取模型以开始使用"},Sf={title:"角色",create:"创建角色",edit:"编辑角色",delete:"删除角色",name:"名称",description:"描述",systemPrompt:"系统提示词",model:"模型",avatar:"头像",background:"背景",noPersonas:"未创建角色",createFirst:"创建您的第一个角色以自定义聊天体验"},wf={title:"图库",subtitle:"您的 AI 生成图像库",imageCount:"{{count}} 张图片",generate:"生成图像",generateDescription:"使用 AI 创建图像",generating:"生成中...",prompt:"提示词",promptPlaceholder:"描述您想要生成的图像...",noImages:"尚未生成图像",download:"下载",delete:"删除",regenerate:"重新生成",model:"模型",size:"尺寸",quality:"质量",created:"创建时间"},Pf={generic:"发生错误",network:"网络错误。请检查您的连接。",unauthorized:"您无权执行此操作。",notFound:"未找到请求的资源。",serverError:"服务器错误。请稍后重试。",validation:"请检查您的输入并重试。"},Mf={title:"键盘快捷键",toggleSidebar:"切换侧边栏",openSettings:"打开设置",toggleDarkMode:"切换深色模式",showShortcuts:"显示键盘快捷键",closeModals:"关闭弹窗",groups:{navigation:"导航",settings:"设置",general:"通用",chat:"聊天"},actions:{sendMessage:"发送消息",newLine:"消息中换行"},footer:"按 {{key1}} 或 {{key2}} 显示此帮助",tooltip:"键盘快捷键"},Df={title:"模型",loading:"加载模型中...",systemStatus:{online:"Ollama 在线",offline:"Ollama 离线",models:"模型",models_plural:"模型",running:"运行中",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:"请输入模型名称"},progress:{starting:"初始化中...",pulling:"下载模型中...",verifying:"验证完整性...",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
|
|
27
|
+
SYSTEM You are a helpful assistant.`,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:"最近更新"}}},Af={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}}角色失败"},zf={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:"保存失败"}},jf={enhanced:"增强",systemPrompt:"系统提示词",memories:"记忆",use:"使用",editTooltip:"编辑角色",downloadTooltip:"下载角色",backup:"备份",exportDNA:"导出 DNA",wipeMemories:"清除记忆",wipeConfirm:"确定要清除此角色的所有记忆吗?此操作无法撤销。",wipeSuccess:"已清除 {{count}} 条记忆",backupSuccess:"角色备份下载成功",dnaSuccess:"角色 DNA 导出成功",failed:"{{action}}失败"},Tf={title:"用户管理",subtitle:"管理用户账户和权限",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:"更新用户失败"}},Nf={you:"您",assistant:"助手",system:"系统",copy:"复制",copyMessage:"复制消息",copied:"已复制!",regenerate:"重新生成",regenerateResponse:"重新生成响应",edit:"编辑",editSystemMessage:"编辑系统消息",saveChanges:"保存更改",cancelEditing:"取消编辑",delete:"删除",deleteConfirm:"删除此消息?",branch:"分支",speaking:"朗读中...",speakMessage:"朗读消息",stopSpeaking:"停止朗读",showMore:"显示更多",showLess:"显示更少",thinking:"思考中",systemMessagePlaceholder:"输入系统消息...",fullSizeImage:"全尺寸图像",startConversation:"开始对话",startConversationDescription:"发送消息开始与 AI 助手聊天。提问、获取代码帮助或进行自然对话。",scrollToBottom:"滚动到底部",newMessages:"新消息"},If={title:"图像库",noImages:"暂无图像",noImagesHint:"使用右侧面板生成您的第一张图像",delete:"删除",download:"下载",deleteConfirm:"确定要删除此图像吗?",deleteSuccess:"图像已删除",deleteFailed:"删除图像失败",downloadFailed:"下载图像失败",loadMore:"加载更多({{current}} / {{total}})",loadFailed:"加载图库失败"},Cf={title:"生成图像",prompt:"提示词",promptPlaceholder:"描述您想要创建的图像...",model:"模型",selectModel:"选择模型",noModels:"没有可用的图像生成模型",configurePlugin:"配置支持图像生成的插件",size:"尺寸",quality:"质量",style:"风格",generate:"生成",generating:"生成中...",success:"图像生成成功",failed:"图像生成失败",enterPrompt:"请输入提示词",promptTooLong:"提示词超过最大长度 {{max}} 个字符"},Ff={title:"出错了",description:"我们遇到了意外错误。请尝试刷新页面。",tryAgain:"刷新页面",goHome:"返回首页",errorDetails:"错误详情(开发环境)"},Of={title:"文档",upload:"上传文档",uploading:"上传中...",noDocuments:"未上传文档",uploadHint:"上传文档以在对话中使用",delete:"删除",deleteConfirm:"确定要删除此文档吗?",deleteSuccess:"文档已删除",deleteFailed:"删除文档失败",uploadSuccess:"文档上传成功",uploadFailed:"上传文档失败",types:"支持格式:PDF、TXT、MD、DOCX",unsupportedFileType:"仅支持 PDF 和 TXT 文件",fileSizeTooLarge:"文件大小必须小于 10MB",uploadSuccessWithName:'文档 "{{name}}" 上传成功',removeSuccess:"文档移除成功",removeFailed:"移除文档失败",removeError:"移除文档时发生错误",clickToUpload:"点击上传",orDragAndDrop:"或拖放文件",fileTypesAndSize:"PDF 或 TXT 文件,最大 10MB",uploadedDocuments:"已上传文档",removeDocument:"移除文档"},Ef={speak:"朗读",stop:"停止",speaking:"朗读中...",generateFailed:"生成语音失败",playbackFailed:"音频播放失败",stopSpeaking:"停止朗读",generatingSpeech:"生成语音中...",readAloud:"朗读"},Lf={title:"制品",code:"代码",preview:"预览",copy:"复制代码",copied:"已复制!",download:"下载",expand:"展开",collapse:"折叠",openInNewTab:"在新标签页打开",invalidSvg:"无效的 SVG 内容",invalidJson:"无效的 JSON 内容",previewMode:"预览模式",codeMode:"代码模式",copyContent:"复制内容",openInPanel:"在面板中打开",openInNewWindow:"在新窗口中打开",created:"创建时间",closePanelEsc:"关闭面板(Esc)",copyButton:"复制",open:"打开",dragEdgeToResize:"拖动边缘调整大小"},Gf={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:"导入角色失败"},Bf={common:pf,brand:gf,auth:hf,setup:bf,chat:kf,sidebar:ff,user:yf,settings:vf,models:xf,personas:Sf,gallery:wf,errors:Pf,keyboard:Mf,modelManager:Df,personaManager:Af,personaForm:zf,personaCard:jf,userManager:Tf,chatMessage:Nf,imageGallery:If,imageGeneration:Cf,errorBoundary:Ff,documents:Of,ttsButton:Ef,artifacts:Lf,personaImportExport:Gf},Kf={ar:{translation:Go},bn:{translation:us},cs:{translation:Gs},da:{translation:ul},de:{translation:Gl},en:{translation:ud},es:{translation:Gd},fr:{translation:uc},hi:{translation:Gc},id:{translation:uu},is:{translation:Gu},it:{translation:um},ja:{translation:Gm},ko:{translation:up},ms:{translation:Gp},nl:{translation:ug},pl:{translation:Gg},pt:{translation:uh},ru:{translation:Gh},sv:{translation:ub},th:{translation:Gb},tr:{translation:uk},uk:{translation:Gk},vi:{translation:mf},zh:{translation:Bf}},Hf=[{code:"ar",name:"Arabic",nativeName:"العربية",dir:"rtl"},{code:"bn",name:"Bengali",nativeName:"বাংলা",dir:"ltr"},{code:"cs",name:"Czech",nativeName:"Čeština",dir:"ltr"},{code:"da",name:"Danish",nativeName:"Dansk",dir:"ltr"},{code:"de",name:"German",nativeName:"Deutsch",dir:"ltr"},{code:"en",name:"English",nativeName:"English",dir:"ltr"},{code:"es",name:"Spanish",nativeName:"Español",dir:"ltr"},{code:"fr",name:"French",nativeName:"Français",dir:"ltr"},{code:"hi",name:"Hindi",nativeName:"हिन्दी",dir:"ltr"},{code:"id",name:"Indonesian",nativeName:"Bahasa Indonesia",dir:"ltr"},{code:"is",name:"Icelandic",nativeName:"Íslenska",dir:"ltr"},{code:"it",name:"Italian",nativeName:"Italiano",dir:"ltr"},{code:"ja",name:"Japanese",nativeName:"日本語",dir:"ltr"},{code:"ko",name:"Korean",nativeName:"한국어",dir:"ltr"},{code:"ms",name:"Malay",nativeName:"Bahasa Melayu",dir:"ltr"},{code:"nl",name:"Dutch",nativeName:"Nederlands",dir:"ltr"},{code:"pl",name:"Polish",nativeName:"Polski",dir:"ltr"},{code:"pt",name:"Portuguese",nativeName:"Português",dir:"ltr"},{code:"ru",name:"Russian",nativeName:"Русский",dir:"ltr"},{code:"sv",name:"Swedish",nativeName:"Svenska",dir:"ltr"},{code:"th",name:"Thai",nativeName:"ไทย",dir:"ltr"},{code:"tr",name:"Turkish",nativeName:"Türkçe",dir:"ltr"},{code:"uk",name:"Ukrainian",nativeName:"Українська",dir:"ltr"},{code:"vi",name:"Vietnamese",nativeName:"Tiếng Việt",dir:"ltr"},{code:"zh",name:"Chinese",nativeName:"中文",dir:"ltr"}],Rf=["ar","he","fa","ur"],Uf=n=>Rf.includes(n);ce.use(Kn).use(Hi).init({resources:Kf,fallbackLng:"en",debug:!1,interpolation:{escapeValue:!1},detection:{order:["localStorage","navigator","htmlTag"],caches:["localStorage"],lookupLocalStorage:"i18nextLng"}});const v=()=>{if(typeof window<"u"){const n=window.location.hostname,a=o=>o.some(s=>n===s||n.endsWith("."+s));if(a(["vercel.app","vercel.dev"])||a(["netlify.app","netlify.com"])||a(["github.io"])||n.startsWith("demo.")||n.startsWith("preview."))return!0}return!1},cn=()=>({isDemo:v(),message:"This is a demo version for presentation purposes only. The Ollama backend is not connected.",showBanner:!0,allowInteraction:!1});function H(...n){return oi(si(n))}function $f(n){const a=new Date(n),r=new Date().getTime()-a.getTime(),i=Math.floor(r/(1e3*60)),o=Math.floor(r/(1e3*60*60)),s=Math.floor(r/(1e3*60*60*24));return i<1?"Just now":i<60?`${i}m ago`:o<24?`${o}h ago`:s<7?`${s}d ago`:a.toLocaleDateString()}function Vf(){return Math.random().toString(36).substring(2)+Date.now().toString(36)}function Wf(n,a){return n.length<=a?n:n.substring(0,a)+"..."}function Ky(n){const a=/^\[Thinking:\s*([\s\S]*?)\]\s*/i,t=/^<thinking>([\s\S]*?)<\/thinking>\s*/i,r=n.match(a);if(r)return{thinking:r[1].trim(),content:n.slice(r[0].length).trim()};const i=n.match(t);return i?{thinking:i[1].trim(),content:n.slice(i[0].length).trim()}:{thinking:null,content:n}}const C=({variant:n="primary",size:a="md",loading:t=!1,disabled:r,children:i,className:o,...s})=>{const d="inline-flex items-center justify-center rounded-xl font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.98] relative overflow-hidden",u={primary:"bg-primary-600 text-white shadow-sm hover:bg-primary-700 hover:shadow-md focus:ring-primary-500 dark:bg-primary-500 dark:hover:bg-primary-600 dark:focus:ring-primary-400",secondary:"bg-gray-50 text-gray-700 border border-gray-200 shadow-sm hover:bg-gray-100 hover:border-gray-300 hover:shadow-md focus:ring-gray-500 dark:bg-dark-200 dark:text-dark-700 dark:border-dark-300 dark:hover:bg-dark-300 dark:hover:border-dark-400",outline:"border border-gray-300 text-gray-700 bg-white shadow-sm hover:bg-gray-50 hover:border-gray-400 focus:ring-gray-500 dark:border-dark-300 dark:text-dark-700 dark:bg-dark-50 dark:hover:bg-dark-100 dark:hover:border-dark-400",ghost:"text-gray-600 hover:bg-gray-100 hover:text-gray-900 focus:ring-gray-500 dark:text-dark-500 dark:hover:bg-dark-200 dark:hover:text-dark-800",danger:"bg-error-500 text-white shadow-sm hover:bg-error-600 hover:shadow-md focus:ring-error-500 dark:bg-error-600 dark:hover:bg-error-700"},m={sm:"px-3 py-1.5 text-sm gap-1.5",md:"px-4 py-2.5 text-sm gap-2",lg:"px-6 py-3 text-base gap-2.5"};return e.jsxs("button",{className:H(d,u[n],m[a],o),disabled:r||t,...s,children:[t&&e.jsxs("svg",{className:"mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),i]})},qf=({label:n,error:a,helper:t,className:r,id:i,...o})=>{const s=h.useId(),d=i||`input-${s}`;return e.jsxs("div",{className:"space-y-1",children:[n&&e.jsx("label",{htmlFor:d,className:"block text-sm font-medium text-gray-700 dark:text-dark-700",children:n}),e.jsx("input",{id:d,className:H("block w-full rounded-xl border border-gray-200 px-4 py-3 text-sm placeholder-gray-500 shadow-sm transition-all duration-200 bg-white text-gray-900","focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 focus:outline-none focus:shadow-md","dark:border-dark-300 dark:bg-dark-100 dark:text-dark-800 dark:placeholder-dark-500","dark:focus:border-primary-400 dark:focus:ring-primary-400/20",a&&"border-error-500 focus:border-error-500 focus:ring-error-500/20",r),...o}),a&&e.jsx("p",{className:"text-sm text-error-600 dark:text-error-400",children:a}),t&&!a&&e.jsx("p",{className:"text-sm text-gray-500 dark:text-dark-500",children:t})]})},Hn=de.forwardRef(({label:n,error:a,helper:t,className:r,id:i,...o},s)=>{const d=h.useId(),u=i||`textarea-${d}`;return e.jsxs("div",{className:"space-y-1",children:[n&&e.jsx("label",{htmlFor:u,className:"block text-sm font-medium text-gray-700 dark:text-dark-700",children:n}),e.jsx("textarea",{ref:s,id:u,className:H("block w-full rounded-xl border border-gray-200 px-4 py-3 text-sm placeholder-gray-500 shadow-sm transition-all duration-200 resize-none bg-white text-gray-900","focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 focus:outline-none focus:shadow-md","dark:border-dark-300 dark:bg-dark-100 dark:text-dark-800 dark:placeholder-dark-500","dark:focus:border-primary-400 dark:focus:ring-primary-400/20",a&&"border-error-500 focus:border-error-500 focus:ring-error-500/20",r),...o}),a&&e.jsx("p",{className:"text-sm text-error-600 dark:text-error-400",children:a}),t&&!a&&e.jsx("p",{className:"text-sm text-gray-500 dark:text-dark-500",children:t})]})});Hn.displayName="Textarea";const xe=({label:n,error:a,helper:t,options:r,className:i,id:o,...s})=>{const d=h.useId(),u=o||`select-${d}`;return e.jsxs("div",{className:"space-y-1",children:[n&&e.jsx("label",{htmlFor:u,className:"block text-sm font-medium text-gray-700 dark:text-dark-700",children:n}),e.jsx("select",{id:u,className:H("block w-full rounded-xl border border-gray-200 px-4 py-3 text-sm shadow-sm transition-all duration-200 bg-white text-gray-900","focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20 focus:outline-none focus:shadow-md","dark:border-dark-300 dark:bg-dark-100 dark:text-dark-800","dark:focus:border-primary-400 dark:focus:ring-primary-400/20",a&&"border-error-500 focus:border-error-500 focus:ring-error-500/20",i),...s,children:r.map((m,g)=>e.jsx("option",{value:m.value,children:m.label},m.key??`${m.value}-${g}`))}),a&&e.jsx("p",{className:"text-sm text-error-600 dark:text-error-400",children:a}),t&&!a&&e.jsx("p",{className:"text-sm text-gray-500 dark:text-dark-600",children:t})]})},Jf={'code[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"]::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},prolog:{color:"hsl(220, 10%, 40%)"},cdata:{color:"hsl(220, 10%, 40%)"},doctype:{color:"hsl(220, 14%, 71%)"},punctuation:{color:"hsl(220, 14%, 71%)"},entity:{color:"hsl(220, 14%, 71%)",cursor:"help"},"attr-name":{color:"hsl(29, 54%, 61%)"},"class-name":{color:"hsl(29, 54%, 61%)"},boolean:{color:"hsl(29, 54%, 61%)"},constant:{color:"hsl(29, 54%, 61%)"},number:{color:"hsl(29, 54%, 61%)"},atrule:{color:"hsl(29, 54%, 61%)"},keyword:{color:"hsl(286, 60%, 67%)"},property:{color:"hsl(355, 65%, 65%)"},tag:{color:"hsl(355, 65%, 65%)"},symbol:{color:"hsl(355, 65%, 65%)"},deleted:{color:"hsl(355, 65%, 65%)"},important:{color:"hsl(355, 65%, 65%)"},selector:{color:"hsl(95, 38%, 62%)"},string:{color:"hsl(95, 38%, 62%)"},char:{color:"hsl(95, 38%, 62%)"},builtin:{color:"hsl(95, 38%, 62%)"},inserted:{color:"hsl(95, 38%, 62%)"},regex:{color:"hsl(95, 38%, 62%)"},"attr-value":{color:"hsl(95, 38%, 62%)"},"attr-value > .token.punctuation":{color:"hsl(95, 38%, 62%)"},variable:{color:"hsl(207, 82%, 66%)"},operator:{color:"hsl(207, 82%, 66%)"},function:{color:"hsl(207, 82%, 66%)"},url:{color:"hsl(187, 47%, 55%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(220, 14%, 71%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(220, 14%, 71%)"},".language-css .token.selector":{color:"hsl(355, 65%, 65%)"},".language-css .token.property":{color:"hsl(220, 14%, 71%)"},".language-css .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.string.url":{color:"hsl(95, 38%, 62%)"},".language-css .token.important":{color:"hsl(286, 60%, 67%)"},".language-css .token.atrule .token.rule":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.operator":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(5, 48%, 51%)"},".language-json .token.operator":{color:"hsl(220, 14%, 71%)"},".language-json .token.null.keyword":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.url":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.operator":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.content":{color:"hsl(207, 82%, 66%)"},".language-markdown .token.url > .token.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.url-reference.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(95, 38%, 62%)"},".language-markdown .token.bold .token.content":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.italic .token.content":{color:"hsl(286, 60%, 67%)"},".language-markdown .token.strike .token.content":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.list.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(355, 65%, 65%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.cr:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.lf:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.space:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},".line-highlight.line-highlight":{background:"hsla(220, 100%, 80%, 0.04)"},".line-highlight.line-highlight:before":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(220, 100%, 80%, 0.04)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".command-line .command-line-prompt":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(220, 14%, 45%)"},".command-line .command-line-prompt > span:before":{color:"hsl(220, 14%, 45%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(286, 60%, 67%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(224, 13%, 17%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(224, 13%, 17%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(224, 13%, 17%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(224, 13%, 17%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(219, 13%, 22%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(220, 14%, 71%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(220, 14%, 71%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(220, 14%, 71%)"}},_f={'code[class*="language-"]':{background:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"] *::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"]::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'code[class*="language-"] *::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},'pre[class*="language-"] *::selection':{background:"hsl(230, 1%, 90%)",color:"inherit"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},prolog:{color:"hsl(230, 4%, 64%)"},cdata:{color:"hsl(230, 4%, 64%)"},doctype:{color:"hsl(230, 8%, 24%)"},punctuation:{color:"hsl(230, 8%, 24%)"},entity:{color:"hsl(230, 8%, 24%)",cursor:"help"},"attr-name":{color:"hsl(35, 99%, 36%)"},"class-name":{color:"hsl(35, 99%, 36%)"},boolean:{color:"hsl(35, 99%, 36%)"},constant:{color:"hsl(35, 99%, 36%)"},number:{color:"hsl(35, 99%, 36%)"},atrule:{color:"hsl(35, 99%, 36%)"},keyword:{color:"hsl(301, 63%, 40%)"},property:{color:"hsl(5, 74%, 59%)"},tag:{color:"hsl(5, 74%, 59%)"},symbol:{color:"hsl(5, 74%, 59%)"},deleted:{color:"hsl(5, 74%, 59%)"},important:{color:"hsl(5, 74%, 59%)"},selector:{color:"hsl(119, 34%, 47%)"},string:{color:"hsl(119, 34%, 47%)"},char:{color:"hsl(119, 34%, 47%)"},builtin:{color:"hsl(119, 34%, 47%)"},inserted:{color:"hsl(119, 34%, 47%)"},regex:{color:"hsl(119, 34%, 47%)"},"attr-value":{color:"hsl(119, 34%, 47%)"},"attr-value > .token.punctuation":{color:"hsl(119, 34%, 47%)"},variable:{color:"hsl(221, 87%, 60%)"},operator:{color:"hsl(221, 87%, 60%)"},function:{color:"hsl(221, 87%, 60%)"},url:{color:"hsl(198, 99%, 37%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(230, 8%, 24%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(230, 8%, 24%)"},".language-css .token.selector":{color:"hsl(5, 74%, 59%)"},".language-css .token.property":{color:"hsl(230, 8%, 24%)"},".language-css .token.function":{color:"hsl(198, 99%, 37%)"},".language-css .token.url > .token.function":{color:"hsl(198, 99%, 37%)"},".language-css .token.url > .token.string.url":{color:"hsl(119, 34%, 47%)"},".language-css .token.important":{color:"hsl(301, 63%, 40%)"},".language-css .token.atrule .token.rule":{color:"hsl(301, 63%, 40%)"},".language-javascript .token.operator":{color:"hsl(301, 63%, 40%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(344, 84%, 43%)"},".language-json .token.operator":{color:"hsl(230, 8%, 24%)"},".language-json .token.null.keyword":{color:"hsl(35, 99%, 36%)"},".language-markdown .token.url":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url > .token.operator":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(230, 8%, 24%)"},".language-markdown .token.url > .token.content":{color:"hsl(221, 87%, 60%)"},".language-markdown .token.url > .token.url":{color:"hsl(198, 99%, 37%)"},".language-markdown .token.url-reference.url":{color:"hsl(198, 99%, 37%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(230, 4%, 64%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(119, 34%, 47%)"},".language-markdown .token.bold .token.content":{color:"hsl(35, 99%, 36%)"},".language-markdown .token.italic .token.content":{color:"hsl(301, 63%, 40%)"},".language-markdown .token.strike .token.content":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.list.punctuation":{color:"hsl(5, 74%, 59%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(5, 74%, 59%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.cr:before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.lf:before":{color:"hsla(230, 8%, 24%, 0.2)"},"token.space:before":{color:"hsla(230, 8%, 24%, 0.2)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 6%, 44%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(230, 1%, 78%)",color:"hsl(230, 8%, 24%)"},".line-highlight.line-highlight":{background:"hsla(230, 8%, 24%, 0.05)"},".line-highlight.line-highlight:before":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 8%, 24%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(230, 1%, 90%)",color:"hsl(230, 8%, 24%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(230, 8%, 24%, 0.05)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(230, 8%, 24%, 0.2)"},".command-line .command-line-prompt":{borderRightColor:"hsla(230, 8%, 24%, 0.2)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(230, 1%, 62%)"},".command-line .command-line-prompt > span:before":{color:"hsl(230, 1%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(5, 74%, 59%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(119, 34%, 47%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(221, 87%, 60%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(301, 63%, 40%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(301, 63%, 40%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(301, 63%, 40%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(0, 0, 95%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(0, 0, 95%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(0, 0, 95%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(0, 0, 95%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(0, 0%, 100%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(0, 0%, 100%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(0, 0%, 100%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(230, 8%, 24%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(230, 8%, 24%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(230, 8%, 24%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(230, 8%, 24%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(230, 8%, 24%)"}};function Yf(n,a){let t;try{t=n()}catch{return}return{getItem:i=>{var o;const s=u=>u===null?null:JSON.parse(u,void 0),d=(o=t.getItem(i))!=null?o:null;return d instanceof Promise?d.then(s):s(d)},setItem:(i,o)=>t.setItem(i,JSON.stringify(o,void 0)),removeItem:i=>t.removeItem(i)}}const st=n=>a=>{try{const t=n(a);return t instanceof Promise?t:{then(r){return st(r)(t)},catch(r){return this}}}catch(t){return{then(r){return this},catch(r){return st(r)(t)}}}},Zf=(n,a)=>(t,r,i)=>{let o={storage:Yf(()=>localStorage),partialize:S=>S,version:0,merge:(S,F)=>({...F,...S}),...a},s=!1,d=0;const u=new Set,m=new Set;let g=o.storage;if(!g)return n((...S)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),t(...S)},r,i);const p=()=>{const S=o.partialize({...r()});return g.setItem(o.name,{state:S,version:o.version})},k=i.setState;i.setState=(S,F)=>(k(S,F),p());const x=n((...S)=>(t(...S),p()),r,i);i.getInitialState=()=>x;let b;const w=()=>{var S,F;if(!g)return;const L=++d;s=!1,u.forEach(z=>{var N;return z((N=r())!=null?N:x)});const A=((F=o.onRehydrateStorage)==null?void 0:F.call(o,(S=r())!=null?S:x))||void 0;return st(g.getItem.bind(g))(o.name).then(z=>{if(z)if(typeof z.version=="number"&&z.version!==o.version){if(o.migrate){const N=o.migrate(z.state,z.version);return N instanceof Promise?N.then(P=>[!0,P]):[!0,N]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,z.state];return[!1,void 0]}).then(z=>{var N;if(L!==d)return;const[P,R]=z;if(b=o.merge(R,(N=r())!=null?N:x),t(b,!0),P)return p()}).then(()=>{L===d&&(A?.(b,void 0),b=r(),s=!0,m.forEach(z=>z(b)))}).catch(z=>{L===d&&A?.(void 0,z)})};return i.persist={setOptions:S=>{o={...o,...S},S.storage&&(g=S.storage)},clearStorage:()=>{g?.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>w(),hasHydrated:()=>s,onHydrate:S=>(u.add(S),()=>{u.delete(S)}),onFinishHydration:S=>(m.add(S),()=>{m.delete(S)})},o.skipHydration||w(),b||x},Rn=Zf,be=Ta()(Rn((n,a)=>({theme:{mode:"light"},setTheme:t=>{n({theme:t}),document.documentElement.classList.remove("dark","ophelia"),t.mode==="dark"?document.documentElement.classList.add("dark"):t.mode==="ophelia"&&document.documentElement.classList.add("ophelia")},toggleTheme:()=>{const t=a().theme,r=["light","dark","ophelia"],o=(r.indexOf(t.mode)+1)%r.length;a().setTheme({mode:r[o]})},sidebarOpen:!0,sidebarCompact:!1,setSidebarOpen:t=>n({sidebarOpen:t}),setSidebarCompact:t=>n({sidebarCompact:t}),toggleSidebar:()=>n(t=>({sidebarOpen:!t.sidebarOpen})),toggleSidebarCompact:()=>n(t=>({sidebarCompact:!t.sidebarCompact})),artifactPanelOpen:!1,artifactPanelArtifact:null,openArtifactPanel:t=>n({artifactPanelOpen:!0,artifactPanelArtifact:t}),closeArtifactPanel:()=>n({artifactPanelOpen:!1,artifactPanelArtifact:null}),preferences:{theme:{mode:"light"},defaultModel:"",systemMessage:"",generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:"nomic-embed-text",chunkSize:1e3,chunkOverlap:200,similarityThreshold:.3},titleSettings:{autoTitle:!1,taskModel:""},showUsername:!1,backgroundSettings:{enabled:!1,imageUrl:"",blurAmount:10,opacity:.6}},setPreferences:t=>n(r=>({preferences:{...r.preferences,...t}})),loadPreferences:async()=>{try{const{preferencesApi:t}=await he(async()=>{const{preferencesApi:i}=await Promise.resolve().then(()=>wa);return{preferencesApi:i}},void 0),r=await t.getPreferences();if(r.success&&r.data){const i=r.data;n(o=>({preferences:{...o.preferences,...i},backgroundImage:i.backgroundSettings?.imageUrl||null}))}}catch(t){console.warn("Failed to load preferences from backend:",t)}},isGenerating:!1,setIsGenerating:t=>n({isGenerating:t}),hasSeenSettingsNotification:!1,markSettingsNotificationAsSeen:()=>n({hasSeenSettingsNotification:!0}),isDemoMode:v(),demoConfig:cn(),setDemoMode:t=>{n({isDemoMode:t,demoConfig:cn()})},backgroundImage:null,setBackgroundImage:async t=>{if(n({backgroundImage:t}),t){const r=a(),i={...r.preferences,backgroundSettings:{enabled:!0,imageUrl:t,blurAmount:r.preferences.backgroundSettings?.blurAmount||10,opacity:r.preferences.backgroundSettings?.opacity||.6}};r.setPreferences(i);try{const{preferencesApi:o}=await he(async()=>{const{preferencesApi:s}=await Promise.resolve().then(()=>wa);return{preferencesApi:s}},void 0);await o.updatePreferences({backgroundSettings:i.backgroundSettings})}catch(o){console.warn("Failed to save background settings to backend:",o)}}},uploadBackgroundImage:async t=>{try{const r=new FileReader;return new Promise((i,o)=>{r.onload=async s=>{try{const d=s.target?.result;await a().setBackgroundImage(d),i()}catch(d){o(d)}},r.onerror=o,r.readAsDataURL(t)})}catch(r){throw console.error("Failed to upload background image:",r),r}},removeBackgroundImage:async()=>{n({backgroundImage:null});const t=a(),r={enabled:!1,imageUrl:"",blurAmount:t.preferences.backgroundSettings?.blurAmount||10,opacity:t.preferences.backgroundSettings?.opacity||.6};t.setPreferences({backgroundSettings:r});try{const{preferencesApi:i}=await he(async()=>{const{preferencesApi:o}=await Promise.resolve().then(()=>wa);return{preferencesApi:o}},void 0);await i.updatePreferences({backgroundSettings:r})}catch(i){console.warn("Failed to save background removal to backend:",i)}},clearUserState:()=>{n({backgroundImage:null,preferences:{theme:{mode:"light"},defaultModel:"",systemMessage:"",generationOptions:{temperature:.7,top_p:.9,top_k:40,num_predict:1024},embeddingSettings:{enabled:!1,model:"nomic-embed-text",chunkSize:1e3,chunkOverlap:200,similarityThreshold:.3},titleSettings:{autoTitle:!1,taskModel:""},showUsername:!1,backgroundSettings:{enabled:!1,imageUrl:"",blurAmount:10,opacity:.6}}})}}),{name:"libre-webui-app-state",partialize:n=>{const{backgroundSettings:a,...t}=n.preferences;return{theme:n.theme,sidebarOpen:n.sidebarOpen,sidebarCompact:n.sidebarCompact,preferences:t,hasSeenSettingsNotification:n.hasSeenSettingsNotification}}})),Xf=()=>{const{theme:n,setTheme:a}=be.getState();a(n)};typeof window<"u"&&Xf();const Qf={'code[class*="language-"]':{color:"#f8f8f2",background:"none",textShadow:"none",fontFamily:"'JetBrains Mono', Consolas, Monaco, 'Andale Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",tabSize:4,hyphens:"none"},'pre[class*="language-"]':{color:"#f8f8f2",background:"#1a1b26",textShadow:"none",fontFamily:"'JetBrains Mono', Consolas, Monaco, 'Andale Mono', monospace",fontSize:"1em",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",tabSize:4,hyphens:"none",padding:"1em",margin:".5em 0",overflow:"auto",borderRadius:"0.5rem"},comment:{color:"#6272a4"},prolog:{color:"#6272a4"},doctype:{color:"#6272a4"},cdata:{color:"#6272a4"},punctuation:{color:"#f8f8f2"},property:{color:"#ff79c6"},tag:{color:"#ff79c6"},boolean:{color:"#bd93f9"},number:{color:"#bd93f9"},constant:{color:"#bd93f9"},symbol:{color:"#bd93f9"},deleted:{color:"#ff5555"},selector:{color:"#50fa7b"},"attr-name":{color:"#50fa7b"},string:{color:"#f1fa8c"},char:{color:"#f1fa8c"},builtin:{color:"#8be9fd"},inserted:{color:"#50fa7b"},operator:{color:"#ff79c6"},entity:{color:"#f8f8f2",cursor:"help"},url:{color:"#8be9fd"},".language-css .token.string":{color:"#f1fa8c"},".style .token.string":{color:"#f1fa8c"},atrule:{color:"#ff79c6"},"attr-value":{color:"#f1fa8c"},keyword:{color:"#ff79c6"},function:{color:"#50fa7b"},"class-name":{color:"#8be9fd"},regex:{color:"#f1fa8c"},important:{color:"#ff5555",fontWeight:"bold"},variable:{color:"#f8f8f2"}},ey={js:"javascript",ts:"typescript",py:"python",sh:"bash",shell:"bash",c:"cpp","c++":"cpp"},ay=["javascript","typescript","python","java","cpp","bash","json","markdown","css","html","jsx","xml"],un=({children:n,language:a,isDark:t=!1,className:r=""})=>{const{theme:i}=be(),o=i.mode==="ophelia",s=ey[a.toLowerCase()]||a.toLowerCase();if(!ay.includes(s))return e.jsx("pre",{className:`bg-gray-100 dark:bg-dark-200 ophelia:bg-[#1a1b26] p-3 rounded-lg overflow-x-auto text-sm font-mono ${r}`,children:e.jsx("code",{className:"ophelia:text-[#f8f8f2]",children:n})});const d=o?Qf:t?Jf:_f;return e.jsx(Or,{language:s,style:d,className:r,customStyle:{margin:0,padding:"0.75rem",borderRadius:"0.5rem",fontSize:"0.875rem",...o&&{background:"#1a1b26"}},showLineNumbers:!1,children:n})},ty={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_VERSION:"0.6.3"},ny=()=>window.location.protocol==="file:"?"http://localhost:3001/api":`${window.location.origin}/api`,ke=ny(),ry=()=>{console.log("🚀 API_BASE_URL configured as:",ke),console.log("🌐 Window location:",window.location),console.log("🔧 Environment variables:",ty)};ry();console.log("📱 User agent:",navigator.userAgent);console.log("🎭 Demo mode detected:",v());const D=(n,a=!0)=>new Promise(t=>{setTimeout(()=>{t({success:a,data:n,error:a?void 0:"Demo mode: Backend not available"})},500)}),Sa=[{name:"llama3.2:3b",size:2048e6,digest:"demo-digest-1",modified_at:new Date().toISOString(),details:{format:"gguf",family:"llama",families:["llama"],parameter_size:"3B",quantization_level:"Q4_0"}},{name:"qwen2.5:7b",size:4096e6,digest:"demo-digest-2",modified_at:new Date().toISOString(),details:{format:"gguf",family:"qwen",families:["qwen"],parameter_size:"7B",quantization_level:"Q4_0"}}],Un=()=>[{id:"demo-session-1",title:"Demo Chat Session",model:Sa[0].name,messages:[{id:"demo-msg-1",role:"user",content:"Hello! Can you tell me about this demo?",timestamp:Date.now()},{id:"demo-msg-2",role:"assistant",content:"This is a demo of Libre WebUI! In a real deployment, I would be powered by Ollama running locally on your machine. This demo shows the beautiful interface and features without the backend connection.",timestamp:Date.now()}],createdAt:Date.now(),updatedAt:Date.now()}],iy=Un(),oy=3e5,y=tt.create({baseURL:ke,timeout:oy});y.interceptors.request.use(n=>{const a=localStorage.getItem("auth-token");return a&&(n.headers.Authorization=`Bearer ${a}`),n},n=>Promise.reject(n));y.interceptors.response.use(n=>n,n=>{if(n.response?.status===401){console.warn("🔒 Session expired or unauthorized, logging out..."),localStorage.removeItem("auth-token"),he(async()=>{const{useAuthStore:r}=await Promise.resolve().then(()=>my);return{useAuthStore:r}},void 0).then(({useAuthStore:r})=>{r.getState().logout()});const a=window.location.protocol==="file:";return(a?window.location.hash:window.location.pathname).includes("/login")||(window.location.href=a?"#/login":"/login"),Promise.reject(new Error("Session expired"))}return console.error("API Error:",n),Promise.reject(n)});const je={getSessions:()=>y.get("/chat/sessions").then(n=>n.data),createSession:(n,a,t)=>y.post("/chat/sessions",{model:n,title:a,personaId:t}).then(r=>r.data),getSession:n=>{if(v()){const a=Un().find(t=>t.id===n);return a?D(a):Promise.resolve({success:!1,error:"Session not found in demo mode"})}return y.get(`/chat/sessions/${n}`).then(a=>a.data)},updateSession:(n,a)=>{if(v()){const t=iy.find(r=>r.id===n);if(t){const r={...t,...a,updatedAt:Date.now()};return D(r)}return Promise.resolve({success:!1,error:"Session not found in demo mode"})}return y.put(`/chat/sessions/${n}`,a).then(t=>t.data)},deleteSession:n=>v()?D(null):y.delete(`/chat/sessions/${n}`).then(a=>a.data),clearAllSessions:()=>y.delete("/chat/sessions").then(n=>n.data),generateTitle:(n,a,t)=>{if(v()){const r=t.substring(0,30)+(t.length>30?"...":"");return D({title:r})}return y.post(`/chat/sessions/${n}/generate-title`,{model:a,message:t}).then(r=>r.data)},sendMessage:(n,a,t)=>y.post(`/chat/sessions/${n}/messages`,{content:a,options:t}).then(r=>r.data),saveMessage:(n,a)=>y.post(`/chat/sessions/${n}/messages`,a).then(t=>t.data),updateMessage:(n,a,t)=>v()?D({}):y.put(`/chat/sessions/${n}/messages/${a}`,t).then(r=>r.data),generateChatResponse:(n,a,t)=>y.post(`/chat/sessions/${n}/generate`,{message:a,options:t}).then(r=>r.data),generateChatStreamResponse:(n,a,t)=>({subscribe:async(r,i,o)=>{try{const s=await fetch(`${ke}/chat/sessions/${n}/generate/stream`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:a,options:t})});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);const d=s.body?.getReader();if(!d)throw new Error("No response body reader available");const u=new TextDecoder;let m="";const g=()=>{d.read().then(({done:p,value:k})=>{if(p){o?.();return}m+=u.decode(k,{stream:!0});const x=m.split(`
|
|
28
|
+
`);m=x.pop()||"";for(const b of x){const w=b.trim();if(w.startsWith("data: ")){const S=w.slice(6);if(S==="[DONE]"){o?.();return}try{const F=JSON.parse(S);if(r(F),F.type==="done"||F.type==="error"){F.type==="error"?i?.(F.error):o?.();return}}catch(F){console.error("Failed to parse SSE data:",F)}}}g()}).catch(p=>{i?.(p instanceof Error?p:new Error(String(p)))})};return g(),()=>d.cancel()}catch(s){return i?.(s instanceof Error?s:new Error(String(s))),()=>{}}}}),getMessageBranches:(n,a)=>v()?D([]):y.get(`/chat/sessions/${n}/messages/${a}/branches`).then(t=>t.data),switchMessageBranch:(n,a,t)=>v()?D({}):y.post(`/chat/sessions/${n}/messages/${a}/branch`,{branchIndex:t}).then(r=>r.data),createMessageBranch:(n,a,t)=>v()?D({}):y.post(`/chat/sessions/${n}/messages/${a}/branches`,{...t}).then(r=>r.data)},ua={checkHealth:()=>v()?D({status:"offline"},!1):y.get("/ollama/health").then(n=>n.data),getModels:()=>v()?D(Sa):y.get("/ollama/models").then(n=>n.data),pullModel:n=>v()?D(null,!1):y.post("/ollama/models/pull",{name:n}).then(a=>a.data),pullModelStream:(n,a,t,r)=>{if(v()){let o=0;const s=setInterval(()=>{o+=Math.random()*20,o>=100?(o=100,a({status:"success",total:100,completed:100,percent:100}),clearInterval(s),setTimeout(t,500)):a({status:"pulling",total:100,completed:o,percent:Math.round(o)})},1e3);return()=>clearInterval(s)}const i=new EventSource(`${ke}/ollama/pull/stream?model=${encodeURIComponent(n)}`);return i.onmessage=o=>{const s=JSON.parse(o.data);switch(s.type){case"progress":a({status:s.status,digest:s.digest,total:s.total,completed:s.completed,percent:s.percent});break;case"complete":i.close(),t();break;case"error":i.close(),r(s.error);break}},i.onerror=()=>{i.close(),r("Connection to server lost")},()=>{i.close()}},deleteModel:n=>v()?D(null,!1):y.delete("/ollama/models",{params:{name:n}}).then(a=>a.data),showModel:(n,a=!1)=>{if(v()){const t=Sa.find(r=>r.name===n);return D(t||null,!!t)}return y.get("/ollama/models/show",{params:{name:n,verbose:a}}).then(t=>t.data)},createModel:n=>v()?D(null,!1):y.post("/ollama/models",n).then(a=>a.data),copyModel:(n,a)=>v()?D(null,!1):y.post("/ollama/models/copy",{source:n,destination:a}).then(t=>t.data),pushModel:n=>v()?D(null,!1):y.post("/ollama/models/push",{name:n}).then(a=>a.data),pullAllModels:()=>v()?D(null,!1):y.post("/ollama/models/pull-all").then(n=>n.data),pullAllModelsStream:(n,a,t)=>{if(v()){const i=Sa;let o=0;const s=setInterval(()=>{o++,o<=i.length&&n({current:o,total:i.length,modelName:i[o-1]?.name||"demo-model",status:Math.random()>.1?"success":"error",error:Math.random()>.1?void 0:"Demo error"}),o>=i.length&&(clearInterval(s),setTimeout(a,500))},1e3);return}const r=new EventSource(`${ke}/ollama/models/pull-all/stream`);r.onmessage=i=>{const o=JSON.parse(i.data);switch(o.type){case"progress":n({current:o.current,total:o.total,modelName:o.modelName,status:o.status,error:o.error});break;case"complete":r.close(),a();break;case"error":r.close(),t(o.error);break}},r.onerror=()=>{r.close(),t("Connection to server lost")}},generateEmbeddings:n=>v()?D({embeddings:[[]]},!1):y.post("/ollama/embed",n).then(a=>a.data),listRunningModels:()=>v()?D([]):y.get("/ollama/running").then(n=>n.data),getVersion:()=>v()?D({version:"demo-mode"},!1):y.get("/ollama/version").then(n=>n.data),chatCompletion:n=>v()?D({message:{content:"Demo response",role:"assistant"}},!1):y.post("/ollama/chat",n).then(a=>a.data),checkBlobExists:n=>v()?Promise.resolve(!1):y.head(`/ollama/blobs/${n}`).then(()=>!0).catch(()=>!1),pushBlob:(n,a)=>v()?D(null,!1):y.post(`/ollama/blobs/${n}`,a,{headers:{"Content-Type":"application/octet-stream"}}).then(t=>t.data),generateLegacyEmbeddings:n=>v()?D({embedding:[]},!1):y.post("/ollama/embeddings",n).then(a=>a.data),getLibraryModels:n=>{if(v())return D([{name:"llama3.2",description:"Meta's latest Llama model",category:"general",sizes:["1b","3b"],pulls:"50M+",tags:["general"]},{name:"deepseek-r1",description:"Open reasoning model",category:"reasoning",sizes:["7b","14b","32b"],pulls:"200M+",tags:["reasoning"]}]);const a=new URLSearchParams;n?.search&&a.set("search",n.search),n?.sort&&a.set("sort",n.sort),n?.category&&a.set("category",n.category);const t=a.toString();return y.get(`/ollama/library${t?`?${t}`:""}`).then(r=>r.data)}},le={getAllPlugins:()=>v()?D([]):y.get("/plugins").then(n=>n.data),uploadPlugin:n=>{if(v())return D({},!1);const a=new FormData;return a.append("plugin",n),y.post("/plugins/upload",a).then(t=>t.data)},installPlugin:n=>v()?D({},!1):y.post("/plugins/install",n).then(a=>a.data),updatePlugin:(n,a)=>v()?D({},!1):y.put(`/plugins/${n}`,a).then(t=>t.data),deletePlugin:n=>v()?D(void 0):y.delete(`/plugins/${n}`).then(a=>a.data),activatePlugin:n=>v()?D({},!1):y.post(`/plugins/activate/${n}`).then(a=>a.data),deactivatePlugin:n=>{if(v())return D(void 0);const a=n?`/plugins/deactivate/${n}`:"/plugins/deactivate";return y.post(a).then(t=>t.data)},getActivePlugin:()=>v()?D(null):y.get("/plugins/active").then(n=>n.data),getPluginStatus:()=>v()?D([]):y.get("/plugins/status").then(n=>n.data),exportPlugin:n=>v()?Promise.resolve(new Blob(["{}"],{type:"application/json"})):y.get(`/plugins/${n}/export`,{responseType:"blob"}).then(a=>a.data),getCredentials:()=>v()?D([]):y.get("/plugins/credentials/all").then(n=>n.data),setApiKey:(n,a)=>v()?D(!1,!1):y.post(`/plugins/${n}/credentials`,{api_key:a}).then(t=>t.data),deleteApiKey:n=>v()?D(!1,!1):y.delete(`/plugins/${n}/credentials`).then(a=>a.data),checkApiKey:n=>v()?D(!1):y.get(`/plugins/${n}/credentials/check`).then(a=>a.data)},ne={getPreferences:()=>y.get("/preferences").then(n=>n.data),updatePreferences:n=>y.put("/preferences",n).then(a=>a.data),setDefaultModel:n=>y.put("/preferences/default-model",{model:n}).then(a=>a.data),setSystemMessage:n=>y.put("/preferences/system-message",{message:n}).then(a=>a.data),setGenerationOptions:n=>y.put("/preferences/generation-options",n).then(a=>a.data),resetGenerationOptions:()=>y.post("/preferences/generation-options/reset").then(n=>n.data),setEmbeddingSettings:n=>y.put("/preferences/embedding-settings",n).then(a=>a.data),resetEmbeddingSettings:()=>y.post("/preferences/embedding-settings/reset").then(n=>n.data),importData:(n,a="replace")=>v()?D({theme:{mode:"dark"},defaultModel:"llama3.2",systemMessage:"You are a helpful assistant.",generationOptions:{},embeddingSettings:{enabled:!1,model:"nomic-embed-text",chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7},showUsername:!1}):y.post("/preferences/import",{data:n,mergeStrategy:a}).then(t=>t.data)},lt={uploadDocument:(n,a)=>{if(v())return D({id:"demo-doc-"+Date.now(),filename:n.name,fileType:n.name.endsWith(".pdf")?"pdf":"txt",size:n.size,sessionId:a,uploadedAt:Date.now()});const t=new FormData;return t.append("document",n),a&&t.append("sessionId",a),y.post("/documents/upload",t).then(r=>r.data)},getDocuments:n=>{if(v())return D([]);const a=n?`/documents/session/${n}`:"/documents";return y.get(a).then(t=>t.data)},getDocument:n=>v()?D({id:n,filename:"demo-document.pdf",fileType:"pdf",size:1024,content:"Demo document content...",uploadedAt:Date.now()}):y.get(`/documents/${n}`).then(a=>a.data),searchDocuments:(n,a,t)=>v()?D([]):y.post("/documents/search",{query:n,sessionId:a,limit:t}).then(r=>r.data),deleteDocument:n=>v()?D(void 0):y.delete(`/documents/${n}`).then(a=>a.data),getEmbeddingStatus:()=>v()?D({available:!1,model:"nomic-embed-text",chunksWithEmbeddings:0,totalChunks:0}):y.get("/documents/embeddings/status").then(n=>n.data),regenerateEmbeddings:()=>v()?D(void 0):y.post("/documents/embeddings/regenerate").then(n=>n.data)},Ne={login:n=>v()?D({user:{id:"demo-user",username:"demo",email:"demo@example.com",role:"admin",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:"demo-token",systemInfo:{requiresAuth:!0,singleUserMode:!1,hasUsers:!0,version:"0.1.0"}}):y.post("/auth/login",n).then(a=>a.data),signup:n=>v()?D({user:{id:"demo-user-new",username:n.username,email:n.email||"",role:"user",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},token:"demo-token-new",systemInfo:{requiresAuth:!0,singleUserMode:!1,hasUsers:!0,version:"0.1.0"}}):y.post("/auth/signup",n).then(a=>a.data),logout:()=>v()?D(void 0):y.post("/auth/logout").then(n=>n.data),getSystemInfo:()=>(console.log("getSystemInfo called, demo mode:",v()),v()?D({requiresAuth:!0,singleUserMode:!1,hasUsers:!0,version:"0.1.0"}):(console.log("🔍 Making API call to:",ke+"/auth/system-info"),console.log("🌐 Full URL from:",window.location.origin,"-> API:",ke+"/auth/system-info"),y.get("/auth/system-info").then(n=>(console.log("✅ getSystemInfo response:",n.data),n.data)).catch(n=>{throw console.error("❌ getSystemInfo error:",n),n.response&&(console.error("📄 Error response data:",n.response.data),console.error("🔢 Error status:",n.response.status),console.error("🔧 Error headers:",n.response.headers)),n.request&&console.error("📡 Network error - no response received:",n.request),console.error("🎯 Error config:",n.config),n}))),verifyToken:()=>v()?D({id:"demo-user",username:"demo",email:"demo@example.com",role:"admin",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):y.get("/auth/verify").then(n=>n.data),getEncryptionKey:()=>v()?D({encryptionKey:"demo-encryption-key-not-real"}):y.get("/auth/encryption-key").then(n=>n.data)},$n={getUsers:()=>v()?D([{id:"demo-user",username:"demo",email:"demo@example.com",role:"admin",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]):y.get("/users").then(n=>n.data),createUser:n=>v()?D({id:"new-user-"+Date.now(),username:n.username,email:n.email,role:n.role,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):y.post("/users",n).then(a=>a.data),updateUser:(n,a)=>v()?D({id:n,username:a.username||"demo",email:a.email||"demo@example.com",role:a.role||"user",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):y.patch(`/users/${n}`,a).then(t=>t.data),deleteUser:n=>v()?D(void 0):y.delete(`/users/${n}`).then(a=>a.data),updateMyAvatar:n=>v()?D({id:"demo-user",username:"demo",email:"demo@example.com",role:"admin",avatar:n,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}):y.patch("/users/me/avatar",{avatar:n}).then(a=>a.data)},mt={getPersonas:()=>{if(v()){const n=[{id:"demo-1",user_id:"default",name:"Creative Assistant",description:"Helpful assistant for creative tasks",model:"llama3.3:latest",parameters:{temperature:.8,top_p:.9,context_window:4096,system_prompt:"You are a creative and helpful assistant. Provide thoughtful and engaging responses."},avatar:"/images/creative-avatar.png",background:"/backgrounds/creative-bg.png",created_at:Date.now()-864e5,updated_at:Date.now()-864e5},{id:"demo-2",user_id:"default",name:"Research Assistant",description:"Academic assistant for research and learning",model:"qwen3:7b",parameters:{temperature:.3,top_p:.8,context_window:8192,system_prompt:"You are a knowledgeable research assistant. Provide detailed, informative explanations."},created_at:Date.now()-1728e5,updated_at:Date.now()-1728e5}];return D(n)}return y.get("/personas").then(n=>n.data)},getPersona:n=>{if(v()){const a={id:n,user_id:"default",name:"Sample Assistant",description:"A sample assistant for demonstration",model:"llama3.2:latest",parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:"You are a helpful assistant."},created_at:Date.now(),updated_at:Date.now()};return D(a)}return y.get(`/personas/${n}`).then(a=>a.data)},createPersona:n=>{if(v()){const a={id:"demo-"+Date.now(),user_id:"default",...n,created_at:Date.now(),updated_at:Date.now()};return D(a)}return y.post("/personas",n).then(a=>a.data)},updatePersona:(n,a)=>{if(v()){const t={id:n,user_id:"default",name:a.name||"Updated Sample Assistant",description:a.description,model:a.model||"llama3.2:latest",parameters:a.parameters||{temperature:.7,top_p:.9,context_window:4096,system_prompt:"You are a helpful assistant."},avatar:a.avatar,background:a.background,created_at:Date.now()-864e5,updated_at:Date.now()};return D(t)}return y.put(`/personas/${n}`,a).then(t=>t.data)},deletePersona:n=>v()?D(void 0):y.delete(`/personas/${n}`).then(a=>a.data),exportPersona:n=>{if(v()){const a={name:"Sample Assistant",description:"A sample assistant for demonstration",model:"llama3.2:latest",params:{temperature:.7,top_p:.9,context_window:4096,system_prompt:"You are a helpful assistant."},exportedAt:Date.now(),version:"1.0.0"};return Promise.resolve(a)}return y.get(`/personas/${n}/export`).then(a=>a.data)},importPersona:n=>{if(v()){const a={id:"demo-imported-"+Date.now(),user_id:"default",name:n.name,description:n.description,model:n.model,parameters:n.params,avatar:n.avatar,background:n.background,created_at:Date.now(),updated_at:Date.now(),embedding_model:n.embedding_model,memory_settings:n.memory_settings,mutation_settings:n.mutation_settings};return D(a)}return y.post("/personas/import",n).then(a=>a.data)},getPersonasCount:()=>v()?D({count:2}):y.get("/personas/stats/count").then(n=>n.data),getDefaultParameters:()=>v()?D({temperature:.7,top_p:.9,top_k:40,context_window:4096,max_tokens:1024,system_prompt:"",repeat_penalty:1.1,presence_penalty:0,frequency_penalty:0}):y.get("/personas/defaults/parameters").then(n=>n.data),getMemoryStatus:n=>v()?D({status:"active",memory_count:42,last_backup:Date.now()-864e5,size_mb:2.3}):y.get(`/personas/${n}/memory/status`).then(a=>a.data),wipeMemories:n=>v()?D({deleted_count:42}):y.delete(`/personas/${n}/memory`).then(a=>a.data),backupPersona:n=>{if(v()){const a=JSON.stringify({persona_id:n,backup_date:new Date().toISOString(),data:"demo backup data"});return Promise.resolve(new Blob([a],{type:"application/json"}))}return y.get(`/personas/${n}/backup`,{responseType:"blob"}).then(a=>a.data)},exportPersonaDNA:n=>{if(v()){const a=JSON.stringify({persona_id:n,export_date:new Date().toISOString(),dna:"demo DNA data",memories:[],learned_behaviors:{}});return Promise.resolve(new Blob([a],{type:"application/json"}))}return y.get(`/personas/${n}/export/dna`,{responseType:"blob"}).then(a=>a.data)},importPersonaDNA:n=>{if(v()){const t={id:"demo-dna-"+Date.now(),user_id:"default",name:"Imported Persona",description:"Persona imported from DNA",model:"llama3.2:latest",parameters:{temperature:.7,top_p:.9,context_window:4096,system_prompt:"You are a helpful assistant."},created_at:Date.now(),updated_at:Date.now()};return D(t)}const a=new FormData;return a.append("dnaFile",n),y.post("/personas/import/dna",a).then(t=>t.data)},downloadPersona:async(n,a)=>{try{const t=await mt.exportPersona(n),r=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),i=URL.createObjectURL(r),o=document.createElement("a");o.href=i,o.download=`${a}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)}catch(t){throw console.error("Error while downloading persona:",t),new Error(`Failed to download persona: ${t instanceof Error?t.message:String(t)}`)}}},la={getModels:()=>v()?D([{model:"tts-1",plugin:"openai",config:{voices:["alloy","echo","fable","onyx","nova","shimmer"],default_voice:"alloy",formats:["mp3","opus","aac","flac","wav"],default_format:"mp3",max_characters:4096}}]):y.get("/tts/models").then(n=>n.data),getPlugins:()=>v()?D([{id:"openai",name:"OpenAI GPT",models:["tts-1","tts-1-hd"],config:{voices:["alloy","echo","fable","onyx","nova","shimmer"],default_voice:"alloy"}}]):y.get("/tts/plugins").then(n=>n.data),getVoices:n=>v()?D({voices:["alloy","echo","fable","onyx","nova","shimmer"],default_voice:"alloy",formats:["mp3","opus","aac","flac","wav"],default_format:"mp3",max_characters:4096,supports_streaming:!1}):y.get(`/tts/voices/${n}`).then(a=>a.data),generateBase64:n=>v()?D({audio:"",format:n.response_format||"mp3",mimeType:"audio/mpeg",size:0}):y.post("/tts/generate-base64",n).then(a=>a.data),generate:async n=>v()?new Blob([],{type:"audio/mpeg"}):(await y.post("/tts/generate",n,{responseType:"blob"})).data,speak:async(n,a={})=>{try{a.onStart?.();const t=await la.generateBase64({model:a.model||"tts-1",input:n,voice:a.voice,speed:a.speed,response_format:"mp3"});if(!t.success||!t.data?.audio)throw new Error(t.message||"Failed to generate speech");const r=`data:${t.data.mimeType};base64,${t.data.audio}`,i=new Audio(r);return i.onended=()=>a.onEnd?.(),i.onerror=()=>a.onError?.(new Error("Audio playback failed")),await i.play(),i}catch(t){const r=t instanceof Error?t:new Error("Unknown error");return a.onError?.(r),null}}},dt={getModels:()=>v()?D([{model:"dall-e-3",plugin:"openai",config:{sizes:["1024x1024","1792x1024","1024x1792"],default_size:"1024x1024",qualities:["standard","hd"],default_quality:"standard",styles:["vivid","natural"],default_style:"vivid",max_prompt_length:4e3}}]):y.get("/image-gen/models").then(n=>n.data),getPlugins:()=>v()?D([{id:"openai",name:"OpenAI DALL-E",models:["dall-e-3","dall-e-2"],config:{sizes:["1024x1024","1792x1024","1024x1792"],default_size:"1024x1024",qualities:["standard","hd"],default_quality:"standard"}}]):y.get("/image-gen/plugins").then(n=>n.data),getConfig:n=>v()?D({sizes:["1024x1024","1792x1024","1024x1792"],default_size:"1024x1024",qualities:["standard","hd"],default_quality:"standard",styles:["vivid","natural"],default_style:"vivid",max_prompt_length:4e3}):y.get(`/image-gen/config/${n}`).then(a=>a.data),generate:n=>v()?D({images:[{url:"https://placehold.co/1024x1024/purple/white?text=Demo+Image",revised_prompt:n.prompt}]}):y.post("/image-gen/generate",n).then(a=>a.data),getGallery:n=>v()?D({images:[],total:0}):y.get("/image-gen/gallery",{params:n}).then(a=>a.data),getGalleryImage:n=>v()?D({id:n,userId:"demo",prompt:"Demo image prompt",model:"dall-e-3",imageData:"https://placehold.co/1024x1024/purple/white?text=Demo",createdAt:Date.now()}):y.get(`/image-gen/gallery/${n}`).then(a=>a.data),deleteGalleryImage:n=>v()?D(void 0):y.delete(`/image-gen/gallery/${n}`).then(a=>a.data)},sy={getModels:n=>v()?D([{id:"meta-llama/Llama-3.3-70B-Instruct",modelId:"meta-llama/Llama-3.3-70B-Instruct",author:"meta-llama",downloads:1e6,likes:5e3,tags:["text-generation","llama"],pipeline_tag:"text-generation",gated:!1}]):y.get("/huggingface-hub/models",{params:n}).then(a=>a.data),getTrending:n=>v()?D([]):y.get("/huggingface-hub/trending",{params:n}).then(a=>a.data),getModel:(n,a)=>v()?D({id:`${n}/${a}`,modelId:`${n}/${a}`,author:n,downloads:0,likes:0,tags:[],gated:!1}):y.get(`/huggingface-hub/models/${n}/${a}`).then(t=>t.data),getTasks:()=>v()?D(["text-generation","text-to-speech","text-to-image"]):y.get("/huggingface-hub/tasks").then(n=>n.data),clearCache:()=>v()?D(!0):y.post("/huggingface-hub/cache/clear").then(n=>n.data),getGgufFiles:(n,a)=>v()?D([{filename:"model-Q4_K_M.gguf",size:45e8,sizeFormatted:"4.19 GB",quantization:"Q4_K_M",url:`https://huggingface.co/${n}/${a}/resolve/main/model-Q4_K_M.gguf`,ollamaCommand:`hf.co/${n}/${a}:Q4_K_M`}]):y.get(`/huggingface-hub/models/${n}/${a}/gguf`).then(t=>t.data),hasGgufFiles:(n,a)=>v()?D({hasGguf:!1,count:0}):y.get(`/huggingface-hub/models/${n}/${a}/has-gguf`).then(t=>t.data)},wa=Object.freeze(Object.defineProperty({__proto__:null,authApi:Ne,chatApi:je,documentsApi:lt,huggingfaceHubApi:sy,imageGenApi:dt,ollamaApi:ua,personaApi:mt,pluginApi:le,preferencesApi:ne,ttsApi:la,usersApi:$n},Symbol.toStringTag,{value:"Module"})),ly=({className:n=""})=>{const{t:a}=ue(),{preferences:t,setPreferences:r,backgroundImage:i,uploadBackgroundImage:o,removeBackgroundImage:s}=be(),d=h.useRef(null),[u,m]=h.useState(!1),[g,p]=h.useState(!1),k=t.backgroundSettings||{enabled:!1,imageUrl:"",blurAmount:10,opacity:.6},x=async P=>{if(!P.type.startsWith("image/")){j.error("Please select a valid image file");return}if(P.size>5*1024*1024){j.error("Image file size must be less than 5MB");return}m(!0);try{await o(P),j.success("Background image uploaded successfully")}catch(R){console.error("Failed to upload background:",R),j.error("Failed to upload background image")}finally{m(!1)}},b=P=>{const R=P.target.files?.[0];R&&x(R)},w=P=>{P.preventDefault(),p(!0)},S=P=>{P.preventDefault(),p(!1)},F=P=>{P.preventDefault(),p(!1);const R=P.dataTransfer.files?.[0];R&&x(R)},L=()=>{s(),j.success("Background image removed")},A=async P=>{const R=i||k.imageUrl||"",J={...k,imageUrl:R,enabled:P};if(r({backgroundSettings:J}),R||!P)try{await ne.updatePreferences({backgroundSettings:J})}catch(G){console.error("Failed to update preferences:",G)}},z=async P=>{const R=i||k.imageUrl||"",J={...k,imageUrl:R,blurAmount:P};if(r({backgroundSettings:J}),R)try{await ne.updatePreferences({backgroundSettings:J})}catch(G){console.error("Failed to update preferences:",G)}},N=async P=>{const R=i||k.imageUrl||"",J={...k,imageUrl:R,opacity:P};if(r({backgroundSettings:J}),R)try{await ne.updatePreferences({backgroundSettings:J})}catch(G){console.error("Failed to update preferences:",G)}};return e.jsx("div",{className:`space-y-4 ${n}`,children:e.jsxs("div",{children:[e.jsx("h4",{className:"text-md font-medium text-gray-900 dark:text-gray-100 mb-3",children:a("settings.appearance.background.title")}),e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:a("settings.appearance.background.enable")}),e.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:a("settings.appearance.background.enableDescription")})]}),e.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",checked:k.enabled,onChange:P=>A(P.target.checked)}),e.jsx("div",{className:"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-primary-300 dark:peer-focus:ring-primary-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-primary-600"})]})]}),e.jsxs("div",{className:"space-y-4",children:[i?e.jsx("div",{className:"relative",children:e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-gray-50 dark:bg-dark-200 rounded-lg",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("img",{src:i,alt:"Background preview",className:"w-12 h-12 object-cover rounded-md"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 truncate",children:"Custom background image"}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Click to change or remove"})]}),e.jsx(C,{variant:"ghost",size:"sm",onClick:L,className:"text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400 dark:hover:text-red-300 dark:hover:bg-red-900/20",children:e.jsx(Me,{className:"h-4 w-4"})})]})}):e.jsxs("div",{className:`border-2 border-dashed rounded-lg p-6 text-center cursor-pointer transition-colors ${g?"border-primary-500 bg-primary-50 dark:bg-primary-900/20":"border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"}`,onDragOver:w,onDragLeave:S,onDrop:F,onClick:()=>d.current?.click(),children:[e.jsx(Xa,{className:"h-12 w-12 mx-auto text-gray-400 dark:text-gray-500 mb-4"}),e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-2",children:a("settings.appearance.background.upload")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-4",children:a("settings.appearance.background.dragDrop")}),e.jsxs(C,{variant:"outline",size:"sm",disabled:u,className:"mx-auto",children:[e.jsx(Ma,{className:"h-4 w-4 mr-2"}),a(u?"common.loading":"settings.appearance.background.chooseImage")]})]}),e.jsx("input",{ref:d,type:"file",accept:"image/*",onChange:b,className:"hidden"})]}),i&&e.jsxs("div",{className:"space-y-4 mt-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[a("settings.appearance.background.blur"),":"," ",k.blurAmount,"px"]}),e.jsx("input",{type:"range",min:"0",max:"30",step:"1",value:k.blurAmount,onChange:P=>z(parseInt(P.target.value)),className:"w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[a("settings.appearance.background.opacity"),":"," ",Math.round(k.opacity*100),"%"]}),e.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.1",value:k.opacity,onChange:P=>N(parseFloat(P.target.value)),className:"w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"})]})]})]})})},dy=()=>{const{t:n,i18n:a}=ue(),t=r=>{const i=r.target.value;a.changeLanguage(i)};return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ut,{className:"h-4 w-4 text-gray-500 dark:text-gray-400"}),e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:n("settings.appearance.language.title")})]}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:n("settings.appearance.language.description")}),e.jsx("select",{value:a.language,onChange:t,className:"w-full px-3 py-2 text-sm border border-gray-200 dark:border-dark-300 rounded-lg bg-white dark:bg-dark-100 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-primary-500",children:Hf.map(r=>e.jsxs("option",{value:r.code,children:[r.nativeName," (",r.name,")"]},r.code))})]})},ze=(n,a)=>{if(n&&typeof n=="object"&&"response"in n){const t=n;if(t.response?.data?.error)return t.response.data.error}return n instanceof Error?n.message:a},Te=Ta((n,a)=>({sessions:[],currentSession:null,setCurrentSession:t=>{n({currentSession:t})},createSession:async(t,r,i)=>{try{n({loading:!0,error:null});const o=await je.createSession(t,r,i);if(o.success&&o.data){const s=o.data;return n(d=>({sessions:[s,...d.sessions],currentSession:s,loading:!1})),j.success("New chat created"),s}}catch(o){const s=ze(o,"Failed to create session");n({error:s,loading:!1}),j.error(s)}},loadSessions:async()=>{try{n({loading:!0,error:null});const t=await je.getSessions();t.success&&t.data&&n(r=>{const i=t.data||[],o=i.map(d=>d.id);let s=null;return r.currentSession&&o.includes(r.currentSession.id)?s=i.find(d=>d.id===r.currentSession.id)||null:i.length>0&&(s=i[0],r.currentSession&&console.warn("Previous currentSession not found in backend sessions:",r.currentSession.id)),{sessions:i,currentSession:s,loading:!1}})}catch(t){const r=ze(t,"Failed to load sessions");n({error:r,loading:!1}),j.error(r)}},deleteSession:async t=>{try{const r=await je.deleteSession(t);r.success?(n(i=>{const o=i.sessions.filter(d=>d.id!==t),s=i.currentSession?.id===t?o[0]||null:i.currentSession;return console.log("Store: Updating state, sessions count:",o.length),{sessions:o,currentSession:s}}),j.success("Chat deleted")):(console.error("Store: deleteSession failed:",r),j.error("Failed to delete chat"))}catch(r){console.error("Store: deleteSession error:",r);const i=ze(r,"Failed to delete session");j.error(i)}},clearAllSessions:async()=>{try{n({loading:!0,error:null});const t=await je.clearAllSessions();t.success?(n({sessions:[],currentSession:null,loading:!1}),j.success("All chat history cleared")):(console.error("Store: clearAllSessions failed:",t),j.error("Failed to clear chat history"),n({loading:!1}))}catch(t){console.error("Store: clearAllSessions error:",t);const r=ze(t,"Failed to clear chat history");j.error(r),n({loading:!1})}},clearAllState:()=>{n({sessions:[],currentSession:null,models:[],selectedModel:"",systemMessage:"",loading:!1,error:null})},updateSessionTitle:async(t,r)=>{try{const i=await je.updateSession(t,{title:r});i.success&&i.data&&(n(o=>({sessions:o.sessions.map(s=>s.id===t?i.data:s),currentSession:o.currentSession?.id===t?i.data:o.currentSession})),j.success("Chat title updated"))}catch(i){const o=ze(i,"Failed to update session");j.error(o)}},addMessage:(t,r)=>{const i=a(),o=i.currentSession?.isPrivate&&i.currentSession?.id===t;if(!i.currentSession||!o&&!i.sessions.find(d=>d.id===i.currentSession?.id)){j.error("No valid chat session. Please create or select a chat."),console.error("addMessage blocked: currentSession is not valid",i.currentSession?.id);return}if(!o&&!i.sessions.find(d=>d.id===t)){j.error("Session not found or invalid. Please select or create a valid chat session."),console.error("addMessage blocked: sessionId not found in sessions",t);return}const s={...r,id:r.id||Vf(),timestamp:Date.now()};n(d=>{if(d.currentSession?.isPrivate&&d.currentSession?.id===t)return d.currentSession.messages.find(p=>p.id===s.id)?d:{...d,currentSession:{...d.currentSession,messages:[...d.currentSession.messages,s],updatedAt:Date.now()}};const u=d.sessions.find(g=>g.id===t);if(u&&u.messages.find(p=>p.id===s.id))return d;const m=d.sessions.map(g=>{if(g.id===t){let p=[...g.messages];if(s.parentId){const k=s.parentId;p=p.map(x=>x.id===k||x.parentId===k?{...x,isActive:!1,branchIndex:x.branchIndex??0,siblingCount:(s.branchIndex||0)+1}:x)}return p.push(s),{...g,messages:p,updatedAt:Date.now()}}return g});return{sessions:m,currentSession:d.currentSession?.id===t&&m.find(p=>p.id===t)||d.currentSession}})},updateMessage:(t,r,i)=>{n(o=>{if(o.currentSession?.id!==t)return o;if(o.currentSession?.isPrivate){const g=o.currentSession.messages.find(k=>k.id===r);if(!g||g.content===i)return o;const p=o.currentSession.messages.map(k=>k.id===r?{...k,content:i}:k);return{...o,currentSession:{...o.currentSession,messages:p,updatedAt:Date.now()}}}const s=o.sessions.find(g=>g.id===t);if(!s)return o;const d=s.messages.find(g=>g.id===r);if(!d||d.content===i)return o;const u=o.sessions.map(g=>{if(g.id===t){const p=g.messages.map(k=>k.id===r?{...k,content:i}:k);return{...g,messages:p,updatedAt:Date.now()}}return g}),m=o.currentSession?.id===t&&u.find(g=>g.id===t)||o.currentSession;return{sessions:u,currentSession:m}})},updateMessageWithStatistics:(t,r,i,o)=>{n(s=>{if(s.currentSession?.id!==t)return s;if(s.currentSession?.isPrivate){const m=s.currentSession.messages.map(g=>g.id===r?{...g,content:i,statistics:o}:g);return{...s,currentSession:{...s.currentSession,messages:m,updatedAt:Date.now()}}}const d=s.sessions.map(m=>{if(m.id===t){const g=m.messages.map(p=>p.id===r?{...p,content:i,statistics:o}:p);return{...m,messages:g,updatedAt:Date.now()}}return m}),u=s.currentSession&&s.currentSession.id===t&&d.find(m=>m.id===t)||s.currentSession;return{sessions:d,currentSession:u}})},models:[],loadModels:async()=>{try{n({loading:!0,error:null}),console.log("Loading models from API...");const t=await ua.getModels();let r=[];t.success&&t.data&&(r=[...t.data],console.log("Ollama models loaded:",t.data.length));try{const i=await le.getAllPlugins();if(i.success&&i.data){const o=i.data.filter(s=>s.active&&s.type!=="tts"&&s.type!=="image");console.log("🔌 Active plugins found:",o.map(s=>s.name));for(const s of o)if(s.model_map){const d=s.model_map.map(u=>({name:u,model:u,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,pluginName:s.name}));r.push(...d),console.log("Plugin models added:",d.length,"from",s.name)}}}catch(i){console.error("❌ Failed to load plugin models:",i),i instanceof Error&&console.error("❌ Plugin error details:",{message:i.message,response:i.response?.data,status:i.response?.status,url:i.config?.url})}try{const{personaApi:i}=await he(async()=>{const{personaApi:s}=await Promise.resolve().then(()=>wa);return{personaApi:s}},void 0),o=await i.getPersonas();if(o.success&&o.data){const s=o.data.reduce((u,m)=>(u[m.id]=m,u),{}),d=o.data.map(u=>({name:`persona:${u.id}`,model:u.model,size:0,digest:"",details:{parent_model:u.model,format:"persona",family:"persona",families:["persona"],parameter_size:"",quantization_level:""},modified_at:new Date(u.updated_at).toISOString(),expires_at:new Date().toISOString(),size_vram:0,isPersona:!0,personaName:u.name,personaDescription:u.description}));r.push(...d),n(u=>({...u,personas:s}))}}catch(i){console.error("❌ Failed to load personas:",i)}console.log("Total models loaded:",r.length),n({models:r,loading:!1})}catch(t){console.error("Error loading models:",t);const r=ze(t,"Failed to load models");n({error:r,loading:!1}),j.error(r)}},loadPreferences:async()=>{try{const t=await ne.getPreferences();if(t.success&&t.data){const{defaultModel:r,systemMessage:i}=t.data;r&&(n({selectedModel:r}),console.log("✅ Loaded default model from backend:",r)),i!==void 0&&(n({systemMessage:i}),console.log("✅ Loaded system message from backend"))}}catch(t){console.warn("❌ Failed to load preferences from backend:",t)}},selectedModel:"",setSelectedModel:t=>{n({selectedModel:t}),ne.setDefaultModel(t).catch(r=>{console.warn("Failed to save default model to backend:",r)})},updateCurrentSessionModel:async t=>{const r=a();if(!r.currentSession)throw new Error("No current session to update");try{const i=await je.updateSession(r.currentSession.id,{model:t});i.success&&i.data&&(n(o=>({sessions:o.sessions.map(s=>s.id===o.currentSession?.id?i.data:s),currentSession:i.data,selectedModel:t})),j.success("Model updated for current chat"))}catch(i){const o=ze(i,"Failed to update session model");throw j.error(o),i}},personas:{},loadPersonas:async()=>{try{n({loading:!0,error:null});const t=await mt.getPersonas();if(t.success&&t.data){const r=t.data;n({personas:r.reduce((i,o)=>(i[o.id]=o,i),{}),loading:!1}),console.log("✅ Personas loaded:",r.length)}}catch(t){const r=ze(t,"Failed to load personas");n({error:r,loading:!1}),console.error("❌ Failed to load personas:",r)}},getCurrentPersona:()=>{const t=a();if(!t.currentSession||!t.currentSession.model?.startsWith("persona:"))return null;const r=t.currentSession.model.replace("persona:","");return t.personas[r]||null},systemMessage:"",setSystemMessage:t=>{const r=a();if(n({systemMessage:t}),ne.setSystemMessage(t).catch(i=>{console.warn("Failed to save system message to backend:",i)}),r.currentSession){const i=r.currentSession.messages.findIndex(o=>o.role==="system");if(i!==-1){n(s=>{const d=s.sessions.map(m=>{if(m.id===s.currentSession?.id){const g=m.messages.map((p,k)=>k===i&&p.role==="system"?{...p,content:t,timestamp:Date.now()}:p);return{...m,messages:g,updatedAt:Date.now()}}return m}),u=s.currentSession?d.find(m=>m.id===s.currentSession.id)||s.currentSession:null;return{sessions:d,currentSession:u}});const o=r.currentSession.messages[i];je.updateMessage(r.currentSession.id,o.id,{content:t}).catch(s=>{console.warn("Failed to sync system message update to backend:",s)}),console.log("✅ Updated system message in current session")}}},loading:!1,error:null,setError:t=>n({error:t}),generatingTitleForSession:null,setGeneratingTitleForSession:t=>n({generatingTitleForSession:t}),...typeof window<"u"&&{testPluginApi:async()=>{try{console.log("🧪 Testing plugin API...");const t=await le.getAllPlugins();return console.log("✅ Plugin API test result:",t),t}catch(t){return console.error("❌ Plugin API test failed:",t),{error:t}}}}})),pt=Ta((n,a)=>({plugins:[],pluginStatus:[],isLoading:!1,isUploading:!1,error:null,loadPlugins:async()=>{n({isLoading:!0,error:null});try{const t=await le.getAllPlugins();t.success&&t.data?n({plugins:t.data}):n({error:t.error||"Failed to load plugins"})}catch(t){n({error:t instanceof Error?t.message:"Failed to load plugins"})}finally{n({isLoading:!1})}},uploadPlugin:async t=>{n({isUploading:!0,error:null});try{const r=await le.uploadPlugin(t);r.success&&r.data?await a().loadPlugins():n({error:r.error||"Failed to upload plugin"})}catch(r){n({error:r instanceof Error?r.message:"Failed to upload plugin"})}finally{n({isUploading:!1})}},installPlugin:async t=>{n({isLoading:!0,error:null});try{const r=await le.installPlugin(t);r.success&&r.data?await a().loadPlugins():n({error:r.error||"Failed to install plugin"})}catch(r){n({error:r instanceof Error?r.message:"Failed to install plugin"})}finally{n({isLoading:!1})}},updatePlugin:async(t,r)=>{n({isLoading:!0,error:null});try{const i=await le.updatePlugin(t,r);i.success&&i.data?await a().loadPlugins():n({error:i.error||"Failed to update plugin"})}catch(i){n({error:i instanceof Error?i.message:"Failed to update plugin"})}finally{n({isLoading:!1})}},deletePlugin:async t=>{n({isLoading:!0,error:null});try{const r=await le.deletePlugin(t);r.success?await a().loadPlugins():n({error:r.error||"Failed to delete plugin"})}catch(r){n({error:r instanceof Error?r.message:"Failed to delete plugin"})}finally{n({isLoading:!1})}},activatePlugin:async t=>{n({isLoading:!0,error:null});try{const r=await le.activatePlugin(t);r.success?await a().loadPlugins():n({error:r.error||"Failed to activate plugin"})}catch(r){n({error:r instanceof Error?r.message:"Failed to activate plugin"})}finally{n({isLoading:!1})}},deactivatePlugin:async t=>{n({isLoading:!0,error:null});try{const r=await le.deactivatePlugin(t);r.success?await a().loadPlugins():n({error:r.error||"Failed to deactivate plugin"})}catch(r){n({error:r instanceof Error?r.message:"Failed to deactivate plugin"})}finally{n({isLoading:!1})}},loadPluginStatus:async()=>{try{const t=await le.getPluginStatus();t.success&&t.data&&n({pluginStatus:t.data})}catch(t){console.error("Failed to load plugin status:",t)}},exportPlugin:async t=>{n({isLoading:!0,error:null});try{const r=await le.exportPlugin(t),i=window.URL.createObjectURL(r),o=document.createElement("a");o.href=i,o.download=`${t}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),window.URL.revokeObjectURL(i)}catch(r){n({error:r instanceof Error?r.message:"Failed to export plugin"})}finally{n({isLoading:!1})}},clearError:()=>n({error:null}),setError:t=>n({error:t})})),mn="0.6.3",Vn=({isOpen:n,onClose:a})=>{const{models:t,selectedModel:r,setSelectedModel:i,systemMessage:o,setSystemMessage:s,clearAllSessions:d,loading:u,sessions:m,loadModels:g,loadSessions:p}=Te(),{theme:k,setTheme:x,preferences:b,setPreferences:w,loadPreferences:S}=be(),{plugins:F,isLoading:L,isUploading:A,error:z,loadPlugins:N,uploadPlugin:P,deletePlugin:R,activatePlugin:J,deactivatePlugin:G,exportPlugin:E,clearError:O,installPlugin:K}=pt(),{t:c}=ue(),[U,me]=h.useState("appearance"),[V,Y]=h.useState(o),[ee,re]=h.useState(!1),[W,T]=h.useState(null),[$,Z]=h.useState(!1),[Pe,De]=h.useState(!1),[Je,_e]=h.useState(""),Ye=h.useRef(null),[Ee,Ze]=h.useState(null),[Le,Ge]=h.useState({}),[I,te]=h.useState({}),[_,Xe]=h.useState({}),[Be,ma]=h.useState(null),[ge,Ia]=h.useState(b.generationOptions||{}),[X,Ca]=h.useState(b.embeddingSettings||{enabled:!1,model:"nomic-embed-text",chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7}),[ie,Jn]=h.useState(null),[gt,ht]=h.useState(!1),[q,Qe]=h.useState(b.ttsSettings||{enabled:!1,autoPlay:!1,model:"",voice:"",speed:1,pluginId:"",streamSentences:!1}),[Ke,_n]=h.useState([]),[bt,Yn]=h.useState([]),[kt,Fa]=h.useState([]),[Zn,ft]=h.useState(!1),[yt,ea]=h.useState(!1),[Oa,pa]=h.useState(null),[se,aa]=h.useState(b.imageGenSettings||{enabled:!1,model:"",size:"1024x1024",quality:"standard",style:"vivid",pluginId:""}),[Ae,Xn]=h.useState([]),[vt,Qn]=h.useState([]),[Ea,La]=h.useState([]),[xt,Ga]=h.useState([]),[St,Ba]=h.useState([]),[er,wt]=h.useState(!1),[ga,Pt]=h.useState(!1),[ar,Ka]=h.useState(!1),[Ha,Mt]=h.useState("skip"),[ye,ta]=h.useState(null),[Dt,Ra]=h.useState(null),He=h.useRef(null);h.useEffect(()=>{n&&(At(),ir(),Y(o),Ia(b.generationOptions||{}),Ca(b.embeddingSettings||{enabled:!1,model:"nomic-embed-text",chunkSize:1e3,chunkOverlap:200,similarityThreshold:.7}),Qe(b.ttsSettings||{enabled:!1,autoPlay:!1,model:"",voice:"",speed:1,pluginId:""}),aa(b.imageGenSettings||{enabled:!1,model:"",size:"1024x1024",quality:"standard",style:"vivid",pluginId:""}),sr(),N(),tr(),g())},[n,o]);const tr=async()=>{try{const l=await le.getCredentials();if(l.success&&l.data){const f={};for(const M of l.data)f[M.plugin_id]=M.has_api_key;te(f)}}catch(l){console.error("Failed to load plugin credentials:",l)}},nr=async l=>{const f=Le[l];if(!f?.trim()){j.error("Please enter an API key");return}ma(l);try{const M=await le.setApiKey(l,f.trim());M.success?(j.success("API key saved successfully"),te(ae=>({...ae,[l]:!0})),Ge(ae=>({...ae,[l]:""})),Xe(ae=>({...ae,[l]:!1})),Ze(null)):j.error(M.error||"Failed to save API key")}catch{j.error("Failed to save API key")}finally{ma(null)}},rr=async l=>{ma(l);try{const f=await le.deleteApiKey(l);f.success?(j.success("API key removed"),te(M=>({...M,[l]:!1})),Ge(M=>({...M,[l]:""}))):j.error(f.error||"Failed to remove API key")}catch{j.error("Failed to remove API key")}finally{ma(null)}},At=async()=>{try{const l=await lt.getEmbeddingStatus();l.success&&l.data&&Jn(l.data)}catch(l){console.error("Failed to load embedding status:",l)}},ir=async()=>{ft(!0);try{const[l,f]=await Promise.all([la.getModels(),la.getPlugins()]);if(l.success&&l.data){if(_n(l.data),!q.model&&l.data.length>0){const M=l.data[0];Qe(ae=>({...ae,model:M.model,pluginId:M.plugin,voice:M.config?.default_voice||""})),M.config?.voices&&Fa(M.config.voices)}else if(q.model){const M=l.data.find(ae=>ae.model===q.model);M?.config?.voices&&Fa(M.config.voices)}}f.success&&f.data&&Yn(f.data)}catch(l){console.error("Failed to load TTS data:",l)}finally{ft(!1)}},or=async l=>{const f=Ke.find(M=>M.model===l);f&&(Qe(M=>({...M,model:l,pluginId:f.plugin,voice:f.config?.default_voice||M.voice})),f.config?.voices&&Fa(f.config.voices))},sr=async()=>{wt(!0);try{const[l,f]=await Promise.all([dt.getModels(),dt.getPlugins()]);if(l.success&&l.data){if(Xn(l.data),!se.model&&l.data.length>0){const M=l.data[0];aa(ae=>({...ae,model:M.model,pluginId:M.plugin,size:M.config?.default_size||"1024x1024",quality:M.config?.default_quality||"standard",style:M.config?.default_style||"vivid"})),M.config?.sizes&&La(M.config.sizes),M.config?.qualities&&Ga(M.config.qualities),M.config?.styles&&Ba(M.config.styles)}else if(se.model){const M=l.data.find(ae=>ae.model===se.model);M?.config&&(M.config.sizes&&La(M.config.sizes),M.config.qualities&&Ga(M.config.qualities),M.config.styles&&Ba(M.config.styles))}}f.success&&f.data&&Qn(f.data)}catch(l){console.error("Failed to load image generation data:",l)}finally{wt(!1)}},lr=async l=>{const f=Ae.find(M=>M.model===l);f&&(aa(M=>({...M,model:l,pluginId:f.plugin,size:f.config?.default_size||M.size,quality:f.config?.default_quality||M.quality,style:f.config?.default_style||M.style})),f.config?.sizes&&La(f.config.sizes),f.config?.qualities&&Ga(f.config.qualities),f.config?.styles&&Ba(f.config.styles))},ha=(l,f)=>{Qe(M=>({...M,[l]:f}))},dr=async()=>{try{const l=await ne.updatePreferences({ttsSettings:q});l.success&&l.data&&(w(l.data),j.success("TTS settings saved successfully"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to save TTS settings: "+f)}},cr=async()=>{if(yt){Oa&&(Oa.pause(),Oa.currentTime=0,pa(null)),ea(!1);return}ea(!0);try{const l=await la.generateBase64({model:q.model||"tts-1",input:"Hello! This is a test of the text-to-speech system.",voice:q.voice||"alloy",speed:q.speed||1,response_format:"mp3"});if(l.success&&l.data?.audio){const f=`data:${l.data.mimeType};base64,${l.data.audio}`,M=new Audio(f);pa(M),M.onended=()=>{ea(!1),pa(null)},M.onerror=()=>{j.error("Failed to play audio"),ea(!1),pa(null)},await M.play()}else throw new Error(l.message||"Failed to generate speech")}catch(l){const f=l instanceof Error?l.message:String(l);j.error("TTS test failed: "+f),ea(!1)}},ur=()=>{Qe({enabled:!1,autoPlay:!1,model:Ke[0]?.model||"",voice:Ke[0]?.config?.default_voice||"",speed:1,pluginId:Ke[0]?.plugin||"",streamSentences:!1})},ba=(l,f)=>{aa(M=>({...M,[l]:f}))},mr=async()=>{try{const l=await ne.updatePreferences({imageGenSettings:se});l.success&&l.data&&(w(l.data),j.success("Image generation settings saved successfully"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to save image generation settings: "+f)}},pr=()=>{aa({enabled:!1,model:Ae[0]?.model||"",size:Ae[0]?.config?.default_size||"1024x1024",quality:Ae[0]?.config?.default_quality||"standard",style:Ae[0]?.config?.default_style||"vivid",pluginId:Ae[0]?.plugin||""})},gr=async()=>{try{ht(!0),(await lt.regenerateEmbeddings()).success&&(j.success("Embeddings regenerated successfully"),await At())}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to regenerate embeddings: "+f)}finally{ht(!1)}},Ua=async l=>{try{const f=await ne.updatePreferences(l);f.success&&f.data&&(w(f.data),j.success("Settings updated successfully"))}catch(f){const M=f instanceof Error?f.message:String(f);j.error("Failed to update settings: "+M)}},hr=async l=>{const f=l.target.files?.[0];f&&(await P(f),Z(!1),Ye.current&&(Ye.current.value=""),await g())},br=async()=>{try{const l=JSON.parse(Je);await K(l),De(!1),_e(""),await g()}catch{O(),j.error("Invalid JSON format")}},kr=async l=>{F.find(M=>M.id===l)?.active?await G(l):await J(l),await g()},fr=async l=>{window.confirm("Are you sure you want to delete this plugin?")&&(await R(l),await g())},yr=async l=>{await E(l)};if(!n)return null;const $a=l=>{const f={mode:l};x(f),Ua({theme:f})},vr=l=>{const f=l.target.value;i(f),Ua({defaultModel:f}),j.success("Default model updated")},xr=l=>{Y(l.target.value)},Sr=()=>{s(V),Ua({systemMessage:V}),j.success("System message updated")},wr=async()=>{window.confirm("Are you sure you want to delete all chat history? This action cannot be undone.")&&(await d(),j.success("All chat sessions deleted"))},Pr=()=>{const l={format:"libre-webui-export",version:"1.0",preferences:b,sessions:m,documents:[],exportedAt:new Date().toISOString()},f=new Blob([JSON.stringify(l,null,2)],{type:"application/json"}),M=URL.createObjectURL(f),ae=document.createElement("a");ae.href=M,ae.download=`libre-webui-export-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(ae),ae.click(),document.body.removeChild(ae),URL.revokeObjectURL(M),j.success("Data exported successfully")},Mr=l=>{const f=l.target.files?.[0];f&&(Ra(f),Ka(!0),ta(null))},Dr=async()=>{if(Dt){Pt(!0);try{const l=await Dt.text(),f=JSON.parse(l);if(!f.format||f.format!=="libre-webui-export")throw new Error("Invalid export format. Please use a valid Libre WebUI export file.");const M=await ne.importData(f,Ha==="overwrite"?"replace":"merge");if(M.success&&M.data)ta({preferences:{imported:!0,error:null},sessions:{imported:0,skipped:0,errors:[]},documents:{imported:0,skipped:0,errors:[]}}),j.success("Data imported successfully"),await S(),await p();else throw new Error(M.error||"Import failed")}catch(l){j.error(l instanceof Error?l.message:"Import failed"),ta(null)}finally{Pt(!1),Ka(!1),Ra(null),He.current&&(He.current.value="")}}},Ar=()=>{Ka(!1),Ra(null),ta(null),He.current&&(He.current.value="")},zr=async()=>{re(!0),T(null),ua.pullAllModelsStream(l=>{T(l)},()=>{re(!1),T(null),j.success("All models updated successfully!"),g()},l=>{re(!1),T(null),j.error("Failed to update models: "+l)})},fe=(l,f)=>{Ia(M=>({...M,[l]:f}))},jr=async()=>{try{const l=await ne.setGenerationOptions(ge);l.success&&l.data&&(w(l.data),j.success("Generation options updated successfully"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to update generation options: "+f)}},Tr=async()=>{try{const l=await ne.resetGenerationOptions();l.success&&l.data&&(w(l.data),Ia(l.data.generationOptions||{}),j.success("Generation options reset to defaults"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to reset generation options: "+f)}},ve=(l,f)=>{Ca(M=>({...M,[l]:f}))},zt=async()=>{try{const l=await ne.setEmbeddingSettings(X);l.success&&l.data&&(w(l.data),j.success("Embedding settings updated successfully"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to update embedding settings: "+f)}},jt=async()=>{try{const l=await ne.resetEmbeddingSettings();l.success&&l.data&&(w(l.data),Ca(l.data.embeddingSettings||{}),j.success("Embedding settings reset to defaults"))}catch(l){const f=l instanceof Error?l.message:String(l);j.error("Failed to reset embedding settings: "+f)}},Nr=[{id:"appearance",label:c("settings.tabs.appearance"),icon:Rr},{id:"models",label:c("settings.tabs.model"),icon:Nt},{id:"generation",label:c("settings.tabs.generation"),icon:Ur},{id:"tts",label:c("settings.tabs.tts"),icon:It},{id:"image-gen",label:c("settings.tabs.imageGen"),icon:Xa},{id:"documents",label:c("settings.tabs.documents"),icon:va},{id:"plugins",label:c("settings.tabs.plugins"),icon:Ct},{id:"data",label:c("settings.tabs.data"),icon:va},{id:"about",label:c("settings.tabs.about"),icon:Pn}],Ir=()=>{switch(U){case"appearance":return e.jsxs("div",{className:"space-y-6",children:[e.jsx(dy,{}),e.jsx("div",{className:"border-t border-gray-200 dark:border-dark-300 pt-6",children:e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.appearance.title")})}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("button",{onClick:()=>$a("light"),className:`flex items-center justify-center gap-2 h-12 px-3 py-2.5 text-sm font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 ${k.mode==="light"?"bg-primary-600 text-white shadow-sm hover:bg-primary-700 hover:shadow-md focus:ring-primary-500":"border border-gray-300 text-gray-700 bg-white shadow-sm hover:bg-gray-50 hover:border-gray-400 focus:ring-gray-500 dark:border-dark-300 dark:text-dark-700 dark:bg-dark-25 dark:hover:bg-dark-200 dark:hover:border-dark-400 ophelia:border-[#262626] ophelia:text-[#e5e5e5] ophelia:bg-[#0a0a0a] ophelia:hover:bg-[#121212]"}`,children:[e.jsx(Jr,{className:"h-4 w-4"}),c("settings.appearance.theme.light")]}),e.jsxs("button",{onClick:()=>$a("dark"),className:`flex items-center justify-center gap-2 h-12 px-3 py-2.5 text-sm font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 ${k.mode==="dark"?"bg-dark-300 text-dark-800 border border-dark-400 shadow-sm hover:bg-dark-400 focus:ring-dark-500":"border border-gray-300 text-gray-700 bg-white shadow-sm hover:bg-gray-50 hover:border-gray-400 focus:ring-gray-500 dark:border-dark-300 dark:text-dark-700 dark:bg-dark-25 dark:hover:bg-dark-200 dark:hover:border-dark-400 ophelia:border-[#262626] ophelia:text-[#e5e5e5] ophelia:bg-[#0a0a0a] ophelia:hover:bg-[#121212]"}`,children:[e.jsx(_r,{className:"h-4 w-4"}),c("settings.appearance.theme.dark")]}),e.jsxs("button",{onClick:()=>$a("ophelia"),className:`flex items-center justify-center gap-2 h-12 px-3 py-2.5 text-sm font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 ${k.mode==="ophelia"?"bg-purple-600 text-white shadow-sm hover:bg-purple-700 hover:shadow-md focus:ring-purple-500 border border-purple-500":"border border-gray-300 text-gray-700 bg-white shadow-sm hover:bg-gray-50 hover:border-gray-400 focus:ring-gray-500 dark:border-dark-300 dark:text-dark-700 dark:bg-dark-25 dark:hover:bg-dark-200 dark:hover:border-dark-400"}`,children:[e.jsx(Yr,{className:"h-4 w-4"}),c("settings.appearance.theme.amoled")]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-md font-medium text-gray-900 dark:text-gray-100 mb-3",children:c("settings.appearance.chatInterface.title")}),e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:c("settings.appearance.chatInterface.showUsername")}),e.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.appearance.chatInterface.showUsernameDescription")})]}),e.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",checked:b.showUsername,onChange:l=>{const f=l.target.checked;w({showUsername:f}),ne.updatePreferences({showUsername:f})}}),e.jsx("div",{className:"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-primary-300 dark:peer-focus:ring-primary-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-primary-600"})]})]})})]}),e.jsx(ly,{})]});case"models":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.model.title")}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.model.defaultModel")}),e.jsx(xe,{value:r||"",onChange:vr,options:[{value:"",label:c("settings.model.selectModel")},...t.map(l=>({value:l.name,label:l.isPersona?`${l.personaName} (${c("settings.model.persona")})`:l.name}))]}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-2",children:c("settings.model.defaultModelDescription")})]}),r&&e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.model.currentModelInfo")}),e.jsx("div",{className:"bg-gray-50 dark:bg-dark-50 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-white dark:bg-dark-100 rounded-md border border-gray-200 dark:border-dark-300",children:[e.jsxs("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:[c("settings.model.name"),":"]}),e.jsx("span",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100 truncate ml-2",children:r})]}),(()=>{const l=t.find(f=>f.name===r);return l?.details?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-white dark:bg-dark-100 rounded-md border border-gray-200 dark:border-dark-300",children:[e.jsxs("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:[c("settings.model.size"),":"]}),e.jsx("span",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100",children:l.details.parameter_size})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-white dark:bg-dark-100 rounded-md border border-gray-200 dark:border-dark-300",children:[e.jsxs("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:[c("settings.model.family"),":"]}),e.jsx("span",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100",children:l.details.family})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-white dark:bg-dark-100 rounded-md border border-gray-200 dark:border-dark-300",children:[e.jsxs("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:[c("settings.model.format"),":"]}),e.jsx("span",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100",children:l.details.format})]})]}):null})()]})})]}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.systemMessage.title")}),e.jsx(Hn,{value:V,onChange:xr,placeholder:c("settings.systemMessage.placeholder"),className:"w-full min-h-[100px] bg-gray-50 dark:bg-dark-50 border-gray-200 dark:border-dark-300 text-gray-900 dark:text-gray-100",rows:4}),e.jsxs("div",{className:"flex items-center justify-between mt-3",children:[e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.systemMessage.description")}),e.jsx(C,{onClick:Sr,size:"sm",disabled:u||V===o,children:c("common.save")})]})]})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.model.autoTitle.title")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:c("settings.model.autoTitle.enable")}),e.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.model.autoTitle.enableDescription")})]}),e.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",checked:b.titleSettings?.autoTitle||!1,onChange:l=>{const f=l.target.checked,M={...b.titleSettings,autoTitle:f,taskModel:b.titleSettings?.taskModel||""};w({titleSettings:M}),ne.updatePreferences({titleSettings:M})}}),e.jsx("div",{className:"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-primary-300 dark:peer-focus:ring-primary-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-primary-600"})]})]}),b.titleSettings?.autoTitle&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.model.autoTitle.taskModel")}),e.jsx(xe,{value:b.titleSettings?.taskModel||"",onChange:l=>{const f=l.target.value,M={...b.titleSettings,autoTitle:b.titleSettings?.autoTitle||!1,taskModel:f};w({titleSettings:M}),ne.updatePreferences({titleSettings:M})},options:[{value:"",label:c("settings.model.autoTitle.selectTaskModel")},...t.map(l=>({value:l.name,label:l.name}))]}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-2",children:c("settings.model.autoTitle.taskModelDescription")})]})]})]})}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.model.bulkOperations")}),e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.model.updateAll")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3",children:c("settings.model.updateAllDescription")}),ee&&W&&e.jsxs("div",{className:"mb-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-gray-600 dark:text-dark-600 font-medium",children:c("settings.model.updatingModel",{name:W.modelName,current:W.current,total:W.total})}),e.jsxs("span",{className:"text-primary-600 dark:text-primary-400 font-semibold",children:[Math.round(W.current/W.total*100),"%"]})]}),e.jsx("div",{className:"w-full bg-gray-200 dark:bg-dark-300 rounded-full h-3 shadow-subtle",children:e.jsx("div",{className:"bg-gradient-to-r from-primary-500 to-primary-600 dark:from-primary-400 dark:to-primary-500 h-3 rounded-full transition-all duration-500 ease-out shadow-glow",style:{width:`${W.current/W.total*100}%`}})}),e.jsxs("div",{className:"text-xs flex items-center justify-between",children:[e.jsxs("span",{className:"text-gray-500 dark:text-dark-500",children:[c("settings.model.status"),":"," ",W.status==="starting"?e.jsx("span",{className:"text-accent-500 dark:text-accent-400",children:c("settings.model.statusStarting")}):W.status==="success"?e.jsx("span",{className:"text-success-600 dark:text-success-500",children:c("settings.model.statusComplete")}):W.status==="error"?e.jsxs("span",{className:"text-error-600 dark:text-error-500",children:[c("settings.model.statusError"),":"," ",W.error]}):""]}),e.jsx("span",{className:"text-gray-400 dark:text-dark-600 text-[10px]",children:c("settings.model.modelsProgress",{current:W.current,total:W.total})})]})]}),e.jsx(C,{onClick:zr,variant:"outline",size:"sm",className:"w-full",disabled:ee||u||t.length===0,children:ee?c("settings.model.updating"):c("settings.model.updateAllButton",{count:t.length})})]})})]})})]})});case"tts":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.tts.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:c("settings.tts.description")}),Zn?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx(We,{className:"h-8 w-8 animate-spin text-primary-500"}),e.jsx("span",{className:"ml-3 text-gray-600 dark:text-gray-400",children:c("settings.tts.loadingProviders")})]}):Ke.length===0?e.jsx("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(It,{className:"h-5 w-5 text-yellow-600 dark:text-yellow-400 mt-0.5"}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-yellow-800 dark:text-yellow-200",children:c("settings.tts.noProviders")}),e.jsx("p",{className:"text-sm text-yellow-700 dark:text-yellow-300 mt-1",children:c("settings.tts.noProvidersDescription")})]})]})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.tts.enable")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:c("settings.tts.enableDescription")})]}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:q.enabled,onChange:l=>ha("enabled",l.target.checked),className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${q.enabled?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${q.enabled?"translate-x-6":"translate-x-1"}`})})]})]})}),e.jsx("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.tts.autoPlay")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:c("settings.tts.autoPlayDescription")})]}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:q.autoPlay,onChange:l=>ha("autoPlay",l.target.checked),disabled:!q.enabled,className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${q.enabled?q.autoPlay?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300":"bg-gray-100 dark:bg-dark-200 opacity-50 cursor-not-allowed"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${q.autoPlay?"translate-x-6":"translate-x-1"}`})})]})]})}),e.jsx("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.tts.streamSentences")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:c("settings.tts.streamSentencesDescription")})]}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:q.streamSentences||!1,onChange:l=>ha("streamSentences",l.target.checked),disabled:!q.enabled,className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${q.enabled?q.streamSentences?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300":"bg-gray-100 dark:bg-dark-200 opacity-50 cursor-not-allowed"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${q.streamSentences?"translate-x-6":"translate-x-1"}`})})]})]})}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-4",children:c("settings.tts.voiceConfiguration")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.tts.model")}),e.jsx(xe,{value:q.model,onChange:l=>or(l.target.value),disabled:!q.enabled,options:[{value:"",label:c("settings.model.selectModel")},...Ke.map(l=>({value:l.model,label:`${l.model} (${l.plugin})`}))]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.tts.modelDescription")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.tts.voice")}),e.jsx(xe,{value:q.voice,onChange:l=>ha("voice",l.target.value),disabled:!q.enabled||kt.length===0,options:[{value:"",label:c("settings.tts.selectVoice")},...kt.map(l=>({value:l,label:l.charAt(0).toUpperCase()+l.slice(1)}))]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.tts.voiceDescription")})]})]})]}),bt.length>0&&e.jsxs("div",{className:"bg-gray-50 dark:bg-dark-50 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.tts.availableProviders")}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:bt.map(l=>e.jsxs("div",{className:"flex items-center gap-2 p-2 bg-white dark:bg-dark-100 rounded border border-gray-200 dark:border-dark-300",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:l.name}),e.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["(",l.models?.length||0," ",c("settings.tts.models"),")"]})]},l.id))})]}),e.jsxs("div",{className:"flex justify-between items-center pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(C,{onClick:ur,variant:"outline",className:"flex items-center gap-2",children:[e.jsx(ra,{size:16}),c("common.reset")]}),e.jsx(C,{onClick:cr,variant:"outline",disabled:!q.enabled||!q.model,className:"flex items-center gap-2",children:yt?e.jsxs(e.Fragment,{children:[e.jsx(Wr,{size:16}),c("settings.tts.stop")]}):e.jsxs(e.Fragment,{children:[e.jsx(qr,{size:16}),c("settings.tts.test")]})})]}),e.jsxs(C,{onClick:dr,className:"flex items-center gap-2",children:[e.jsx(Se,{size:16}),c("settings.saveSettings")]})]})]})]})});case"image-gen":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.imageGen.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:c("settings.imageGen.description")}),er?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx(We,{className:"h-8 w-8 animate-spin text-primary-500"}),e.jsx("span",{className:"ml-3 text-gray-600 dark:text-gray-400",children:c("settings.imageGen.loadingProviders")})]}):Ae.length===0?e.jsx("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Xa,{className:"h-5 w-5 text-yellow-600 dark:text-yellow-400 mt-0.5"}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-yellow-800 dark:text-yellow-200",children:c("settings.imageGen.noProviders")}),e.jsx("p",{className:"text-sm text-yellow-700 dark:text-yellow-300 mt-1",children:c("settings.imageGen.noProvidersDescription")})]})]})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.imageGen.enable")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:c("settings.imageGen.enableDescription")})]}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:se.enabled,onChange:l=>ba("enabled",l.target.checked),className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${se.enabled?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${se.enabled?"translate-x-6":"translate-x-1"}`})})]})]})}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-4",children:c("settings.imageGen.configuration")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.imageGen.model")}),e.jsx(xe,{value:se.model,onChange:l=>lr(l.target.value),disabled:!se.enabled,options:[{value:"",label:c("settings.model.selectModel")},...Ae.map(l=>({value:l.model,label:`${l.model} (${l.plugin})`}))]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.imageGen.modelDescription")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.imageGen.size")}),e.jsx(xe,{value:se.size,onChange:l=>ba("size",l.target.value),disabled:!se.enabled||Ea.length===0,options:[...Ea.length>0?Ea.map(l=>({value:l,label:l})):[{value:"1024x1024",label:"1024x1024"},{value:"1792x1024",label:"1792x1024"},{value:"1024x1792",label:"1024x1792"}]]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.imageGen.sizeDescription")})]}),xt.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.imageGen.quality")}),e.jsx(xe,{value:se.quality,onChange:l=>ba("quality",l.target.value),disabled:!se.enabled,options:xt.map(l=>({value:l,label:l.charAt(0).toUpperCase()+l.slice(1)}))}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.imageGen.qualityDescription")})]}),St.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.imageGen.style")}),e.jsx(xe,{value:se.style,onChange:l=>ba("style",l.target.value),disabled:!se.enabled,options:St.map(l=>({value:l,label:l.charAt(0).toUpperCase()+l.slice(1)}))}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.imageGen.styleDescription")})]})]})]}),vt.length>0&&e.jsxs("div",{className:"bg-gray-50 dark:bg-dark-50 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.imageGen.availableProviders")}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:vt.map(l=>e.jsxs("div",{className:"flex items-center gap-2 p-2 bg-white dark:bg-dark-100 rounded border border-gray-200 dark:border-dark-300",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:l.name}),e.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:["(",l.models?.length||0," ",c("settings.imageGen.models"),")"]})]},l.id))})]}),e.jsxs("div",{className:"flex justify-between items-center pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsxs(C,{onClick:pr,variant:"outline",className:"flex items-center gap-2",children:[e.jsx(ra,{size:16}),c("common.reset")]}),e.jsxs(C,{onClick:mr,className:"flex items-center gap-2",children:[e.jsx(Se,{size:16}),c("settings.saveSettings")]})]})]})]})});case"documents":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.documents.title")}),e.jsxs("div",{className:"bg-gray-50 dark:bg-dark-50 p-4 rounded-lg border border-gray-200 dark:border-dark-300 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.documents.embeddings.title")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:c("settings.documents.embeddings.enable")})]}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:X.enabled,onChange:l=>ve("enabled",l.target.checked),className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${X.enabled?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${X.enabled?"translate-x-6":"translate-x-1"}`})})]})]}),X.enabled&&e.jsxs("div",{className:"space-y-4 pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.documents.embeddings.model")}),e.jsx(xe,{value:X.model,onChange:l=>ve("model",l.target.value),options:[{value:"nomic-embed-text",label:"nomic-embed-text"},{value:"all-minilm",label:"all-minilm"},{value:"sentence-transformers",label:"sentence-transformers"}]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.documents.embeddings.modelDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.documents.embeddings.chunkSize"),":"," ",X.chunkSize]}),e.jsx("input",{type:"range",min:"500",max:"2000",step:"100",value:X.chunkSize,onChange:l=>ve("chunkSize",parseInt(l.target.value)),className:"w-full range-slider"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.documents.embeddings.chunkSizeDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.documents.embeddings.chunkOverlap"),":"," ",X.chunkOverlap]}),e.jsx("input",{type:"range",min:"50",max:"500",step:"50",value:X.chunkOverlap,onChange:l=>ve("chunkOverlap",parseInt(l.target.value)),className:"w-full range-slider"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.documents.embeddings.chunkOverlapDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.documents.embeddings.similarityThreshold"),": ",X.similarityThreshold.toFixed(2)]}),e.jsx("input",{type:"range",min:"0.3",max:"0.9",step:"0.05",value:X.similarityThreshold,onChange:l=>ve("similarityThreshold",parseFloat(l.target.value)),className:"w-full range-slider"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.documents.embeddings.similarityDescription")})]})]})]}),ie&&e.jsxs("div",{className:"bg-gray-50 dark:bg-dark-100 p-4 rounded-lg border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-2",children:c("settings.documents.embeddings.status")}),e.jsxs("div",{className:"text-sm text-gray-700 dark:text-gray-300 space-y-1",children:[e.jsxs("div",{children:[c("settings.documents.embeddings.statusLabel"),":"," ",e.jsx("span",{className:`font-medium ${ie.available?"text-green-600 dark:text-green-400":"text-red-600 dark:text-red-400"}`,children:ie.available?c("settings.documents.embeddings.available"):c("settings.documents.embeddings.unavailable")})]}),e.jsxs("div",{children:[c("settings.documents.embeddings.model"),":"," ",e.jsx("span",{className:"font-medium",children:ie.model})]}),e.jsxs("div",{children:[c("settings.documents.embeddings.chunksWithEmbeddings"),":"," ",e.jsxs("span",{className:"font-medium",children:[ie.chunksWithEmbeddings," /"," ",ie.totalChunks]})]}),ie.totalChunks>0&&e.jsxs("div",{children:[c("settings.documents.embeddings.coverage"),":"," ",e.jsxs("span",{className:"font-medium",children:[Math.round(ie.chunksWithEmbeddings/ie.totalChunks*100),"%"]})]})]})]}),e.jsxs("div",{className:"flex justify-between items-center pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(C,{onClick:jt,variant:"outline",className:"flex items-center gap-2",children:[e.jsx(ra,{size:16}),c("settings.generation.resetDefaults")]}),X.enabled&&ie&&ie.totalChunks>0&&e.jsxs(C,{onClick:gr,disabled:gt,variant:"outline",className:"flex items-center gap-2 text-orange-600 dark:text-orange-400 border-orange-200 dark:border-orange-600 hover:bg-orange-50 dark:hover:bg-orange-900/20",children:[e.jsx(va,{size:16}),c(gt?"settings.documents.embeddings.regenerating":"settings.documents.embeddings.regenerate")]})]}),e.jsxs(C,{onClick:zt,className:"flex items-center gap-2",children:[e.jsx(Se,{size:16}),c("settings.saveSettings")]})]})]})});case"plugins":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.plugins.title")}),z&&e.jsx("div",{className:"p-4 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg mb-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-red-800 dark:text-red-200",children:z}),e.jsx(C,{variant:"ghost",size:"sm",onClick:O,className:"text-red-600 hover:text-red-800",children:e.jsx(Me,{className:"h-4 w-4"})})]})}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300 mb-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:c("settings.plugins.addNew")}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsxs(C,{variant:"outline",size:"sm",onClick:()=>Z(!$),disabled:L||A,children:[e.jsx(Ma,{className:"h-4 w-4 mr-2"}),c("settings.plugins.upload")]}),e.jsx(C,{variant:"outline",size:"sm",onClick:()=>De(!Pe),disabled:L,children:c("settings.plugins.addJson")})]})]}),$&&e.jsxs("div",{className:"bg-gray-50 dark:bg-dark-50 rounded-lg p-4 border border-gray-200 dark:border-dark-300 mb-4",children:[e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx("input",{ref:Ye,type:"file",accept:".json,.zip",onChange:hr,className:"flex-1 p-2 border border-gray-300 dark:border-dark-300 rounded-md bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-medium file:bg-gray-100 file:text-gray-700 dark:file:bg-dark-200 dark:file:text-dark-700 hover:file:bg-gray-200 dark:hover:file:bg-dark-300",disabled:A}),e.jsx(C,{variant:"outline",size:"sm",onClick:()=>Z(!1),disabled:A,children:c("common.cancel")})]}),A&&e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-2",children:c("settings.plugins.uploading")})]}),Pe&&e.jsx("div",{className:"bg-gray-50 dark:bg-dark-50 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"space-y-3",children:[e.jsx("textarea",{value:Je,onChange:l=>_e(l.target.value),placeholder:c("settings.plugins.jsonPlaceholder"),className:"w-full h-32 p-3 border border-gray-300 dark:border-dark-300 rounded-md bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 font-mono text-sm",disabled:L}),e.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[e.jsx(C,{variant:"outline",size:"sm",onClick:()=>{De(!1),_e("")},children:c("common.cancel")}),e.jsx(C,{size:"sm",onClick:br,disabled:!Je.trim()||L,children:c("settings.plugins.install")})]})]})})]}),F.filter(l=>l.active).length>0&&e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300 mb-6",children:[e.jsxs("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:[c("settings.plugins.active")," (",F.filter(l=>l.active).length,")"]}),e.jsx("div",{className:"space-y-2",children:F.filter(l=>l.active).map(l=>e.jsxs("div",{className:"flex items-center justify-between p-3 bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-green-800 dark:text-green-200",children:l.name}),e.jsxs("p",{className:"text-xs text-green-600 dark:text-green-300",children:[l.type," • ",l.model_map?.length||0," ",c("settings.plugins.models")]})]}),e.jsx(C,{variant:"outline",size:"sm",onClick:async()=>{await G(l.id),await g()},className:"text-green-600 border-green-300 hover:bg-green-100",children:c("settings.plugins.deactivate")})]},l.id))})]}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg border border-gray-200 dark:border-dark-300",children:[e.jsx("div",{className:"p-4 border-b border-gray-200 dark:border-dark-300",children:e.jsxs("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:[c("settings.plugins.installed")," (",F.length,")"]})}),L?e.jsx("div",{className:"p-8 text-center",children:e.jsx("p",{className:"text-gray-500 dark:text-gray-400",children:c("settings.plugins.loading")})}):F.length===0?e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(Ct,{className:"h-12 w-12 text-gray-400 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-500 dark:text-gray-400 mb-2",children:c("settings.plugins.noPlugins")}),e.jsx("p",{className:"text-xs text-gray-400 dark:text-gray-500",children:c("settings.plugins.noPluginsDescription")})]}):e.jsx("div",{className:"divide-y divide-gray-200 dark:divide-dark-300",children:F.map(l=>e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("div",{className:"flex-1 min-w-0",children:e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsx("div",{className:`w-3 h-3 rounded-full flex-shrink-0 ${l.active?"bg-green-500":"bg-gray-400 dark:bg-gray-500"}`}),e.jsxs("div",{children:[e.jsx("h5",{className:"font-medium text-gray-900 dark:text-gray-100",children:l.name}),e.jsxs("div",{className:"flex items-center space-x-2 text-xs text-gray-500 dark:text-gray-400",children:[e.jsx("span",{children:l.type}),e.jsx("span",{children:"•"}),e.jsxs("span",{children:[l.model_map?.length||0," ",c("settings.plugins.models")]}),l.endpoint&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"•"}),e.jsx("span",{className:"truncate max-w-32",children:l.endpoint})]}),I[l.id]&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"•"}),e.jsx("span",{className:"text-green-600",children:c("settings.plugins.apiKeySet")})]})]})]})]})}),e.jsxs("div",{className:"flex items-center space-x-1 flex-shrink-0",children:[e.jsxs(C,{variant:"ghost",size:"sm",onClick:()=>Ze(Ee===l.id?null:l.id),title:"Configure API key",className:I[l.id]?"text-green-600":"text-amber-600",children:[e.jsx(et,{className:"h-4 w-4"}),Ee===l.id?e.jsx($r,{className:"h-3 w-3"}):e.jsx(Vr,{className:"h-3 w-3"})]}),e.jsx(C,{variant:"outline",size:"sm",onClick:()=>kr(l.id),disabled:L,className:l.active?"text-green-600 border-green-300":"",children:l.active?e.jsxs(e.Fragment,{children:[e.jsx(Se,{className:"h-4 w-4 mr-1"}),c("settings.plugins.activeLabel")]}):c("settings.plugins.activate")}),e.jsx(C,{variant:"ghost",size:"sm",onClick:()=>yr(l.id),disabled:L,title:"Export plugin",children:e.jsx(Dn,{className:"h-4 w-4"})}),e.jsx(C,{variant:"ghost",size:"sm",onClick:()=>fr(l.id),disabled:L,className:"text-red-600 hover:text-red-700 hover:bg-red-50",title:"Delete plugin",children:e.jsx(An,{className:"h-4 w-4"})})]})]}),Ee===l.id&&e.jsxs("div",{className:"mt-4 p-4 bg-gray-50 dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(et,{className:"h-4 w-4 text-gray-500"}),e.jsx("h6",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:c("settings.plugins.apiKeyConfiguration")})]}),e.jsxs("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3",children:[c("settings.plugins.apiKeyDescription",{name:l.name}),l.auth?.key_env&&e.jsxs("span",{className:"block mt-1",children:[c("settings.plugins.apiKeyEnvAlternative")," ",e.jsx("code",{className:"bg-gray-200 dark:bg-dark-200 px-1 rounded",children:l.auth.key_env})," ",c("settings.plugins.environmentVariable"),"."]})]}),I[l.id]?e.jsxs("div",{className:"flex items-center justify-between p-3 bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Se,{className:"h-4 w-4 text-green-600"}),e.jsx("span",{className:"text-sm text-green-700 dark:text-green-300",children:c("settings.plugins.apiKeyConfigured")})]}),e.jsx(C,{variant:"outline",size:"sm",onClick:()=>rr(l.id),disabled:Be===l.id,className:"text-red-600 border-red-300 hover:bg-red-50",children:Be===l.id?e.jsx(We,{className:"h-4 w-4 animate-spin"}):c("common.remove")})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:_[l.id]?"text":"password",value:Le[l.id]||"",onChange:f=>Ge(M=>({...M,[l.id]:f.target.value})),placeholder:c("settings.plugins.apiKeyPlaceholder"),className:"w-full p-2 pr-10 border border-gray-300 dark:border-dark-300 rounded-md bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500"}),e.jsx("button",{type:"button",onClick:()=>Xe(f=>({...f,[l.id]:!f[l.id]})),className:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",children:_[l.id]?e.jsx(qe,{className:"h-4 w-4"}):e.jsx(Fe,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(C,{size:"sm",onClick:()=>nr(l.id),disabled:Be===l.id||!Le[l.id]?.trim(),children:Be===l.id?e.jsxs(e.Fragment,{children:[e.jsx(We,{className:"h-4 w-4 mr-2 animate-spin"}),c("common.saving")]}):c("settings.plugins.saveApiKey")})})]})]})]},l.id))})]})]})});case"data":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.data.title")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.data.export")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3 flex-1",children:c("settings.data.exportDescription")}),e.jsx(C,{onClick:Pr,variant:"outline",size:"sm",className:"w-full",children:c("settings.data.exportAll")})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.data.import")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3 flex-1",children:c("settings.data.importDescription")}),e.jsx("input",{ref:He,type:"file",accept:".json",onChange:Mr,className:"hidden"}),e.jsx(C,{onClick:()=>He.current?.click(),variant:"outline",size:"sm",className:"w-full",disabled:ga,children:c(ga?"settings.data.importing":"settings.data.importData")})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.data.clearSessions")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3 flex-1",children:c("settings.data.clearSessionsDescription")}),e.jsx(C,{onClick:wr,variant:"outline",size:"sm",className:"w-full text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 border-red-200 hover:border-red-300 dark:border-red-800 dark:hover:border-red-700",disabled:m.length===0||u,children:u?c("settings.data.clearing"):c("settings.data.clearAll",{count:m.length})})]})]}),ar&&e.jsxs("div",{className:"mt-4 p-4 bg-gray-50 dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-3",children:c("settings.data.importOptions")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3",children:c("settings.data.importOptionsDescription")}),e.jsxs("div",{className:"space-y-2 mb-4",children:[e.jsxs("label",{className:"flex items-center",children:[e.jsx("input",{type:"radio",name:"mergeStrategy",value:"skip",checked:Ha==="skip",onChange:l=>Mt(l.target.value),className:"mr-2"}),e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:c("settings.data.skipDuplicates")})]}),e.jsxs("label",{className:"flex items-center",children:[e.jsx("input",{type:"radio",name:"mergeStrategy",value:"overwrite",checked:Ha==="overwrite",onChange:l=>Mt(l.target.value),className:"mr-2"}),e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:c("settings.data.overwrite")})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(C,{onClick:Dr,size:"sm",disabled:ga,children:c(ga?"settings.data.importing":"settings.data.import")}),e.jsx(C,{onClick:Ar,variant:"outline",size:"sm",children:c("common.cancel")})]})]}),ye&&e.jsxs("div",{className:"mt-4 p-4 bg-gray-50 dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-2",children:c("settings.data.importResults")}),e.jsxs("div",{className:"text-xs text-gray-700 dark:text-gray-300 space-y-1",children:[e.jsxs("div",{children:[c("settings.data.preferences"),":"," ",ye.preferences.imported?c("settings.data.imported"):c("settings.data.failed")]}),e.jsxs("div",{children:[c("settings.data.sessions"),":"," ",ye.sessions.imported," ",c("settings.data.importedLabel"),",",ye.sessions.skipped," ",c("settings.data.skipped")]}),e.jsxs("div",{children:[c("settings.data.documents"),":"," ",ye.documents.imported," ",c("settings.data.importedLabel"),","," ",ye.documents.skipped," ",c("settings.data.skipped")]}),(ye.sessions.errors.length>0||ye.documents.errors.length>0)&&e.jsxs("div",{className:"mt-2",children:[e.jsxs("p",{className:"font-medium",children:[c("settings.data.errors"),":"]}),ye.sessions.errors.map((l,f)=>e.jsxs("p",{className:"text-red-600 dark:text-red-400",children:["• ",l]},f)),ye.documents.errors.map((l,f)=>e.jsxs("p",{className:"text-red-600 dark:text-red-400",children:["• ",l]},f))]})]}),e.jsx(C,{onClick:()=>ta(null),variant:"outline",size:"sm",className:"mt-2",children:c("common.close")})]})]})]})});case"about":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"libre-brand text-2xl sm:text-3xl font-normal text-gray-900 dark:text-gray-100 mb-4",style:{fontWeight:300,letterSpacing:"0.01em"},children:"Libre WebUI"}),e.jsx("div",{className:"text-sm text-gray-700 dark:text-gray-300 mb-6",children:e.jsx("span",{children:c("settings.about.title")})}),e.jsx("div",{className:"bg-gray-50 dark:bg-dark-100 rounded-lg p-6 border border-gray-200 dark:border-dark-300",children:e.jsxs("div",{className:"space-y-4 text-sm text-gray-700 dark:text-gray-300",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full mt-2 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-gray-900 dark:text-gray-100 mb-1",children:c("settings.about.features.privacy.title")}),e.jsx("p",{children:c("settings.about.features.privacy.description")})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-2 h-2 bg-primary-500 rounded-full mt-2 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-gray-900 dark:text-gray-100 mb-1",children:c("settings.about.features.openSource.title")}),e.jsx("p",{children:c("settings.about.features.openSource.description")})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-2 h-2 bg-purple-500 rounded-full mt-2 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold text-gray-900 dark:text-gray-100 mb-1",children:c("settings.about.features.localInference.title")}),e.jsx("p",{children:c("settings.about.features.localInference.description")})]})]})]})}),e.jsxs("div",{className:"mt-6 space-y-4",children:[e.jsx("h4",{className:"text-sm font-semibold text-gray-900 dark:text-gray-100",children:c("settings.about.links.title")}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[e.jsxs("a",{href:"https://github.com/libre-webui/libre-webui",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-white dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg hover:bg-gray-50 dark:hover:bg-dark-200 hover:border-gray-300 dark:hover:border-dark-400 transition-all duration-200 group",children:[e.jsx(Mn,{className:"h-5 w-5 text-gray-600 dark:text-gray-400 group-hover:text-gray-900 dark:group-hover:text-gray-200"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.about.links.github")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.about.links.githubDescription")})]}),e.jsx(Ce,{className:"h-4 w-4 text-gray-400 ml-auto opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsxs("a",{href:"https://librewebui.org",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-white dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg hover:bg-gray-50 dark:hover:bg-dark-200 hover:border-gray-300 dark:hover:border-dark-400 transition-all duration-200 group",children:[e.jsx(Ce,{className:"h-5 w-5 text-gray-600 dark:text-gray-400 group-hover:text-gray-900 dark:group-hover:text-gray-200"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.about.links.website")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.about.links.websiteDescription")})]}),e.jsx(Ce,{className:"h-4 w-4 text-gray-400 ml-auto opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsxs("a",{href:"https://ollama.ai",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-white dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg hover:bg-gray-50 dark:hover:bg-dark-200 hover:border-gray-300 dark:hover:border-dark-400 transition-all duration-200 group",children:[e.jsx(Nt,{className:"h-5 w-5 text-gray-600 dark:text-gray-400 group-hover:text-gray-900 dark:group-hover:text-gray-200"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.about.links.ollama")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.about.links.ollamaDescription")})]}),e.jsx(Ce,{className:"h-4 w-4 text-gray-400 ml-auto opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsxs("a",{href:"https://github.com/libre-webui/libre-webui/issues",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-white dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg hover:bg-gray-50 dark:hover:bg-dark-200 hover:border-gray-300 dark:hover:border-dark-400 transition-all duration-200 group",children:[e.jsx(Qa,{className:"h-5 w-5 text-gray-600 dark:text-gray-400 group-hover:text-gray-900 dark:group-hover:text-gray-200"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:c("settings.about.links.reportIssue")}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:c("settings.about.links.reportIssueDescription")})]}),e.jsx(Ce,{className:"h-4 w-4 text-gray-400 ml-auto opacity-0 group-hover:opacity-100 transition-opacity"})]})]})]}),e.jsx("div",{className:"mt-6 p-4 bg-gray-50 dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg",children:e.jsxs("div",{className:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400",children:[e.jsx("a",{href:`https://github.com/libre-webui/libre-webui/releases/tag/v${mn}`,target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary-600 dark:hover:text-primary-400 transition-colors",children:c("settings.about.version",{version:mn})}),e.jsxs("span",{children:[c("settings.about.openSourceBy",{company:""}),e.jsx("a",{href:"https://kroonen.ai",target:"_blank",rel:"noopener noreferrer",className:"text-primary-600 dark:text-primary-400 hover:text-primary-700 dark:hover:text-primary-300 transition-colors",children:"Kroonen AI"})]})]})})]})});case"generation":return e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:c("settings.generation.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:c("settings.generation.description")}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-md font-medium text-gray-900 dark:text-gray-100 mb-4",children:c("settings.generation.coreParameters")}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.temperature"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(0.0-2.0)"})]}),e.jsx("input",{type:"number",min:"0",max:"2",step:"0.1",value:ge.temperature??"",placeholder:"0.8",onChange:l=>fe("temperature",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.temperatureDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.topP"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(0.0-1.0)"})]}),e.jsx("input",{type:"number",min:"0",max:"1",step:"0.05",value:ge.top_p??"",placeholder:"0.9",onChange:l=>fe("top_p",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.topPDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.topK"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(1-100)"})]}),e.jsx("input",{type:"number",min:"1",max:"100",value:ge.top_k??"",placeholder:"40",onChange:l=>fe("top_k",l.target.value?parseInt(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.topKDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.minP"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(0.0-1.0)"})]}),e.jsx("input",{type:"number",min:"0",max:"1",step:"0.05",value:ge.min_p??"",placeholder:"0.0",onChange:l=>fe("min_p",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.minPDescription")})]})]})]}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-md font-medium text-gray-900 dark:text-gray-100 mb-4",children:c("settings.generation.generationControl")}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.generation.maxTokens")}),e.jsx("input",{type:"number",min:"-1",max:"4096",value:ge.num_predict??"",placeholder:"128",onChange:l=>fe("num_predict",l.target.value?parseInt(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.maxTokensDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.repeatPenalty"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(0.0-2.0)"})]}),e.jsx("input",{type:"number",min:"0",max:"2",step:"0.1",value:ge.repeat_penalty??"",placeholder:"1.1",onChange:l=>fe("repeat_penalty",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.repeatPenaltyDescription")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.generation.contextLength")}),e.jsx("input",{type:"number",min:"512",max:"32768",step:"512",value:ge.num_ctx??"",placeholder:"2048",onChange:l=>fe("num_ctx",l.target.value?parseInt(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.contextLengthDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.seed"),e.jsxs("span",{className:"text-xs text-gray-500 ml-1",children:["(",c("settings.generation.optional"),")"]})]}),e.jsx("input",{type:"number",value:ge.seed||"",onChange:l=>fe("seed",l.target.value?parseInt(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100",placeholder:c("settings.generation.random")}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.seedDescription")})]})]})]}),e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("h4",{className:"text-md font-medium text-gray-900 dark:text-gray-100 mb-4",children:c("settings.generation.advancedOptions")}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.presencePenalty"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(-2.0-2.0)"})]}),e.jsx("input",{type:"number",min:"-2",max:"2",step:"0.1",value:ge.presence_penalty??"",placeholder:"0.0",onChange:l=>fe("presence_penalty",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.presencePenaltyDescription")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.frequencyPenalty"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(-2.0-2.0)"})]}),e.jsx("input",{type:"number",min:"-2",max:"2",step:"0.1",value:ge.frequency_penalty??"",placeholder:"0.0",onChange:l=>fe("frequency_penalty",l.target.value?parseFloat(l.target.value):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.frequencyPenaltyDescription")})]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.generation.stopSequences"),e.jsxs("span",{className:"text-xs text-gray-500 ml-1",children:["(",c("settings.generation.commaSeparated"),")"]})]}),e.jsx("input",{type:"text",value:ge.stop?ge.stop.join(", "):"",onChange:l=>fe("stop",l.target.value?l.target.value.split(",").map(f=>f.trim()).filter(f=>f):void 0),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100",placeholder:"\\\\n, ###, STOP"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:c("settings.generation.stopSequencesDescription")})]})]}),e.jsxs("div",{className:"flex justify-between items-center pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsxs(C,{onClick:Tr,variant:"outline",className:"flex items-center gap-2",children:[e.jsx(ra,{size:16}),c("settings.generation.resetDefaults")]}),e.jsxs(C,{onClick:jr,className:"flex items-center gap-2",children:[e.jsx(Se,{size:16}),c("settings.generation.saveOptions")]})]})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-lg p-4 border border-gray-200 dark:border-dark-300",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3",children:c("settings.generation.embeddingSettings")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:c("settings.generation.enableEmbeddings")}),e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:X.enabled,onChange:l=>ve("enabled",l.target.checked),className:"sr-only"}),e.jsx("div",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 ${X.enabled?"bg-primary-600 dark:bg-primary-500":"bg-gray-200 dark:bg-dark-300"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${X.enabled?"translate-x-6":"translate-x-1"}`})})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.documents.embeddings.model")}),e.jsx(xe,{value:X.model,onChange:l=>ve("model",l.target.value),options:[{value:"nomic-embed-text",label:"Nomic Embed Text"},{value:"openai-embedding",label:"OpenAI Embedding"}],disabled:!X.enabled})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.documents.embeddings.chunkSize"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:c("settings.documents.embeddings.chunkSizeInTokens")})]}),e.jsx("input",{type:"number",min:"1",value:X.chunkSize,onChange:l=>ve("chunkSize",parseInt(l.target.value)),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100",disabled:!X.enabled})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[c("settings.documents.embeddings.chunkOverlap"),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:c("settings.documents.embeddings.chunkOverlapInTokens")})]}),e.jsx("input",{type:"number",min:"0",value:X.chunkOverlap,onChange:l=>ve("chunkOverlap",parseInt(l.target.value)),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100",disabled:!X.enabled})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:c("settings.documents.embeddings.similarityThreshold")}),e.jsx("input",{type:"number",min:"0",max:"1",step:"0.01",value:X.similarityThreshold,onChange:l=>ve("similarityThreshold",parseFloat(l.target.value)),className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-transparent bg-white dark:bg-dark-200 text-gray-900 dark:text-gray-100",disabled:!X.enabled})]})]}),ie&&e.jsxs("div",{className:"mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("span",{className:"text-gray-700 dark:text-gray-300",children:[c("settings.documents.embeddings.status"),":"]}),e.jsx("span",{className:"font-medium text-gray-900 dark:text-gray-100",children:ie.available?c("settings.documents.embeddings.available"):c("settings.documents.embeddings.unavailable")})]}),ie.available&&e.jsxs("div",{className:"flex items-center justify-between text-sm mt-1",children:[e.jsxs("span",{className:"text-gray-700 dark:text-gray-300",children:[c("settings.documents.embeddings.chunksWithEmbeddings"),":"]}),e.jsxs("span",{className:"font-medium text-gray-900 dark:text-gray-100",children:[ie.chunksWithEmbeddings," /"," ",ie.totalChunks]})]})]}),e.jsxs("div",{className:"flex justify-between items-center mt-4",children:[e.jsxs(C,{onClick:jt,variant:"outline",className:"flex items-center gap-2",children:[e.jsx(ra,{size:16}),c("settings.generation.resetDefaults")]}),e.jsxs(C,{onClick:zt,className:"flex items-center gap-2",children:[e.jsx(Se,{size:16}),c("settings.saveSettings")]})]})]})})]})});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"fixed inset-0 bg-black/60 backdrop-blur-sm z-50 transition-opacity duration-200",onClick:a}),e.jsx("div",{className:"fixed inset-0 lg:top-1/2 lg:left-1/2 lg:-translate-x-1/2 lg:-translate-y-1/2 z-50 w-full lg:max-w-4xl lg:mx-4 h-full lg:h-[85vh] p-0 lg:p-4",children:e.jsxs("div",{className:"bg-white dark:bg-dark-25 ophelia:bg-[#0a0a0a] rounded-2xl shadow-2xl border border-gray-200 dark:border-dark-200 ophelia:!border-[#9333ea]/70 animate-scale-in flex flex-col h-full overscroll-behavior-contain",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 sm:p-6 border-b border-gray-100 dark:border-dark-200 sticky top-0 z-10 rounded-t-2xl",children:[e.jsx("h2",{className:"text-lg sm:text-xl font-semibold text-gray-900 dark:text-gray-100",children:c("settings.title")}),e.jsx(C,{variant:"ghost",size:"sm",onClick:a,className:"h-9 w-9 sm:h-8 sm:w-8 p-0 hover:bg-gray-100 dark:hover:bg-gray-700 active:bg-gray-200 dark:active:bg-dark-100 touch-manipulation",title:"Close",children:e.jsx(Me,{className:"h-5 w-5 sm:h-4 sm:w-4"})})]}),e.jsxs("div",{className:"flex flex-1 min-h-0 overscroll-behavior-contain",children:[e.jsx("div",{className:"w-40 xs:w-48 sm:w-64 border-r border-gray-100 dark:border-dark-200 p-2 xs:p-3 sm:p-4 overflow-y-auto scrollbar-thin",style:{WebkitOverflowScrolling:"touch"},children:e.jsx("nav",{className:"space-y-1",children:Nr.map(l=>{const f=l.icon,M=k.mode==="ophelia",ae=U===l.id;let Va="w-full flex items-center gap-2 sm:gap-3 px-2 sm:px-3 py-2.5 sm:py-2.5 text-left rounded-lg transition-colors duration-200 touch-manipulation border";return M?Va+=ae?" bg-purple-600 text-white border-purple-600":" border-transparent text-neutral-500 hover:bg-neutral-800":Va+=ae?" bg-gray-100 dark:bg-dark-100 text-gray-900 dark:text-white border-gray-200 dark:border-dark-300":" border-transparent text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200",e.jsxs("button",{onClick:()=>me(l.id),className:Va,children:[e.jsx(f,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"text-xs sm:text-sm font-medium truncate",children:l.label})]},l.id)})})}),e.jsx("div",{className:"flex-1 p-3 xs:p-4 sm:p-6 overflow-auto overscroll-behavior-contain",style:{WebkitOverflowScrolling:"touch"},children:Ir()})]})]})})]})},cy=({value:n,onChange:a,className:t=""})=>{const r=h.useRef(null),[i,o]=h.useState(!1),[s,d]=h.useState(!1),u=async w=>{if(!w.type.startsWith("image/")){j.error("Please select a valid image file");return}if(w.size>2*1024*1024){j.error("Avatar image size must be less than 2MB");return}o(!0);try{const S=new FileReader;S.onload=F=>{const L=F.target?.result;a(L),j.success("Avatar uploaded successfully")},S.onerror=()=>{j.error("Failed to read image file")},S.readAsDataURL(w)}catch(S){console.error("Failed to upload avatar:",S),j.error("Failed to upload avatar image")}finally{o(!1)}},m=w=>{const S=w.target.files?.[0];S&&u(S)},g=w=>{w.preventDefault(),d(!0)},p=w=>{w.preventDefault(),d(!1)},k=w=>{w.preventDefault(),d(!1);const S=w.dataTransfer.files?.[0];S&&u(S)},x=()=>{a(""),j.success("Avatar removed")},b=()=>n||null;return e.jsx("div",{className:`space-y-4 ${t}`,children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-dark-600 mb-2",children:"Avatar"}),e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("div",{className:"w-20 h-20 rounded-full overflow-hidden bg-gray-100 dark:bg-dark-200 border-2 border-gray-300 dark:border-dark-300 flex items-center justify-center",children:b()?e.jsx("img",{src:b(),alt:"Avatar preview",className:"w-full h-full object-cover"}):e.jsx(xa,{className:"h-8 w-8 text-gray-400 dark:text-gray-500"})})}),e.jsxs("div",{className:"flex-1 space-y-3",children:[n?e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-gray-50 dark:bg-dark-200 rounded-lg",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 truncate",children:"Custom avatar image"}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Click to change or remove"})]}),e.jsx(C,{variant:"ghost",size:"sm",onClick:x,className:"text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400 dark:hover:text-red-300 dark:hover:bg-red-900/20",children:e.jsx(Me,{className:"h-4 w-4"})})]}):e.jsxs("div",{className:`border-2 border-dashed rounded-lg p-4 text-center cursor-pointer transition-colors ${s?"border-primary-500 bg-primary-50 dark:bg-primary-900/20":"border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"}`,onDragOver:g,onDragLeave:p,onDrop:k,onClick:()=>r.current?.click(),children:[e.jsx(Ma,{className:"h-8 w-8 mx-auto text-gray-400 dark:text-gray-500 mb-2"}),e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 mb-2",children:"Upload avatar image"}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-2",children:"Drag and drop an image or click to browse"}),e.jsxs(C,{variant:"outline",size:"sm",disabled:i,className:"mx-auto",children:[e.jsx(Ma,{className:"h-4 w-4 mr-2"}),i?"Uploading...":"Choose Image"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-gray-600 dark:text-gray-400 mb-1",children:"Or enter image URL"}),e.jsx("input",{type:"url",value:n,onChange:w=>a(w.target.value),className:"w-full px-3 py-2 text-sm border border-gray-300 dark:border-dark-300 rounded-md bg-white dark:bg-dark-50 text-gray-900 dark:text-dark-800",placeholder:"https://example.com/avatar.jpg"})]})]})]}),e.jsx("input",{ref:r,type:"file",accept:"image/*",onChange:m,className:"hidden"}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-2",children:"Supports: JPG, PNG, GIF, WebP (max 2MB). Square images work best."})]})})};class uy{constructor(){Ie(this,"ws",null);Ie(this,"url");Ie(this,"reconnectAttempts",0);Ie(this,"maxReconnectAttempts",5);Ie(this,"reconnectDelay",1e3);Ie(this,"messageHandlers",new Map);let a;window.location.protocol==="file:"?a="ws://localhost:3001":a=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,this.url=`${a}/ws`,console.log("WebSocket URL constructed:",this.url)}connect(){return v()?(console.log("Demo mode active: skipping WebSocket connection."),Promise.resolve()):(console.log("WebSocket: Attempting to connect to:",this.url),new Promise((a,t)=>{try{const r=localStorage.getItem("auth-token"),i=r?`${this.url}?token=${encodeURIComponent(r)}`:this.url;console.log("WebSocket: Connecting to:",i.replace(/token=[^&]+/,"token=***")),this.ws=new WebSocket(i),this.ws.onopen=()=>{console.log("WebSocket connected successfully"),this.reconnectAttempts=0,a()},this.ws.onmessage=o=>{try{const s=JSON.parse(o.data);console.log("WebSocket: Received message:",s);const d=this.messageHandlers.get(s.type);d?d(s.data):console.warn("WebSocket: No handler for message type:",s.type)}catch(s){console.error("Failed to parse WebSocket message:",s)}},this.ws.onclose=()=>{console.log("WebSocket disconnected"),this.ws=null,this.attemptReconnect()},this.ws.onerror=o=>{console.error("WebSocket error:",o),t(o)}}catch(r){t(r)}}))}disconnect(){this.ws&&(this.ws.close(),this.ws=null)}send(a){this.ws&&this.ws.readyState===WebSocket.OPEN?(console.log("WebSocket: Sending message:",a),this.ws.send(JSON.stringify(a))):console.warn("WebSocket is not connected. ReadyState:",this.ws?.readyState)}onMessage(a,t){this.messageHandlers.delete(a),this.messageHandlers.set(a,t)}offMessage(a){this.messageHandlers.delete(a)}attemptReconnect(){if(v()){console.log("Demo mode active: skipping WebSocket reconnection.");return}this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,console.log(`Attempting to reconnect... (${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.connect().catch(()=>{})},this.reconnectDelay*this.reconnectAttempts)):console.error("Max reconnection attempts reached")}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}}const da=new uy,pe=Ta()(Rn((n,a)=>({user:null,token:null,systemInfo:null,isAuthenticated:!1,isLoading:!1,login:(t,r,i)=>{localStorage.setItem("auth-token",r);const o=Te.getState();o.clearAllState&&o.clearAllState(),be.getState().clearUserState(),n({user:t,token:r,systemInfo:i,isAuthenticated:!0,isLoading:!1}),setTimeout(async()=>{try{const d=pt.getState();console.log("🔄 Reinitializing app after login..."),console.log("🔌 Reconnecting WebSocket with auth token..."),da.disconnect(),await da.connect(),!(await ua.checkHealth()).success&&!v()&&console.warn("Ollama service not available after login");const m=be.getState();await Promise.all([o.loadModels(),o.loadSessions(),o.loadPreferences(),m.loadPreferences(),d.loadPlugins()]),console.log("✅ Reinitialized app after login")}catch(d){console.error("Failed to reinitialize app after login:",d)}},100)},logout:()=>{localStorage.removeItem("auth-token"),console.log("🔌 Disconnecting WebSocket on logout..."),da.disconnect();const t=Te.getState();t.clearAllState&&t.clearAllState(),be.getState().clearUserState(),n({user:null,token:null,isAuthenticated:!1,isLoading:!1})},setUser:t=>{n({user:t})},setSystemInfo:t=>{n({systemInfo:t})},setLoading:t=>{n({isLoading:t})},isAdmin:()=>{const{user:t}=a();return t?.role==="admin"},requiresAuth:()=>{const{systemInfo:t}=a();return t?.requiresAuth??!1}}),{name:"auth-store",partialize:n=>({user:n.user,token:n.token,systemInfo:n.systemInfo,isAuthenticated:n.isAuthenticated})})),my=Object.freeze(Object.defineProperty({__proto__:null,useAuthStore:pe},Symbol.toStringTag,{value:"Module"})),pn=({isOpen:n,onClose:a,className:t})=>{const{t:r}=ue(),i=ct(),o=ja(),{sessions:s,deleteSession:d,updateSessionTitle:u,selectedModel:m,models:g,currentSession:p,generatingTitleForSession:k,personas:x}=Te(),{user:b,isAdmin:w,systemInfo:S,setUser:F}=pe(),{backgroundImage:L,sidebarCompact:A,toggleSidebarCompact:z}=be(),[N,P]=h.useState(null),[R,J]=h.useState(""),[G,E]=h.useState(!1),[O,K]=h.useState(!1),[c,U]=h.useState(!1),[me,V]=h.useState(""),[Y,ee]=h.useState(!1),re=h.useRef(null),W=h.useRef(null),{sessionId:T}=Br(),$=T||null,Z=p?.id||$;h.useEffect(()=>{const I=te=>{re.current&&!re.current.contains(te.target)&&K(!1)};if(O)return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[O]),h.useEffect(()=>{const I=te=>{W.current&&!W.current.contains(te.target)&&window.innerWidth<768&&n&&!A&&z()};if(n&&!A&&window.innerWidth<768)return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[n,A,z]),h.useEffect(()=>{b?.avatar&&V(b.avatar)},[b?.avatar]);const Pe=async()=>{ee(!0);try{const I=await $n.updateMyAvatar(me||null);I.success&&I.data?(F(I.data),Q.success(r("user.avatar.updated")),U(!1)):Q.error(I.message||r("user.avatar.updateFailed"))}catch(I){console.error("Failed to update avatar:",I),Q.error(r("user.avatar.updateFailed"))}finally{ee(!1)}},De=()=>{const{setCurrentSession:I}=Te.getState();I(null),sessionStorage.setItem("forceWelcomeScreen","true"),o("/chat",{replace:!0}),window.innerWidth<768&&!A&&z()},Je=I=>{o(`/c/${I.id}`,{replace:!0}),window.innerWidth<768&&!A&&z()},_e=async(I,te)=>{if(te.stopPropagation(),window.confirm(r("chat.session.deleteConfirm")))try{const _=Z===I;if(await d(I),_){const Xe=s.filter(Be=>Be.id!==I);Xe.length>0?o(`/c/${Xe[0].id}`,{replace:!0}):o("/",{replace:!0})}}catch(_){console.error("Error deleting session:",_)}},Ye=(I,te)=>{te.stopPropagation(),P(I.id),J(I.title)},Ee=async I=>{R.trim()&&await u(I,R.trim()),P(null),J("")},Ze=()=>{P(null),J("")},Le=async()=>{try{await Ne.logout();const{logout:I}=pe.getState();I(),o("/login"),Q.success(r("auth.logout.success"))}catch(I){console.error("Logout error:",I);const{logout:te}=pe.getState();te(),o("/login")}},Ge=window.location.protocol==="file:";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:W,className:H("fixed inset-y-0 left-0 z-50 border-r border-gray-200 dark:border-dark-200 transform transition-all duration-300 ease-in-out shadow-xl",A?"w-18":"w-80 max-sm:w-64",n?"translate-x-0":"-translate-x-full","lg:shadow-none",L?"bg-gray-50/70 dark:bg-dark-25/70 backdrop-blur-sm":"bg-gray-50 dark:bg-dark-25","overscroll-behavior-contain",t),style:{WebkitOverflowScrolling:"touch"},children:[Ge&&e.jsx("div",{className:"absolute top-0 left-16 right-0 h-8 z-[60]",style:{WebkitAppRegion:"drag"}}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:H("border-b border-gray-200/60 dark:border-dark-200/60",A?"p-2":"p-3",Ge&&"pt-10"),children:[e.jsx("div",{className:H("flex items-center",A?"justify-center mb-2":"justify-between mb-2"),children:A?e.jsxs("div",{className:"flex flex-col items-center gap-1.5",children:[e.jsx("span",{className:"libre-brand text-xl text-gray-900 dark:text-dark-800 ophelia:text-[#fafafa]",children:"Libre"}),e.jsx(C,{variant:"ghost",size:"sm",onClick:z,className:"h-7 w-7 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[rgba(147,51,234,0.15)] active:bg-gray-200 dark:active:bg-dark-100 ophelia:active:bg-[rgba(147,51,234,0.25)] touch-manipulation ophelia:text-[#a3a3a3] ophelia:hover:text-[#c084fc]",title:r("sidebar.expandSidebar"),children:e.jsx(Ft,{className:"h-4 w-4"})})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"libre-brand text-xl text-gray-900 dark:text-dark-800 ophelia:text-[#fafafa]",children:"Libre WebUI"}),e.jsx("div",{className:"flex items-center gap-1",children:e.jsx(C,{variant:"ghost",size:"sm",onClick:z,className:"h-7 w-7 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[rgba(147,51,234,0.15)] active:bg-gray-200 dark:active:bg-dark-100 ophelia:active:bg-[rgba(147,51,234,0.25)] touch-manipulation ophelia:text-[#a3a3a3] ophelia:hover:text-[#c084fc]",title:r("sidebar.toggleSize"),children:e.jsx(Zr,{className:"h-4 w-4"})})})]})}),!A&&e.jsxs(C,{onClick:De,disabled:!m||g.length===0,className:"w-full bg-primary-600 hover:bg-primary-700 active:bg-primary-800 text-white shadow-sm hover:shadow-md active:shadow-lg transition-all duration-200 border-0 touch-manipulation",size:"sm",title:!m||g.length===0?r("chat.model.noModelsTooltip"):"",children:[e.jsx(Ot,{className:"h-4 w-4 mr-2"}),r("chat.session.new")]}),A&&e.jsx(C,{onClick:De,disabled:!m||g.length===0,className:"w-full h-9 bg-primary-600 hover:bg-primary-700 active:bg-primary-800 text-white shadow-sm hover:shadow-md active:shadow-lg transition-all duration-200 border-0 touch-manipulation p-0",title:!m||g.length===0?r("chat.model.noModelsTooltip"):r("chat.session.new"),children:e.jsx(Ot,{className:"h-4 w-4"})})]}),e.jsx("div",{className:H("py-1.5",A?"px-1":"px-2.5"),children:e.jsxs("nav",{className:H("space-y-0.5",A&&"flex flex-col items-center"),children:[e.jsxs("button",{onClick:()=>{const{setCurrentSession:I}=Te.getState();I(null),sessionStorage.setItem("forceWelcomeScreen","true"),o("/chat",{replace:!0}),window.innerWidth<768&&!A&&z()},className:H("flex items-center gap-2.5 rounded-lg text-sm font-medium transition-all duration-200 text-left touch-manipulation",A?"w-11 h-11 justify-center p-0":"w-full px-2.5 py-2",i.pathname==="/chat"||i.pathname==="/"?"bg-primary-100 dark:bg-primary-900/30 ophelia:bg-[rgba(147,51,234,0.25)] text-primary-800 dark:text-primary-200 ophelia:text-[#e9d5ff] shadow-sm":"text-gray-700 dark:text-gray-300 ophelia:text-[#a3a3a3] hover:bg-gray-50 dark:hover:bg-dark-200/50 ophelia:hover:bg-[rgba(147,51,234,0.1)] hover:text-gray-900 dark:hover:text-gray-100 ophelia:hover:text-[#e9d5ff] active:bg-gray-100 dark:active:bg-dark-200 ophelia:active:bg-[rgba(147,51,234,0.15)]"),title:A?r("sidebar.navigation.chat"):void 0,children:[e.jsx(Qa,{className:"h-4 w-4 shrink-0"}),!A&&r("sidebar.navigation.chat")]}),e.jsxs(na,{to:"/models",onClick:()=>window.innerWidth<768&&!A&&z(),className:H("flex items-center gap-2.5 rounded-lg text-sm font-medium transition-all duration-200 touch-manipulation",A?"w-11 h-11 justify-center p-0":"w-full px-2.5 py-2",i.pathname==="/models"?"bg-primary-100 dark:bg-primary-900/30 ophelia:bg-[rgba(147,51,234,0.25)] text-primary-800 dark:text-primary-200 ophelia:text-[#e9d5ff] shadow-sm":"text-gray-700 dark:text-gray-300 ophelia:text-[#a3a3a3] hover:bg-gray-50 dark:hover:bg-dark-200/50 ophelia:hover:bg-[rgba(147,51,234,0.1)] hover:text-gray-900 dark:hover:text-gray-100 ophelia:hover:text-[#e9d5ff] active:bg-gray-100 dark:active:bg-dark-200 ophelia:active:bg-[rgba(147,51,234,0.15)]"),title:A?r("sidebar.navigation.models"):void 0,children:[e.jsx(va,{className:"h-4 w-4 shrink-0"}),!A&&r("sidebar.navigation.models")]}),e.jsxs(na,{to:"/personas",onClick:()=>window.innerWidth<768&&!A&&z(),className:H("flex items-center gap-2.5 rounded-lg text-sm font-medium transition-all duration-200 touch-manipulation",A?"w-11 h-11 justify-center p-0":"w-full px-2.5 py-2",i.pathname==="/personas"?"bg-primary-100 dark:bg-primary-900/30 ophelia:bg-[rgba(147,51,234,0.25)] text-primary-800 dark:text-primary-200 ophelia:text-[#e9d5ff] shadow-sm":"text-gray-700 dark:text-gray-300 ophelia:text-[#a3a3a3] hover:bg-gray-50 dark:hover:bg-dark-200/50 ophelia:hover:bg-[rgba(147,51,234,0.1)] hover:text-gray-900 dark:hover:text-gray-100 ophelia:hover:text-[#e9d5ff] active:bg-gray-100 dark:active:bg-dark-200 ophelia:active:bg-[rgba(147,51,234,0.15)]"),title:A?r("sidebar.navigation.personas"):void 0,children:[e.jsx(xa,{className:"h-4 w-4 shrink-0"}),!A&&r("sidebar.navigation.personas")]}),e.jsxs(na,{to:"/gallery",onClick:()=>window.innerWidth<768&&!A&&z(),className:H("flex items-center gap-2.5 rounded-lg text-sm font-medium transition-all duration-200 touch-manipulation",A?"w-11 h-11 justify-center p-0":"w-full px-2.5 py-2",i.pathname==="/gallery"?"bg-primary-100 dark:bg-primary-900/30 ophelia:bg-[rgba(147,51,234,0.25)] text-primary-800 dark:text-primary-200 ophelia:text-[#e9d5ff] shadow-sm":"text-gray-700 dark:text-gray-300 ophelia:text-[#a3a3a3] hover:bg-gray-50 dark:hover:bg-dark-200/50 ophelia:hover:bg-[rgba(147,51,234,0.1)] hover:text-gray-900 dark:hover:text-gray-100 ophelia:hover:text-[#e9d5ff] active:bg-gray-100 dark:active:bg-dark-200 ophelia:active:bg-[rgba(147,51,234,0.15)]"),title:A?r("sidebar.navigation.imagine"):void 0,children:[e.jsx(Xr,{className:"h-4 w-4 shrink-0"}),!A&&r("sidebar.navigation.imagine")]})]})}),e.jsx("div",{className:"flex-1 overflow-y-auto scrollbar-thin border-t border-gray-200/60 dark:border-dark-200/60",style:{WebkitOverflowScrolling:"touch",overscrollBehavior:"contain",willChange:"scroll-position"},children:e.jsxs("div",{className:H("p-2.5",A&&"px-1"),children:[!A&&s.length>0&&e.jsxs("div",{className:"flex items-center justify-between mb-1.5 px-1",children:[e.jsx("h3",{className:"text-xs font-semibold text-gray-700 dark:text-gray-300 uppercase tracking-wide",children:r("chat.session.chats")}),e.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-500 font-medium",children:s.length})]}),s.length===0?e.jsxs("div",{className:H("text-center py-8",A?"px-1":"px-2"),children:[e.jsx("div",{className:H("mx-auto mb-3 bg-gray-100 dark:bg-dark-300 rounded-xl flex items-center justify-center",A?"w-8 h-8":"w-12 h-12"),children:e.jsx(Qa,{className:H("text-gray-400 dark:text-gray-500",A?"h-4 w-4":"h-5 w-5")})}),!A&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm font-medium text-gray-600 dark:text-gray-400",children:r("chat.session.noChats")}),e.jsx("p",{className:"text-xs mt-1 text-gray-500 dark:text-gray-500",children:r("chat.session.createFirst")})]})]}):e.jsx("div",{className:H("space-y-0.5",A&&"space-y-1"),children:s.map(I=>{const te=Z===I.id;return e.jsx("div",{className:H("group relative cursor-pointer transition-all duration-200 touch-manipulation",A?"rounded-lg p-2 flex items-center justify-center":"rounded-lg px-2.5 py-2",te?"bg-gray-100 dark:bg-dark-200":"hover:bg-gray-50 dark:hover:bg-dark-200/50"),onClick:()=>Je(I),title:A?`${I.title} - ${I.model}`:void 0,children:A?e.jsx("div",{className:"flex items-center justify-center w-full h-8",children:e.jsx("div",{className:H("w-3 h-3 rounded-full",k===I.id?"bg-primary-400 animate-pulse":te?"bg-primary-500":"bg-gray-300 dark:bg-gray-600")})}):N===I.id?e.jsxs("div",{className:"flex items-center gap-2",onClick:_=>_.stopPropagation(),children:[e.jsx(qf,{value:R,onChange:_=>J(_.target.value),onKeyDown:_=>{_.key==="Enter"?Ee(I.id):_.key==="Escape"&&Ze()},className:"text-sm h-8 ophelia:bg-[#0a0a0a] ophelia:border-[#9333ea] ophelia:text-[#fafafa] ophelia:focus:ring-[#a855f7] ophelia:focus:border-[#a855f7]",autoFocus:!0}),e.jsx(C,{variant:"ghost",size:"sm",onClick:()=>Ee(I.id),className:"h-8 w-8 p-0 shrink-0 hover:bg-gray-100 dark:hover:bg-dark-300 ophelia:hover:bg-[rgba(147,51,234,0.2)] active:bg-gray-200 dark:active:bg-dark-400 ophelia:active:bg-[rgba(147,51,234,0.3)] touch-manipulation ophelia:text-[#a855f7] ophelia:hover:text-[#c084fc]",children:e.jsx(Se,{className:"h-3 w-3"})}),e.jsx(C,{variant:"ghost",size:"sm",onClick:Ze,className:"h-8 w-8 p-0 shrink-0 hover:bg-gray-100 dark:hover:bg-dark-300 ophelia:hover:bg-[rgba(239,68,68,0.15)] active:bg-gray-200 dark:active:bg-dark-400 ophelia:active:bg-[rgba(239,68,68,0.25)] touch-manipulation ophelia:text-[#737373] ophelia:hover:text-[#f87171]",children:e.jsx(Me,{className:"h-3 w-3"})})]}):e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsxs("div",{className:"flex-1 min-w-0 mr-2",children:[e.jsx("h3",{className:H("text-sm font-medium truncate leading-tight","text-gray-900 dark:text-gray-100"),children:k===I.id?e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx("span",{className:"animate-pulse",children:r("chat.session.generatingTitle")}),e.jsxs("span",{className:"inline-flex",children:[e.jsx("span",{className:"animate-bounce",style:{animationDelay:"0ms"},children:"."}),e.jsx("span",{className:"animate-bounce",style:{animationDelay:"150ms"},children:"."}),e.jsx("span",{className:"animate-bounce",style:{animationDelay:"300ms"},children:"."})]})]}):Wf(I.title,32)}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx("span",{className:H("text-xs",te?"text-gray-600 dark:text-gray-400":"text-gray-500 dark:text-gray-500"),children:$f(I.updatedAt)}),e.jsx("span",{className:"text-gray-400 dark:text-gray-600",children:"•"}),I.personaId?(()=>{const _=x[I.personaId];return _?e.jsxs("span",{className:H("flex items-center gap-1 text-xs font-medium",te?"text-primary-600 dark:text-primary-400":"text-primary-500 dark:text-primary-500"),title:_.description||_.name,children:[_.avatar&&!_.avatar.startsWith("data:")&&e.jsx("span",{className:"text-[10px]",children:_.avatar}),e.jsx("span",{className:"truncate max-w-[100px]",children:_.name})]}):e.jsx("span",{className:H("text-xs font-medium italic",te?"text-gray-500 dark:text-gray-500":"text-gray-400 dark:text-gray-600"),children:"Persona"})})():e.jsx("span",{className:H("text-xs font-medium truncate max-w-[120px]",te?"text-gray-700 dark:text-gray-300":"text-gray-600 dark:text-gray-400"),title:I.model,children:I.model})]})]}),e.jsxs("div",{className:"flex items-center gap-0.5 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all duration-200 shrink-0",children:[e.jsx(C,{variant:"ghost",size:"sm",onClick:_=>Ye(I,_),className:"h-7 w-7 sm:h-6 sm:w-6 p-0 hover:bg-gray-200 dark:hover:bg-gray-700 active:bg-gray-300 dark:active:bg-gray-600 rounded-md touch-manipulation",title:r("chat.session.renameChat"),children:e.jsx(Qr,{className:"h-3 w-3"})}),e.jsx(C,{variant:"ghost",size:"sm",onClick:_=>_e(I.id,_),className:"h-7 w-7 sm:h-6 sm:w-6 p-0 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 active:bg-red-100 dark:active:bg-red-900/30 rounded-md touch-manipulation",title:r("chat.session.deleteChat"),children:e.jsx(An,{className:"h-3 w-3"})})]})]})},I.id)})})]})}),S?.requiresAuth&&b&&e.jsx("div",{className:H("border-t border-gray-200/60 dark:border-dark-200/60",A?"p-1.5":"p-2.5"),children:A?e.jsxs("div",{className:"flex flex-col items-center space-y-1.5",children:[b.avatar?e.jsx("img",{src:b.avatar,alt:b.username,className:"w-7 h-7 rounded-full object-cover",title:`${b.username} (${b.role})`}):e.jsx("div",{className:"w-7 h-7 bg-primary-500 rounded-full flex items-center justify-center",title:`${b.username} (${b.role})`,children:e.jsx("span",{className:"text-white text-xs font-medium",children:b.username.charAt(0).toUpperCase()})}),e.jsx("button",{onClick:()=>{E(!0),window.innerWidth<768&&!A&&z()},className:"w-9 h-9 flex items-center justify-center rounded-lg text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200/50 active:bg-gray-100 dark:active:bg-dark-200 touch-manipulation transition-all duration-200",title:r("sidebar.navigation.settings"),children:e.jsx(Et,{className:"h-4 w-4"})}),w()&&e.jsx(na,{to:"/users",onClick:()=>window.innerWidth<768&&!A&&z(),className:"w-9 h-9 flex items-center justify-center rounded-lg text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200/50 active:bg-gray-100 dark:active:bg-dark-200 touch-manipulation transition-all duration-200",title:r("sidebar.navigation.userManagement"),children:e.jsx(xa,{className:"h-4 w-4"})}),e.jsx("button",{onClick:Le,className:"w-9 h-9 flex items-center justify-center rounded-lg text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 active:bg-red-100 dark:active:bg-red-900/30 touch-manipulation transition-all duration-200",title:r("sidebar.navigation.signOut"),children:e.jsx(Lt,{className:"h-4 w-4"})})]}):e.jsxs("div",{className:"relative",ref:re,children:[e.jsx("button",{onClick:()=>K(!O),className:"w-full p-2.5 rounded-xl bg-white/50 dark:bg-dark-200/50 ophelia:bg-[rgba(10,10,10,0.6)] border border-gray-200/30 dark:border-dark-300/30 ophelia:border-[rgba(38,38,38,0.2)] hover:bg-white/70 dark:hover:bg-dark-200/70 ophelia:hover:bg-[rgba(18,18,18,0.7)] transition-all duration-200 text-left touch-manipulation",children:e.jsxs("div",{className:"flex items-center gap-2.5",children:[b.avatar?e.jsx("img",{src:b.avatar,alt:b.username,className:"w-7 h-7 rounded-full object-cover"}):e.jsx("div",{className:"w-7 h-7 bg-primary-500 rounded-full flex items-center justify-center",children:e.jsx("span",{className:"text-white text-xs font-medium",children:b.username.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 truncate",children:b.username}),e.jsxs("div",{className:"flex items-center mt-0.5",children:[b.role==="admin"&&e.jsx(zn,{size:10,className:"text-primary-500 mr-1"}),e.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 capitalize",children:b.role})]})]}),e.jsx(Ft,{className:H("h-4 w-4 text-gray-400 dark:text-gray-500 transition-transform duration-200",O&&"rotate-90")})]})}),O&&e.jsxs("div",{className:"absolute bottom-full left-0 right-0 mb-2 py-2 bg-white dark:bg-dark-100 rounded-xl shadow-lg border border-gray-200/50 dark:border-dark-200/50 backdrop-blur-sm z-50",children:[e.jsx("div",{className:"px-3 py-2 border-b border-gray-100 dark:border-dark-200/50",children:e.jsxs("div",{className:"flex items-center gap-2.5",children:[b.avatar?e.jsx("img",{src:b.avatar,alt:b.username,className:"w-8 h-8 rounded-full object-cover"}):e.jsx("div",{className:"w-8 h-8 bg-primary-500 rounded-full flex items-center justify-center",children:e.jsx("span",{className:"text-white text-sm font-medium",children:b.username.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100 truncate",children:b.username}),e.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:b.email||r("user.profile.noEmail")})]})]})}),e.jsxs("div",{className:"py-1",children:[e.jsxs("button",{onClick:()=>{U(!0),K(!1)},className:"w-full flex items-center gap-3 px-3 py-2.5 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200/50 transition-colors duration-200 text-left",children:[e.jsx(ei,{className:"h-4 w-4 shrink-0"}),r("user.menu.changePicture")]}),e.jsxs("button",{onClick:()=>{E(!0),K(!1),window.innerWidth<768&&!A&&z()},className:"w-full flex items-center gap-3 px-3 py-2.5 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200/50 transition-colors duration-200 text-left",children:[e.jsx(Et,{className:"h-4 w-4 shrink-0"}),r("user.menu.settings")]}),w()&&e.jsxs(na,{to:"/users",onClick:()=>{K(!1),window.innerWidth<768&&!A&&z()},className:"w-full flex items-center gap-3 px-3 py-2.5 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-dark-200/50 transition-colors duration-200",children:[e.jsx(xa,{className:"h-4 w-4 shrink-0"}),r("user.menu.userManagement")]}),e.jsx("div",{className:"border-t border-gray-100 dark:border-dark-200/50 my-1"}),e.jsxs("button",{onClick:()=>{Le(),K(!1)},className:"w-full flex items-center gap-3 px-3 py-2.5 text-sm text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors duration-200 text-left",children:[e.jsx(Lt,{className:"h-4 w-4 shrink-0"}),r("user.menu.logout")]})]})]})]})})]})]}),e.jsx(Vn,{isOpen:G,onClose:()=>E(!1)}),c&&wn.createPortal(e.jsx("div",{className:"fixed inset-0 z-[2147483647] flex items-center justify-center bg-black/50",onClick:()=>U(!1),children:e.jsxs("div",{className:"bg-white dark:bg-dark-100 rounded-xl shadow-2xl p-6 w-full max-w-md mx-4",onClick:I=>I.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:r("user.avatar.title")}),e.jsx("button",{onClick:()=>U(!1),className:"p-1 hover:bg-gray-100 dark:hover:bg-dark-200 rounded-lg transition-colors",children:e.jsx(Me,{size:20,className:"text-gray-500"})})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(cy,{value:me,onChange:V}),e.jsxs("div",{className:"flex justify-end gap-3 pt-4 border-t border-gray-200 dark:border-dark-300",children:[e.jsx("button",{onClick:()=>U(!1),className:"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-dark-200 rounded-lg transition-colors",children:"Cancel"}),e.jsx("button",{onClick:Pe,disabled:Y,className:"px-4 py-2 text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg transition-colors",children:Y?"Saving...":"Save"})]})]})]})}),document.body)]})},gn=({children:n,requireAuth:a=!0,requireAdmin:t=!1})=>{const{isAuthenticated:r,user:i,systemInfo:o,isLoading:s}=pe();return ct(),s?e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsx("div",{className:"w-8 h-8 border-4 border-gray-200 border-t-blue-500 rounded-full animate-spin"})}):o&&!o.requiresAuth?e.jsx(e.Fragment,{children:n}):a&&!r?e.jsx(Tt,{to:"/login",replace:!0}):t&&(!i||i.role!=="admin")?e.jsx(Tt,{to:"/",replace:!0}):e.jsx(e.Fragment,{children:n})},py=({error:n})=>{const{t:a}=ue();return e.jsx("div",{className:"min-h-screen bg-gray-50 dark:bg-gray-900 flex items-center justify-center p-4",children:e.jsx("div",{className:"max-w-md w-full bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-red-500 mb-4",children:e.jsx("svg",{className:"mx-auto h-12 w-12",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.732-.833-2.464 0L4.35 16.5c-.77.833.192 2.5 1.732 2.5z"})})}),e.jsx("h1",{className:"text-xl font-bold text-gray-900 dark:text-white mb-2",children:a("errorBoundary.title")}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-4",children:a("errorBoundary.description")}),e.jsx("button",{onClick:()=>window.location.reload(),className:"bg-blue-500 hover:bg-blue-600 text-white font-medium py-2 px-4 rounded-lg transition-colors",children:a("errorBoundary.tryAgain")}),!1]})})})};class ya extends h.Component{constructor(a){super(a),this.state={hasError:!1}}static getDerivedStateFromError(a){return{hasError:!0,error:a}}componentDidCatch(a,t){console.error("ErrorBoundary caught an error:",a,t)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:e.jsx(py,{error:this.state.error}):this.props.children}}const gy=(n,a=!0)=>{const t=h.useCallback(r=>{if(!a)return;const i=r.target;if(i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.contentEditable==="true"||i.isContentEditable)return;if(r.key==="?"||r.key==="/"&&r.shiftKey){const s=n.find(d=>d.key==="?"||d.key==="h");if(s){r.preventDefault(),r.stopPropagation(),s.action();return}}const o=n.find(s=>{const d=s.key.toLowerCase()===r.key.toLowerCase(),u=!!s.metaKey,m=r.metaKey||r.ctrlKey,g=u?m:!0,p=s.ctrlKey?r.ctrlKey:!0,k=!!s.shiftKey===r.shiftKey,x=!!s.altKey===r.altKey;return d&&g&&p&&k&&x});o&&(r.preventDefault(),r.stopPropagation(),o.action())},[n,a]);h.useEffect(()=>{if(a)return document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t)}},[t,a])},hy=n=>{const a=[];n.metaKey&&a.push(navigator.platform.includes("Mac")?"⌘":"Ctrl"),n.ctrlKey&&a.push("Ctrl"),n.shiftKey&&a.push("⇧"),n.altKey&&a.push(navigator.platform.includes("Mac")?"⌥":"Alt");let t=n.key.toUpperCase();return n.key===","&&(t=","),n.key===" "&&(t="Space"),n.key==="Enter"&&(t="↩"),n.key==="Escape"&&(t="Esc"),a.push(t),a.join("+")},by=({isOpen:n,onClose:a,shortcuts:t})=>{const{t:r}=ue();if(!n)return null;const i={navigation:t.filter(o=>o.description.includes("sidebar")||o.description.includes("Toggle")),settings:t.filter(o=>o.description.includes("settings")||o.description.includes("dark mode")),general:t.filter(o=>!o.description.includes("sidebar")&&!o.description.includes("settings")&&!o.description.includes("dark mode")&&!o.description.includes("Toggle"))};return e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white dark:bg-dark-100 ophelia:bg-[#050505] rounded-xl shadow-2xl w-full max-w-md max-h-[80vh] overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-gray-200 dark:border-dark-300 ophelia:border-[#1a1a1a]",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(jn,{className:"h-5 w-5 text-gray-700 dark:text-dark-600 ophelia:text-[#a3a3a3]"}),e.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-dark-800 ophelia:text-[#fafafa]",children:r("keyboard.title")})]}),e.jsx(C,{variant:"ghost",size:"sm",onClick:a,className:"h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200",children:e.jsx(Me,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"p-6 space-y-6 overflow-y-auto max-h-[60vh]",children:[Object.entries(i).map(([o,s])=>s.length===0?null:e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-gray-700 dark:text-dark-600 mb-3",children:r(`keyboard.groups.${o}`)}),e.jsx("div",{className:"space-y-2",children:s.map((d,u)=>e.jsxs("div",{className:"flex items-center justify-between py-2",children:[e.jsx("span",{className:"text-sm text-gray-600 dark:text-dark-500",children:d.description}),e.jsx("kbd",{className:"px-2 py-1 text-xs font-mono bg-gray-100 dark:bg-dark-200 ophelia:bg-[#121212] text-gray-700 dark:text-dark-600 ophelia:text-[#a3a3a3] rounded border border-gray-300 dark:border-dark-400 ophelia:border-[#262626]",children:hy(d)})]},u))})]},o)),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-gray-700 dark:text-dark-600 mb-3",children:r("keyboard.groups.chat")}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between py-2",children:[e.jsx("span",{className:"text-sm text-gray-600 dark:text-dark-500",children:r("keyboard.actions.sendMessage")}),e.jsx("kbd",{className:"px-2 py-1 text-xs font-mono bg-gray-100 dark:bg-dark-200 ophelia:bg-[#121212] text-gray-700 dark:text-dark-600 ophelia:text-[#a3a3a3] rounded border border-gray-300 dark:border-dark-400 ophelia:border-[#262626]",children:"Enter"})]}),e.jsxs("div",{className:"flex items-center justify-between py-2",children:[e.jsx("span",{className:"text-sm text-gray-600 dark:text-dark-500",children:r("keyboard.actions.newLine")}),e.jsx("kbd",{className:"px-2 py-1 text-xs font-mono bg-gray-100 dark:bg-dark-200 ophelia:bg-[#121212] text-gray-700 dark:text-dark-600 ophelia:text-[#a3a3a3] rounded border border-gray-300 dark:border-dark-400 ophelia:border-[#262626]",children:"Shift+Enter"})]})]})]})]}),e.jsx("div",{className:"px-6 py-4 bg-gray-50 dark:bg-dark-200 ophelia:bg-[#0a0a0a] border-t border-gray-200 dark:border-dark-300 ophelia:border-[#1a1a1a]",children:e.jsxs("p",{className:"text-xs text-gray-500 dark:text-dark-400 ophelia:text-[#737373] text-center",children:[r("keyboard.footer",{key1:"?",key2:"H"}).split("?")[0],e.jsx("kbd",{className:"px-1 py-0.5 text-xs font-mono bg-gray-200 dark:bg-dark-300 ophelia:bg-[#1a1a1a] rounded",children:"?"}),r("keyboard.footer",{key1:"?",key2:"H"}).split("?")[1].split("H")[0],e.jsx("kbd",{className:"px-1 py-0.5 text-xs font-mono bg-gray-200 dark:bg-dark-300 ophelia:bg-[#1a1a1a] rounded",children:"H"}),r("keyboard.footer",{key1:"?",key2:"H"}).split("H")[1]]})})]})})},ky=({onClick:n,className:a})=>{const{t}=ue(),[r,i]=h.useState(!1);return e.jsxs(C,{variant:"ghost",size:"sm",onClick:n,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),className:H("fixed bottom-4 right-4 h-10 w-10 p-0 bg-white/80 dark:bg-dark-100/80 ophelia:bg-[rgba(10,10,10,0.9)] backdrop-blur-sm border border-gray-200 dark:border-dark-300 ophelia:border-[#1a1a1a] shadow-lg hover:shadow-xl transition-all duration-200 z-50","hover:bg-white dark:hover:bg-dark-100 ophelia:hover:bg-[#121212]",a),title:t("keyboard.tooltip"),children:[e.jsx(jn,{className:"h-4 w-4"}),r&&e.jsx("div",{className:"absolute bottom-full mb-2 right-0 px-2 py-1 text-xs bg-gray-900 text-white rounded whitespace-nowrap",children:t("keyboard.tooltip")})]})},hn=({message:n="This is a demo version for presentation purposes only. The Ollama backend is not connected.",onDismiss:a,className:t})=>{const[r,i]=h.useState(!1),o=()=>{i(!0),a?.()};return r?null:e.jsx("div",{className:H("bg-gradient-to-r from-amber-50 to-orange-50 dark:from-amber-900/20 dark:to-orange-900/20","border-b border-amber-200 dark:border-amber-800","px-4 py-3",t),children:e.jsxs("div",{className:"flex items-center justify-between max-w-7xl mx-auto",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx(Pn,{className:"h-5 w-5 text-amber-600 dark:text-amber-400"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Demo Mode"}),e.jsx("p",{className:"text-xs text-amber-700 dark:text-amber-300 mt-0.5",children:n})]})]}),e.jsxs("div",{className:"flex items-center gap-2 ml-4",children:[e.jsxs(C,{variant:"ghost",size:"sm",className:"text-amber-700 dark:text-amber-300 hover:text-amber-900 dark:hover:text-amber-100 h-8 px-2",onClick:()=>window.open("https://github.com/libre-webui/libre-webui","_blank"),title:"View on GitHub",children:[e.jsx(Ce,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-1 hidden sm:inline",children:"GitHub"})]}),e.jsx(C,{variant:"ghost",size:"sm",onClick:o,className:"text-amber-700 dark:text-amber-300 hover:text-amber-900 dark:hover:text-amber-100 h-8 w-8 p-0",title:"Dismiss",children:e.jsx(Me,{className:"h-4 w-4"})})]})]})})},bn=()=>{const{preferences:n,backgroundImage:a}=be(),t=n.backgroundSettings||{enabled:!1,imageUrl:"",blurAmount:10,opacity:.6},r=a||t.imageUrl;return!t.enabled||!r?null:e.jsx("div",{className:"fixed inset-0 pointer-events-none z-0",style:{backgroundImage:`url(${r})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",filter:`blur(${t.blurAmount}px)`,opacity:t.opacity,transform:"scale(1.1)"}})},fy=320,kn=.9,yy=600,vy=()=>{const{t:n}=ue(),{artifactPanelOpen:a,artifactPanelArtifact:t,closeArtifactPanel:r,theme:i}=be(),[o,s]=h.useState(!1),[d,u]=h.useState("preview"),[m,g]=h.useState(yy),[p,k]=h.useState(!1),x=h.useRef(null),b=h.useRef(null),w=h.useRef(null),S=h.useRef(0),F=h.useRef(0),L=t?.id??null;L!==w.current&&(w.current=L,d!=="preview"&&u("preview"));const A=h.useCallback(T=>{T.preventDefault(),k(!0),F.current=m,S.current="touches"in T?T.touches[0].clientX:T.clientX},[m]),z=h.useCallback(T=>{if(!p)return;const $="touches"in T?T.touches[0].clientX:T.clientX,Z=S.current-$,Pe=window.innerWidth*kn,De=Math.min(Pe,Math.max(fy,F.current+Z));g(De)},[p]),N=h.useCallback(()=>{k(!1)},[]);if(h.useEffect(()=>(p&&(window.addEventListener("mousemove",z),window.addEventListener("mouseup",N),window.addEventListener("touchmove",z),window.addEventListener("touchend",N),document.body.style.userSelect="none",document.body.style.cursor="col-resize"),()=>{window.removeEventListener("mousemove",z),window.removeEventListener("mouseup",N),window.removeEventListener("touchmove",z),window.removeEventListener("touchend",N),document.body.style.userSelect="",document.body.style.cursor=""}),[p,z,N]),h.useEffect(()=>{const T=()=>{const $=window.innerWidth*kn;m>$&&g($)};return window.addEventListener("resize",T),()=>window.removeEventListener("resize",T)},[m]),h.useEffect(()=>{const T=$=>{$.key==="Escape"&&a&&r()};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[a,r]),h.useEffect(()=>{const T=Z=>{p||b.current&&!b.current.contains(Z.target)&&a&&r()},$=setTimeout(()=>{window.addEventListener("mousedown",T)},100);return()=>{clearTimeout($),window.removeEventListener("mousedown",T)}},[a,r,p]),!t)return null;const P=t,R=async T=>{try{await navigator.clipboard.writeText(T),s(!0),setTimeout(()=>s(!1),2e3)}catch($){console.error("Failed to copy:",$)}},J=()=>{const T=new Blob([P.content],{type:G(P.type)}),$=URL.createObjectURL(T),Z=document.createElement("a");Z.href=$,Z.download=`${P.title}.${E(P.type)}`,document.body.appendChild(Z),Z.click(),document.body.removeChild(Z),URL.revokeObjectURL($)},G=T=>{switch(T){case"html":return"text/html";case"react":return"text/javascript";case"svg":return"image/svg+xml";case"css":return"text/css";case"json":return"application/json";default:return"text/plain"}},E=T=>{switch(T){case"html":return"html";case"react":return"jsx";case"svg":return"svg";case"css":return"css";case"json":return"json";default:return"txt"}},O=()=>{switch(P.type){case"html":return e.jsx(ut,{className:"h-5 w-5"});case"react":return e.jsx(Bt,{className:"h-5 w-5"});case"svg":return e.jsx(Gt,{className:"h-5 w-5"});case"code":return e.jsx(Bt,{className:"h-5 w-5"});default:return e.jsx(Gt,{className:"h-5 w-5"})}},K=()=>{const T=`
|
|
29
|
+
<!DOCTYPE html>
|
|
30
|
+
<html>
|
|
31
|
+
<head>
|
|
32
|
+
<meta charset="UTF-8">
|
|
33
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
34
|
+
<base target="_blank">
|
|
35
|
+
<title>${P.title}</title>
|
|
36
|
+
<style>
|
|
37
|
+
body {
|
|
38
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
39
|
+
margin: 0;
|
|
40
|
+
padding: 16px;
|
|
41
|
+
background: white;
|
|
42
|
+
color: #333;
|
|
43
|
+
}
|
|
44
|
+
* { box-sizing: border-box; }
|
|
45
|
+
</style>
|
|
46
|
+
</head>
|
|
47
|
+
<body>
|
|
48
|
+
${P.content}
|
|
49
|
+
</body>
|
|
50
|
+
</html>
|
|
51
|
+
`;return e.jsx("iframe",{ref:x,srcDoc:T,className:"w-full h-full border-0 rounded-lg bg-white",sandbox:"allow-scripts allow-same-origin",title:P.title})},c=()=>{try{return e.jsx("div",{className:"w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 ophelia:bg-[#0a0a0a] rounded-lg overflow-auto p-4",dangerouslySetInnerHTML:{__html:P.content}})}catch{return e.jsx("div",{className:"w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 ophelia:bg-[#0a0a0a] rounded-lg",children:e.jsxs("div",{className:"text-center",children:[e.jsx(at,{className:"h-8 w-8 text-red-500 mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 ophelia:text-[#a3a3a3]",children:n("artifacts.invalidSvg")})]})})}},U=()=>{const T=()=>{if(P.language)return P.language;switch(P.type){case"html":return"html";case"react":return"jsx";case"svg":return"xml";case"json":return"json";default:return"text"}};return e.jsx("div",{className:"h-full overflow-auto",children:e.jsx(un,{language:T(),isDark:i.mode==="dark"||i.mode==="ophelia",className:"!m-0 !rounded-lg !h-full",children:P.content})})},me=()=>{try{const T=JSON.parse(P.content),$=JSON.stringify(T,null,2);return e.jsx("div",{className:"h-full overflow-auto",children:e.jsx(un,{language:"json",isDark:i.mode==="dark"||i.mode==="ophelia",className:"!m-0 !rounded-lg !h-full",children:$})})}catch{return e.jsx("div",{className:"w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 ophelia:bg-[#0a0a0a] rounded-lg",children:e.jsxs("div",{className:"text-center",children:[e.jsx(at,{className:"h-8 w-8 text-red-500 mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 ophelia:text-[#a3a3a3]",children:n("artifacts.invalidJson")})]})})}},V=()=>{if(d==="code")return U();switch(P.type){case"html":return K();case"svg":return c();case"json":return me();default:return U()}},Y=()=>P.type==="html"||P.type==="svg"||P.type==="react",ee=typeof window<"u"&&window.innerWidth<640,re=ee?"100%":`${m}px`,W=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:H("fixed inset-0 bg-black/30 dark:bg-black/50 ophelia:bg-black/60 z-40 transition-opacity duration-300",a?"opacity-100":"opacity-0 pointer-events-none")}),e.jsxs("div",{ref:b,style:{width:re},className:H("fixed top-0 right-0 h-full z-50","bg-white dark:bg-dark-25 ophelia:bg-[#050505]","shadow-2xl border-l border-gray-200 dark:border-dark-200 ophelia:border-[#1a1a1a]","flex flex-col","transform transition-transform duration-300 ease-out",a?"translate-x-0":"translate-x-full"),children:[!ee&&e.jsxs("div",{onMouseDown:A,onTouchStart:A,className:H("absolute left-0 top-0 bottom-0 w-4 -ml-2 cursor-col-resize z-10","flex items-center justify-center","group"),children:[e.jsx("div",{className:H("w-1 h-16 rounded-full transition-all duration-200","bg-gray-300 dark:bg-dark-300 ophelia:bg-[#262626]","group-hover:bg-primary-500 group-hover:h-24",p&&"bg-primary-500 h-24")}),e.jsx("div",{className:H("absolute left-1/2 -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity","text-gray-400 dark:text-dark-500 ophelia:text-[#525252]",p&&"opacity-100"),children:e.jsx(ai,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-gray-200 dark:border-dark-200 ophelia:border-[#1a1a1a]",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[e.jsx("div",{className:"text-gray-600 dark:text-gray-400 ophelia:text-[#a3a3a3] flex-shrink-0",children:O()}),e.jsx("h2",{className:"font-semibold text-gray-900 dark:text-gray-100 ophelia:text-[#fafafa] truncate",children:P.title}),e.jsx("span",{className:"text-xs bg-primary-50 dark:bg-primary-900/20 ophelia:bg-[rgba(147,51,234,0.2)] text-primary-700 dark:text-primary-300 ophelia:text-[#c084fc] px-2 py-1 rounded-full font-medium flex-shrink-0",children:P.type.toUpperCase()})]}),e.jsx(C,{variant:"ghost",size:"sm",onClick:r,className:"h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[#121212] flex-shrink-0",title:n("artifacts.closePanelEsc"),children:e.jsx(Me,{className:"h-5 w-5"})})]}),e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gray-100 dark:border-dark-200 ophelia:border-[#1a1a1a] bg-gray-50 dark:bg-dark-100/50 ophelia:bg-[#0a0a0a]",children:[e.jsx("div",{className:"flex items-center gap-1",children:Y()&&e.jsxs(e.Fragment,{children:[e.jsxs(C,{variant:d==="preview"?"primary":"ghost",size:"sm",onClick:()=>u("preview"),className:"h-8 px-3 text-xs",title:n("artifacts.previewMode"),children:[e.jsx(Fe,{className:"h-3.5 w-3.5 mr-1.5"}),n("artifacts.preview")]}),e.jsxs(C,{variant:d==="code"?"primary":"ghost",size:"sm",onClick:()=>u("code"),className:"h-8 px-3 text-xs",title:n("artifacts.codeMode"),children:[e.jsx(ti,{className:"h-3.5 w-3.5 mr-1.5"}),n("artifacts.code")]})]})}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(C,{variant:"ghost",size:"sm",onClick:()=>R(P.content),className:"h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[#121212]",title:n("artifacts.copyContent"),children:o?e.jsxs(e.Fragment,{children:[e.jsx(Se,{className:"h-3.5 w-3.5 mr-1.5 text-green-500"}),n("artifacts.copied")]}):e.jsxs(e.Fragment,{children:[e.jsx(Tn,{className:"h-3.5 w-3.5 mr-1.5"}),n("artifacts.copyButton")]})}),e.jsxs(C,{variant:"ghost",size:"sm",onClick:J,className:"h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[#121212]",title:n("artifacts.download"),children:[e.jsx(Dn,{className:"h-3.5 w-3.5 mr-1.5"}),n("artifacts.download")]}),(P.type==="html"||P.type==="react")&&e.jsxs(C,{variant:"ghost",size:"sm",onClick:()=>{const T=window.open("","_blank");T&&(T.document.write(P.content),T.document.close())},className:"h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200 ophelia:hover:bg-[#121212]",title:n("artifacts.openInNewWindow"),children:[e.jsx(Ce,{className:"h-3.5 w-3.5 mr-1.5"}),n("artifacts.open")]})]})]}),P.description&&e.jsx("div",{className:"px-4 py-3 border-b border-gray-100 dark:border-dark-200 ophelia:border-[#1a1a1a]",children:e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 ophelia:text-[#a3a3a3]",children:P.description})}),e.jsx("div",{className:"flex-1 p-4 overflow-hidden",children:V()}),e.jsx("div",{className:"px-4 py-2 border-t border-gray-100 dark:border-dark-200 ophelia:border-[#1a1a1a] bg-gray-50 dark:bg-dark-100/50 ophelia:bg-[#0a0a0a]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"text-xs text-gray-500 dark:text-gray-400 ophelia:text-[#737373]",children:[n("artifacts.created"),":"," ",new Date(P.createdAt).toLocaleString()]}),!ee&&e.jsx("div",{className:"text-xs text-gray-400 dark:text-dark-500 ophelia:text-[#525252]",children:n("artifacts.dragEdgeToResize")})]})})]})]});return wn.createPortal(W,document.body)},Pa=({className:n,size:a="md"})=>{const t={sm:"text-xl",md:"text-3xl",lg:"text-5xl"};return e.jsx("span",{className:H("libre-brand text-gray-900 dark:text-gray-100 ophelia:text-[#fafafa]",t[a],n),children:"Libre"})};class Wn{static async initializeAuth(){const{setLoading:a,setSystemInfo:t,login:r}=pe.getState();try{a(!0),console.log("🔐 Starting auth initialization..."),console.log("📡 Fetching system info...");const i=await Ne.getSystemInfo();console.log("📡 System info response:",i),i.success&&i.data?(console.log("✅ Setting system info:",i.data),t(i.data)):console.error("❌ System info response failed:",i);const o=localStorage.getItem("auth-token");if(o)try{const s=(await he(async()=>{const{default:m}=await import("../js/utils-vendor-DBPpO82s.js").then(g=>g.i);return{default:m}},__vite__mapDeps([0,1]))).default,d=s.defaults.headers.common;s.defaults.headers.common.Authorization=`Bearer ${o}`;const u=await Ne.verifyToken();if(u.success&&u.data){const m=pe.getState().systemInfo;m&&r(u.data,o,m)}s.defaults.headers.common=d}catch(s){console.error("Token verification failed:",s),localStorage.removeItem("auth-token")}}catch(i){console.error("Auth initialization error:",i)}finally{a(!1)}}}const xy=()=>{tt.interceptors.request.use(n=>{const a=localStorage.getItem("auth-token");return a&&(n.headers.Authorization=`Bearer ${a}`),n},n=>Promise.reject(n)),tt.interceptors.response.use(n=>n,n=>{if(n.response?.status===401){localStorage.removeItem("auth-token");const{logout:a}=pe.getState();a();const t=window.location.protocol==="file:";window.location.href=t?"#/login":"/login"}return Promise.reject(n)})};xy();const Sy=Object.freeze(Object.defineProperty({__proto__:null,UserService:Wn},Symbol.toStringTag,{value:"Module"})),wy=()=>{const n=h.useRef(!1),{loadSessions:a,loadModels:t,loadPreferences:r,setSelectedModel:i,models:o}=Te(),{loadPreferences:s}=be(),{loadPlugins:d,plugins:u}=pt();h.useEffect(()=>{if(n.current)return;(async()=>{try{if(n.current=!0,await Wn.initializeAuth(),!(await ua.checkHealth()).success)if(v()){await Promise.all([s(),r()]),await Promise.all([t(),a(),d()]);return}else{j.error("Ollama service is not available. Please make sure it's running.");return}await Promise.all([s(),r()]),await Promise.all([t(),a(),d()])}catch(g){v()?(await Promise.all([s(),r()]),await Promise.all([t(),a(),d()])):(console.error("Failed to initialize app:",g),j.error("Failed to connect to the backend service"))}})()},[s,r,t,a,d]),h.useEffect(()=>{if(o.length>0){const{selectedModel:m}=Te.getState();m&&o.map(p=>p.name).includes(m)||i(o[0].name)}},[o,i]),h.useEffect(()=>{u.filter(g=>g.active).length>0&&t()},[u,t])},qn=()=>{const{t:n}=ue(),[a,t]=h.useState(!1),[r,i]=h.useState(!1);h.useEffect(()=>{(async()=>{try{const d=await fetch(`${ke}/auth/oauth/github/status`,{method:"GET",credentials:"include"});if(d.ok){const u=await d.json();i(u.configured||!1),console.log("GitHub OAuth configured:",u.configured)}else console.log("GitHub OAuth status check failed"),i(!1)}catch(d){console.log("GitHub OAuth not configured:",d),i(!1)}})()},[]);const o=()=>{if(!r||a)return;t(!0);const s=`${ke}/auth/oauth/github`;window.location.href=s};return r?e.jsx("button",{type:"button",onClick:o,disabled:a,className:"w-full flex items-center justify-center px-4 py-2 border border-gray-300 dark:border-dark-300 rounded-lg shadow-sm bg-white dark:bg-dark-100 text-gray-700 dark:text-dark-700 hover:bg-gray-50 dark:hover:bg-dark-150 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:a?e.jsxs("div",{className:"flex items-center",children:[e.jsx(We,{size:16,className:"animate-spin mr-2"}),n("auth.oauth.connectingTo",{provider:n("auth.oauth.github")})]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx(Mn,{size:16,className:"mr-2"}),n("auth.oauth.continueWith",{provider:n("auth.oauth.github")})]})}):null},Py=()=>{const{t:n}=ue(),[a,t]=h.useState(!1),[r,i]=h.useState(!1);h.useEffect(()=>{(async()=>{try{const d=await fetch(`${ke}/auth/oauth/huggingface/status`,{method:"GET",credentials:"include"});if(d.ok){const u=await d.json();i(u.configured||!1),console.log("Hugging Face OAuth configured:",u.configured)}else console.log("Hugging Face OAuth status check failed"),i(!1)}catch(d){console.log("Hugging Face OAuth not configured:",d),i(!1)}})()},[]);const o=()=>{if(!r||a)return;t(!0);const s=`${ke}/auth/oauth/huggingface`;window.location.href=s};return r?e.jsx("button",{type:"button",onClick:o,disabled:a,className:"w-full flex items-center justify-center px-4 py-2 border border-orange-300 dark:border-orange-600 rounded-lg shadow-sm bg-orange-50 dark:bg-orange-900/20 text-orange-700 dark:text-orange-300 hover:bg-orange-100 dark:hover:bg-orange-900/30 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-orange-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:a?e.jsxs("div",{className:"flex items-center",children:[e.jsx(We,{size:16,className:"animate-spin mr-2"}),n("auth.oauth.connectingTo",{provider:n("auth.oauth.huggingFace")})]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{className:"mr-2 text-base",children:"🤗"}),n("auth.oauth.continueWith",{provider:n("auth.oauth.huggingFace")})]})}):null},My=({onLogin:n,onShowSignup:a})=>{const{t}=ue(),[r,i]=h.useState(""),[o,s]=h.useState(""),[d,u]=h.useState(!1),[m,g]=h.useState(!1),p=ja(),{login:k}=pe(),x=async w=>{if(w.preventDefault(),!r.trim()||!o.trim()){Q.error(t("auth.login.enterBoth"));return}g(!0);try{localStorage.removeItem("auth-token");const S=await Ne.login({username:r,password:o});S.success&&S.data?(k(S.data.user,S.data.token,S.data.systemInfo),Q.success(t("auth.login.loginSuccess")),n?.(),p("/")):Q.error(S.message||t("auth.login.loginFailed"))}catch(S){console.error("Login error:",S),Q.error(t("auth.login.checkCredentials"))}finally{g(!1)}},b=w=>{if(w.key==="Enter"){const S=w.currentTarget.form;S&&S.requestSubmit()}};return e.jsxs("div",{className:"w-full max-w-md mx-auto bg-white dark:bg-dark-25 rounded-xl shadow-card hover:shadow-card-hover transition-shadow duration-200 p-6 border border-gray-200 dark:border-dark-200",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-dark-950 mb-2",children:t("auth.login.title")}),e.jsx("p",{className:"text-gray-600 dark:text-dark-500",children:t("auth.login.subtitle")})]}),e.jsxs("form",{onSubmit:x,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"username",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:t("auth.login.username")}),e.jsx("input",{id:"username",type:"text",value:r,onChange:w=>i(w.target.value),onKeyDown:b,className:"w-full px-3 py-2 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.login.usernamePlaceholder"),required:!0,disabled:m})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:t("auth.login.password")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"password",type:d?"text":"password",value:o,onChange:w=>s(w.target.value),onKeyDown:b,className:"w-full px-3 py-2 pr-10 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.login.passwordPlaceholder"),required:!0,disabled:m}),e.jsx("button",{type:"button",onClick:()=>u(!d),className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700",disabled:m,children:d?e.jsx(qe,{size:20}):e.jsx(Fe,{size:20})})]})]}),e.jsx("button",{type:"submit",disabled:m,className:"w-full flex items-center justify-center px-4 py-2 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:m?e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2"}),t("auth.login.signingIn")]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx(ni,{size:16,className:"mr-2"}),t("auth.login.signIn")]})})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 flex items-center",children:e.jsx("div",{className:"w-full border-t border-gray-300 dark:border-dark-300"})}),e.jsx("div",{className:"relative flex justify-center text-sm",children:e.jsx("span",{className:"px-2 bg-white dark:bg-dark-25 text-gray-500 dark:text-dark-500",children:t("common.or")})})]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[e.jsx(qn,{}),e.jsx(Py,{})]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-gray-600 dark:text-dark-500",children:[t("auth.login.noAccount")," ",e.jsx("button",{onClick:()=>a?.(),className:"text-primary-500 hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 font-medium transition-colors duration-200",children:t("auth.login.signUpHere")})]})}),e.jsx("div",{className:"mt-4 text-center",children:e.jsxs("p",{className:"text-xs text-gray-500 dark:text-dark-500",children:[t("common.mode"),": ",t("common.multiUser")]})})]})},Dy=({onSignup:n,onBackToLogin:a})=>{const{t}=ue(),[r,i]=h.useState(""),[o,s]=h.useState(""),[d,u]=h.useState(""),[m,g]=h.useState(""),[p,k]=h.useState(!1),[x,b]=h.useState(!1),[w,S]=h.useState(!1),F=ja(),{login:L}=pe(),A=async N=>{if(N.preventDefault(),!r.trim()||!d.trim()){Q.error(t("auth.signup.usernameRequired"));return}if(d!==m){Q.error(t("auth.signup.passwordMismatch"));return}if(d.length<6){Q.error(t("auth.signup.passwordTooShort"));return}S(!0);try{const P=await Ne.signup({username:r,password:d,email:o});P.success&&P.data?(L(P.data.user,P.data.token,P.data.systemInfo),Q.success(t("auth.signup.signupSuccess")),n?.(),F("/")):Q.error(P.message||t("auth.signup.signupFailed"))}catch(P){console.error("Signup error:",P),Q.error(t("auth.signup.tryAgain"))}finally{S(!1)}},z=N=>{if(N.key==="Enter"){const P=N.currentTarget.form;P&&P.requestSubmit()}};return e.jsxs("div",{className:"w-full max-w-md mx-auto bg-white dark:bg-dark-25 rounded-xl shadow-card hover:shadow-card-hover transition-shadow duration-200 p-6 border border-gray-200 dark:border-dark-200",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-dark-950 mb-2",children:t("auth.signup.title")}),e.jsx("p",{className:"text-gray-600 dark:text-dark-500",children:t("auth.signup.subtitle")})]}),e.jsxs("form",{onSubmit:A,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"username",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:t("auth.signup.username")}),e.jsx("input",{id:"username",type:"text",value:r,onChange:N=>i(N.target.value),onKeyDown:z,className:"w-full px-3 py-2 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.signup.usernamePlaceholder"),required:!0,disabled:w})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:[t("auth.signup.email")," ",e.jsxs("span",{className:"text-gray-400",children:["(",t("common.optional"),")"]})]}),e.jsx("input",{id:"email",type:"email",value:o,onChange:N=>s(N.target.value),onKeyDown:z,className:"w-full px-3 py-2 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.signup.emailPlaceholder"),disabled:w})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:t("auth.signup.password")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"password",type:p?"text":"password",value:d,onChange:N=>u(N.target.value),onKeyDown:z,className:"w-full px-3 py-2 pr-10 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.signup.passwordPlaceholder"),required:!0,disabled:w}),e.jsx("button",{type:"button",onClick:()=>k(!p),className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700",disabled:w,children:p?e.jsx(qe,{size:20}):e.jsx(Fe,{size:20})})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"confirmPassword",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:t("auth.signup.confirmPassword")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"confirmPassword",type:x?"text":"password",value:m,onChange:N=>g(N.target.value),onKeyDown:z,className:"w-full px-3 py-2 pr-10 border border-gray-200 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-accent-500 bg-white dark:bg-dark-200 text-gray-900 dark:text-dark-800 placeholder:text-gray-400 dark:placeholder:text-dark-500 transition-colors duration-200",placeholder:t("auth.signup.confirmPasswordPlaceholder"),required:!0,disabled:w}),e.jsx("button",{type:"button",onClick:()=>b(!x),className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700",disabled:w,children:x?e.jsx(qe,{size:20}):e.jsx(Fe,{size:20})})]})]}),e.jsx("button",{type:"submit",disabled:w,className:"w-full flex items-center justify-center px-4 py-2 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:w?e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2"}),t("auth.signup.creatingAccount")]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx(Nn,{size:16,className:"mr-2"}),t("auth.signup.createAccount")]})})]}),e.jsx(qn,{}),e.jsx("div",{className:"mt-6 text-center",children:e.jsxs("p",{className:"text-sm text-gray-600 dark:text-dark-500",children:[t("auth.signup.hasAccount")," ",e.jsx("button",{onClick:a,className:"text-primary-500 hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 font-medium transition-colors duration-200",children:t("auth.signup.signInHere")})]})}),e.jsx("div",{className:"mt-4 text-center",children:e.jsxs("p",{className:"text-xs text-gray-500 dark:text-dark-500",children:[t("common.mode"),": ",t("common.multiUser")]})})]})},fn=()=>{const n=ja(),{isAuthenticated:a,requiresAuth:t}=pe(),[r,i]=h.useState(!1);return h.useEffect(()=>{a&&n("/")},[a,n]),t()?e.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8",children:[e.jsx("div",{className:"sm:mx-auto sm:w-full sm:max-w-md",children:e.jsx("h2",{className:"libre-brand text-center text-4xl sm:text-5xl font-normal text-gray-900 dark:text-gray-100",style:{fontWeight:400,letterSpacing:"0.01em"},children:"Libre WebUI"})}),e.jsx("div",{className:"mt-8 sm:mx-auto sm:w-full sm:max-w-md",children:r?e.jsx(Dy,{onBackToLogin:()=>i(!1),onSignup:()=>i(!1)}):e.jsx(My,{onShowSignup:()=>i(!0)})})]}):(n("/"),null)},Ay=({onComplete:n})=>{const{t:a}=ue(),[t,r]=h.useState("welcome"),[i,o]=h.useState(""),[s,d]=h.useState(""),[u,m]=h.useState(""),[g,p]=h.useState(!1),[k,x]=h.useState(!1),[b,w]=h.useState(!1),[S,F]=h.useState(null),[L,A]=h.useState(!1),[z,N]=h.useState(!1),{login:P}=pe();h.useEffect(()=>{t==="encryption-key"&&!S&&Ne.getEncryptionKey().then(O=>{O.success&&O.data&&F(O.data.encryptionKey)})},[t,S]);const R=async O=>{if(O.preventDefault(),!i.trim()||!s.trim()||!u.trim()){Q.error(a("setup.admin.fillAllFields"));return}if(s!==u){Q.error(a("auth.signup.passwordMismatch"));return}if(s.length<6){Q.error(a("auth.signup.passwordTooShort"));return}w(!0);try{const K=await Ne.signup({username:i,password:s,email:""});K.success&&K.data?(P(K.data.user,K.data.token,K.data.systemInfo),Q.success(a("setup.admin.success")),r("encryption-key")):Q.error(K.message||a("setup.admin.failed"))}catch(K){console.error("Admin creation error:",K),Q.error(a("setup.admin.failed"))}finally{w(!1)}},J=async()=>{if(S)try{await navigator.clipboard.writeText(S),A(!0),Q.success(a("setup.encryptionKey.copied")),setTimeout(()=>A(!1),3e3)}catch{Q.error(a("setup.encryptionKey.copyFailed"))}},G=()=>{if(!z){Q.error(a("setup.encryptionKey.confirmRequired"));return}n?.()},E=O=>{if(O.key==="Enter"){const K=O.currentTarget.form;K&&K.requestSubmit()}};return t==="welcome"?e.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8",children:[e.jsxs("div",{className:"sm:mx-auto sm:w-full sm:max-w-md",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(Pa,{})}),e.jsx("h2",{className:"libre-brand mt-6 text-center text-2xl sm:text-3xl font-normal text-gray-900 dark:text-gray-100",style:{fontWeight:300,letterSpacing:"0.01em"},children:a("setup.welcome.title")})]}),e.jsx("div",{className:"mt-8 sm:mx-auto sm:w-full sm:max-w-md",children:e.jsxs("div",{className:"w-full max-w-md mx-auto bg-white dark:bg-dark-25 rounded-xl shadow-card hover:shadow-card-hover transition-shadow duration-200 p-6 border border-gray-200 dark:border-dark-200",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-dark-950 mb-2",children:a("setup.welcome.subtitle")}),e.jsx("p",{className:"text-gray-600 dark:text-dark-500",children:a("setup.welcome.description")})]}),e.jsxs("div",{className:"space-y-4 mb-6",children:[e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-1",children:e.jsx(zn,{className:"h-5 w-5 text-primary-600 dark:text-primary-400"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-gray-900 dark:text-dark-950",children:a("setup.welcome.features.secure.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-dark-500",children:a("setup.welcome.features.secure.description")})]})]}),e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-1",children:e.jsx(ri,{className:"h-5 w-5 text-primary-600 dark:text-primary-400"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-gray-900 dark:text-dark-950",children:a("setup.welcome.features.fast.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-dark-500",children:a("setup.welcome.features.fast.description")})]})]}),e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-1",children:e.jsx(ut,{className:"h-5 w-5 text-primary-600 dark:text-primary-400"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-gray-900 dark:text-dark-950",children:a("setup.welcome.features.openSource.title")}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-dark-500",children:a("setup.welcome.features.openSource.description")})]})]})]}),e.jsx("button",{onClick:()=>r("create-admin"),className:"w-full flex items-center justify-center px-4 py-2 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 transition-colors duration-200",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{children:a("setup.welcome.createAdmin")}),e.jsx(Kt,{size:16,className:"ml-2"})]})})]})})]}):t==="encryption-key"?e.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8",children:[e.jsxs("div",{className:"sm:mx-auto sm:w-full sm:max-w-md",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(Pa,{})}),e.jsx("h2",{className:"libre-brand mt-6 text-center text-2xl sm:text-3xl font-normal text-gray-900 dark:text-gray-100",style:{fontWeight:300,letterSpacing:"0.01em"},children:a("setup.encryptionKey.title")})]}),e.jsx("div",{className:"mt-8 sm:mx-auto sm:w-full sm:max-w-lg",children:e.jsxs("div",{className:"w-full max-w-lg mx-auto bg-white dark:bg-dark-25 rounded-xl shadow-card hover:shadow-card-hover transition-shadow duration-200 p-6 border border-gray-200 dark:border-dark-200",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"p-3 bg-amber-100 dark:bg-amber-900/30 rounded-full",children:e.jsx(et,{className:"h-8 w-8 text-amber-600 dark:text-amber-400"})})}),e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-dark-950 mb-2",children:a("setup.encryptionKey.subtitle")}),e.jsx("p",{className:"text-gray-600 dark:text-dark-500",children:a("setup.encryptionKey.description")})]}),e.jsx("div",{className:"mb-6 p-4 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-800 rounded-lg",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(at,{className:"h-5 w-5 text-amber-600 dark:text-amber-400 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-amber-800 dark:text-amber-200",children:[e.jsx("p",{className:"font-medium mb-1",children:a("setup.encryptionKey.warning")}),e.jsx("p",{children:a("setup.encryptionKey.warningText")})]})]})}),e.jsxs("div",{className:"mb-6",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:a("setup.encryptionKey.label")}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"w-full px-3 py-3 pr-12 border border-gray-300 dark:border-dark-300 rounded-lg bg-gray-50 dark:bg-dark-100 font-mono text-sm text-gray-900 dark:text-dark-800 break-all",children:S||a("setup.encryptionKey.loading")}),e.jsx("button",{type:"button",onClick:J,disabled:!S,className:"absolute right-2 top-1/2 -translate-y-1/2 p-2 text-gray-500 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-700 disabled:opacity-50",title:a("setup.encryptionKey.copyToClipboard"),children:L?e.jsx(Se,{className:"h-5 w-5 text-green-500"}):e.jsx(Tn,{className:"h-5 w-5"})})]}),e.jsx("p",{className:"mt-2 text-xs text-gray-500 dark:text-dark-500",children:a("setup.encryptionKey.envNote")})]}),e.jsx("div",{className:"mb-6",children:e.jsxs("label",{className:"flex items-start space-x-3 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:z,onChange:O=>N(O.target.checked),className:"mt-1 h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 dark:border-dark-300 rounded"}),e.jsx("span",{className:"text-sm text-gray-700 dark:text-dark-700",children:a("setup.encryptionKey.acknowledgment")})]})}),e.jsx("button",{onClick:G,disabled:!z,className:"w-full flex items-center justify-center px-4 py-2 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{children:a("setup.encryptionKey.continue")}),e.jsx(Kt,{size:16,className:"ml-2"})]})})]})})]}):e.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8",children:[e.jsxs("div",{className:"sm:mx-auto sm:w-full sm:max-w-md",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(Pa,{})}),e.jsx("h2",{className:"libre-brand mt-6 text-center text-2xl sm:text-3xl font-normal text-gray-900 dark:text-gray-100",style:{fontWeight:300,letterSpacing:"0.01em"},children:a("setup.admin.title")})]}),e.jsx("div",{className:"mt-8 sm:mx-auto sm:w-full sm:max-w-md",children:e.jsxs("div",{className:"w-full max-w-md mx-auto bg-white dark:bg-dark-25 rounded-xl shadow-card hover:shadow-card-hover transition-shadow duration-200 p-6 border border-gray-200 dark:border-dark-200",children:[e.jsxs("div",{className:"text-center mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-dark-950 mb-2",children:a("setup.admin.subtitle")}),e.jsx("p",{className:"text-gray-600 dark:text-dark-500",children:a("setup.admin.description")})]}),e.jsxs("form",{onSubmit:R,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"username",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:a("auth.login.username")}),e.jsx("input",{id:"username",type:"text",value:i,onChange:O=>o(O.target.value),onKeyDown:E,className:"w-full px-3 py-2 border border-gray-300 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 transition-colors duration-200",placeholder:a("setup.admin.usernamePlaceholder"),required:!0,disabled:b})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:a("auth.login.password")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"password",type:g?"text":"password",value:s,onChange:O=>d(O.target.value),onKeyDown:E,className:"w-full px-3 py-2 pr-10 border border-gray-300 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 transition-colors duration-200",placeholder:a("setup.admin.passwordPlaceholder"),required:!0,disabled:b}),e.jsx("button",{type:"button",onClick:()=>p(!g),className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700",disabled:b,children:g?e.jsx(qe,{size:20}):e.jsx(Fe,{size:20})})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"confirmPassword",className:"block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2",children:a("auth.signup.confirmPassword")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"confirmPassword",type:k?"text":"password",value:u,onChange:O=>m(O.target.value),onKeyDown:E,className:"w-full px-3 py-2 pr-10 border border-gray-300 dark:border-dark-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 bg-white dark:bg-dark-100 text-gray-900 dark:text-dark-800 transition-colors duration-200",placeholder:a("setup.admin.confirmPlaceholder"),required:!0,disabled:b}),e.jsx("button",{type:"button",onClick:()=>x(!k),className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700",disabled:b,children:k?e.jsx(qe,{size:20}):e.jsx(Fe,{size:20})})]})]}),e.jsxs("div",{className:"flex space-x-3",children:[e.jsx("button",{type:"button",onClick:()=>r("welcome"),disabled:b,className:"flex-1 px-4 py-2 border border-gray-300 dark:border-dark-300 rounded-lg shadow-sm text-sm font-medium text-gray-700 dark:text-dark-700 bg-white dark:bg-dark-100 hover:bg-gray-50 dark:hover:bg-dark-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:a("common.back")}),e.jsx("button",{type:"submit",disabled:b,className:"flex-1 flex items-center justify-center px-4 py-2 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",children:b?e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2"}),a("setup.admin.creating")]}):e.jsxs("div",{className:"flex items-center",children:[e.jsx(Nn,{size:16,className:"mr-2"}),a("setup.admin.createAdmin")]})})]})]}),e.jsx("div",{className:"mt-6 text-center",children:e.jsx("p",{className:"text-xs text-gray-500 dark:text-dark-500",children:a("setup.admin.note")})})]})})]})},zy=window.location.protocol==="file:"?Kr:Hr,jy=window.location.protocol==="file:",yn=()=>jy?e.jsx("div",{className:"absolute top-0 left-0 right-0 h-8 z-50",style:{WebkitAppRegion:"drag"}}):null,Ve=de.lazy(()=>he(()=>import("../js/ChatPage-Cz0C9idF.js"),__vite__mapDeps([2,3,1,4,5,0]))),vn=de.lazy(()=>he(()=>import("../js/ModelsPage-CPrYNnp9.js"),__vite__mapDeps([6,3,1,4,0]))),xn=de.lazy(()=>he(()=>import("../js/PersonasPage-5vnLrOBA.js"),__vite__mapDeps([7,3,1,4,0]))),Ty=de.lazy(()=>he(()=>import("../js/GalleryPage-cCtfDEU2.js"),__vite__mapDeps([8,3,1,4,0]))),Ny=de.lazy(()=>he(()=>import("../js/UserManagementPage-BSrxERfr.js"),__vite__mapDeps([9,3,1,4,0]))),Iy=de.lazy(()=>he(()=>import("../js/ArtifactDemoPage-oSYi__50.js"),__vite__mapDeps([10,3,1,5,4,0]))),Sn=()=>{const{t:n}=ue();return e.jsx("div",{className:"flex items-center justify-center h-full min-h-screen",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-4 border-gray-200 border-t-blue-500 rounded-full animate-spin"}),e.jsx("div",{className:"text-gray-600 dark:text-dark-600",children:n("common.loading")})]})})},Cy=({onClick:n})=>{const a=ct();return a.pathname==="/"||a.pathname==="/chat"||a.pathname.startsWith("/c/")?e.jsx("div",{className:"hidden lg:block",children:e.jsx(ky,{onClick:n})}):null},Fy=()=>{const{t:n,i18n:a}=ue();de.useEffect(()=>{const V=Uf(a.language)?"rtl":"ltr";document.documentElement.dir=V,document.documentElement.lang=a.language},[a.language]);const[t,r]=h.useState(!1),[i,o]=h.useState(!1),[s,d]=h.useState(0),[u,m]=h.useState(!1),[g,p]=h.useState(!1),{sidebarOpen:k,sidebarCompact:x,setSidebarOpen:b,setSidebarCompact:w,toggleSidebar:S,toggleSidebarCompact:F,toggleTheme:L,backgroundImage:A,preferences:z}=be(),{systemInfo:N,isLoading:P,user:R,isAuthenticated:J}=pe(),{isDemoMode:G,demoConfig:E}=be(),[O,K]=de.useState(!1),c=de.useRef(!1);de.useEffect(()=>{(async()=>{if(c.current){console.log("OAuth already processing, skipping...");return}console.log("Starting OAuth callback processing..."),c.current=!0;const Y=new URLSearchParams(window.location.search),ee=Y.get("token"),re=Y.get("auth");if(ee&&re==="success"){try{const W=await fetch(`${ke}/auth/me`,{headers:{Authorization:`Bearer ${ee}`},credentials:"include"});if(W.ok){const T=await W.json();if(T.success&&T.data){const{login:$,systemInfo:Z}=pe.getState();$(T.data,ee,Z||{requiresAuth:!0,singleUserMode:!1,hasUsers:!0,version:"0.1.6"}),console.log("OAuth login successful, showing toast"),j.success("GitHub login successful!")}else j.error("Failed to verify GitHub authentication")}else j.error("GitHub authentication verification failed")}catch(W){console.error("OAuth processing error:",W),j.error("GitHub authentication failed")}window.history.replaceState({},document.title,window.location.pathname)}console.log("OAuth processing completed"),K(!0),c.current=!1})()},[]),wy();const U=()=>{if(A)return!0;const V=z.backgroundSettings;return V?.enabled&&V?.imageUrl},me=[{key:"b",metaKey:!0,action:()=>{window.innerWidth>=1024?k?F():(w(!1),S()):(!k&&x&&w(!1),S())},description:n("keyboard.toggleSidebar")},{key:",",metaKey:!0,action:()=>r(!0),description:n("keyboard.openSettings")},{key:"d",metaKey:!0,action:L,description:n("keyboard.toggleDarkMode")},{key:"h",action:()=>o(!0),description:n("keyboard.showShortcuts")},{key:"Escape",action:()=>{r(!1),o(!1)},description:n("keyboard.closeModals")}];return gy(me),de.useEffect(()=>(da.connect().catch(console.error),()=>{da.disconnect()}),[]),de.useEffect(()=>{if(!N&&!P&&s<15){const V=setTimeout(async()=>{d(Y=>Y+1);try{const{UserService:Y}=await he(async()=>{const{UserService:ee}=await Promise.resolve().then(()=>Sy);return{UserService:ee}},void 0);await Y.initializeAuth()}catch{}},2e3);return()=>clearTimeout(V)}},[N,P,s]),de.useEffect(()=>{N&&N.requiresAuth&&!N.hasUsers&&!u&&p(!0)},[N,u]),P?e.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8",children:[e.jsxs("div",{className:"sm:mx-auto sm:w-full sm:max-w-md",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx(Pa,{})}),e.jsx("h2",{className:"libre-brand mt-6 text-center text-2xl sm:text-3xl font-normal text-gray-900 dark:text-gray-100",style:{fontWeight:300,letterSpacing:"0.01em"},children:"Libre WebUI"})]}),e.jsx("div",{className:"mt-8 flex flex-col items-center gap-4",children:e.jsx("div",{className:"w-8 h-8 border-4 border-gray-300 dark:border-gray-600 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin"})})]}):N?g&&!u?e.jsx(ya,{children:e.jsx(Ay,{onComplete:()=>{m(!0),p(!1)}})}):O?e.jsx(ya,{children:e.jsxs(zy,{children:[N&&!N.requiresAuth?e.jsxs("div",{className:H("flex h-screen text-gray-900 dark:text-dark-800 relative",U()?"bg-white/40 dark:bg-dark-50/40":"bg-white dark:bg-dark-50"),children:[e.jsx(yn,{}),e.jsx(bn,{}),e.jsx(pn,{isOpen:k,onClose:()=>b(!1)}),e.jsxs("div",{className:H("flex-1 flex flex-col min-w-0 transition-all duration-300 ease-in-out relative z-10","w-full",k?x?"lg:ml-16":"lg:ml-80":"lg:ml-0",k&&x?"max-lg:ml-16":"max-lg:ml-0",U()?"bg-white/30 dark:bg-dark-50/30":"bg-white dark:bg-dark-50"),children:[G&&E.showBanner&&e.jsx(hn,{message:E.message}),e.jsx("main",{className:H("flex-1 overflow-hidden",U()?"bg-white/20 dark:bg-dark-50/20 backdrop-blur-sm":"bg-gray-50 dark:bg-dark-100"),children:e.jsx(ya,{children:e.jsx(h.Suspense,{fallback:e.jsx(Sn,{}),children:e.jsxs(Wa,{children:[e.jsx(oe,{path:"/",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/chat",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/c/:sessionId",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/models",element:e.jsx(vn,{})}),e.jsx(oe,{path:"/personas",element:e.jsx(xn,{})}),e.jsx(oe,{path:"/login",element:e.jsx(fn,{})})]})})})})]})]}):e.jsxs(Wa,{children:[e.jsx(oe,{path:"/login",element:e.jsx(fn,{})}),e.jsx(oe,{path:"/*",element:e.jsx(gn,{children:e.jsxs("div",{className:H("flex h-screen text-gray-900 dark:text-dark-800 relative",U()?"bg-white/40 dark:bg-dark-50/40":"bg-white dark:bg-dark-50"),children:[e.jsx(yn,{}),e.jsx(bn,{}),e.jsx(pn,{isOpen:k,onClose:()=>b(!1)}),e.jsxs("div",{className:H("flex-1 flex flex-col min-w-0 transition-all duration-300 ease-in-out relative z-10","w-full",k?x?"lg:ml-16":"lg:ml-80":"lg:ml-0",k&&x?"max-lg:ml-16":"max-lg:ml-0",U()?"bg-white/30 dark:bg-dark-50/30":"bg-white dark:bg-dark-50"),children:[G&&E.showBanner&&e.jsx(hn,{message:E.message}),e.jsx("main",{className:H("flex-1 overflow-hidden",U()?"bg-white/20 dark:bg-dark-50/20 backdrop-blur-sm":"bg-gray-50 dark:bg-dark-100"),children:e.jsx(ya,{children:e.jsx(h.Suspense,{fallback:e.jsx(Sn,{}),children:e.jsxs(Wa,{children:[e.jsx(oe,{path:"/",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/chat",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/c/:sessionId",element:e.jsx(Ve,{})}),e.jsx(oe,{path:"/models",element:e.jsx(vn,{})}),e.jsx(oe,{path:"/personas",element:e.jsx(xn,{})}),e.jsx(oe,{path:"/gallery",element:e.jsx(Ty,{})}),e.jsx(oe,{path:"/artifacts",element:e.jsx(Iy,{})}),e.jsx(oe,{path:"/users",element:e.jsx(gn,{requireAdmin:!0,children:e.jsx(Ny,{})})})]})})})})]})]})})})]}),e.jsx(Vn,{isOpen:t,onClose:()=>r(!1)}),e.jsx(by,{isOpen:i,onClose:()=>o(!1),shortcuts:me}),e.jsx(Cy,{onClick:()=>o(!0)}),e.jsx(vy,{}),e.jsx(ii,{position:"top-right",toastOptions:{duration:4e3,className:"animate-slide-up",style:{background:"var(--toast-bg)",color:"var(--toast-color)",border:"1px solid var(--toast-border)",borderRadius:"0.75rem",boxShadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",cursor:"pointer"},success:{iconTheme:{primary:"#16a34a",secondary:"#ffffff"}},error:{iconTheme:{primary:"#ef4444",secondary:"#ffffff"}}},containerStyle:{top:80,right:20}})]})}):e.jsx("div",{className:"min-h-screen bg-gray-50 dark:bg-dark-50 flex items-center justify-center",children:e.jsx("div",{className:"w-8 h-8 border-4 border-gray-300 dark:border-gray-600 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin"})}):e.jsx("div",{className:"min-h-screen bg-dark-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"libre-brand text-5xl text-white mb-8",style:{fontWeight:400,letterSpacing:"0.02em"},children:"Libre"}),e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"w-8 h-8 border-3 border-gray-700 border-t-primary-500 rounded-full animate-spin"})}),e.jsx("p",{className:"text-gray-500 text-sm",children:s>0?`Connecting to backend... (${s}/15)`:"Starting up..."})]})})};ci.createRoot(document.getElementById("root")).render(e.jsx(de.StrictMode,{children:e.jsx(Fy,{})}));export{cy as A,C as B,qf as I,un as O,xe as S,Hn as T,ue as a,pe as b,H as c,Te as d,lt as e,$f as f,mt as g,sy as h,dt as i,je as j,Vf as k,$n as l,ua as o,Ky as p,la as t,be as u,da as w};
|