Files
LangBot/web/.next/static/chunks/7705199feea981dd.js
T

1 line
179 KiB
JavaScript

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18090,10047,e=>{"use strict";e.i(71483);let t=e=>"string"==typeof e,o=()=>{let e,t,o=new Promise((o,s)=>{e=o,t=s});return o.resolve=e,o.reject=t,o},s=e=>null==e?"":""+e,i=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(i,"."):e,r=e=>!e||t(e),n=(e,o,s)=>{let i=t(o)?o.split("."):o,n=0;for(;n<i.length-1;){if(r(e))return{};let t=a(i[n]);!e[t]&&s&&(e[t]=new s),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++n}return r(e)?{}:{obj:e,k:a(i[n])}},l=(e,t,o)=>{let{obj:s,k:i}=n(e,t,Object);if(void 0!==s||1===t.length){s[i]=o;return}let a=t[t.length-1],r=t.slice(0,t.length-1),l=n(e,r,Object);for(;void 0===l.obj&&r.length;)a=`${r[r.length-1]}.${a}`,l=n(e,r=r.slice(0,r.length-1),Object),l?.obj&&void 0!==l.obj[`${l.k}.${a}`]&&(l.obj=void 0);l.obj[`${l.k}.${a}`]=o},d=(e,t)=>{let{obj:o,k:s}=n(e,t);if(o&&Object.prototype.hasOwnProperty.call(o,s))return o[s]},c=(e,o,s)=>{for(let i in o)"__proto__"!==i&&"constructor"!==i&&(i in e?t(e[i])||e[i]instanceof String||t(o[i])||o[i]instanceof String?s&&(e[i]=o[i]):c(e[i],o[i],s):e[i]=o[i]);return e};var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};let p=e=>t(e)?e.replace(/[&<>"'\/]/g,e=>u[e]):e,g=[" ",",","?","!",";"],m=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(void 0!==t)return t;let o=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,o),this.regExpQueue.push(e),o}}(20),h=(e,t,o=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}let s=t.split(o),i=e;for(let e=0;e<s.length;){let t;if(!i||"object"!=typeof i)return;let a="";for(let r=e;r<s.length;++r)if(r!==e&&(a+=o),a+=s[r],void 0!==(t=i[a])){if(["string","number","boolean"].indexOf(typeof t)>-1&&r<s.length-1)continue;e+=r-e+1;break}i=t}return i},f=e=>e?.replace("_","-"),b={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class y{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||b,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,o,s,i){return i&&!this.debug?null:(t(e[0])&&(e[0]=`${s}${this.prefix} ${e[0]}`),this.logger[o](e))}create(e){return new y(this.logger,{...{prefix:`${this.prefix}:${e}:`},...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new y(this.logger,e)}}var S=new y;class v{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let o=this.observers[e].get(t)||0;this.observers[e].set(t,o+1)}),this}off(e,t){if(this.observers[e]){if(!t)return void delete this.observers[e];this.observers[e].delete(t)}}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,o])=>{for(let s=0;s<o;s++)e(...t)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([o,s])=>{for(let i=0;i<s;i++)o.apply(o,[e,...t])})}}class P extends v{constructor(e,t={ns:["translation"],defaultNS:"translation"}){super(),this.data=e||{},this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),void 0===this.options.ignoreJSONStructure&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){0>this.options.ns.indexOf(e)&&this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,o,s,i={}){let a,r=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,n=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;e.indexOf(".")>-1?a=e.split("."):(a=[e,o],s&&(Array.isArray(s)?a.push(...s):t(s)&&r?a.push(...s.split(r)):a.push(s)));let l=d(this.data,a);return(!l&&!o&&!s&&e.indexOf(".")>-1&&(e=a[0],o=a[1],s=a.slice(2).join(".")),!l&&n&&t(s))?h(this.data?.[e]?.[o],s,r):l}addResource(e,t,o,s,i={silent:!1}){let a=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,r=[e,t];o&&(r=r.concat(a?o.split(a):o)),e.indexOf(".")>-1&&(r=e.split("."),s=t,t=r[1]),this.addNamespaces(t),l(this.data,r,s),i.silent||this.emit("added",e,t,o,s)}addResources(e,o,s,i={silent:!1}){for(let i in s)(t(s[i])||Array.isArray(s[i]))&&this.addResource(e,o,i,s[i],{silent:!0});i.silent||this.emit("added",e,o,s)}addResourceBundle(e,t,o,s,i,a={silent:!1,skipCopy:!1}){let r=[e,t];e.indexOf(".")>-1&&(r=e.split("."),s=o,o=t,t=r[1]),this.addNamespaces(t);let n=d(this.data,r)||{};a.skipCopy||(o=JSON.parse(JSON.stringify(o))),s?c(n,o,i):n={...n,...o},l(this.data,r,n),a.silent||this.emit("added",e,t,o)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var w={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,o,s,i){return e.forEach(e=>{t=this.processors[e]?.process(t,o,s,i)??t}),t}};let C=Symbol("i18next/PATH_KEY");function k(e,t){let o,s,i,{[C]:a}=e((s=[],(i=Object.create(null)).get=(e,t)=>(o?.revoke?.(),t===C)?s:(s.push(t),(o=Proxy.revocable(e,i)).proxy),Proxy.revocable(Object.create(null),i).proxy));return a.join(t?.keySeparator??".")}let L={},R=e=>!t(e)&&"boolean"!=typeof e&&"number"!=typeof e;class M extends v{constructor(e,t={}){super(),((e,t,o)=>{e.forEach(e=>{t[e]&&(o[e]=t[e])})})(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=S.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let o={...t};if(null==e)return!1;let s=this.resolve(e,o);if(s?.res===void 0)return!1;let i=R(s.res);return!1!==o.returnObjects||!i}extractFromKey(e,o){let s=void 0!==o.nsSeparator?o.nsSeparator:this.options.nsSeparator;void 0===s&&(s=":");let i=void 0!==o.keySeparator?o.keySeparator:this.options.keySeparator,a=o.ns||this.options.defaultNS||[],r=s&&e.indexOf(s)>-1,n=!this.options.userDefinedKeySeparator&&!o.keySeparator&&!this.options.userDefinedNsSeparator&&!o.nsSeparator&&!((e,t,o)=>{t=t||"",o=o||"";let s=g.filter(e=>0>t.indexOf(e)&&0>o.indexOf(e));if(0===s.length)return!0;let i=m.getRegExp(`(${s.map(e=>"?"===e?"\\?":e).join("|")})`),a=!i.test(e);if(!a){let t=e.indexOf(o);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a})(e,s,i);if(r&&!n){let o=e.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:e,namespaces:t(a)?[a]:a};let r=e.split(s);(s!==i||s===i&&this.options.ns.indexOf(r[0])>-1)&&(a=r.shift()),e=r.join(i)}return{key:e,namespaces:t(a)?[a]:a}}translate(e,o,s){let i="object"==typeof o?{...o}:o;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=k(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);let a=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,r=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:n,namespaces:l}=this.extractFromKey(e[e.length-1],i),d=l[l.length-1],c=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===c&&(c=":");let u=i.lng||this.language,p=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u?.toLowerCase()==="cimode")return p?a?{res:`${d}${c}${n}`,usedKey:n,exactUsedKey:n,usedLng:u,usedNS:d,usedParams:this.getUsedParamsDetails(i)}:`${d}${c}${n}`:a?{res:n,usedKey:n,exactUsedKey:n,usedLng:u,usedNS:d,usedParams:this.getUsedParamsDetails(i)}:n;let g=this.resolve(e,i),m=g?.res,h=g?.usedKey||n,f=g?.exactUsedKey||n,b=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,S=void 0!==i.count&&!t(i.count),v=M.hasDefaultValue(i),P=S?this.pluralResolver.getSuffix(u,i.count,i):"",w=i.ordinal&&S?this.pluralResolver.getSuffix(u,i.count,{ordinal:!1}):"",C=S&&!i.ordinal&&0===i.count,L=C&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${P}`]||i[`defaultValue${w}`]||i.defaultValue,D=m;y&&!m&&v&&(D=L);let E=R(D),x=Object.prototype.toString.apply(D);if(y&&D&&E&&0>["[object Number]","[object Function]","[object RegExp]"].indexOf(x)&&!(t(b)&&Array.isArray(D))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,D,{...i,ns:l}):`key '${n} (${this.language})' returned an object instead of string.`;return a?(g.res=e,g.usedParams=this.getUsedParamsDetails(i),g):e}if(r){let e=Array.isArray(D),t=e?[]:{},o=e?f:h;for(let e in D)if(Object.prototype.hasOwnProperty.call(D,e)){let s=`${o}${r}${e}`;v&&!m?t[e]=this.translate(s,{...i,defaultValue:R(L)?L[e]:void 0,...{joinArrays:!1,ns:l}}):t[e]=this.translate(s,{...i,joinArrays:!1,ns:l}),t[e]===s&&(t[e]=D[e])}m=t}}else if(y&&t(b)&&Array.isArray(m))(m=m.join(b))&&(m=this.extendTranslation(m,e,i,s));else{let t=!1,o=!1;!this.isValidLookup(m)&&v&&(t=!0,m=L),this.isValidLookup(m)||(o=!0,m=n);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&o?void 0:m,l=v&&L!==m&&this.options.updateMissing;if(o||t||l){if(this.logger.log(l?"updateKey":"missingKey",u,d,n,l?L:m),r){let e=this.resolve(n,{...i,keySeparator:!1});e&&e.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 e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let o=0;o<t.length;o++)e.push(t[o]);else"all"===this.options.saveMissingTo?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let o=(e,t,o)=>{let s=v&&o!==m?o:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,d,t,s,l,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,d,t,s,l,i),this.emit("missingKey",e,d,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&S?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);C&&i[`defaultValue${this.options.pluralSeparator}zero`]&&0>t.indexOf(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{o([e],n+t,i[`defaultValue${t}`]||L)})}):o(e,n,L))}m=this.extendTranslation(m,e,i,g,s),o&&m===n&&this.options.appendNamespaceToMissingKey&&(m=`${d}${c}${n}`),(o||t)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}${c}${n}`:n,t?m:void 0,i))}return a?(g.res=m,g.usedParams=this.getUsedParamsDetails(i),g):m}extendTranslation(e,o,s,i,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...s},s.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!s.skipInterpolation){let r;s.interpolation&&this.interpolator.init({...s,...{interpolation:{...this.options.interpolation,...s.interpolation}}});let n=t(e)&&(s?.interpolation?.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);if(n){let t=e.match(this.interpolator.nestingRegexp);r=t&&t.length}let l=s.replace&&!t(s.replace)?s.replace:s;if(this.options.interpolation.defaultVariables&&(l={...this.options.interpolation.defaultVariables,...l}),e=this.interpolator.interpolate(e,l,s.lng||this.language||i.usedLng,s),n){let t=e.match(this.interpolator.nestingRegexp);r<(t&&t.length)&&(s.nest=!1)}!s.lng&&i&&i.res&&(s.lng=this.language||i.usedLng),!1!==s.nest&&(e=this.interpolator.nest(e,(...e)=>a?.[0]!==e[0]||s.context?this.translate(...e,o):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${o[0]}`),null),s)),s.interpolation&&this.interpolator.reset()}let r=s.postProcess||this.options.postProcess,n=t(r)?[r]:r;return null!=e&&n?.length&&!1!==s.applyPostProcessor&&(e=w.handle(n,e,o,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(s)},...s}:s,this)),e}resolve(e,o={}){let s,i,a,r,n;return t(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(s))return;let l=this.extractFromKey(e,o),d=l.key;i=d;let c=l.namespaces;this.options.fallbackNS&&(c=c.concat(this.options.fallbackNS));let u=void 0!==o.count&&!t(o.count),p=u&&!o.ordinal&&0===o.count,g=void 0!==o.context&&(t(o.context)||"number"==typeof o.context)&&""!==o.context,m=o.lngs?o.lngs:this.languageUtils.toResolveHierarchy(o.lng||this.language,o.fallbackLng);c.forEach(e=>{this.isValidLookup(s)||(n=e,!L[`${m[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(n)&&(L[`${m[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${n}" 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!!!")),m.forEach(t=>{let i;if(this.isValidLookup(s))return;r=t;let n=[d];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(n,d,t,e,o);else{let e;u&&(e=this.pluralResolver.getSuffix(t,o.count,o));let s=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(o.ordinal&&0===e.indexOf(i)&&n.push(d+e.replace(i,this.options.pluralSeparator)),n.push(d+e),p&&n.push(d+s)),g){let t=`${d}${this.options.contextSeparator||"_"}${o.context}`;n.push(t),u&&(o.ordinal&&0===e.indexOf(i)&&n.push(t+e.replace(i,this.options.pluralSeparator)),n.push(t+e),p&&n.push(t+s))}}for(;i=n.pop();)this.isValidLookup(s)||(a=i,s=this.getResource(t,e,i,o))}))})}),{res:s,usedKey:i,exactUsedKey:a,usedLng:r,usedNS:n}}isValidLookup(e){return void 0!==e&&!(!this.options.returnNull&&null===e)&&!(!this.options.returnEmptyString&&""===e)}getResource(e,t,o,s={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,o,s):this.resourceStore.getResource(e,t,o,s)}getUsedParamsDetails(e={}){let o=e.replace&&!t(e.replace),s=o?e.replace:e;if(o&&void 0!==e.count&&(s.count=e.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!o)for(let e of(s={...s},["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"]))delete s[e];return s}static hasDefaultValue(e){let t="defaultValue";for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t===o.substring(0,t.length)&&void 0!==e[o])return!0;return!1}}class D{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=S.create("languageUtils")}getScriptPartFromCode(e){if(!(e=f(e))||0>e.indexOf("-"))return null;let t=e.split("-");return 2===t.length||(t.pop(),"x"===t[t.length-1].toLowerCase())?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(e){if(!(e=f(e))||0>e.indexOf("-"))return e;let t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(t(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return(t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t)?t:this.options.lowerCaseLng?e.toLowerCase():e}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){let t;return e?(e.forEach(e=>{if(t)return;let o=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(o))&&(t=o)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let o=this.getScriptPartFromCode(e);if(this.isSupportedCode(o))return t=o;let s=this.getLanguagePartFromCode(e);if(this.isSupportedCode(s))return t=s;t=this.options.supportedLngs.find(e=>{if(e===s||!(0>e.indexOf("-")&&0>s.indexOf("-"))&&(e.indexOf("-")>0&&0>s.indexOf("-")&&e.substring(0,e.indexOf("-"))===s||0===e.indexOf(s)&&s.length>1))return e})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}getFallbackCodes(e,o){if(!e)return[];if("function"==typeof e&&(e=e(o)),t(e)&&(e=[e]),Array.isArray(e))return e;if(!o)return e.default||[];let s=e[o];return s||(s=e[this.getScriptPartFromCode(o)]),s||(s=e[this.formatLanguageCode(o)]),s||(s=e[this.getLanguagePartFromCode(o)]),s||(s=e.default),s||[]}toResolveHierarchy(e,o){let s=this.getFallbackCodes((!1===o?[]:o)||this.options.fallbackLng||[],e),i=[],a=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return t(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&a(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&a(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&a(this.getLanguagePartFromCode(e))):t(e)&&a(this.formatLanguageCode(e)),s.forEach(e=>{0>i.indexOf(e)&&a(this.formatLanguageCode(e))}),i}}let E={zero:0,one:1,two:2,few:3,many:4,other:5},x={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class A{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=S.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let o,s=f("dev"===e?"en":e),i=t.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:s,type:i});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];try{o=new Intl.PluralRules(s,{type:i})}catch(i){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),x;if(!e.match(/-|_/))return x;let s=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(s,t)}return this.pluralRulesCache[a]=o,o}needsPlural(e,t={}){let o=this.getRule(e,t);return o||(o=this.getRule("dev",t)),o?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,o={}){return this.getSuffixes(e,o).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let o=this.getRule(e,t);return(o||(o=this.getRule("dev",t)),o)?o.resolvedOptions().pluralCategories.sort((e,t)=>E[e]-E[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,o={}){let s=this.getRule(e,o);return s?`${this.options.prepend}${o.ordinal?`ordinal${this.options.prepend}`:""}${s.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,o))}}let T=(e,o,s,i=".",a=!0)=>{let r,n=void 0!==(r=d(e,s))?r:d(o,s);return!n&&a&&t(s)&&void 0===(n=h(e,s,i))&&(n=h(o,s,i)),n};class F{constructor(e={}){this.logger=S.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});let{escape:t,escapeValue:o,useRawValueToEscape:s,prefix:i,prefixEscaped:a,suffix:r,suffixEscaped:n,formatSeparator:l,unescapeSuffix:d,unescapePrefix:c,nestingPrefix:u,nestingPrefixEscaped:g,nestingSuffix:m,nestingSuffixEscaped:h,nestingOptionsSeparator:f,maxReplaces:b,alwaysFormat:y}=e.interpolation;this.escape=void 0!==t?t:p,this.escapeValue=void 0===o||o,this.useRawValueToEscape=void 0!==s&&s,this.prefix=i?i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"):a||"{{",this.suffix=r?r.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"):n||"}}",this.formatSeparator=l||",",this.unescapePrefix=d?"":c||"-",this.unescapeSuffix=this.unescapePrefix?"":d||"",this.nestingPrefix=u?u.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"):g||"$t(".replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),this.nestingSuffix=m?m.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"):h||")".replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),this.nestingOptionsSeparator=f||",",this.maxReplaces=b||1e3,this.alwaysFormat=void 0!==y&&y,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,o,i,a){let r,n,l,d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(0>e.indexOf(this.formatSeparator)){let t=T(o,d,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(t,void 0,i,{...a,...o,interpolationkey:e}):t}let t=e.split(this.formatSeparator),s=t.shift().trim(),r=t.join(this.formatSeparator).trim();return this.format(T(o,d,s,this.options.keySeparator,this.options.ignoreJSONStructure),r,i,{...a,...o,interpolationkey:s})};this.resetRegExp();let u=a?.missingInterpolationHandler||this.options.missingInterpolationHandler,p=a?.interpolation?.skipOnVariables!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e.replace(/\$/g,"$$$$")},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e).replace(/\$/g,"$$$$"):e.replace(/\$/g,"$$$$")}].forEach(o=>{for(l=0;r=o.regex.exec(e);){let i=r[1].trim();if(void 0===(n=c(i)))if("function"==typeof u){let o=u(e,r,a);n=t(o)?o:""}else if(a&&Object.prototype.hasOwnProperty.call(a,i))n="";else if(p){n=r[0];continue}else this.logger.warn(`missed to pass in variable ${i} for interpolating ${e}`),n="";else t(n)||this.useRawValueToEscape||(n=s(n));let d=o.safeValue(n);if(e=e.replace(r[0],d),p?(o.regex.lastIndex+=n.length,o.regex.lastIndex-=r[0].length):o.regex.lastIndex=0,++l>=this.maxReplaces)break}}),e}nest(e,o,i={}){let a,r,n,l=(e,t)=>{let o=this.nestingOptionsSeparator;if(0>e.indexOf(o))return e;let s=e.split(RegExp(`${o}[ ]*{`)),i=`{${s[1]}`;e=s[0];let a=(i=this.interpolate(i,n)).match(/'/g),r=i.match(/"/g);((a?.length??0)%2!=0||r)&&r.length%2==0||(i=i.replace(/'/g,'"'));try{n=JSON.parse(i),t&&(n={...t,...n})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${o}${i}`}return n.defaultValue&&n.defaultValue.indexOf(this.prefix)>-1&&delete n.defaultValue,e};for(;a=this.nestingRegexp.exec(e);){let d=[];(n=(n={...i}).replace&&!t(n.replace)?n.replace:n).applyPostProcessor=!1,delete n.defaultValue;let c=/{.*}/.test(a[1])?a[1].lastIndexOf("}")+1:a[1].indexOf(this.formatSeparator);if(-1!==c&&(d=a[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),a[1]=a[1].slice(0,c)),(r=o(l.call(this,a[1].trim(),n),n))&&a[0]===e&&!t(r))return r;t(r)||(r=s(r)),r||(this.logger.warn(`missed to resolve ${a[1]} for nesting ${e}`),r=""),d.length&&(r=d.reduce((e,t)=>this.format(e,t,i.lng,{...i,interpolationkey:a[1].trim()}),r.trim())),e=e.replace(a[0],r),this.regexp.lastIndex=0}return e}}let N=e=>{let t={};return(o,s,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let r=s+JSON.stringify(a),n=t[r];return n||(n=e(f(s),i),t[r]=n),n(o)}},I=e=>(t,o,s)=>e(f(o),s)(t);class B{constructor(e={}){this.logger=S.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";let o=t.cacheInBuiltFormats?N:I;this.formats={number:o((e,t)=>{let o=new Intl.NumberFormat(e,{...t});return e=>o.format(e)}),currency:o((e,t)=>{let o=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>o.format(e)}),datetime:o((e,t)=>{let o=new Intl.DateTimeFormat(e,{...t});return e=>o.format(e)}),relativetime:o((e,t)=>{let o=new Intl.RelativeTimeFormat(e,{...t});return e=>o.format(e,t.range||"day")}),list:o((e,t)=>{let o=new Intl.ListFormat(e,{...t});return e=>o.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=N(t)}format(e,t,o,s={}){let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&0>i[0].indexOf(")")&&i.find(e=>e.indexOf(")")>-1)){let e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=(e=>{let t=e.toLowerCase().trim(),o={};if(e.indexOf("(")>-1){let s=e.split("(");t=s[0].toLowerCase().trim();let i=s[1].substring(0,s[1].length-1);"currency"===t&&0>i.indexOf(":")?o.currency||(o.currency=i.trim()):"relativetime"===t&&0>i.indexOf(":")?o.range||(o.range=i.trim()):i.split(";").forEach(e=>{if(e){let[t,...s]=e.split(":"),i=s.join(":").trim().replace(/^'+|'+$/g,""),a=t.trim();o[a]||(o[a]=i),"false"===i&&(o[a]=!1),"true"===i&&(o[a]=!0),isNaN(i)||(o[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:o}})(t);if(this.formats[i]){let t=e;try{let r=s?.formatParams?.[s.interpolationkey]||{},n=r.locale||r.lng||s.locale||s.lng||o;t=this.formats[i](e,n,{...a,...s,...r})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class K extends v{constructor(e,t,o,s={}){super(),this.backend=e,this.store=t,this.services=o,this.languageUtils=o.languageUtils,this.options=s,this.logger=S.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(o,s.backend,s)}queueLoad(e,t,o,s){let i={},a={},r={},n={};return e.forEach(e=>{let s=!0;t.forEach(t=>{let r=`${e}|${t}`;!o.reload&&this.store.hasResourceBundle(e,t)?this.state[r]=2:this.state[r]<0||(1===this.state[r]?void 0===a[r]&&(a[r]=!0):(this.state[r]=1,s=!1,void 0===a[r]&&(a[r]=!0),void 0===i[r]&&(i[r]=!0),void 0===n[t]&&(n[t]=!0)))}),s||(r[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(r),toLoadNamespaces:Object.keys(n)}}loaded(e,t,o){let s=e.split("|"),i=s[0],a=s[1];t&&this.emit("failedLoading",i,a,t),!t&&o&&this.store.addResourceBundle(i,a,o,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&o&&(this.state[e]=0);let r={};this.queue.forEach(o=>{((e,t,o,s)=>{let{obj:i,k:a}=n(e,t,Object);i[a]=i[a]||[],i[a].push(o)})(o.loaded,[i],a),void 0!==o.pending[e]&&(delete o.pending[e],o.pendingCount--),t&&o.errors.push(t),0!==o.pendingCount||o.done||(Object.keys(o.loaded).forEach(e=>{r[e]||(r[e]={});let t=o.loaded[e];t.length&&t.forEach(t=>{void 0===r[e][t]&&(r[e][t]=!0)})}),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())}),this.emit("loaded",r),this.queue=this.queue.filter(e=>!e.done)}read(e,t,o,s=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:o,tried:s,wait:i,callback:a});this.readingCalls++;let r=(r,n)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}r&&n&&s<this.maxRetries?setTimeout(()=>{this.read.call(this,e,t,o,s+1,2*i,a)},i):a(r,n)},n=this.backend[o].bind(this.backend);if(2===n.length){try{let o=n(e,t);o&&"function"==typeof o.then?o.then(e=>r(null,e)).catch(r):r(null,o)}catch(e){r(e)}return}return n(e,t,r)}prepareLoading(e,o,s={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();t(e)&&(e=this.languageUtils.toResolveHierarchy(e)),t(o)&&(o=[o]);let a=this.queueLoad(e,o,s,i);if(!a.toLoad.length)return a.pending.length||i(),null;a.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,o){this.prepareLoading(e,t,{},o)}reload(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}loadOne(e,t=""){let o=e.split("|"),s=o[0],i=o[1];this.read(s,i,"read",void 0,void 0,(o,a)=>{o&&this.logger.warn(`${t}loading namespace ${i} for language ${s} failed`,o),!o&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${s}`,a),this.loaded(e,o,a)})}saveMissing(e,t,o,s,i,a={},r=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t))return void this.logger.warn(`did not save key "${o}" 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!!!");if(null!=o&&""!==o){if(this.backend?.create){let n={...a,isUpdate:i},l=this.backend.create.bind(this.backend);if(l.length<6)try{let i;(i=5===l.length?l(e,t,o,s,n):l(e,t,o,s))&&"function"==typeof i.then?i.then(e=>r(null,e)).catch(r):r(null,i)}catch(e){r(e)}else l(e,t,o,s,r,n)}e&&e[0]&&this.store.addResource(e[0],t,o,s)}}}let U=()=>({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:e=>{let o={};if("object"==typeof e[1]&&(o=e[1]),t(e[1])&&(o.defaultValue=e[1]),t(e[2])&&(o.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){let t=e[3]||e[2];Object.keys(t).forEach(e=>{o[e]=t[e]})}return o},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(t(e.ns)&&(e.ns=[e.ns]),t(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),t(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),O=()=>{};class $ extends v{constructor(e={},t){if(super(),this.options=q(e),this.services={},this.logger=S,this.modules={external:[]},(e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{"function"==typeof e[t]&&(e[t]=e[t].bind(e))})})(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},s){this.isInitializing=!0,"function"==typeof e&&(s=e,e={}),null==e.defaultNS&&e.ns&&(t(e.ns)?e.defaultNS=e.ns:0>e.ns.indexOf("translation")&&(e.defaultNS=e.ns[0]));let i=U();this.options={...i,...this.options,...q(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator),"function"!=typeof this.options.overloadTranslationOptionHandler&&(this.options.overloadTranslationOptionHandler=i.overloadTranslationOptionHandler),!0===this.options.debug&&"u">typeof console&&console.warn("i18next is maintained with support from locize.com — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com");let a=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?S.init(a(this.modules.logger),this.options):S.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;let t=new D(this.options);this.store=new P(this.options.resources,this.options);let o=this.services;o.logger=S,o.resourceStore=this.store,o.languageUtils=t,o.pluralResolver=new A(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.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"),e&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(o.formatter=a(e),o.formatter.init&&o.formatter.init(o,this.options),this.options.interpolation.format=o.formatter.format.bind(o.formatter)),o.interpolator=new F(this.options),o.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},o.backendConnector=new K(a(this.modules.backend),o.resourceStore,o,this.options),o.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(o.languageDetector=a(this.modules.languageDetector),o.languageDetector.init&&o.languageDetector.init(o,this.options.detection,this.options)),this.modules.i18nFormat&&(o.i18nFormat=a(this.modules.i18nFormat),o.i18nFormat.init&&o.i18nFormat.init(this)),this.translator=new M(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,s||(s=O),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[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(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let r=o(),n=()=>{let e=(e,t)=>{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),r.resolve(t),s(e,t)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?n():setTimeout(n,0),r}loadResources(e,o=O){let s=o,i=t(e)?e:this.language;if("function"==typeof e&&(s=e),!this.options.resources||this.options.partialBundledLanguages){if(i?.toLowerCase()==="cimode"&&(!this.options.preload||0===this.options.preload.length))return s();let e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&0>e.indexOf(t)&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),s(e)})}else s(null)}reloadResources(e,t,s){let i=o();return"function"==typeof e&&(s=e,e=void 0),"function"==typeof t&&(s=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),s||(s=O),this.services.backendConnector.reload(e,t,e=>{i.resolve(),s(e)}),i}use(e){if(!e)throw Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&w.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(!(["cimode","dev"].indexOf(t)>-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&0>this.languages.indexOf(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,s){this.isLanguageChangingTo=e;let i=o();this.emit("languageChanging",e);let a=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},r=(t,o)=>{o?this.isLanguageChangingTo===e&&(a(o),this.translator.changeLanguage(o),this.isLanguageChangingTo=void 0,this.emit("languageChanged",o),this.logger.log("languageChanged",o)):this.isLanguageChangingTo=void 0,i.resolve((...e)=>this.t(...e)),s&&s(t,(...e)=>this.t(...e))},n=o=>{e||o||!this.services.languageDetector||(o=[]);let s=t(o)?o:o&&o[0],i=this.store.hasLanguageSomeTranslations(s)?s:this.services.languageUtils.getBestMatchFromCodes(t(o)?[o]:o);i&&(this.language||a(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{r(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(n):this.services.languageDetector.detect(n):n(e):n(this.services.languageDetector.detect()),i}getFixedT(e,o,s){let i=(e,t,...o)=>{let a,r;(a="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(o)):{...t}).lng=a.lng||i.lng,a.lngs=a.lngs||i.lngs,a.ns=a.ns||i.ns,""!==a.keyPrefix&&(a.keyPrefix=a.keyPrefix||s||i.keyPrefix);let n=this.options.keySeparator||".";return a.keyPrefix&&Array.isArray(e)?r=e.map(e=>("function"==typeof e&&(e=k(e,{...this.options,...t})),`${a.keyPrefix}${n}${e}`)):("function"==typeof e&&(e=k(e,{...this.options,...t})),r=a.keyPrefix?`${a.keyPrefix}${n}${e}`:e),this.t(r,a)};return t(e)?i.lng=e:i.lngs=e,i.ns=o,i.keyPrefix=s,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,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;let o=t.lng||this.resolvedLanguage||this.languages[0],s=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===o.toLowerCase())return!0;let a=(e,t)=>{let o=this.services.backendConnector.state[`${e}|${t}`];return -1===o||0===o||2===o};if(t.precheck){let e=t.precheck(this,a);if(void 0!==e)return e}return!!(this.hasResourceBundle(o,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(o,e)&&(!s||a(i,e)))}loadNamespaces(e,s){let i=o();return this.options.ns?(t(e)&&(e=[e]),e.forEach(e=>{0>this.options.ns.indexOf(e)&&this.options.ns.push(e)}),this.loadResources(e=>{i.resolve(),s&&s(e)}),i):(s&&s(),Promise.resolve())}loadLanguages(e,s){let i=o();t(e)&&(e=[e]);let a=this.options.preload||[],r=e.filter(e=>0>a.indexOf(e)&&this.services.languageUtils.isSupportedCode(e));return r.length?(this.options.preload=a.concat(r),this.loadResources(e=>{i.resolve(),s&&s(e)}),i):(s&&s(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}let t=this.services?.languageUtils||new D(U());return e.toLowerCase().indexOf("-latn")>1?"ltr":["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"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){let o=new $(e,t);return o.createInstance=$.createInstance,o}cloneInstance(e={},t=O){let o=e.forkResourceStore;o&&delete e.forkResourceStore;let s={...this.options,...e,isClone:!0},i=new $(s);if((void 0!==e.debug||void 0!==e.prefix)&&(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},o&&(i.store=new P(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((o,s)=>(o[s]={...e[t][s]},o),e[t]),e),{}),s),i.services.resourceStore=i.store),e.interpolation){let t={...U().interpolation,...this.options.interpolation,...e.interpolation},o={...s,interpolation:t};i.services.interpolator=new F(o)}return i.translator=new M(i.services,s),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(s,t),i.translator.options=s,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}let W=$.createInstance();W.createInstance,W.dir,W.init,W.loadResources,W.reloadResources,W.use,W.changeLanguage,W.getFixedT,W.t,W.exists,W.setDefaultNamespace,W.hasLoadedNamespace,W.loadNamespaces,W.loadLanguages,e.s(["default",()=>W],10047),e.i(26128);var H=e.i(34197);let{slice:j,forEach:V}=[],G=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,z=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{path:"/"},s=encodeURIComponent(t),i=`${e}=${s}`;if(o.maxAge>0){let e=o.maxAge-0;if(Number.isNaN(e))throw Error("maxAge should be a Number");i+=`; Max-Age=${Math.floor(e)}`}if(o.domain){if(!G.test(o.domain))throw TypeError("option domain is invalid");i+=`; Domain=${o.domain}`}if(o.path){if(!G.test(o.path))throw TypeError("option path is invalid");i+=`; Path=${o.path}`}if(o.expires){if("function"!=typeof o.expires.toUTCString)throw TypeError("option expires is invalid");i+=`; Expires=${o.expires.toUTCString()}`}if(o.httpOnly&&(i+="; HttpOnly"),o.secure&&(i+="; Secure"),o.sameSite)switch("string"==typeof o.sameSite?o.sameSite.toLowerCase():o.sameSite){case!0:case"strict":i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"none":i+="; SameSite=None";break;default:throw TypeError("option sameSite is invalid")}return o.partitioned&&(i+="; Partitioned"),i},_={create(e,t,o,s){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{path:"/",sameSite:"strict"};o&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+60*o*1e3)),s&&(i.domain=s),document.cookie=z(e,t,i)},read(e){let t=`${e}=`,o=document.cookie.split(";");for(let e=0;e<o.length;e++){let s=o[e];for(;" "===s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(t))return s.substring(t.length,s.length)}return null},remove(e,t){this.create(e,"",-1,t)}};var Y={name:"cookie",lookup(e){let{lookupCookie:t}=e;if(t&&"u">typeof document)return _.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:o,cookieMinutes:s,cookieDomain:i,cookieOptions:a}=t;o&&"u">typeof document&&_.create(o,e,s,i,a)}},J={name:"querystring",lookup(e){let t,{lookupQuerystring:o}=e;if("u">typeof window){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(e=window.location.hash.substring(window.location.hash.indexOf("?")));let s=e.substring(1).split("&");for(let e=0;e<s.length;e++){let i=s[e].indexOf("=");i>0&&s[e].substring(0,i)===o&&(t=s[e].substring(i+1))}}return t}},Q={name:"hash",lookup(e){let t,{lookupHash:o,lookupFromHashIndex:s}=e;if("u">typeof window){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(o){let e=i.split("&");for(let s=0;s<e.length;s++){let i=e[s].indexOf("=");i>0&&e[s].substring(0,i)===o&&(t=e[s].substring(i+1))}}if(t)return t;if(!t&&s>-1){let t=e.match(/\/([a-zA-Z-]*)/g);if(!Array.isArray(t))return;return t["number"==typeof s?s:0]?.replace("/","")}}}return t}};let X=null,Z=()=>{if(null!==X)return X;try{if(!(X="u">typeof window&&null!==window.localStorage))return!1;let e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch(e){X=!1}return X};var ee={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&Z())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:o}=t;o&&Z()&&window.localStorage.setItem(o,e)}};let et=null,eo=()=>{if(null!==et)return et;try{if(!(et="u">typeof window&&null!==window.sessionStorage))return!1;let e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch(e){et=!1}return et};var es={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&eo())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:o}=t;o&&eo()&&window.sessionStorage.setItem(o,e)}},ei={name:"navigator",lookup(e){let t=[];if("u">typeof navigator){let{languages:e,userLanguage:o,language:s}=navigator;if(e)for(let o=0;o<e.length;o++)t.push(e[o]);o&&t.push(o),s&&t.push(s)}return t.length>0?t:void 0}},ea={name:"htmlTag",lookup(e){let t,{htmlTag:o}=e,s=o||("u">typeof document?document.documentElement:null);return s&&"function"==typeof s.getAttribute&&(t=s.getAttribute("lang")),t}},er={name:"path",lookup(e){let{lookupFromPathIndex:t}=e;if("u"<typeof window)return;let o=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(o))return o["number"==typeof t?t:0]?.replace("/","")}},en={name:"subdomain",lookup(e){let{lookupFromSubdomainIndex:t}=e,o="u">typeof window&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(o)return o["number"==typeof t?t+1:1]}};let el=!1;try{document.cookie,el=!0}catch(e){}let ed=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];el||ed.splice(1,1);class ec{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{languageUtils:{}},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e,this.options=function(e){return V.call(j.call(arguments,1),t=>{if(t)for(let o in t)void 0===e[o]&&(e[o]=t[o])}),e}(t,this.options||{},{order:ed,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e}),"string"==typeof this.options.convertDetectedLanguage&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=e=>e.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=o,this.addDetector(Y),this.addDetector(J),this.addDetector(ee),this.addDetector(es),this.addDetector(ei),this.addDetector(ea),this.addDetector(er),this.addDetector(en),this.addDetector(Q)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.order,t=[];return(e.forEach(e=>{if(this.detectors[e]){let o=this.detectors[e].lookup(this.options);o&&"string"==typeof o&&(o=[o]),o&&(t=t.concat(o))}}),t=t.filter(e=>null!=e&&!("string"==typeof e&&[/<\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(e)))).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes)?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.caches;!t||this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)})}}ec.type="languageDetector",W.use(ec).use(H.initReactI18next).init({resources:{"en-US":{translation:{common:{login:"Login",logout:"Logout",accountOptions:"Settings",account:"Account",integration:"Integration",email:"Email",password:"Password",welcome:"Welcome back to LangBot 👋",continueToLogin:"Login to continue",loginSuccess:"Login successful",loginFailed:"Login failed, please check your email and password",enterEmail:"Enter email address",enterPassword:"Enter password",invalidEmail:"Please enter a valid email address",emptyPassword:"Please enter your password",language:"Language",helpDocs:"Get Help",featureRequest:"Feature Request",create:"Create",edit:"Edit",delete:"Delete",add:"Add",select:"Select",cancel:"Cancel",submit:"Submit",error:"Error",success:"Success",save:"Save",saving:"Saving...",confirm:"Confirm",confirmDelete:"Confirm Delete",deleteConfirmation:"Are you sure you want to delete this?",selectOption:"Select an option",required:"Required",enable:"Enable",name:"Name",description:"Description",icon:"Icon",close:"Close",deleteSuccess:"Deleted successfully",deleteError:"Delete failed: ",addRound:"Add Round",copy:"Copy",copySuccess:"Copy Successfully",copyFailed:"Copy Failed",test:"Test",forgotPassword:"Forgot Password?",loading:"Loading...",or:"or",loginWithSpace:"Login with Space",spaceLoginRecommended:"Recommended: Use official stable model APIs and cloud services",loginLocal:"Login with local account",loginWithPassword:"Login with password",spaceLoginTitle:"Login with Space",spaceLoginDescription:"Scan the QR code or visit the link below to authorize",spaceLoginUserCode:"Your code",spaceLoginExpires:"Code expires in {{seconds}} seconds",spaceLoginWaiting:"Waiting for authorization...",spaceLoginSuccess:"Authorization successful",spaceLoginFailed:"Space login failed",spaceLoginExpired:"Authorization code expired, please try again",spaceLoginCancel:"Cancel",spaceLoginVisitLink:"Visit link",spaceLoginProcessing:"Logging in with Space",spaceLoginProcessingDescription:"Please wait while we complete your login...",spaceLoginSuccessDescription:"Redirecting to LangBot...",spaceLoginError:"Login Failed",spaceLoginNoCode:"Missing authorization code",backToLogin:"Back to Login",backToHome:"Back to Home",spaceAccountCannotChangePassword:"Space accounts cannot change password here",theme:"Theme",changePassword:"Change Password",currentPassword:"Current Password",newPassword:"New Password",confirmNewPassword:"Confirm New Password",enterCurrentPassword:"Enter current password",enterNewPassword:"Enter new password",enterConfirmPassword:"Confirm new password",currentPasswordRequired:"Current password is required",newPasswordRequired:"New password is required",confirmPasswordRequired:"Confirm password is required",passwordsDoNotMatch:"Passwords do not match",changePasswordSuccess:"Password changed successfully",changePasswordFailed:"Failed to change password, please check your current password",apiIntegration:"API Integration",apiKeys:"API Keys",manageApiIntegration:"Manage API Integration",manageApiKeys:"Manage API Keys",createApiKey:"Create API Key",apiKeyName:"API Key Name",apiKeyDescription:"API Key Description",apiKeyValue:"API Key Value",apiKeyCreated:"API key created successfully",apiKeyDeleted:"API key deleted successfully",apiKeyDeleteConfirm:"Are you sure you want to delete this API key?",apiKeyNameRequired:"API key name is required",copyApiKey:"Copy API Key",apiKeyCopied:"API key copied to clipboard",noApiKeys:"No API keys configured",apiKeyHint:"API keys allow external systems to access LangBot Service APIs",webhooks:"Webhooks",createWebhook:"Create Webhook",webhookName:"Webhook Name",webhookUrl:"Webhook URL",webhookDescription:"Webhook Description",webhookEnabled:"Enabled",webhookCreated:"Webhook created successfully",webhookDeleted:"Webhook deleted successfully",webhookDeleteConfirm:"Are you sure you want to delete this webhook?",webhookNameRequired:"Webhook name is required",webhookUrlRequired:"Webhook URL is required",noWebhooks:"No webhooks configured",webhookHint:"Webhooks allow LangBot to push person and group message events to external systems",actions:"Actions",apiKeyCreatedMessage:"Please copy this API key, if the button is invalid, please copy manually.",none:"None"},notFound:{title:"Page not found",description:"The page you are looking for does not exist.",back:"Back",home:"Home",help:"Get Help"},models:{title:"Models",description:"Configure and manage models that can be used in pipelines",createModel:"Create Model",editModel:"Edit Model",getModelListError:"Failed to get model list: ",modelName:"Model Name",modelProvider:"Model Provider",modelBaseURL:"Base URL",modelAbilities:"Model Abilities",saveSuccess:"Saved successfully",saveError:"Save failed: ",createSuccess:"Created successfully",createError:"Creation failed: ",deleteSuccess:"Deleted successfully",deleteError:"Delete failed: ",deleteConfirmation:"Are you sure you want to delete this model?",modelNameRequired:"Model name cannot be empty",modelProviderRequired:"Model provider cannot be empty",requestURLRequired:"Request URL cannot be empty",apiKeyRequired:"API Key cannot be empty",keyNameRequired:"Key name cannot be empty",mustBeValidNumber:"Must be a valid number",mustBeTrueOrFalse:"Must be true or false",requestURL:"Request URL",apiKey:"API Key",abilities:"Abilities",selectModelAbilities:"Select model abilities",visionAbility:"Vision Ability",functionCallAbility:"Function Call",extraParameters:"Extra Parameters",addParameter:"Add Parameter",keyName:"Key Name",type:"Type",value:"Value",string:"String",number:"Number",boolean:"Boolean",selectModelProvider:"Select Model Provider",modelProviderDescription:"Please fill in the model name provided by the provider",modelManufacturer:"Model Manufacturer",aggregationPlatform:"Aggregation Platform",selfDeployed:"Self-deployed",builtin:"Built-in",selectModel:"Select Model",testSuccess:"Test successful",testError:"Test failed, please check your model configuration",llmModels:"LLM Models",localProvider:"Local",localProviderDescription:"Models configured and managed locally",spaceProviderDescription:"Models synced from your Space account",spaceDisabledForLocalAccount:"Login with Space to use cloud models",syncModels:"Sync",syncSuccess:"Sync complete: {{created}} created, {{updated}} updated",syncError:"Sync failed: ",spaceModelReadOnly:"Space models are read-only",noSpaceModels:"No Space models. Click Sync to fetch models from Space.",noLocalModels:"No local models. Click Create to add a model.",providerCount:"{{count}} providers",addModel:"Add Model",addLLMModel:"Add LLM Model",addEmbeddingModel:"Add Embedding Model",provider:"Provider",existingProvider:"Existing Provider",newProvider:"New Provider",selectProvider:"Select Provider",requester:"Provider Type",selectRequester:"Select Provider Type",langbotModelsDescription:"Cloud models powered by LangBot Space",credits:"Credits",loginWithSpace:"Login with Space",loginToUseModels:"Login with Space to use cloud models",noModels:"No models configured",editProvider:"Edit Provider",addProvider:"Add Provider",addProviderHint:"Add providers to use models from other sources",addProviderHintSimple:"Add providers to use models",noProviders:"No providers yet",providerName:"Provider Name",providerNameRequired:"Provider name is required",requesterRequired:"Provider type is required",providerSaved:"Provider saved",providerCreated:"Provider created",providerSaveError:"Failed to save provider: ",providerDeleted:"Provider deleted",providerDeleteError:"Failed to delete provider: ",deleteProviderConfirmation:"Are you sure you want to delete this provider?",loadError:"Failed to load data",chat:"Chat",embedding:"Embedding",modelsCount:"{{count}} model(s)",expandModels:"Expand",collapseModels:"Collapse"},bots:{title:"Bots",description:"Create and manage bots, which are the entry points for LangBot to connect with various platforms",createBot:"Create Bot",editBot:"Edit Bot",getBotListError:"Failed to get bot list: ",botName:"Bot Name",botDescription:"Bot Description",botNameRequired:"Bot name cannot be empty",botDescriptionRequired:"Bot description cannot be empty",adapterRequired:"Adapter cannot be empty",defaultDescription:"A bot",getBotConfigError:"Failed to get bot configuration: ",saveSuccess:"Saved successfully",saveError:"Save failed: ",createSuccess:"Created successfully. Please enable or modify the bound pipeline",createError:"Creation failed: ",deleteSuccess:"Deleted successfully",deleteError:"Delete failed: ",deleteConfirmation:"Are you sure you want to delete this bot?",platformAdapter:"Platform/Adapter Selection",selectAdapter:"Select Adapter",adapterConfig:"Adapter Configuration",bindPipeline:"Bind Pipeline",selectPipeline:"Select Pipeline",selectBot:"Select Bot",botLogTitle:"Bot Log",enableAutoRefresh:"Enable Auto Refresh",session:"Session",yesterday:"Yesterday",earlier:"Earlier",dateFormat:"{{month}}/{{day}}",setBotEnableError:"Failed to set bot enable status",log:"Log",configuration:"Configuration",logs:"Logs",webhookUrl:"Webhook Callback URL",webhookUrlCopied:"Webhook URL copied",webhookUrlHint:"Click the input to select all, then press Ctrl+C (Mac: Cmd+C) to copy, or click the button",logLevel:"Log Level",allLevels:"All Levels",selectLevel:"Select Level",levelsSelected:"levels selected",viewDetailedLogs:"View Detailed Logs",viewDetails:"Details",collapse:"Collapse",imagesAttached:"image(s) attached",sessionMonitor:{title:"Sessions",sessions:"Sessions",noSessions:"No sessions found",selectSession:"Select a session to view messages",noMessages:"No messages in this session",messages:"messages",messageCount:"{{count}} messages",loading:"Loading...",loadingSessions:"Loading sessions...",loadingMessages:"Loading messages...",user:"User",variables:"Variables",platform:"Platform",lastActive:"Last active",refresh:"Refresh",active:"Active",inactive:"Inactive"}},plugins:{title:"Extensions",description:"Install and configure plugins to extend functionality, please select them in the pipeline configuration",createPlugin:"Create Plugin",editPlugin:"Edit Plugin",installed:"Installed",marketplace:"Marketplace",arrange:"Sort Plugins",install:"Install",installPlugin:"Install Plugin",onlySupportGithub:"Currently only supports installation from GitHub",enterGithubLink:"Enter GitHub link of the plugin",installing:"Installing plugin...",installSuccess:"Plugin installed successfully",installFailed:"Plugin installation failed:",searchPlugin:"Search plugins",sortBy:"Sort by",mostStars:"Most stars",recentlyAdded:"Recently added",recentlyUpdated:"Recently updated",noMatchingPlugins:"No matching plugins found",loading:"Loading...",getPluginListError:"Failed to get plugin list:",noPluginInstalled:"No plugins installed",pluginConfig:"Plugin Configuration",pluginSort:"Plugin Sort",pluginSortDescription:"Plugin order affects the processing order within the same event, please drag the plugin card to sort",pluginSortSuccess:"Plugin sort successful",pluginSortError:"Plugin sort failed: ",pluginNoConfig:"The plugin has no configuration items.",systemDisabled:"Plugin System Disabled",systemDisabledDesc:"Plugin system is not enabled, please modify the configuration according to the documentation",connectionError:"Plugin System Connection Error",connectionErrorDesc:"Please check the plugin system configuration or contact the administrator.",errorDetails:"Error Details",loadingStatus:"Checking plugin system status...",failedToGetStatus:"Failed to get plugin system status",pluginSystemNotReady:"Plugin system is not ready, cannot perform this operation",debugInfo:"Debug Info",debugInfoTitle:"Plugin Debug Information",debugUrl:"Debug URL",debugKey:"Debug Key",noDebugKey:"(Not Set)",debugKeyDisabled:"Debug key is not set, plugin debugging does not require authentication",failedToGetDebugInfo:"Failed to get debug information",copiedToClipboard:"Copied to clipboard",deleting:"Deleting...",deletePlugin:"Delete Plugin",cancel:"Cancel",saveConfig:"Save Config",saving:"Saving...",confirmDeletePlugin:"Are you sure you want to delete the plugin ({{author}}/{{name}})?",deleteDataCheckbox:"Also delete plugin configuration and persistence storage",confirmDelete:"Confirm Delete",deleteError:"Delete failed: ",close:"Close",deleteConfirm:"Delete Confirmation",deleteSuccess:"Delete successful",modifyFailed:"Modify failed: ",componentName:{Tool:"Tool",EventListener:"Event Listener",Command:"Command",KnowledgeRetriever:"Knowledge Retriever"},uploadLocal:"Upload Local",debugging:"Debugging",uploadLocalPlugin:"Upload Local Plugin",dragToUpload:"Drag plugin file here to upload",unsupportedFileType:"Unsupported file type, only .lbpkg and .zip files are supported",uploadingPlugin:"Uploading plugin...",uploadSuccess:"Upload successful",uploadFailed:"Upload failed",selectFileToUpload:"Select plugin file to upload",askConfirm:'Are you sure to install plugin "{{name}}" ({{version}})?',fromGithub:"From GitHub",fromLocal:"From Local",fromMarketplace:"From Marketplace",componentsList:"Components: ",noComponents:"No components",delete:"Delete Plugin",update:"Update Plugin",new:"New",updateConfirm:"Update Confirmation",confirmUpdatePlugin:"Are you sure you want to update the plugin ({{author}}/{{name}})?",confirmUpdate:"Confirm Update",updating:"Updating...",updateSuccess:"Plugin updated successfully",updateError:"Update failed: ",saveConfigSuccessNormal:"Configuration saved successfully",saveConfigError:"Configuration save failed: ",config:"Configuration",readme:"Documentation",viewSource:"View Source",loadingReadme:"Loading documentation...",noReadme:"This plugin does not provide README documentation",fileUpload:{tooLarge:"File size exceeds 10MB limit",success:"File uploaded successfully",failed:"File upload failed",uploading:"Uploading...",chooseFile:"Choose File",addFile:"Add File"},installFromGithub:"From GitHub",enterRepoUrl:"Enter GitHub repository URL",repoUrlPlaceholder:"e.g., https://github.com/owner/repo",fetchingReleases:"Fetching releases...",selectRelease:"Select Release",noReleasesFound:"No releases found",fetchReleasesError:"Failed to fetch releases: ",selectAsset:"Select file to install",noAssetsFound:"No .lbpkg files available in this release",fetchAssetsError:"Failed to fetch assets: ",backToReleases:"Back to releases",backToRepoUrl:"Back to repository URL",backToAssets:"Back to assets",releaseTag:"Tag: {{tag}}",releaseName:"Name: {{name}}",publishedAt:"Published at: {{date}}",prerelease:"Pre-release",assetSize:"Size: {{size}}",confirmInstall:"Confirm Install",installFromGithubDesc:"Install plugin from GitHub Release"},market:{searchPlaceholder:"Search plugins...",searchResults:"Found {{count}} plugins",totalPlugins:"Total {{count}} plugins",noPlugins:"No plugins available",noResults:"No relevant plugins found",loadingMore:"Loading more...",loading:"Loading...",allLoaded:"All plugins displayed",install:"Install",installConfirm:'Are you sure you want to install plugin "{{name}}" ({{version}})?',downloadComplete:'Plugin "{{name}}" download completed',installFailed:"Installation failed, please try again later",loadFailed:"Failed to get plugin list, please try again later",noDescription:"No description available",notFound:"Plugin information not found",sortBy:"Sort by",sort:{recentlyAdded:"Recently Added",recentlyUpdated:"Recently Updated",mostDownloads:"Most Downloads",leastDownloads:"Least Downloads"},downloads:"downloads",download:"Download",repository:"Repository",downloadFailed:"Download failed",noReadme:"This plugin does not provide README documentation",description:"Description",tagLabel:"Tags",submissionTitle:"You have a plugin submission under review: {{name}}",submissionPending:"Your plugin submission is under review: {{name}}",submissionApproved:"Your plugin submission has been approved: {{name}}",submissionRejected:"Your plugin submission has been rejected: {{name}}",clickToRevoke:"Revoke",revokeSuccess:"Revoke success",revokeFailed:"Revoke failed",submissionDetails:"Plugin Submission Details",markAsRead:"Mark as Read",markAsReadSuccess:"Marked as read",markAsReadFailed:"Mark as read failed",filterByComponent:"Component",allComponents:"All Components",requestPlugin:"Request Plugin",viewDetails:"View Details",tags:{filterByTags:"Filter by Tags",selected:"selected",selectTags:"Select Tags",clearAll:"Clear All",noTags:"No tags available"}},mcp:{title:"MCP",createServer:"Add MCP Server",editServer:"Edit MCP Server",deleteServer:"Delete MCP Server",confirmDeleteServer:"Are you sure you want to delete this MCP server?",confirmDeleteTitle:"Delete MCP Server",getServerListError:"Failed to get MCP server list: ",serverName:"Server Name",serverMode:"Connection Mode",selectMode:"Select Mode",stdio:"Stdio Mode",sse:"SSE Mode",http:"HTTP Mode",noServerInstalled:"No MCP servers configured",serverNameRequired:"Server name cannot be empty",commandRequired:"Command cannot be empty",urlRequired:"URL cannot be empty",timeoutMustBePositive:"Timeout must be a positive number",command:"Command",args:"Arguments",env:"Environment Variables",url:"URL",headers:"Headers",timeout:"Timeout",addArgument:"Add Argument",addEnvVar:"Add Environment Variable",addHeader:"Add Header",keyName:"Key Name",value:"Value",testing:"Testing...",connecting:"Connecting...",testSuccess:"Test successful",testFailed:"Test failed: ",testError:"Test error",refreshSuccess:"Refresh successful",refreshFailed:"Refresh failed: ",connectionSuccess:"Connection successful",connectionFailed:"Connection failed, please check URL",connectionFailedStatus:"Connection Failed",toolsFound:"tools",unknownError:"Unknown error",noToolsFound:"No tools found",parseResultFailed:"Failed to parse test result",noResultReturned:"Test returned no result",getTaskFailed:"Failed to get task status",noTaskId:"No task ID obtained",deleteSuccess:"Deleted successfully",deleteFailed:"Delete failed: ",deleteError:"Delete failed: ",saveSuccess:"Saved successfully",saveError:"Save failed: ",createSuccess:"Created successfully",createFailed:"Creation failed: ",createError:"Creation failed: ",loadFailed:"Load failed",modifyFailed:"Modify failed: ",toolCount:"Tools: {{count}}",statusConnected:"Connected",statusDisconnected:"Disconnected",statusError:"Connection Error",statusDisabled:"Disabled",loading:"Loading...",starCount:"Stars: {{count}}",install:"Install",installFromGithub:"Install MCP Server from GitHub",add:"Add",name:"Name",nameRequired:"Name cannot be empty",sseTimeout:"SSE Timeout",sseTimeoutDescription:"Timeout for establishing SSE connection",extraParametersDescription:"Additional parameters for configuring specific MCP server behavior",timeoutMustBeNumber:"Timeout must be a number",timeoutNonNegative:"Timeout cannot be negative",sseTimeoutMustBeNumber:"SSE timeout must be a number",sseTimeoutNonNegative:"SSE timeout cannot be negative",updateSuccess:"Updated successfully",updateFailed:"Update failed: "},pipelines:{title:"Pipelines",description:"Pipelines define the processing flow for message events, used to bind to bots",createPipeline:"Create Pipeline",editPipeline:"Edit Pipeline",chat:"Chat",configuration:"Configuration",debugChat:"Debug Chat",getPipelineListError:"Failed to get pipeline list: ",daysAgo:"days ago",today:"Today",updateTime:"Updated ",defaultBadge:"Default",sortBy:"Sort by",newestCreated:"Newest Created",earliestCreated:"Earliest Created",recentlyEdited:"Recently Edited",earliestEdited:"Earliest Edited",basicInfo:"Basic",aiCapabilities:"AI",triggerConditions:"Trigger",safetyControls:"Safety",outputProcessing:"Output",nameRequired:"Name cannot be empty",descriptionRequired:"Description cannot be empty",createSuccess:"Created successfully. Please edit pipeline parameters",createError:"Creation failed: ",saveSuccess:"Saved successfully",saveError:"Save failed: ",copySuffix:" Copy",deleteConfirmation:"Are you sure you want to delete this pipeline? Bots bound to this pipeline will not work.",defaultPipelineCannotDelete:"Default pipeline cannot be deleted",deleteSuccess:"Deleted successfully",deleteError:"Delete failed: ",copyConfirmTitle:"Confirm Copy",copyConfirmation:"Are you sure you want to copy this pipeline? This will create a new pipeline with all configurations.",unsavedChanges:"You have unsaved changes",extensions:{title:"Extensions",loadError:"Failed to load plugins",saveSuccess:"Saved successfully",saveError:"Save failed",noPluginsAvailable:"No plugins available",disabled:"Disabled",noPluginsSelected:"No plugins selected",addPlugin:"Add Plugin",selectPlugins:"Select Plugins",pluginsTitle:"Plugins",mcpServersTitle:"MCP Servers",noMCPServersSelected:"No MCP servers selected",addMCPServer:"Add MCP Server",selectMCPServers:"Select MCP Servers",toolCount:"{{count}} tools",noPluginsInstalled:"No installed plugins",noMCPServersConfigured:"No configured MCP servers",selectAll:"Select All",enableAllPlugins:"Enable All Plugins",enableAllMCPServers:"Enable All MCP Servers",allPluginsEnabled:"All plugins enabled",allMCPServersEnabled:"All MCP servers enabled"},debugDialog:{title:"Pipeline Chat",selectPipeline:"Select Pipeline",sessionType:"Session Type",privateChat:"Private Chat",groupChat:"Group Chat",send:"Send",reset:"Reset Conversation",inputPlaceholder:"Send {{type}} message...",noMessages:"No messages",userMessage:"User",botMessage:"Bot",sendFailed:"Send failed",resetSuccess:"Conversation reset successfully",resetFailed:"Reset failed",loadMessagesFailed:"Failed to load messages",loadPipelinesFailed:"Failed to load pipelines",atTips:"Mention the bot",streaming:"Streaming",streamOutput:"Stream",connected:"WebSocket connected",disconnected:"WebSocket disconnected",connectionError:"WebSocket connection error",connectionFailed:"WebSocket connection failed",notConnected:"WebSocket not connected, please try again later",imageUploadFailed:"Image upload failed",reply:"Reply",replyTo:"Reply to",showMarkdown:"Show Markdown",showRaw:"Show Raw"},monitoring:{title:"Monitoring",description:"View execution logs and errors for this pipeline (last 24 hours)",detailedLogs:"Detailed Logs"}},knowledge:{title:"Knowledge",createKnowledgeBase:"Create Knowledge Base",editKnowledgeBase:"Edit Knowledge Base",selectKnowledgeBase:"Select Knowledge Base",selectKnowledgeBases:"Select Knowledge Bases",addKnowledgeBase:"Add Knowledge Base",noKnowledgeBaseSelected:"No knowledge bases selected",empty:"Empty",editDocument:"Documents",description:"Configuring knowledge bases for improved LLM responses",metadata:"Metadata",documents:"Documents",kbNameRequired:"Knowledge base name cannot be empty",kbDescriptionRequired:"Knowledge base description cannot be empty",embeddingModelUUIDRequired:"Embedding model cannot be empty",daysAgo:"days ago",today:"Today",kbName:"Knowledge Base Name",kbDescription:"Knowledge Base Description",topK:"Top K",topKRequired:"Top K cannot be empty",topKMax:"Top K maximum value is 30",topKdescription:"Used to specify the number of relevant documents to retrieve, ranging from 1 to 30.",defaultDescription:"A knowledge base",embeddingModelUUID:"Embedding Model",selectEmbeddingModel:"Select Embedding Model",embeddingModelDescription:"Used to vectorize the text, you can configure it in the Models page",updateTime:"Updated ",cannotChangeEmbeddingModel:"Knowledge base created cannot be modified embedding model",updateKnowledgeBaseSuccess:"Knowledge base updated successfully",updateKnowledgeBaseFailed:"Knowledge base update failed",documentsTab:{name:"Name",status:"Status",noResults:"No documents",dragAndDrop:"Drag and drop files here or click to upload",uploading:"Uploading...",supportedFormats:"Supports PDF, Word, TXT, Markdown, HTML, ZIP and other document formats",uploadSuccess:"File uploaded successfully!",uploadError:"File upload failed, please try again",uploadingFile:"Uploading file...",fileSizeExceeded:"File size exceeds 10MB limit. Please split into smaller files.",actions:"Actions",delete:"Delete File",fileDeleteSuccess:"File deleted successfully",fileDeleteFailed:"File deletion failed",processing:"Processing",completed:"Completed",failed:"Failed"},deleteKnowledgeBaseConfirmation:"Are you sure you want to delete this knowledge base? All documents in this knowledge base will be deleted.",retrieve:"Retrieve Test",retrieveTest:"Retrieve Test",query:"Query",queryPlaceholder:"Enter query text...",distance:"Distance",content:"Content",fileName:"File Name",noResults:"No results",retrieveError:"Retrieve failed",builtIn:"Built-in",external:"External",addExternal:"Add External Knowledge Base",createExternalSuccess:"External knowledge base created successfully",updateExternalSuccess:"External knowledge base updated successfully",deleteExternalSuccess:"External knowledge base deleted successfully",retriever:"Retriever",selectRetriever:"Select a retriever...",retrieverConfiguration:"Retriever Configuration",retrieverInstallInfo:"You can install Knowledge Retriever plugins from",retrieverMarketLink:"here"},register:{title:"Initialize LangBot 👋",description:"This is your first time starting LangBot",adminAccountNote:"The account you use here will be set as the administrator account",register:"Register",initWithSpace:"Initialize with Space",spaceRecommended:"Recommended: Use official stable model APIs and cloud services",spaceInfoTip1:"Space provides unified account authentication services without uploading any of your sensitive information.",spaceInfoTip2:"Logging in with a Space account gives you access to LangBot Models and other cloud services, including free model call credits to help you get started quickly.",spaceInfoTip3:"Your login method does not affect other features. You can configure and use models from other sources at any time.",registerLocal:"Register local account",registerWithPassword:"Register with email and password",initSuccess:"Initialization successful, please login",initFailed:"Initialization failed: "},resetPassword:{title:"Reset Password 🔐",description:"Enter your recovery key and new password to reset your account password",recoveryKey:"Recovery Key",recoveryKeyDescription:"Stored in `system.recovery_key` of config file `data/config.yaml`",newPassword:"New Password",enterRecoveryKey:"Enter recovery key",enterNewPassword:"Enter new password",recoveryKeyRequired:"Recovery key cannot be empty",newPasswordRequired:"New password cannot be empty",resetPassword:"Reset Password",resetting:"Resetting...",resetSuccess:"Password reset successfully, please login",resetFailed:"Password reset failed, please check your email and recovery key",backToLogin:"Back to Login"},embedding:{description:"Manage Embedding models for text vectorization",createModel:"Create Embedding Model",editModel:"Edit Embedding Model",getModelListError:"Failed to get Embedding model list: ",embeddingModels:"Embedding",extraParametersDescription:"Will be attached to the request body, such as encoding_format, dimensions, etc."},llm:{description:"Manage LLM models for conversation generation",llmModels:"LLM",extraParametersDescription:"Will be attached to the request body, such as max_tokens, temperature, top_p, etc."},version:{newVersionAvailable:"New Version Available",viewUpdateGuide:"View Update Guide",noReleaseNotes:"No release notes available"},account:{settings:"Account Settings",setPassword:"Set Password",passwordSetSuccess:"Password set successfully",passwordStatus:"Local Password",passwordSet:"Set",passwordNotSet:"Not Set",passwordSetDescription:"Password is set, you can login with email and password",spaceStatus:"Space Account",spaceBound:"Bound",spaceNotBound:"Not Bound",spaceBoundDescription:"Space account bound, official model APIs and cloud services available",bindSpace:"Bind Space Account",bindSpaceDescription:"Bind to use official model APIs and cloud services",bindSpaceButton:"Bind",bindSpaceConfirmTitle:"Confirm Binding",bindSpaceConfirmDescription:"You are about to bind your local instance to a Space account",bindSpaceWarning:"After binding, your login email will be changed from {{localEmail}} to the Space account email.",bindSpaceSuccess:"Space account bound successfully",bindSpaceFailed:"Failed to bind Space account",bindSpaceInvalidState:"Invalid bind request. Please try again from account settings.",setPasswordHint:"Set a password to login with email and password",spaceEmailMismatch:"Space login email does not match the local account email"},monitoring:{title:"Monitoring",description:"Monitor bot activities, LLM calls, and system performance",overview:"Overview",totalMessages:"Total Messages",llmCallsCount:"LLM Calls",modelCallsCount:"Model Calls",successRate:"Success Rate",activeSessions:"Active Sessions",last24Hours:"Last 24 hours",filters:{title:"Filters",bot:"Bot",pipeline:"Pipeline",allBots:"All Bots",selectBot:"Select Bot",allPipelines:"All Pipelines",selectPipeline:"Select Pipeline",loading:"Loading...",timeRange:"Time Range",customRange:"Custom Range",from:"From",to:"To",apply:"Apply",reset:"Reset Filters",lastHour:"Last 1 hour",last6Hours:"Last 6 hours",last24Hours:"Last 24 hours",last7Days:"Last 7 days",last30Days:"Last 30 days"},tabs:{messages:"Message Records",llmCalls:"LLM Calls",embeddingCalls:"Embedding Calls",modelCalls:"Model Calls",sessions:"Session Analysis",errors:"Error Logs"},messageList:{timestamp:"Timestamp",bot:"Bot",pipeline:"Pipeline",message:"Message",sessionId:"Session ID",status:"Status",actions:"Actions",viewDetails:"View Details",copyId:"Copy ID",noMessages:"No messages found",noMessagesDescription:"Try adjusting your filters or check back later",loading:"Loading messages...",loadMore:"Load More",autoRefresh:"Auto Refresh",platform:"Role",user:"User",level:"Level",runner:"Runner",viewConversation:"View Conversation"},llmCalls:{title:"LLM Calls",model:"Model",tokens:"Tokens",duration:"Duration",cost:"Cost",noData:"No LLM calls found",inputTokens:"Input Tokens",outputTokens:"Output Tokens",totalTokens:"Total Tokens",avgDuration:"Avg Duration",calls:"Calls"},embeddingCalls:{title:"Embedding Calls",model:"Model",tokens:"Tokens",duration:"Duration",noData:"No embedding calls found",promptTokens:"Prompt Tokens",totalTokens:"Total Tokens",inputCount:"Input Count",knowledgeBase:"Knowledge Base",queryText:"Query"},modelCalls:{title:"Model Calls",llmModel:"LLM",embeddingModel:"Embedding",embeddingCall:"Embedding",retrieveCall:"Retrieve",noData:"No model calls found"},sessions:{sessionId:"Session ID",messageCount:"Messages",duration:"Duration",lastActivity:"Last Activity",noSessions:"No sessions found",startTime:"Start Time",messageStats:"Message Statistics",totalMessages:"Total Messages",successMessages:"Successful",errorMessages:"Failed",llmStats:"LLM Statistics",noData:"Session not found"},errors:{title:"Errors",errorType:"Error Type",errorMessage:"Error Message",occurredAt:"Occurred At",noErrors:"No errors found",stackTrace:"Stack Trace"},queries:{title:"Queries"},messageDetails:{noData:"No LLM calls or errors for this query"},queryVariables:{title:"Query Variables"},trafficChart:{title:"Traffic Overview",messages:"Messages",llmCalls:"LLM Calls",noData:"No traffic data available"},viewMonitoring:"View Monitoring",refreshData:"Refresh Data",exportData:"Export Data",export:{title:"Export Data",exporting:"Exporting...",messages:"Messages",llmCalls:"LLM Calls",embeddingCalls:"Embedding Calls",errors:"Error Logs",sessions:"Sessions"}},limitation:{maxBotsReached:"Maximum number of bots ({{max}}) reached. Please remove an existing bot before creating a new one.",maxPipelinesReached:"Maximum number of pipelines ({{max}}) reached. Please remove an existing pipeline before creating a new one.",maxExtensionsReached:"Maximum number of extensions ({{max}}) reached. Please remove an existing MCP server or plugin before adding a new one."}}},"zh-Hans":{translation:{common:{login:"登录",logout:"退出登录",accountOptions:"系统设置",account:"账户",integration:"连接",email:"邮箱",password:"密码",welcome:"欢迎回到 LangBot 👋",continueToLogin:"登录以继续",loginSuccess:"登录成功",loginFailed:"登录失败,请检查邮箱和密码是否正确",enterEmail:"输入邮箱地址",enterPassword:"输入密码",invalidEmail:"请输入有效的邮箱地址",emptyPassword:"请输入密码",language:"语言",helpDocs:"帮助文档",featureRequest:"需求建议",create:"创建",edit:"编辑",delete:"删除",add:"添加",select:"请选择",cancel:"取消",submit:"提交",error:"错误",success:"成功",save:"保存",saving:"保存中...",confirm:"确认",confirmDelete:"确认删除",deleteConfirmation:"你确定要删除这个吗?",selectOption:"选择一个选项",required:"必填",enable:"是否启用",name:"名称",description:"描述",icon:"图标",close:"关闭",deleteSuccess:"删除成功",deleteError:"删除失败:",addRound:"添加回合",copy:"复制",copySuccess:"复制成功",copyFailed:"复制失败",test:"测试",forgotPassword:"忘记密码?",loading:"加载中...",or:"或",loginWithSpace:"通过 Space 登录",spaceLoginRecommended:"推荐:使用官方提供的稳定模型 API 和云服务",loginLocal:"使用本地账号登录",loginWithPassword:"通过密码登录",spaceLoginTitle:"通过 Space 登录",spaceLoginDescription:"扫描二维码或访问下方链接进行授权",spaceLoginUserCode:"您的验证码",spaceLoginExpires:"验证码将在 {{seconds}} 秒后过期",spaceLoginWaiting:"等待授权中...",spaceLoginSuccess:"授权成功",spaceLoginFailed:"Space 登录失败",spaceLoginExpired:"验证码已过期,请重试",spaceLoginCancel:"取消",spaceLoginVisitLink:"访问链接",spaceLoginProcessing:"正在通过 Space 登录",spaceLoginProcessingDescription:"请稍候,正在完成登录...",spaceLoginSuccessDescription:"正在跳转到 LangBot...",spaceLoginError:"登录失败",spaceLoginNoCode:"缺少授权码",backToLogin:"返回登录",backToHome:"返回首页",spaceAccountCannotChangePassword:"Space 账户无法在此修改密码",theme:"主题",changePassword:"修改密码",currentPassword:"当前密码",newPassword:"新密码",confirmNewPassword:"确认新密码",enterCurrentPassword:"输入当前密码",enterNewPassword:"输入新密码",enterConfirmPassword:"确认新密码",currentPasswordRequired:"当前密码不能为空",newPasswordRequired:"新密码不能为空",confirmPasswordRequired:"确认密码不能为空",passwordsDoNotMatch:"两次输入的密码不一致",changePasswordSuccess:"密码修改成功",changePasswordFailed:"密码修改失败,请检查当前密码是否正确",apiIntegration:"API 集成",apiKeys:"API 密钥",manageApiIntegration:"管理 API 集成",manageApiKeys:"管理 API 密钥",createApiKey:"创建 API 密钥",apiKeyName:"API 密钥名称",apiKeyDescription:"API 密钥描述",apiKeyValue:"API 密钥值",apiKeyCreated:"API 密钥创建成功",apiKeyDeleted:"API 密钥删除成功",apiKeyDeleteConfirm:"确定要删除此 API 密钥吗?",apiKeyNameRequired:"API 密钥名称不能为空",copyApiKey:"复制 API 密钥",apiKeyCopied:"API 密钥已复制到剪贴板",noApiKeys:"暂无 API 密钥",apiKeyHint:"API 密钥允许外部系统访问 LangBot 的 Service API",webhooks:"Webhooks",createWebhook:"创建 Webhook",webhookName:"Webhook 名称",webhookUrl:"Webhook URL",webhookDescription:"Webhook 描述",webhookEnabled:"是否启用",webhookCreated:"Webhook 创建成功",webhookDeleted:"Webhook 删除成功",webhookDeleteConfirm:"确定要删除此 Webhook 吗?",webhookNameRequired:"Webhook 名称不能为空",webhookUrlRequired:"Webhook URL 不能为空",noWebhooks:"暂无 Webhook",webhookHint:"Webhook 允许 LangBot 将个人消息和群消息事件推送到外部系统",actions:"操作",apiKeyCreatedMessage:"请复制此 API 密钥,若按钮无效,请手动复制。",none:"无"},notFound:{title:"页面不存在",description:"您要查找的页面似乎不存在。请检查您输入的 URL 是否正确,或者返回首页。",back:"上一级",home:"返回主页",help:"查看帮助文档"},models:{title:"模型配置",description:"配置和管理可在流水线中使用的模型",createModel:"创建对话模型",editModel:"编辑模型",getModelListError:"获取模型列表失败:",modelName:"模型名称",modelProvider:"模型提供商",modelBaseURL:"基础 URL",modelAbilities:"模型能力",saveSuccess:"保存成功",saveError:"保存失败:",createSuccess:"创建成功",createError:"创建失败:",deleteSuccess:"删除成功",deleteError:"删除失败:",deleteConfirmation:"你确定要删除这个模型吗?",modelNameRequired:"模型名称不能为空",modelProviderRequired:"模型供应商不能为空",requestURLRequired:"请求URL不能为空",apiKeyRequired:"API Key不能为空",keyNameRequired:"键名不能为空",mustBeValidNumber:"必须是有效的数字",mustBeTrueOrFalse:"必须是 true 或 false",requestURL:"请求URL",apiKey:"API Key",abilities:"能力",selectModelAbilities:"选择模型能力",visionAbility:"视觉能力",functionCallAbility:"函数调用",extraParameters:"额外参数",addParameter:"添加参数",keyName:"键名",type:"类型",value:"值",string:"字符串",number:"数字",boolean:"布尔值",selectModelProvider:"选择模型供应商",modelProviderDescription:"请填写供应商向您提供的模型名称",modelManufacturer:"模型厂商",aggregationPlatform:"中转平台",selfDeployed:"自部署",builtin:"内置",selectModel:"请选择模型",testSuccess:"测试成功",testError:"测试失败,请检查模型配置",llmModels:"对话模型",localProvider:"本地",localProviderDescription:"在本地配置和管理的模型",spaceProviderDescription:"从您的 Space 账户同步的模型",spaceDisabledForLocalAccount:"使用 Space 登录以使用云端模型",syncModels:"同步",syncSuccess:"同步完成:创建 {{created}} 个,更新 {{updated}} 个",syncError:"同步失败:",spaceModelReadOnly:"Space 模型为只读",noSpaceModels:"暂无 Space 模型。点击同步按钮从 Space 获取模型。",noLocalModels:"暂无本地模型。点击创建按钮添加模型。",providerCount:"共 {{count}} 个自定义供应商",addModel:"添加模型",addLLMModel:"添加对话模型",addEmbeddingModel:"添加嵌入模型",provider:"供应商",existingProvider:"已有供应商",newProvider:"新建供应商",selectProvider:"选择供应商",requester:"供应商类型",selectRequester:"选择供应商类型",langbotModelsDescription:"LangBot Space 提供的云端模型",credits:"积分",loginWithSpace:"通过 Space 登录",loginToUseModels:"通过 Space 登录以使用云端模型",noModels:"暂无模型",editProvider:"编辑供应商",addProvider:"添加供应商",addProviderHint:"添加自定义供应商以使用其他来源的模型",addProviderHintSimple:"添加自定义供应商以使用模型",noProviders:"暂无自定义供应商",providerName:"供应商名称",providerNameRequired:"供应商名称不能为空",requesterRequired:"供应商类型不能为空",providerSaved:"供应商已保存",providerCreated:"供应商已创建",providerSaveError:"保存供应商失败:",providerDeleted:"供应商已删除",providerDeleteError:"删除供应商失败:",deleteProviderConfirmation:"你确定要删除这个供应商吗?",loadError:"加载数据失败",chat:"对话",embedding:"嵌入",modelsCount:"{{count}} 个模型",expandModels:"展开",collapseModels:"收起"},bots:{title:"机器人",description:"创建和管理机器人,这是 LangBot 与各个平台连接的入口",createBot:"创建机器人",editBot:"编辑机器人",getBotListError:"获取机器人列表失败:",botName:"机器人名称",botDescription:"机器人描述",botNameRequired:"机器人名称不能为空",botDescriptionRequired:"机器人描述不能为空",adapterRequired:"适配器不能为空",defaultDescription:"一个机器人",getBotConfigError:"获取机器人配置失败:",saveSuccess:"保存成功",saveError:"保存失败:",createSuccess:"创建成功 请启用或修改绑定流水线",createError:"创建失败:",deleteSuccess:"删除成功",deleteError:"删除失败:",deleteConfirmation:"你确定要删除这个机器人吗?",platformAdapter:"平台/适配器选择",selectAdapter:"选择适配器",adapterConfig:"适配器配置",bindPipeline:"绑定流水线",selectPipeline:"选择流水线",selectBot:"请选择机器人",botLogTitle:"机器人日志",enableAutoRefresh:"开启自动刷新",session:"会话",yesterday:"昨天",earlier:"更久之前",dateFormat:"{{month}}月{{day}}日",setBotEnableError:"设置机器人启用状态失败",log:"日志",configuration:"配置",logs:"日志",webhookUrl:"Webhook 回调地址",webhookUrlCopied:"Webhook 地址已复制",webhookUrlHint:"点击输入框自动全选,然后按 Ctrl+C (Mac: Cmd+C) 复制,或点击右侧按钮",logLevel:"日志级别",allLevels:"全部级别",selectLevel:"选择级别",levelsSelected:"个级别已选",viewDetailedLogs:"查看详细日志",viewDetails:"详情",collapse:"收起",imagesAttached:"张图片",sessionMonitor:{title:"会话监控",sessions:"会话列表",noSessions:"暂无会话",selectSession:"选择一个会话查看消息",noMessages:"该会话暂无消息",messages:"条消息",messageCount:"{{count}} 条消息",loading:"加载中...",loadingSessions:"加载会话中...",loadingMessages:"加载消息中...",user:"用户",variables:"变量",platform:"平台",lastActive:"最近活跃",refresh:"刷新",active:"活跃",inactive:"不活跃"}},plugins:{title:"插件扩展",description:"安装和配置用于扩展功能的插件,请在流水线配置中选用",createPlugin:"创建插件",editPlugin:"编辑插件",installed:"已安装",marketplace:"插件市场",arrange:"编排",install:"安装",installPlugin:"安装插件",onlySupportGithub:"目前仅支持从 GitHub 安装",enterGithubLink:"请输入插件的Github链接",installing:"正在安装插件...",installSuccess:"插件安装成功",installFailed:"插件安装失败:",searchPlugin:"搜索插件",sortBy:"排序方式",mostStars:"最多星标",recentlyAdded:"最近新增",recentlyUpdated:"最近更新",noMatchingPlugins:"没有找到匹配的插件",loading:"加载中...",getPluginListError:"获取插件列表失败:",pluginConfig:"插件配置",noPluginInstalled:"暂未安装任何插件",pluginSort:"插件排序",pluginSortDescription:"插件顺序会影响同一事件内的处理顺序,请拖动插件卡片排序",pluginSortSuccess:"插件排序成功",pluginSortError:"插件排序失败:",pluginNoConfig:"插件没有配置项。",systemDisabled:"插件系统未启用",systemDisabledDesc:"尚未启用插件系统,请根据文档修改配置",connectionError:"插件系统连接异常",connectionErrorDesc:"请检查插件系统配置或联系管理员",errorDetails:"错误详情",loadingStatus:"正在检查插件系统状态...",failedToGetStatus:"获取插件系统状态失败",pluginSystemNotReady:"插件系统未就绪,无法执行此操作",debugInfo:"调试信息",debugInfoTitle:"插件调试信息",debugUrl:"调试地址",debugKey:"调试密钥",noDebugKey:"(未设置)",debugKeyDisabled:"未设置调试密钥,插件调试无需认证",failedToGetDebugInfo:"获取调试信息失败",copiedToClipboard:"已复制到剪贴板",deleting:"删除中...",deletePlugin:"删除插件",cancel:"取消",saveConfig:"保存配置",saving:"保存中...",confirmDeletePlugin:"你确定要删除插件({{author}}/{{name}})吗?",deleteDataCheckbox:"同时删除插件配置和持久化存储",confirmDelete:"确认删除",deleteError:"删除失败:",close:"关闭",deleteConfirm:"删除确认",deleteSuccess:"删除成功",modifyFailed:"修改失败:",componentName:{Tool:"工具",EventListener:"事件监听器",Command:"命令",KnowledgeRetriever:"知识检索"},uploadLocal:"本地上传",debugging:"调试中",uploadLocalPlugin:"上传本地插件",dragToUpload:"拖拽文件到此处上传",unsupportedFileType:"不支持的文件类型,仅支持 .lbpkg 和 .zip 文件",uploadingPlugin:"正在上传插件...",uploadSuccess:"上传成功",uploadFailed:"上传失败",selectFileToUpload:"选择要上传的插件文件",askConfirm:'确定要安装插件 "{{name}}" ({{version}}) 吗?',fromGithub:"来自 GitHub",fromLocal:"本地安装",fromMarketplace:"来自市场",componentsList:"组件: ",noComponents:"无组件",delete:"删除插件",update:"更新插件",new:"新",updateConfirm:"更新确认",confirmUpdatePlugin:"你确定要更新插件({{author}}/{{name}})吗?",confirmUpdate:"确认更新",updating:"更新中...",updateSuccess:"插件更新成功",updateError:"更新失败:",saveConfigSuccessNormal:"保存配置成功",saveConfigError:"保存配置失败:",config:"配置",readme:"文档",viewSource:"查看来源",loadingReadme:"正在加载文档...",noReadme:"该插件没有提供 README 文档",fileUpload:{tooLarge:"文件大小超过 10MB 限制",success:"文件上传成功",failed:"文件上传失败",uploading:"上传中...",chooseFile:"选择文件",addFile:"添加文件"},installFromGithub:"来自 GitHub",enterRepoUrl:"请输入 GitHub 仓库地址",repoUrlPlaceholder:"例如: https://github.com/owner/repo",fetchingReleases:"正在获取 Release 列表...",selectRelease:"选择 Release",noReleasesFound:"未找到 Release",fetchReleasesError:"获取 Release 列表失败:",selectAsset:"选择要安装的文件",noAssetsFound:"该 Release 没有可用的 .lbpkg 文件",fetchAssetsError:"获取文件列表失败:",backToReleases:"返回 Release 列表",backToRepoUrl:"返回仓库地址",backToAssets:"返回文件选择",releaseTag:"Tag: {{tag}}",releaseName:"名称: {{name}}",publishedAt:"发布于: {{date}}",prerelease:"预发布",assetSize:"大小: {{size}}",confirmInstall:"确认安装",installFromGithubDesc:"从 GitHub Release 安装插件"},market:{searchPlaceholder:"搜索插件...",searchResults:"搜索到 {{count}} 个插件",totalPlugins:"共 {{count}} 个插件",noPlugins:"暂无插件",noResults:"未找到相关插件",loadingMore:"加载更多...",loading:"加载中...",allLoaded:"已显示全部插件",install:"安装",installConfirm:'确定要安装插件 "{{name}}" ({{version}}) 吗?',downloadComplete:'插件 "{{name}}" 下载完成',installFailed:"安装失败,请稍后重试",loadFailed:"获取插件列表失败,请稍后重试",noDescription:"暂无描述",notFound:"插件信息未找到",sortBy:"排序方式",sort:{recentlyAdded:"最近新增",recentlyUpdated:"最近更新",mostDownloads:"最多下载",leastDownloads:"最少下载"},downloads:"次下载",download:"下载",repository:"代码仓库",downloadFailed:"下载失败",noReadme:"该插件没有提供 README 文档",description:"描述",tagLabel:"标签",submissionTitle:"您有插件提交正在审核中: {{name}}",submissionApproved:"您的插件提交已通过审核: {{name}}",submissionRejected:"您的插件提交已被拒绝: {{name}}",clickToRevoke:"撤回",revokeSuccess:"撤回成功",revokeFailed:"撤回失败",submissionDetails:"插件提交详情",markAsRead:"已读",markAsReadSuccess:"已标记为已读",markAsReadFailed:"标记为已读失败",filterByComponent:"组件",allComponents:"全部组件",requestPlugin:"请求插件",tags:{filterByTags:"按标签筛选",selected:"已选",selectTags:"选择标签",clearAll:"清空",noTags:"暂无标签"},viewDetails:"查看详情"},mcp:{title:"MCP",createServer:"添加 MCP 服务器",editServer:"修改 MCP 服务器",deleteServer:"删除 MCP 服务器",confirmDeleteServer:"你确定要删除此 MCP 服务器吗?",confirmDeleteTitle:"删除 MCP 服务器",getServerListError:"获取 MCP 服务器列表失败:",serverName:"服务器名称",serverMode:"连接模式",selectMode:"选择模式",stdio:"Stdio模式",sse:"SSE模式",http:"HTTP模式",noServerInstalled:"暂未配置任何 MCP 服务器",serverNameRequired:"服务器名称不能为空",commandRequired:"命令不能为空",urlRequired:"URL 不能为空",timeoutMustBePositive:"超时时间必须是正数",command:"命令",args:"参数",env:"环境变量",url:"URL地址",headers:"请求头",timeout:"超时时间",addArgument:"添加参数",addEnvVar:"添加环境变量",addHeader:"添加请求头",keyName:"键名",value:"值",testing:"测试中...",connecting:"连接中...",testSuccess:"测试成功",testFailed:"测试失败:",testError:"刷新出错",refreshSuccess:"刷新成功",refreshFailed:"刷新失败:",connectionSuccess:"连接成功",connectionFailed:"连接失败,请检查URL",connectionFailedStatus:"连接失败",toolsFound:"个工具",unknownError:"未知错误",noToolsFound:"未找到任何工具",parseResultFailed:"解析测试结果失败",noResultReturned:"测试未返回结果",getTaskFailed:"获取任务状态失败",noTaskId:"未获取到任务ID",deleteSuccess:"删除成功",deleteFailed:"删除失败:",deleteError:"删除失败:",saveSuccess:"保存成功",saveError:"保存失败:",createSuccess:"创建成功",createFailed:"创建失败:",createError:"创建失败:",loadFailed:"加载失败",modifyFailed:"修改失败:",toolCount:"工具:{{count}}",statusConnected:"已打开",statusDisconnected:"未打开",statusError:"连接错误",statusDisabled:"已禁用",loading:"加载中...",starCount:"星标:{{count}}",install:"安装",installFromGithub:"从Github安装MCP服务器",add:"添加",name:"名称",nameRequired:"名称不能为空",sseTimeout:"SSE超时时间",sseTimeoutDescription:"用于建立SSE连接的超时时间",extraParametersDescription:"额外参数,用于配置MCP服务器的特定行为",timeoutMustBeNumber:"超时时间必须是数字",timeoutNonNegative:"超时时间不能为负数",sseTimeoutMustBeNumber:"SSE超时时间必须是数字",sseTimeoutNonNegative:"SSE超时时间不能为负数",updateSuccess:"更新成功",updateFailed:"更新失败:"},pipelines:{title:"流水线",description:"流水线定义了对消息事件的处理流程,用于绑定到机器人",createPipeline:"创建流水线",editPipeline:"编辑流水线",chat:"对话",configuration:"配置",debugChat:"对话调试",getPipelineListError:"获取流水线列表失败:",daysAgo:"天前",today:"今天",updateTime:"更新于",defaultBadge:"默认",sortBy:"排序方式",newestCreated:"最新创建",earliestCreated:"最早创建",recentlyEdited:"最近编辑",earliestEdited:"最早编辑",basicInfo:"基础信息",aiCapabilities:"AI 能力",triggerConditions:"触发条件",safetyControls:"安全控制",outputProcessing:"输出处理",nameRequired:"名称不能为空",descriptionRequired:"描述不能为空",createSuccess:"创建成功 请编辑流水线详细参数",createError:"创建失败:",saveSuccess:"保存成功",saveError:"保存失败:",copySuffix:" Copy",deleteConfirmation:"你确定要删除这个流水线吗?已绑定此流水线的机器人将无法使用。",defaultPipelineCannotDelete:"默认流水线不可删除",deleteSuccess:"删除成功",deleteError:"删除失败:",copyConfirmTitle:"确认复制",copyConfirmation:"确定要复制这个流水线吗?复制将创建一个包含完整配置的新流水线。",unsavedChanges:"有未保存的更改",extensions:{title:"扩展集成",loadError:"加载插件列表失败",saveSuccess:"保存成功",saveError:"保存失败",noPluginsAvailable:"暂无可用插件",disabled:"已禁用",noPluginsSelected:"未选择任何插件",addPlugin:"添加插件",selectPlugins:"选择插件",pluginsTitle:"插件",mcpServersTitle:"MCP 服务器",noMCPServersSelected:"未选择任何 MCP 服务器",addMCPServer:"添加 MCP 服务器",selectMCPServers:"选择 MCP 服务器",toolCount:"{{count}} 个工具",noPluginsInstalled:"无已安装的插件",noMCPServersConfigured:"无已配置的 MCP 服务器",selectAll:"全选",enableAllPlugins:"启用所有插件",enableAllMCPServers:"启用所有 MCP 服务器",allPluginsEnabled:"已启用所有插件",allMCPServersEnabled:"已启用所有 MCP 服务器"},debugDialog:{title:"流水线对话",selectPipeline:"选择流水线",sessionType:"会话类型",privateChat:"私聊",groupChat:"群聊",send:"发送",reset:"重置对话",inputPlaceholder:"发送 {{type}} 消息...",noMessages:"暂无消息",userMessage:"用户",botMessage:"机器人",sendFailed:"发送失败",resetSuccess:"对话已重置",resetFailed:"重置失败",loadMessagesFailed:"加载消息失败",loadPipelinesFailed:"加载流水线失败",atTips:"提及机器人",streaming:"流式传输",streamOutput:"流式",connected:"WebSocket已连接",disconnected:"WebSocket未连接",connectionError:"WebSocket连接错误",connectionFailed:"WebSocket连接失败",notConnected:"WebSocket未连接,请稍后重试",imageUploadFailed:"图片上传失败",reply:"回复",replyTo:"回复给",showMarkdown:"渲染",showRaw:"原文"},monitoring:{title:"监控日志",description:"查看此流水线的运行记录和错误信息(最近24小时)",detailedLogs:"详细日志"}},knowledge:{title:"知识库",createKnowledgeBase:"创建知识库",editKnowledgeBase:"编辑知识库",selectKnowledgeBase:"选择知识库",selectKnowledgeBases:"选择知识库",addKnowledgeBase:"添加知识库",noKnowledgeBaseSelected:"未选择知识库",empty:"无",editDocument:"文档",description:"配置可用于提升模型回复质量的知识库",metadata:"元数据",documents:"文档",kbNameRequired:"知识库名称不能为空",kbDescriptionRequired:"知识库描述不能为空",embeddingModelUUIDRequired:"嵌入模型不能为空",daysAgo:"天前",today:"今天",kbName:"知识库名称",kbDescription:"知识库描述",topK:"召回数量",topKRequired:"召回数量不能为空",topKMax:"召回数量最大值为 30",topKdescription:"召回相关文档块的数量,取值范围为 1-30",defaultDescription:"一个知识库",embeddingModelUUID:"嵌入模型",selectEmbeddingModel:"选择嵌入模型",embeddingModelDescription:"用于向量化文本,可在模型配置页面配置",updateTime:"更新于",cannotChangeEmbeddingModel:"知识库创建后不可修改嵌入模型",updateKnowledgeBaseSuccess:"知识库更新成功",updateKnowledgeBaseFailed:"知识库更新失败",documentsTab:{name:"名称",status:"状态",noResults:"暂无文档",dragAndDrop:"拖拽文件到此处或点击上传",uploading:"上传中...",supportedFormats:"支持 PDF、Word、TXT、Markdown、HTML、ZIP 等文档格式",uploadSuccess:"文件上传成功!",uploadError:"文件上传失败,请重试",uploadingFile:"上传文件中...",fileSizeExceeded:"文件大小超过 10MB 限制,请分割成较小的文件后上传",actions:"操作",delete:"删除文件",fileDeleteSuccess:"文件删除成功",fileDeleteFailed:"文件删除失败",processing:"处理中",completed:"完成",failed:"失败"},deleteKnowledgeBaseConfirmation:"你确定要删除这个知识库吗?此知识库下的所有文档将被删除。",retrieve:"检索测试",retrieveTest:"检索测试",query:"查询",queryPlaceholder:"输入查询内容...",distance:"距离",content:"内容",fileName:"文件名",noResults:"暂无结果",retrieveError:"检索失败",builtIn:"内置",external:"外部知识库",addExternal:"添加外部知识库",createExternalSuccess:"外部知识库创建成功",updateExternalSuccess:"外部知识库更新成功",deleteExternalSuccess:"外部知识库删除成功",retriever:"检索器",selectRetriever:"选择一个检索器...",retrieverConfiguration:"检索器配置",retrieverInstallInfo:"您可以从",retrieverMarketLink:"此处安装知识检索器插件"},register:{title:"初始化 LangBot 👋",description:"这是您首次启动 LangBot",adminAccountNote:"您在此处初始化使用的账号将作为管理员账号",register:"注册",initWithSpace:"通过 Space 初始化",spaceRecommended:"推荐:使用官方提供的稳定模型 API 和云服务",spaceInfoTip1:"Space 提供统一的账户鉴权服务,不会上传您的任何敏感信息。",spaceInfoTip2:"使用 Space 账户登录可使用 LangBot Models 等云服务,您将会获得一定的免费模型调用额度帮助您快速起步。",spaceInfoTip3:"登录方式不会影响其他功能,您在任何情况下都可以配置使用其他来源的模型。",registerLocal:"注册本地账号",registerWithPassword:"通过邮箱密码组合注册",initSuccess:"初始化成功 请登录",initFailed:"初始化失败:"},resetPassword:{title:"重置密码 🔐",description:"输入恢复密钥和新的密码来重置您的账户密码",recoveryKey:"恢复密钥",recoveryKeyDescription:"存储在配置文件`data/config.yaml`的`system.recovery_key`中",newPassword:"新密码",enterRecoveryKey:"输入恢复密钥",enterNewPassword:"输入新密码",recoveryKeyRequired:"恢复密钥不能为空",newPasswordRequired:"新密码不能为空",resetPassword:"重置密码",resetting:"重置中...",resetSuccess:"密码重置成功,请登录",resetFailed:"密码重置失败,请检查邮箱和恢复密钥是否正确",backToLogin:"返回登录"},embedding:{description:"管理嵌入模型,用于向量化文本",createModel:"创建嵌入模型",editModel:"编辑嵌入模型",getModelListError:"获取嵌入模型列表失败:",embeddingModels:"嵌入模型",extraParametersDescription:"将在请求时附加到请求体中,如 encoding_format, dimensions 等"},llm:{llmModels:"对话模型",description:"管理 LLM 模型,用于对话消息生成",extraParametersDescription:"将在请求时附加到请求体中,如 max_tokens, temperature, top_p 等"},version:{newVersionAvailable:"有新版本可用",viewUpdateGuide:"查看更新方式",noReleaseNotes:"暂无更新日志"},account:{settings:"账户设置",setPassword:"设置密码",passwordSetSuccess:"密码设置成功",passwordStatus:"本地密码",passwordSet:"已设置",passwordNotSet:"未设置",passwordSetDescription:"您已设置本地密码,可使用邮箱密码登录",spaceStatus:"Space 账户",spaceBound:"已绑定",spaceNotBound:"未绑定",spaceBoundDescription:"已绑定 Space 账户,可使用官方模型 API 和云服务",bindSpace:"绑定 Space 账户",bindSpaceDescription:"绑定后可使用官方模型 API 和云服务",bindSpaceButton:"绑定",bindSpaceConfirmTitle:"确认绑定",bindSpaceConfirmDescription:"您即将把本地实例绑定到 Space 账户",bindSpaceWarning:"绑定后,您的登录邮箱将从 {{localEmail}} 更改为 Space 账户的邮箱。",bindSpaceSuccess:"Space 账户绑定成功",bindSpaceFailed:"绑定 Space 账户失败",bindSpaceInvalidState:"无效的绑定请求,请从账户设置重新发起",setPasswordHint:"设置密码后可使用邮箱密码登录",spaceEmailMismatch:"Space登录账号邮箱与本实例账号邮箱不匹配"},monitoring:{title:"日志监控",description:"查看机器人活动、LLM调用和系统性能",overview:"概览",totalMessages:"总消息数",llmCallsCount:"LLM调用",modelCallsCount:"模型调用",successRate:"成功率",activeSessions:"活跃会话",last24Hours:"最近24小时",filters:{title:"筛选",bot:"机器人",pipeline:"流水线",allBots:"全部机器人",selectBot:"选择机器人",allPipelines:"全部流水线",selectPipeline:"选择流水线",loading:"加载中...",timeRange:"时间范围",customRange:"自定义范围",from:"从",to:"到",apply:"应用",reset:"重置筛选",lastHour:"最近1小时",last6Hours:"最近6小时",last24Hours:"最近24小时",last7Days:"最近7天",last30Days:"最近30天"},tabs:{messages:"消息记录",llmCalls:"LLM调用",embeddingCalls:"Embedding调用",modelCalls:"模型调用",sessions:"会话分析",errors:"错误日志"},messageList:{timestamp:"时间戳",bot:"机器人",pipeline:"流水线",message:"消息",sessionId:"会话ID",status:"状态",actions:"操作",viewDetails:"查看详情",copyId:"复制ID",noMessages:"未找到消息",noMessagesDescription:"尝试调整筛选条件或稍后查看",loading:"加载消息中...",loadMore:"加载更多",autoRefresh:"自动刷新",platform:"角色",user:"用户",level:"级别",runner:"执行器",viewConversation:"显示对话详情"},llmCalls:{title:"LLM调用",model:"模型",tokens:"Token数",duration:"持续时间",cost:"成本",noData:"未找到LLM调用记录",inputTokens:"输入Token",outputTokens:"输出Token",totalTokens:"总Token数",avgDuration:"平均耗时",calls:"调用次数"},embeddingCalls:{title:"Embedding调用",model:"模型",tokens:"Token数",duration:"持续时间",noData:"未找到Embedding调用记录",promptTokens:"输入Token",totalTokens:"总Token数",inputCount:"输入数量",knowledgeBase:"知识库",queryText:"查询文本"},modelCalls:{title:"模型调用",llmModel:"对话模型",embeddingModel:"嵌入模型",embeddingCall:"嵌入调用",retrieveCall:"检索调用",noData:"未找到模型调用记录"},sessions:{sessionId:"会话ID",messageCount:"消息数",duration:"持续时间",lastActivity:"最后活动",noSessions:"未找到会话",startTime:"开始时间",messageStats:"消息统计",totalMessages:"总消息数",successMessages:"成功",errorMessages:"失败",llmStats:"LLM统计",noData:"会话未找到"},errors:{title:"错误",errorType:"错误类型",errorMessage:"错误消息",occurredAt:"发生时间",noErrors:"未找到错误",stackTrace:"堆栈追踪"},queries:{title:"查询记录"},messageDetails:{noData:"此查询没有LLM调用或错误记录"},queryVariables:{title:"查询变量"},trafficChart:{title:"流量概览",messages:"消息数",llmCalls:"LLM调用",noData:"暂无流量数据"},viewMonitoring:"查看日志监控",refreshData:"刷新数据",exportData:"导出数据",export:{title:"导出数据",exporting:"导出中...",messages:"消息记录",llmCalls:"LLM 调用",embeddingCalls:"Embedding 调用",errors:"错误日志",sessions:"会话记录"}},limitation:{maxBotsReached:"已达到机器人数量上限({{max}}个)。请先删除已有机器人后再创建新的。",maxPipelinesReached:"已达到流水线数量上限({{max}}个)。请先删除已有流水线后再创建新的。",maxExtensionsReached:"已达到扩展数量上限({{max}}个)。请先删除已有的 MCP 服务器或插件后再添加新的。"}}},"zh-Hant":{translation:{common:{login:"登入",logout:"登出",accountOptions:"系統設定",account:"帳戶",integration:"連接",email:"電子郵件",password:"密碼",welcome:"歡迎回到 LangBot 👋",continueToLogin:"登入以繼續",loginSuccess:"登入成功",loginFailed:"登入失敗,請檢查電子郵件和密碼是否正確",enterEmail:"輸入電子郵件地址",enterPassword:"輸入密碼",invalidEmail:"請輸入有效的電子郵件地址",emptyPassword:"請輸入密碼",language:"語言",helpDocs:"輔助說明",featureRequest:"需求建議",create:"建立",edit:"編輯",delete:"刪除",add:"新增",select:"請選擇",cancel:"取消",submit:"提交",error:"錯誤",success:"成功",save:"儲存",saving:"儲存中...",confirm:"確認",confirmDelete:"確認刪除",deleteConfirmation:"您確定要刪除這個嗎?",selectOption:"選擇一個選項",required:"必填",enable:"是否啟用",name:"名稱",description:"描述",icon:"圖標",close:"關閉",deleteSuccess:"刪除成功",deleteError:"刪除失敗:",addRound:"新增回合",copy:"複製",copySuccess:"複製成功",copyFailed:"複製失敗",test:"測試",forgotPassword:"忘記密碼?",loading:"載入中...",or:"或",loginWithSpace:"透過 Space 登入",spaceLoginRecommended:"推薦:使用官方提供的穩定模型 API 和雲服務",loginLocal:"使用本地帳號登入",loginWithPassword:"透過密碼登入",spaceLoginTitle:"透過 Space 登入",spaceLoginDescription:"掃描二維碼或訪問下方連結進行授權",spaceLoginUserCode:"您的驗證碼",spaceLoginExpires:"驗證碼將在 {{seconds}} 秒後過期",spaceLoginWaiting:"等待授權中...",spaceLoginSuccess:"授權成功",spaceLoginFailed:"Space 登入失敗",spaceLoginExpired:"驗證碼已過期,請重試",spaceLoginCancel:"取消",spaceLoginVisitLink:"訪問連結",spaceLoginProcessing:"正在透過 Space 登入",spaceLoginProcessingDescription:"請稍候,正在完成登入...",spaceLoginSuccessDescription:"正在跳轉到 LangBot...",spaceLoginError:"登入失敗",spaceLoginNoCode:"缺少授權碼",backToLogin:"返回登入",backToHome:"返回首頁",spaceAccountCannotChangePassword:"Space 帳戶無法在此修改密碼",theme:"主題",changePassword:"修改密碼",currentPassword:"當前密碼",newPassword:"新密碼",confirmNewPassword:"確認新密碼",enterCurrentPassword:"輸入當前密碼",enterNewPassword:"輸入新密碼",enterConfirmPassword:"確認新密碼",currentPasswordRequired:"當前密碼不能為空",newPasswordRequired:"新密碼不能為空",confirmPasswordRequired:"確認密碼不能為空",passwordsDoNotMatch:"兩次輸入的密碼不一致",changePasswordSuccess:"密碼修改成功",changePasswordFailed:"密碼修改失敗,請檢查當前密碼是否正確",apiIntegration:"API 整合",apiKeys:"API 金鑰",manageApiIntegration:"管理 API 整合",manageApiKeys:"管理 API 金鑰",createApiKey:"建立 API 金鑰",apiKeyName:"API 金鑰名稱",apiKeyDescription:"API 金鑰描述",apiKeyValue:"API 金鑰值",apiKeyCreated:"API 金鑰建立成功",apiKeyDeleted:"API 金鑰刪除成功",apiKeyDeleteConfirm:"確定要刪除此 API 金鑰嗎?",apiKeyNameRequired:"API 金鑰名稱不能為空",copyApiKey:"複製 API 金鑰",apiKeyCopied:"API 金鑰已複製到剪貼簿",noApiKeys:"暫無 API 金鑰",apiKeyHint:"API 金鑰允許外部系統訪問 LangBot 的 Service API",webhooks:"Webhooks",createWebhook:"建立 Webhook",webhookName:"Webhook 名稱",webhookUrl:"Webhook URL",webhookDescription:"Webhook 描述",webhookEnabled:"是否啟用",webhookCreated:"Webhook 建立成功",webhookDeleted:"Webhook 刪除成功",webhookDeleteConfirm:"確定要刪除此 Webhook 嗎?",webhookNameRequired:"Webhook 名稱不能為空",webhookUrlRequired:"Webhook URL 不能為空",noWebhooks:"暫無 Webhook",webhookHint:"Webhook 允許 LangBot 將個人訊息和群組訊息事件推送到外部系統",actions:"操作",apiKeyCreatedMessage:"請複製此 API 金鑰,若按鈕無效,請手動複製。",none:"無"},notFound:{title:"頁面不存在",description:"您要查詢的頁面似乎不存在。請檢查您輸入的 URL 是否正確,或返回首頁。",back:"上一級",home:"返回主頁",help:"查看說明文件"},models:{title:"模型設定",description:"設定和管理可在流程線中使用的模型",createModel:"建立模型",editModel:"編輯模型",getModelListError:"取得模型清單失敗:",modelName:"模型名稱",modelProvider:"模型供應商",modelBaseURL:"基礎 URL",modelAbilities:"模型能力",saveSuccess:"儲存成功",saveError:"儲存失敗:",createSuccess:"建立成功",createError:"建立失敗:",deleteSuccess:"刪除成功",deleteError:"刪除失敗:",deleteConfirmation:"您確定要刪除這個模型嗎?",modelNameRequired:"模型名稱不能為空",modelProviderRequired:"模型供應商不能為空",requestURLRequired:"請求URL不能為空",apiKeyRequired:"API Key不能為空",keyNameRequired:"鍵名不能為空",mustBeValidNumber:"必須是有效的數字",mustBeTrueOrFalse:"必須是 true 或 false",requestURL:"請求URL",apiKey:"API Key",abilities:"能力",selectModelAbilities:"選擇模型能力",visionAbility:"視覺能力",functionCallAbility:"函數呼叫",extraParameters:"額外參數",addParameter:"新增參數",keyName:"鍵名",type:"類型",value:"值",string:"字串",number:"數字",boolean:"布林值",selectModelProvider:"選擇模型供應商",modelProviderDescription:"請填寫供應商向您提供的模型名稱",modelManufacturer:"模型廠商",aggregationPlatform:"中轉平台",selfDeployed:"自部署",builtin:"內建",selectModel:"請選擇模型",testSuccess:"測試成功",testError:"測試失敗,請檢查模型設定",llmModels:"對話模型",localProvider:"本地",localProviderDescription:"在本地設定和管理的模型",spaceProviderDescription:"從您的 Space 帳戶同步的模型",spaceDisabledForLocalAccount:"使用 Space 登入以使用雲端模型",syncModels:"同步",syncSuccess:"同步完成:建立 {{created}} 個,更新 {{updated}} 個",syncError:"同步失敗:",spaceModelReadOnly:"Space 模型為唯讀",noSpaceModels:"暫無 Space 模型。點擊同步按鈕從 Space 取得模型。",noLocalModels:"暫無本地模型。點擊建立按鈕新增模型。",providerCount:"共 {{count}} 個供應商",addModel:"新增模型",addLLMModel:"新增對話模型",addEmbeddingModel:"新增嵌入模型",provider:"供應商",existingProvider:"現有供應商",newProvider:"新供應商",selectProvider:"選擇供應商",requester:"供應商類型",selectRequester:"選擇供應商類型",langbotModelsDescription:"由 LangBot Space 提供的雲端模型",credits:"積分",loginWithSpace:"使用 Space 登入",loginToUseModels:"使用 Space 登入以使用雲端模型",noModels:"暫無模型",editProvider:"編輯供應商",addProvider:"新增供應商",addProviderHint:"新增供應商以使用其他來源的模型",addProviderHintSimple:"新增供應商以使用模型",noProviders:"暫無供應商",providerName:"供應商名稱",providerNameRequired:"供應商名稱不能為空",requesterRequired:"供應商類型不能為空",providerSaved:"供應商已儲存",providerCreated:"供應商已建立",providerSaveError:"儲存供應商失敗:",providerDeleted:"供應商已刪除",providerDeleteError:"刪除供應商失敗:",deleteProviderConfirmation:"您確定要刪除這個供應商嗎?",loadError:"載入資料失敗",chat:"對話",embedding:"嵌入",modelsCount:"{{count}} 個模型",expandModels:"展開",collapseModels:"收起"},bots:{title:"機器人",description:"建立和管理機器人,這是 LangBot 與各個平台連接的入口",createBot:"建立機器人",editBot:"編輯機器人",getBotListError:"取得機器人清單失敗:",botName:"機器人名稱",botDescription:"機器人描述",botNameRequired:"機器人名稱不能為空",botDescriptionRequired:"機器人描述不能為空",adapterRequired:"適配器不能為空",defaultDescription:"一個機器人",getBotConfigError:"取得機器人設定失敗:",saveSuccess:"儲存成功",saveError:"儲存失敗:",createSuccess:"建立成功 請啟用或修改綁定流程線",createError:"建立失敗:",deleteSuccess:"刪除成功",deleteError:"刪除失敗:",deleteConfirmation:"您確定要刪除這個機器人嗎?",platformAdapter:"平台/適配器選擇",selectAdapter:"選擇適配器",adapterConfig:"適配器設定",bindPipeline:"綁定流程線",selectPipeline:"選擇流程線",selectBot:"請選擇機器人",botLogTitle:"機器人日誌",enableAutoRefresh:"開啟自動重新整理",session:"對話",yesterday:"昨天",earlier:"更久之前",dateFormat:"{{month}}月{{day}}日",setBotEnableError:"設定機器人啟用狀態失敗",log:"日誌",configuration:"設定",logs:"日誌",webhookUrl:"Webhook 回調位址",webhookUrlCopied:"Webhook 位址已複製",webhookUrlHint:"點擊輸入框自動全選,然後按 Ctrl+C (Mac: Cmd+C) 複製,或點擊右側按鈕",logLevel:"日誌級別",allLevels:"全部級別",selectLevel:"選擇級別",levelsSelected:"個級別已選",sessionMonitor:{title:"會話監控",sessions:"會話列表",noSessions:"暫無會話",selectSession:"選擇一個會話查看訊息",noMessages:"該會話暫無訊息",messages:"條訊息",messageCount:"{{count}} 條訊息",loading:"載入中...",loadingSessions:"載入會話中...",loadingMessages:"載入訊息中...",user:"用戶",variables:"變數",platform:"平台",lastActive:"最近活躍",refresh:"重新整理",active:"活躍",inactive:"不活躍"}},plugins:{title:"外掛擴展",description:"安裝和設定用於擴展功能的外掛,請在流程線配置中選用",createPlugin:"建立外掛",editPlugin:"編輯外掛",installed:"已安裝",marketplace:"Marketplace",arrange:"編排",install:"安裝",installFromGithub:"來自 GitHub",onlySupportGithub:"目前僅支援從 GitHub 安裝",enterGithubLink:"請輸入外掛的Github連結",installing:"正在安裝外掛...",installSuccess:"外掛安裝成功",installFailed:"外掛安裝失敗:",searchPlugin:"搜尋外掛",sortBy:"排序方式",mostStars:"最多星標",recentlyAdded:"最近新增",recentlyUpdated:"最近更新",noMatchingPlugins:"沒有找到符合的外掛",loading:"載入中...",getPluginListError:"取得外掛清單失敗:",pluginConfig:"外掛設定",noPluginInstalled:"暫未安裝任何外掛",pluginSort:"外掛排序",pluginSortDescription:"外掛順序會影響同一事件內的處理順序,請拖曳外掛卡片排序",pluginSortSuccess:"外掛排序成功",pluginSortError:"外掛排序失敗:",pluginNoConfig:"外掛沒有設定項目。",systemDisabled:"外掛系統未啟用",systemDisabledDesc:"尚未啟用外掛系統,請根據文檔修改配置",connectionError:"外掛系統連接異常",connectionErrorDesc:"請檢查外掛系統配置或聯絡管理員",errorDetails:"錯誤詳情",loadingStatus:"正在檢查外掛系統狀態...",failedToGetStatus:"取得外掛系統狀態失敗",pluginSystemNotReady:"外掛系統未就緒,無法執行此操作",debugInfo:"偵錯資訊",debugInfoTitle:"外掛偵錯資訊",debugUrl:"偵錯位址",debugKey:"偵錯金鑰",noDebugKey:"(未設定)",debugKeyDisabled:"未設定偵錯金鑰,外掛偵錯無需認證",failedToGetDebugInfo:"取得偵錯資訊失敗",copiedToClipboard:"已複製到剪貼簿",deleting:"刪除中...",deletePlugin:"刪除外掛",cancel:"取消",saveConfig:"儲存設定",saving:"儲存中...",confirmDeletePlugin:"您確定要刪除外掛({{author}}/{{name}})嗎?",deleteDataCheckbox:"同時刪除外掛設定和持久化儲存",confirmDelete:"確認刪除",deleteError:"刪除失敗:",close:"關閉",deleteConfirm:"刪除確認",modifyFailed:"修改失敗:",componentName:{Tool:"工具",EventListener:"事件監聽器",Command:"命令",KnowledgeRetriever:"知識檢索"},uploadLocal:"本地上傳",debugging:"調試中",uploadLocalPlugin:"上傳本地插件",dragToUpload:"拖拽文件到此處上傳",unsupportedFileType:"不支持的文件類型,僅支持 .lbpkg 和 .zip 文件",uploadingPlugin:"正在上傳插件...",uploadSuccess:"上傳成功",uploadFailed:"上傳失敗",selectFileToUpload:"選擇要上傳的插件文件",askConfirm:'確定要安裝插件 "{{name}}" ({{version}}) 嗎?',fromGithub:"來自 GitHub",fromLocal:"本地安裝",fromMarketplace:"來自市場",componentsList:"組件: ",noComponents:"無組件",delete:"刪除插件",update:"更新插件",new:"新",updateConfirm:"更新確認",confirmUpdatePlugin:"您確定要更新插件({{author}}/{{name}})嗎?",confirmUpdate:"確認更新",updating:"更新中...",updateSuccess:"插件更新成功",updateError:"更新失敗:",saveConfigSuccessNormal:"儲存配置成功",saveConfigError:"儲存配置失敗:",config:"配置",readme:"文件",viewSource:"查看來源",loadingReadme:"正在載入文件...",noReadme:"該插件沒有提供 README 文件",fileUpload:{tooLarge:"檔案大小超過 10MB 限制",success:"檔案上傳成功",failed:"檔案上傳失敗",uploading:"上傳中...",chooseFile:"選擇檔案",addFile:"新增檔案"},enterRepoUrl:"請輸入 GitHub 倉庫地址",repoUrlPlaceholder:"例如: https://github.com/owner/repo",fetchingReleases:"正在獲取 Release 列表...",selectRelease:"選擇 Release",noReleasesFound:"未找到 Release",fetchReleasesError:"獲取 Release 列表失敗:",selectAsset:"選擇要安裝的文件",noAssetsFound:"該 Release 沒有可用的 .lbpkg 文件",fetchAssetsError:"獲取文件列表失敗:",backToReleases:"返回 Release 列表",backToRepoUrl:"返回倉庫地址",backToAssets:"返回文件選擇",releaseTag:"Tag: {{tag}}",releaseName:"名稱: {{name}}",publishedAt:"發佈於: {{date}}",prerelease:"預發佈",assetSize:"大小: {{size}}",confirmInstall:"確認安裝",installFromGithubDesc:"從 GitHub Release 安裝插件"},market:{searchPlaceholder:"搜尋插件...",searchResults:"搜尋到 {{count}} 個插件",totalPlugins:"共 {{count}} 個插件",noPlugins:"暫無插件",noResults:"未找到相關插件",loadingMore:"載入更多...",loading:"載入中...",allLoaded:"已顯示全部插件",install:"安裝",installConfirm:'確定要安裝插件 "{{name}}" ({{version}}) 嗎?',downloadComplete:'插件 "{{name}}" 下載完成',installFailed:"安裝失敗,請稍後重試",loadFailed:"取得插件列表失敗,請稍後重試",noDescription:"暫無描述",notFound:"插件資訊未找到",sortBy:"排序方式",sort:{recentlyAdded:"最近新增",recentlyUpdated:"最近更新",mostDownloads:"最多下載",leastDownloads:"最少下載"},downloads:"次下載",download:"下載",repository:"代碼倉庫",downloadFailed:"下載失敗",noReadme:"該插件沒有提供 README 文件",description:"描述",tagLabel:"標籤",submissionTitle:"您有插件提交正在審核中: {{name}}",submissionApproved:"您的插件提交已通過審核: {{name}}",submissionRejected:"您的插件提交已被拒絕: {{name}}",clickToRevoke:"撤回",revokeSuccess:"撤回成功",revokeFailed:"撤回失敗",submissionDetails:"插件提交詳情",markAsRead:"已讀",markAsReadSuccess:"已標記為已讀",markAsReadFailed:"標記為已讀失敗",filterByComponent:"組件",allComponents:"全部組件",requestPlugin:"請求插件",tags:{filterByTags:"按標籤篩選",selected:"已選",selectTags:"選擇標籤",clearAll:"清空",noTags:"暫無標籤"},viewDetails:"查看詳情"},mcp:{title:"MCP",createServer:"新增MCP伺服器",editServer:"編輯MCP伺服器",deleteServer:"刪除MCP伺服器",confirmDeleteServer:"您確定要刪除此MCP伺服器嗎?",confirmDeleteTitle:"刪除MCP伺服器",getServerListError:"取得MCP伺服器清單失敗:",serverName:"伺服器名稱",serverMode:"連接模式",stdio:"Stdio模式",sse:"SSE模式",selectMode:"選擇連接模式",http:"HTTP模式",noServerInstalled:"暫未設定任何MCP伺服器",serverNameRequired:"伺服器名稱不能為空",commandRequired:"命令不能為空",urlRequired:"URL不能為空",timeoutMustBePositive:"逾時時間必須是正數",command:"命令",args:"參數",env:"環境變數",url:"URL位址",headers:"請求標頭",timeout:"逾時時間",addArgument:"新增參數",addEnvVar:"新增環境變數",addHeader:"新增請求標頭",keyName:"鍵名",value:"值",testing:"測試中...",connecting:"連接中...",testSuccess:"測試成功",testFailed:"刷新失敗:",testError:"刷新出錯",refreshSuccess:"刷新成功",refreshFailed:"刷新失敗:",connectionSuccess:"連接成功",connectionFailed:"連接失敗,請檢查URL",connectionFailedStatus:"連接失敗",toolsFound:"個工具",unknownError:"未知錯誤",noToolsFound:"未找到任何工具",parseResultFailed:"解析測試結果失敗",noResultReturned:"測試未返回結果",getTaskFailed:"獲取任務狀態失敗",noTaskId:"未獲取到任務ID",deleteSuccess:"刪除成功",deleteFailed:"刪除失敗:",deleteError:"刪除失敗:",saveSuccess:"儲存成功",saveError:"儲存失敗:",createSuccess:"建立成功",createFailed:"建立失敗:",createError:"建立失敗:",loadFailed:"載入失敗",modifyFailed:"修改失敗:",toolCount:"工具:{{count}}",statusConnected:"已開啟",statusDisconnected:"未開啟",statusError:"連接錯誤",statusDisabled:"已停用",loading:"載入中...",starCount:"星標:{{count}}",install:"安裝",installFromGithub:"從Github安裝MCP伺服器",add:"新增",name:"名稱",nameRequired:"名稱不能為空",sseTimeout:"SSE逾時時間",sseTimeoutDescription:"用於建立SSE連接的逾時時間",extraParametersDescription:"額外參數,用於設定MCP伺服器的特定行為",timeoutMustBeNumber:"逾時時間必須是數字",timeoutNonNegative:"逾時時間不能為負數",sseTimeoutMustBeNumber:"SSE逾時時間必須是數字",sseTimeoutNonNegative:"SSE逾時時間不能為負數",updateSuccess:"更新成功",updateFailed:"更新失敗:"},pipelines:{title:"流程線",description:"流程線定義了對訊息事件的處理流程,用於綁定到機器人",createPipeline:"建立流程線",editPipeline:"編輯流程線",chat:"對話",configuration:"設定",debugChat:"對話除錯",getPipelineListError:"取得流程線清單失敗:",daysAgo:"天前",today:"今天",updateTime:"更新於",defaultBadge:"預設",sortBy:"排序方式",newestCreated:"最新建立",earliestCreated:"最早建立",recentlyEdited:"最近編輯",earliestEdited:"最早編輯",basicInfo:"基本資訊",aiCapabilities:"AI 能力",triggerConditions:"觸發條件",safetyControls:"安全控制",outputProcessing:"輸出處理",nameRequired:"名稱不能為空",descriptionRequired:"描述不能為空",createSuccess:"建立成功 請編輯流程線詳細參數",createError:"建立失敗:",saveSuccess:"儲存成功",saveError:"儲存失敗:",copySuffix:" Copy",deleteConfirmation:"您確定要刪除這個流程線嗎?已綁定此流程線的機器人將無法使用。",defaultPipelineCannotDelete:"預設流程線不可刪除",deleteSuccess:"刪除成功",deleteError:"刪除失敗:",copyConfirmTitle:"確認複製",copyConfirmation:"確定要複製這個流程線嗎?複製將創建一個包含完整配置的新流程線。",unsavedChanges:"有未儲存的變更",extensions:{title:"擴展集成",loadError:"載入插件清單失敗",saveSuccess:"儲存成功",saveError:"儲存失敗",noPluginsAvailable:"暫無可用插件",disabled:"已停用",noPluginsSelected:"未選擇任何插件",addPlugin:"新增插件",selectPlugins:"選擇插件",pluginsTitle:"插件",mcpServersTitle:"MCP 伺服器",noMCPServersSelected:"未選擇任何 MCP 伺服器",addMCPServer:"新增 MCP 伺服器",selectMCPServers:"選擇 MCP 伺服器",toolCount:"{{count}} 個工具",noPluginsInstalled:"無已安裝的插件",noMCPServersConfigured:"無已配置的 MCP 伺服器",selectAll:"全選",enableAllPlugins:"啟用所有插件",enableAllMCPServers:"啟用所有 MCP 伺服器",allPluginsEnabled:"已啟用所有插件",allMCPServersEnabled:"已啟用所有 MCP 伺服器"},debugDialog:{title:"流程線對話",selectPipeline:"選擇流程線",sessionType:"對話類型",privateChat:"私聊",groupChat:"群聊",send:"傳送",reset:"重設對話",inputPlaceholder:"傳送 {{type}} 訊息...",noMessages:"暫無訊息",userMessage:"使用者",botMessage:"機器人",sendFailed:"傳送失敗",resetSuccess:"對話已重設",resetFailed:"重設失敗",loadMessagesFailed:"載入訊息失敗",loadPipelinesFailed:"載入流程線失敗",atTips:"提及機器人",streaming:"串流傳輸",streamOutput:"串流",connected:"WebSocket已連接",disconnected:"WebSocket未連接",connectionError:"WebSocket連接錯誤",connectionFailed:"WebSocket連接失敗",notConnected:"WebSocket未連接,請稍後重試",imageUploadFailed:"圖片上傳失敗",reply:"回覆",replyTo:"回覆給",showMarkdown:"渲染",showRaw:"原文"},monitoring:{title:"監控日誌",description:"檢視此流程線的執行記錄和錯誤資訊(最近24小時)",detailedLogs:"詳細日誌"}},knowledge:{title:"知識庫",createKnowledgeBase:"建立知識庫",editKnowledgeBase:"編輯知識庫",selectKnowledgeBase:"選擇知識庫",selectKnowledgeBases:"選擇知識庫",addKnowledgeBase:"新增知識庫",noKnowledgeBaseSelected:"未選擇知識庫",empty:"無",editDocument:"文檔",description:"設定可用於提升模型回覆品質的知識庫",metadata:"中繼資料",documents:"文檔",kbNameRequired:"知識庫名稱不能為空",kbDescriptionRequired:"知識庫描述不能為空",embeddingModelUUIDRequired:"嵌入模型不能為空",daysAgo:"天前",today:"今天",kbName:"知識庫名稱",kbDescription:"知識庫描述",topK:"召回數量 ",topKRequired:"召回數量不能為空",topKMax:"召回數量最大值為30",topKdescription:"取得相關性高的上位 K 件文獻的數量,範圍為1~30",defaultDescription:"一個知識庫",embeddingModelUUID:"嵌入模型",selectEmbeddingModel:"選擇嵌入模型",embeddingModelDescription:"用於向量化文字,可在模型設定頁面設定",updateTime:"更新於",cannotChangeEmbeddingModel:"知識庫建立後不可修改嵌入模型",updateKnowledgeBaseSuccess:"知識庫更新成功",updateKnowledgeBaseFailed:"知識庫更新失敗",documentsTab:{name:"名稱",status:"狀態",noResults:"暫無文件",dragAndDrop:"拖曳文檔到此處或點擊上傳",uploading:"上傳中...",supportedFormats:"支援 PDF、Word、TXT、Markdown 等文檔格式",uploadSuccess:"文檔上傳成功!",uploadError:"文檔上傳失敗,請重試",uploadingFile:"上傳文檔中...",fileSizeExceeded:"檔案大小超過 10MB 限制,請分割成較小的檔案後上傳",actions:"操作",delete:"刪除文檔",fileDeleteSuccess:"文檔刪除成功",fileDeleteFailed:"文檔刪除失敗",processing:"處理中",completed:"完成",failed:"失敗"},deleteKnowledgeBaseConfirmation:"您確定要刪除這個知識庫嗎?此知識庫下的所有文檔將被刪除。",retrieve:"檢索測試",retrieveTest:"檢索測試",query:"查詢",queryPlaceholder:"輸入查詢內容...",distance:"距離",content:"內容",fileName:"文檔名稱",noResults:"暫無結果",retrieveError:"檢索失敗",builtIn:"內置",external:"外部知識庫",addExternal:"添加外部知識庫",createExternalSuccess:"外部知識庫創建成功",updateExternalSuccess:"外部知識庫更新成功",deleteExternalSuccess:"外部知識庫刪除成功",retriever:"檢索器",selectRetriever:"選擇一個檢索器...",retrieverConfiguration:"檢索器配置",retrieverInstallInfo:"您可以從",retrieverMarketLink:"此處安裝知識檢索器插件"},register:{title:"初始化 LangBot 👋",description:"這是您首次啟動 LangBot",adminAccountNote:"您在此處初始化使用的帳號將作為管理員帳號",register:"註冊",initWithSpace:"透過 Space 初始化",spaceRecommended:"推薦:使用官方提供的穩定模型 API 和雲服務",spaceInfoTip1:"Space 提供統一的帳戶鑑權服務,不會上傳您的任何敏感資訊。",spaceInfoTip2:"使用 Space 帳戶登入可使用 LangBot Models 等雲服務,您將會獲得一定的免費模型調用額度幫助您快速起步。",spaceInfoTip3:"登入方式不會影響其他功能,您在任何情況下都可以配置使用其他來源的模型。",registerLocal:"註冊本地帳號",registerWithPassword:"透過電子郵件密碼組合註冊",initSuccess:"初始化成功 請登入",initFailed:"初始化失敗:"},resetPassword:{title:"重設密碼 🔐",description:"輸入恢復金鑰和新的密碼來重設您的帳戶密碼",recoveryKey:"恢復金鑰",recoveryKeyDescription:"儲存在設定檔案`data/config.yaml`的`system.recovery_key`中",newPassword:"新密碼",enterRecoveryKey:"輸入恢復金鑰",enterNewPassword:"輸入新密碼",recoveryKeyRequired:"恢復金鑰不能為空",newPasswordRequired:"新密碼不能為空",resetPassword:"重設密碼",resetting:"重設中...",resetSuccess:"密碼重設成功,請登入",resetFailed:"密碼重設失敗,請檢查電子郵件和恢復金鑰是否正確",backToLogin:"返回登入"},embedding:{description:"管理嵌入模型,用於向量化文字",createModel:"建立嵌入模型",editModel:"編輯嵌入模型",getModelListError:"取得嵌入模型清單失敗:",embeddingModels:"嵌入模型",extraParametersDescription:"將在請求時附加到請求體中,如 encoding_format, dimensions 等"},llm:{llmModels:"對話模型",description:"管理 LLM 模型,用於對話訊息產生",extraParametersDescription:"將在請求時附加到請求體中,如 max_tokens, temperature, top_p 等"},version:{newVersionAvailable:"有新版本可用",viewUpdateGuide:"查看更新方式",noReleaseNotes:"暫無更新日誌"},account:{settings:"帳戶設定",setPassword:"設定密碼",passwordSetSuccess:"密碼設定成功",passwordStatus:"本地密碼",passwordSet:"已設定",passwordNotSet:"未設定",passwordSetDescription:"您已設定本地密碼,可使用電子郵件密碼登入",spaceStatus:"Space 帳戶",spaceBound:"已綁定",spaceNotBound:"未綁定",spaceBoundDescription:"已綁定 Space 帳戶,可使用官方模型 API 和雲服務",bindSpace:"綁定 Space 帳戶",bindSpaceDescription:"綁定後可使用官方模型 API 和雲服務",bindSpaceButton:"綁定",bindSpaceConfirmTitle:"確認綁定",bindSpaceConfirmDescription:"您即將把本地實例綁定到 Space 帳戶",bindSpaceWarning:"綁定後,您的登入電子郵件將從 {{localEmail}} 更改為 Space 帳戶的電子郵件。",bindSpaceSuccess:"Space 帳戶綁定成功",bindSpaceFailed:"綁定 Space 帳戶失敗",bindSpaceInvalidState:"無效的綁定請求,請從帳戶設定重新發起",setPasswordHint:"設定密碼後可使用電子郵件密碼登入",spaceEmailMismatch:"Space登入帳號電子郵件與本實例帳號電子郵件不匹配"},monitoring:{title:"日誌監控",description:"監控機器人活動、LLM調用和系統效能",overview:"概覽",totalMessages:"總訊息數",llmCallsCount:"LLM調用",modelCallsCount:"模型調用",successRate:"成功率",activeSessions:"活躍會話",last24Hours:"最近24小時",filters:{title:"篩選",bot:"機器人",pipeline:"流水線",allBots:"全部機器人",selectBot:"選擇機器人",allPipelines:"全部流水線",selectPipeline:"選擇流水線",loading:"載入中...",timeRange:"時間範圍",customRange:"自訂範圍",from:"從",to:"到",apply:"套用",reset:"重置篩選",lastHour:"最近1小時",last6Hours:"最近6小時",last24Hours:"最近24小時",last7Days:"最近7天",last30Days:"最近30天"},tabs:{messages:"訊息記錄",llmCalls:"LLM調用",embeddingCalls:"Embedding調用",modelCalls:"模型調用",sessions:"會話分析",errors:"錯誤日誌"},messageList:{timestamp:"時間戳記",bot:"機器人",pipeline:"流水線",message:"訊息",sessionId:"會話ID",status:"狀態",actions:"操作",viewDetails:"查看詳情",copyId:"複製ID",noMessages:"未找到訊息",noMessagesDescription:"嘗試調整篩選條件或稍後查看",loading:"載入訊息中...",loadMore:"載入更多",autoRefresh:"自動重新整理",platform:"平台",user:"使用者",level:"級別",runner:"執行器",viewConversation:"顯示對話詳情"},llmCalls:{model:"模型",tokens:"代幣數",duration:"持續時間",cost:"成本",noData:"未找到LLM調用記錄",inputTokens:"輸入代幣",outputTokens:"輸出代幣",totalTokens:"總代幣數"},embeddingCalls:{title:"Embedding調用",model:"模型",tokens:"代幣數",duration:"持續時間",noData:"未找到Embedding調用記錄",promptTokens:"輸入代幣",totalTokens:"總代幣數",inputCount:"輸入數量",knowledgeBase:"知識庫",queryText:"查詢文字"},modelCalls:{title:"模型調用",llmModel:"對話模型",embeddingModel:"嵌入模型",embeddingCall:"嵌入調用",retrieveCall:"檢索調用",noData:"未找到模型調用記錄"},sessions:{sessionId:"會話ID",messageCount:"訊息數",duration:"持續時間",lastActivity:"最後活動",noSessions:"未找到會話",startTime:"開始時間"},errors:{errorType:"錯誤類型",errorMessage:"錯誤訊息",occurredAt:"發生時間",noErrors:"未找到錯誤",stackTrace:"堆疊追蹤",title:"錯誤"},messageDetails:{noData:"此查詢沒有LLM調用或錯誤記錄"},queryVariables:{title:"查詢變數"},viewMonitoring:"查看日誌監控",refreshData:"重新整理資料",exportData:"匯出資料",export:{title:"匯出資料",exporting:"匯出中...",messages:"訊息記錄",llmCalls:"LLM 呼叫",embeddingCalls:"Embedding 呼叫",errors:"錯誤日誌",sessions:"會話記錄"}},limitation:{maxBotsReached:"已達到機器人數量上限({{max}}個)。請先刪除已有機器人後再建立新的。",maxPipelinesReached:"已達到流水線數量上限({{max}}個)。請先刪除已有流水線後再建立新的。",maxExtensionsReached:"已達到擴充功能數量上限({{max}}個)。請先刪除已有的 MCP 伺服器或外掛後再新增。"}}},"ja-JP":{translation:{common:{login:"ログイン",logout:"ログアウト",accountOptions:"システム設定",account:"アカウント",integration:"連携",email:"メールアドレス",password:"パスワード",welcome:"LangBot へおかえりなさい 👋",continueToLogin:"ログインしてください",loginSuccess:"ログインに成功しました",loginFailed:"ログインに失敗しました。メールアドレスまたはパスワードをご確認ください",enterEmail:"メールアドレスを入力",enterPassword:"パスワードを入力",invalidEmail:"有効なメールアドレスを入力してください",emptyPassword:"パスワードを入力してください",language:"言語",helpDocs:"ヘルプドキュメント",featureRequest:"機能リクエスト",create:"作成",edit:"編集",delete:"削除",add:"追加",select:"選択してください",cancel:"キャンセル",submit:"送信",error:"エラー",success:"成功",save:"保存",saving:"保存中...",confirm:"確認",confirmDelete:"削除の確認",deleteConfirmation:"本当に削除しますか?",selectOption:"オプションを選択",required:"必須",enable:"有効にする",name:"名前",description:"説明",icon:"アイコン",close:"閉じる",deleteSuccess:"削除に成功しました",deleteError:"削除に失敗しました:",addRound:"ラウンドを追加",copy:"コピー",copySuccess:"コピーに成功しました",copyFailed:"コピーに失敗しました",test:"テスト",forgotPassword:"パスワードを忘れた?",loading:"読み込み中...",or:"または",loginWithSpace:"Space でログイン",spaceLoginRecommended:"おすすめ:公式の安定したモデル API とクラウドサービスを利用",loginLocal:"ローカルアカウントでログイン",loginWithPassword:"パスワードでログイン",spaceLoginTitle:"Space でログイン",spaceLoginDescription:"QRコードをスキャンするか、下のリンクにアクセスして認証してください",spaceLoginUserCode:"認証コード",spaceLoginExpires:"コードは {{seconds}} 秒後に期限切れになります",spaceLoginWaiting:"認証を待っています...",spaceLoginSuccess:"認証に成功しました",spaceLoginFailed:"Space ログインに失敗しました",spaceLoginExpired:"認証コードの有効期限が切れました。もう一度お試しください",spaceLoginCancel:"キャンセル",spaceLoginVisitLink:"リンクにアクセス",spaceLoginProcessing:"Space でログイン中",spaceLoginProcessingDescription:"ログインを完了しています。しばらくお待ちください...",spaceLoginSuccessDescription:"LangBot にリダイレクト中...",spaceLoginError:"ログインに失敗しました",spaceLoginNoCode:"認証コードがありません",backToLogin:"ログインに戻る",backToHome:"ホームに戻る",spaceAccountCannotChangePassword:"Space アカウントはここでパスワードを変更できません",theme:"テーマ",changePassword:"パスワードを変更",currentPassword:"現在のパスワード",newPassword:"新しいパスワード",confirmNewPassword:"新しいパスワードを確認",enterCurrentPassword:"現在のパスワードを入力",enterNewPassword:"新しいパスワードを入力",enterConfirmPassword:"新しいパスワードを確認",currentPasswordRequired:"現在のパスワードは必須です",newPasswordRequired:"新しいパスワードは必須です",confirmPasswordRequired:"新しいパスワードを確認してください",passwordsDoNotMatch:"新しいパスワードが一致しません",changePasswordSuccess:"パスワードの変更に成功しました",changePasswordFailed:"パスワードの変更に失敗しました。現在のパスワードを確認してください",apiIntegration:"API統合",apiKeys:"API キー",manageApiIntegration:"API統合の管理",manageApiKeys:"API キーの管理",createApiKey:"API キーを作成",apiKeyName:"API キー名",apiKeyDescription:"API キーの説明",apiKeyValue:"API キー値",apiKeyCreated:"API キーの作成に成功しました",apiKeyDeleted:"API キーの削除に成功しました",apiKeyDeleteConfirm:"この API キーを削除してもよろしいですか?",apiKeyNameRequired:"API キー名は必須です",copyApiKey:"API キーをコピー",apiKeyCopied:"API キーをクリップボードにコピーしました",noApiKeys:"API キーが設定されていません",apiKeyHint:"API キーを使用すると、外部システムが LangBot Service API にアクセスできます",webhooks:"Webhooks",createWebhook:"Webhook を作成",webhookName:"Webhook 名",webhookUrl:"Webhook URL",webhookDescription:"Webhook の説明",webhookEnabled:"有効",webhookCreated:"Webhook が正常に作成されました",webhookDeleted:"Webhook が正常に削除されました",webhookDeleteConfirm:"この Webhook を削除してもよろしいですか?",webhookNameRequired:"Webhook 名は必須です",webhookUrlRequired:"Webhook URL は必須です",noWebhooks:"Webhook が設定されていません",webhookHint:"Webhook を使用すると、LangBot は個人メッセージとグループメッセージイベントを外部システムにプッシュできます",actions:"アクション",apiKeyCreatedMessage:"この API キーをコピーしてください。もしボタンが無効な場合は手動でコピーしてください。",none:"なし"},notFound:{title:"ページが見つかりません",description:"お探しのページは存在しないようです。入力したURLが正しいか確認するか、ホームページに戻ってください。",back:"戻る",home:"ホームに戻る",help:"ヘルプドキュメントを見る"},models:{title:"モデル設定",description:"パイプラインで使用できるモデルを設定・管理",createModel:"モデルを作成",editModel:"モデルを編集",getModelListError:"モデルリストの取得に失敗しました:",modelName:"モデル名",modelProvider:"モデルプロバイダー",modelBaseURL:"ベースURL",modelAbilities:"モデル機能",saveSuccess:"保存に成功しました",saveError:"保存に失敗しました:",createSuccess:"作成に成功しました",createError:"作成に失敗しました:",deleteSuccess:"削除に成功しました",deleteError:"削除に失敗しました:",deleteConfirmation:"本当にこのモデルを削除しますか?",modelNameRequired:"モデル名は必須です",modelProviderRequired:"モデルプロバイダーは必須です",requestURLRequired:"リクエストURLは必須です",apiKeyRequired:"APIキーは必須です",keyNameRequired:"キー名は必須です",mustBeValidNumber:"有効な数値である必要があります",mustBeTrueOrFalse:"true または false である必要があります",requestURL:"リクエストURL",apiKey:"APIキー",abilities:"機能",selectModelAbilities:"モデル機能を選択",visionAbility:"視覚機能",functionCallAbility:"関数呼び出し",extraParameters:"追加パラメータ",addParameter:"パラメータを追加",keyName:"キー名",type:"タイプ",value:"値",string:"文字列",number:"数値",boolean:"ブール値",extraParametersDescription:"リクエストボディに追加されるパラメータ(max_tokens、temperature、top_p など)",selectModelProvider:"モデルプロバイダーを選択",modelProviderDescription:"プロバイダーが提供するモデル名をご入力ください",modelManufacturer:"モデルメーカー",aggregationPlatform:"アグリゲーションプラットフォーム",selfDeployed:"セルフデプロイ",builtin:"ビルトイン",selectModel:"モデルを選択してください",testSuccess:"テストに成功しました",testError:"テストに失敗しました。モデル設定を確認してください",llmModels:"LLM モデル",localProvider:"ローカル",localProviderDescription:"ローカルで設定・管理されているモデル",spaceProviderDescription:"Space アカウントから同期されたモデル",spaceDisabledForLocalAccount:"Space でログインしてクラウドモデルを使用",syncModels:"同期",syncSuccess:"同期完了:{{created}} 件作成、{{updated}} 件更新",syncError:"同期に失敗しました:",spaceModelReadOnly:"Space モデルは読み取り専用です",noSpaceModels:"Space モデルがありません。同期ボタンをクリックして Space からモデルを取得してください。",noLocalModels:"ローカルモデルがありません。作成ボタンをクリックしてモデルを追加してください。",providerCount:"{{count}} 件のプロバイダー",addModel:"モデルを追加",addLLMModel:"LLMモデルを追加",addEmbeddingModel:"埋め込みモデルを追加",provider:"プロバイダー",existingProvider:"既存のプロバイダー",newProvider:"新規プロバイダー",selectProvider:"プロバイダーを選択",requester:"プロバイダータイプ",selectRequester:"プロバイダータイプを選択",langbotModelsDescription:"LangBot Space が提供するクラウドモデル",credits:"クレジット",loginWithSpace:"Space でログイン",loginToUseModels:"Space でログインしてクラウドモデルを使用",noModels:"モデルがありません",editProvider:"プロバイダーを編集",addProvider:"プロバイダーを追加",addProviderHint:"他のソースのモデルを使用するにはプロバイダーを追加してください",addProviderHintSimple:"モデルを使用するにはプロバイダーを追加してください",noProviders:"プロバイダーがありません",providerName:"プロバイダー名",providerNameRequired:"プロバイダー名は必須です",requesterRequired:"プロバイダータイプは必須です",providerSaved:"プロバイダーを保存しました",providerCreated:"プロバイダーを作成しました",providerSaveError:"プロバイダーの保存に失敗しました:",providerDeleted:"プロバイダーを削除しました",providerDeleteError:"プロバイダーの削除に失敗しました:",deleteProviderConfirmation:"このプロバイダーを削除してもよろしいですか?",loadError:"データの読み込みに失敗しました",chat:"チャット",embedding:"埋め込み",modelsCount:"{{count}} 個のモデル",expandModels:"展開",collapseModels:"折りたたむ"},bots:{title:"ボット",description:"ボットの作成と管理を行います。LangBotと各プラットフォームを接続するためのエントリーポイントです",createBot:"ボットを作成",editBot:"ボットを編集",getBotListError:"ボットリストの取得に失敗しました:",botName:"ボット名",botDescription:"ボットの説明",botNameRequired:"ボット名は必須です",botDescriptionRequired:"ボットの説明は必須です",adapterRequired:"アダプターは必須です",defaultDescription:"ボット",getBotConfigError:"ボット設定の取得に失敗しました:",saveSuccess:"保存に成功しました",saveError:"保存に失敗しました:",createSuccess:"作成が完了しました。有効化するか、パイプラインの設定を行ってください",createError:"作成に失敗しました:",deleteSuccess:"削除に成功しました",deleteError:"削除に失敗しました:",deleteConfirmation:"本当にこのボットを削除しますか?",platformAdapter:"プラットフォーム/アダプター選択",selectAdapter:"アダプターを選択",adapterConfig:"アダプター設定",bindPipeline:"パイプラインを紐付け",selectPipeline:"パイプラインを選択",selectBot:"ボットを選択してください",botLogTitle:"ボットログ",enableAutoRefresh:"自動更新を有効にする",session:"セッション",yesterday:"昨日",earlier:"それ以前",dateFormat:"{{month}}月{{day}}日",setBotEnableError:"ボットの有効状態の設定に失敗しました",log:"ログ",configuration:"設定",logs:"ログ",webhookUrl:"Webhook コールバック URL",webhookUrlCopied:"Webhook URL をコピーしました",webhookUrlHint:"入力ボックスをクリックして全選択し、Ctrl+C (Mac: Cmd+C) でコピーするか、右側のボタンをクリックしてください",logLevel:"ログレベル",allLevels:"すべてのレベル",selectLevel:"レベルを選択",levelsSelected:"レベル選択済み",sessionMonitor:{title:"セッション監視",sessions:"セッション一覧",noSessions:"セッションが見つかりません",selectSession:"セッションを選択してメッセージを表示",noMessages:"このセッションにはメッセージがありません",messages:"件のメッセージ",messageCount:"{{count}} 件のメッセージ",loading:"読み込み中...",loadingSessions:"セッションを読み込み中...",loadingMessages:"メッセージを読み込み中...",user:"ユーザー",variables:"変数",platform:"プラットフォーム",lastActive:"最終アクティブ",refresh:"更新",active:"アクティブ",inactive:"非アクティブ"}},plugins:{title:"拡張機能",description:"LangBotの機能を拡張するプラグインをインストール・設定。流水線設定で使用します",createPlugin:"プラグインを作成",editPlugin:"プラグインを編集",installed:"インストール済み",marketplace:"プラグインマーケット",arrange:"並び替え",install:"インストール",installPlugin:"プラグインをインストール",onlySupportGithub:"現在はGitHubからのインストールのみサポートしています",enterGithubLink:"プラグインのGitHubリンクを入力してください",installing:"プラグインをインストール中...",installSuccess:"プラグインのインストールに成功しました",installFailed:"プラグインのインストールに失敗しました:",searchPlugin:"プラグインを検索",sortBy:"並び順",mostStars:"スター数順",recentlyAdded:"最近追加",recentlyUpdated:"最近更新",noMatchingPlugins:"一致するプラグインが見つかりません",loading:"読み込み中...",getPluginListError:"プラグインリストの取得に失敗しました:",noPluginInstalled:"プラグインがインストールされていません",pluginConfig:"プラグイン設定",pluginSort:"プラグインの並び替え",pluginSortDescription:"プラグインの順序は、同一イベント内での処理順序に影響します。カードをドラッグして並び替えが可能です",pluginSortSuccess:"プラグインの並び替えに成功しました",pluginSortError:"プラグインの並び替えに失敗しました:",pluginNoConfig:"プラグインに設定項目がありません。",systemDisabled:"プラグインシステムが無効になっています",systemDisabledDesc:"プラグインシステムが無効になっています。プラグインシステムを有効にするか、ドキュメントに従って設定を変更してください",connectionError:"プラグインシステム接続エラー",connectionErrorDesc:"プラグインシステム設定を確認するか、管理者に連絡してください",errorDetails:"エラー詳細",loadingStatus:"プラグインシステム状態を確認中...",failedToGetStatus:"プラグインシステム状態の取得に失敗しました",pluginSystemNotReady:"プラグインシステムが準備されていません。この操作を実行できません",debugInfo:"デバッグ情報",debugInfoTitle:"プラグインデバッグ情報",debugUrl:"デバッグURL",debugKey:"デバッグキー",noDebugKey:"(未設定)",debugKeyDisabled:"デバッグキーが設定されていません。プラグインデバッグには認証が不要です",failedToGetDebugInfo:"デバッグ情報の取得に失敗しました",copiedToClipboard:"クリップボードにコピーしました",deleting:"削除中...",deletePlugin:"プラグインを削除",cancel:"キャンセル",saveConfig:"設定を保存",saving:"保存中...",confirmDeletePlugin:"プラグイン「{{author}}/{{name}}」を削除してもよろしいですか?",deleteDataCheckbox:"プラグイン設定と永続化ストレージも削除する",confirmDelete:"削除を確認",deleteError:"削除に失敗しました:",close:"閉じる",deleteConfirm:"削除の確認",deleteSuccess:"削除に成功しました",modifyFailed:"変更に失敗しました:",componentName:{Tool:"ツール",EventListener:"イベント監視器",Command:"コマンド",KnowledgeRetriever:"知識検索"},uploadLocal:"ローカルアップロード",debugging:"デバッグ中",uploadLocalPlugin:"ローカルプラグインのアップロード",dragToUpload:"ファイルをここにドラッグしてアップロード",unsupportedFileType:"サポートされていないファイルタイプです。.lbpkg と .zip ファイルのみサポートされています",uploadingPlugin:"プラグインをアップロード中...",uploadSuccess:"アップロード成功",uploadFailed:"アップロード失敗",selectFileToUpload:"アップロードするプラグインファイルを選択",askConfirm:'プラグイン "{{name}}" ({{version}}) をインストールしますか?',fromGithub:"GitHubから",fromLocal:"ローカルから",fromMarketplace:"プラグインマーケットから",componentsList:"部品:",noComponents:"部品がありません",delete:"プラグインを削除",update:"プラグインを更新",new:"New",updateConfirm:"更新の確認",confirmUpdatePlugin:"プラグイン「{{author}}/{{name}}」を更新してもよろしいですか?",confirmUpdate:"更新を確認",updating:"更新中...",updateSuccess:"プラグインの更新に成功しました",updateError:"更新に失敗しました:",saveConfigSuccessNormal:"設定を保存しました",saveConfigError:"設定の保存に失敗しました:",config:"設定",readme:"ドキュメント",viewSource:"ソースを表示",loadingReadme:"ドキュメントを読み込み中...",noReadme:"このプラグインはREADMEドキュメントを提供していません",fileUpload:{tooLarge:"ファイルサイズが 10MB の制限を超えています",success:"ファイルのアップロードに成功しました",failed:"ファイルのアップロードに失敗しました",uploading:"アップロード中...",chooseFile:"ファイルを選択",addFile:"ファイルを追加"},installFromGithub:"GitHubから",enterRepoUrl:"GitHubリポジトリのURLを入力してください",repoUrlPlaceholder:"例: https://github.com/owner/repo",fetchingReleases:"リリース一覧を取得中...",selectRelease:"リリースを選択",noReleasesFound:"リリースが見つかりません",fetchReleasesError:"リリース一覧の取得に失敗しました:",selectAsset:"インストールするファイルを選択",noAssetsFound:"このリリースには利用可能な .lbpkg ファイルがありません",fetchAssetsError:"ファイル一覧の取得に失敗しました:",backToReleases:"リリース一覧に戻る",backToRepoUrl:"リポジトリURLに戻る",backToAssets:"ファイル選択に戻る",releaseTag:"タグ: {{tag}}",releaseName:"名前: {{name}}",publishedAt:"公開日: {{date}}",prerelease:"プレリリース",assetSize:"サイズ: {{size}}",confirmInstall:"インストールを確認",installFromGithubDesc:"GitHubリリースからプラグインをインストール"},market:{searchPlaceholder:"プラグインを検索...",searchResults:"{{count}} 個のプラグインが見つかりました",totalPlugins:"合計 {{count}} 個のプラグイン",noPlugins:"利用可能なプラグインがありません",noResults:"関連するプラグインが見つかりません",loadingMore:"さらに読み込み中...",loading:"読み込み中...",allLoaded:"すべてのプラグインが表示されました",install:"インストール",installConfirm:'プラグイン "{{name}}" ({{version}}) をインストールしますか?',downloadComplete:'プラグイン "{{name}}" のダウンロードが完了しました',installFailed:"インストールに失敗しました。後でもう一度お試しください",loadFailed:"プラグインリストの取得に失敗しました。後でもう一度お試しください",noDescription:"説明がありません",notFound:"プラグイン情報が見つかりません",sortBy:"並び順",sort:{recentlyAdded:"最近追加",recentlyUpdated:"最近更新",mostDownloads:"ダウンロード数多",leastDownloads:"ダウンロード数少"},downloads:"回ダウンロード",download:"ダウンロード",repository:"リポジトリ",downloadFailed:"ダウンロード失敗",noReadme:"このプラグインはREADMEドキュメントを提供していません",description:"説明",tagLabel:"タグ",submissionTitle:"プラグインの提出が審査中です: {{name}}",submissionPending:"プラグインの提出が審査中です: {{name}}",submissionApproved:"プラグインの提出が承認されました: {{name}}",submissionRejected:"プラグインの提出が拒否されました: {{name}}",clickToRevoke:"取り消し",revokeSuccess:"取り消し成功",revokeFailed:"取り消し失敗",submissionDetails:"プラグイン提出詳細",markAsRead:"既読",markAsReadSuccess:"既読に設定しました",markAsReadFailed:"既読に設定に失敗しました",filterByComponent:"コンポーネント",allComponents:"全部コンポーネント",requestPlugin:"プラグインをリクエスト",tags:{filterByTags:"タグで絞り込み",selected:"選択済み",selectTags:"タグを選択",clearAll:"クリア",noTags:"タグがありません"},viewDetails:"詳細を表示"},mcp:{title:"MCP",createServer:"MCPサーバーを追加",editServer:"MCPサーバーを編集",deleteServer:"MCPサーバーを削除",confirmDeleteServer:"このMCPサーバーを削除してもよろしいですか?",confirmDeleteTitle:"MCPサーバーを削除",getServerListError:"MCPサーバーリストの取得に失敗しました:",serverName:"サーバー名",serverMode:"接続モード",stdio:"Stdioモード",sse:"SSEモード",http:"HTTPモード",selectMode:"接続モードを選択",noServerInstalled:"MCPサーバーが設定されていません",serverNameRequired:"サーバー名は必須です",commandRequired:"コマンドは必須です",urlRequired:"URLは必須です",timeoutMustBePositive:"タイムアウトは正の数でなければなりません",command:"コマンド",args:"引数",env:"環境変数",url:"URL",headers:"ヘッダー",timeout:"タイムアウト",addArgument:"引数を追加",addEnvVar:"環境変数を追加",addHeader:"ヘッダーを追加",keyName:"キー名",value:"値",testing:"テスト中...",connecting:"接続中...",testSuccess:"刷新に成功しました",testFailed:"刷新に失敗しました:",testError:"刷新エラー",refreshSuccess:"刷新に成功しました",refreshFailed:"刷新に失敗しました:",connectionSuccess:"接続に成功しました",connectionFailed:"接続に失敗しました,URLを確認してください",connectionFailedStatus:"接続失敗",toolsFound:"個のツール",unknownError:"不明なエラー",noToolsFound:"ツールが見つかりません",parseResultFailed:"テスト結果の解析に失敗しました",noResultReturned:"テスト結果が返されませんでした",getTaskFailed:"タスクステータスの取得に失敗しました",noTaskId:"タスクIDを取得できませんでした",deleteSuccess:"削除に成功しました",deleteFailed:"削除に失敗しました:",deleteError:"削除に失敗しました:",saveSuccess:"保存に成功しました",saveError:"保存に失敗しました:",createSuccess:"作成に成功しました",createFailed:"作成に失敗しました:",createError:"作成に失敗しました:",loadFailed:"読み込みに失敗しました",modifyFailed:"変更に失敗しました:",toolCount:"ツール:{{count}}",statusConnected:"接続済み",statusDisconnected:"未接続",statusError:"接続エラー",statusDisabled:"無効",loading:"読み込み中...",starCount:"スター:{{count}}",install:"インストール",installFromGithub:"GitHubからMCPサーバーをインストール",add:"追加",name:"名前",nameRequired:"名前は必須です",sseTimeout:"SSEタイムアウト",sseTimeoutDescription:"SSE接続を確立するためのタイムアウト",extraParametersDescription:"MCPサーバーの特定の動作を設定するための追加パラメータ",timeoutMustBeNumber:"タイムアウトは数値である必要があります",timeoutNonNegative:"タイムアウトは負の数にできません",sseTimeoutMustBeNumber:"SSEタイムアウトは数値である必要があります",sseTimeoutNonNegative:"SSEタイムアウトは負の数にできません",updateSuccess:"更新に成功しました",updateFailed:"更新に失敗しました:"},pipelines:{title:"パイプライン",description:"メッセージイベントの処理フローを定義し、ボットに紐付けて使用するパイプラインです",createPipeline:"パイプラインを作成",editPipeline:"パイプラインを編集",chat:"チャット",configuration:"設定",debugChat:"チャットデバッグ",getPipelineListError:"パイプラインリストの取得に失敗しました:",daysAgo:"日前",today:"今日",updateTime:"更新日時",defaultBadge:"デフォルト",sortBy:"並び順",newestCreated:"最新作成",earliestCreated:"最古作成",recentlyEdited:"最近編集",earliestEdited:"最古編集",basicInfo:"基本情報",aiCapabilities:"AI機能",triggerConditions:"トリガー条件",safetyControls:"安全制御",outputProcessing:"出力処理",nameRequired:"名前は必須です",descriptionRequired:"説明は必須です",createSuccess:"作成が完了しました。パイプラインの詳細パラメータを設定してください",createError:"作成に失敗しました:",saveSuccess:"保存に成功しました",saveError:"保存に失敗しました:",copySuffix:" Copy",deleteConfirmation:"本当にこのパイプラインを削除しますか?このパイプラインに紐付けられたボットは動作しなくなります。",defaultPipelineCannotDelete:"デフォルトパイプラインは削除できません",deleteSuccess:"削除に成功しました",deleteError:"削除に失敗しました:",copyConfirmTitle:"コピーの確認",copyConfirmation:"このパイプラインをコピーしますか?すべての設定を含む新しいパイプラインが作成されます。",unsavedChanges:"未保存の変更があります",extensions:{title:"プラグイン統合",loadError:"プラグインリストの読み込みに失敗しました",saveSuccess:"保存に成功しました",saveError:"保存に失敗しました",noPluginsAvailable:"利用可能なプラグインがありません",disabled:"無効",noPluginsSelected:"プラグインが選択されていません",addPlugin:"プラグインを追加",selectPlugins:"プラグインを選択",pluginsTitle:"プラグイン",mcpServersTitle:"MCPサーバー",noMCPServersSelected:"MCPサーバーが選択されていません",addMCPServer:"MCPサーバーを追加",selectMCPServers:"MCPサーバーを選択",toolCount:"{{count}}個のツール",noPluginsInstalled:"インストールされているプラグインがありません",noMCPServersConfigured:"設定されているMCPサーバーがありません",selectAll:"すべて選択",enableAllPlugins:"すべてのプラグインを有効にする",enableAllMCPServers:"すべてのMCPサーバーを有効にする",allPluginsEnabled:"すべてのプラグインが有効になっています",allMCPServersEnabled:"すべてのMCPサーバーが有効になっています"},debugDialog:{title:"パイプラインのチャット",selectPipeline:"パイプラインを選択",sessionType:"セッションタイプ",privateChat:"プライベートチャット",groupChat:"グループチャット",send:"送信",reset:"会話をリセット",inputPlaceholder:"{{type}}メッセージを送信...",noMessages:"メッセージがありません",userMessage:"ユーザー",botMessage:"ボット",sendFailed:"送信に失敗しました",resetSuccess:"会話がリセットされました",resetFailed:"リセットに失敗しました",loadMessagesFailed:"メッセージの読み込みに失敗しました",loadPipelinesFailed:"パイプラインの読み込みに失敗しました",atTips:"ボットをメンション",streaming:"ストリーミング",streamOutput:"ストリーム",connected:"WebSocket接続済み",disconnected:"WebSocket未接続",connectionError:"WebSocket接続エラー",connectionFailed:"WebSocket接続に失敗しました",notConnected:"WebSocketに接続されていません。しばらくしてからやり直してください",imageUploadFailed:"画像のアップロードに失敗しました",reply:"返信",replyTo:"返信先",showMarkdown:"Markdownで表示",showRaw:"原文で表示"},monitoring:{title:"モニタリング",description:"このパイプラインの実行ログとエラー情報を表示(過去24時間)",detailedLogs:"詳細ログ"}},knowledge:{title:"知識ベース",createKnowledgeBase:"知識ベースを作成",editKnowledgeBase:"知識ベースを編集",selectKnowledgeBase:"知識ベースを選択",selectKnowledgeBases:"知識ベースを選択",addKnowledgeBase:"知識ベースを追加",noKnowledgeBaseSelected:"知識ベースが選択されていません",empty:"なし",editDocument:"ドキュメント",description:"LLMの回答品質向上のための知識ベースを設定します",metadata:"メタデータ",documents:"ドキュメント",kbNameRequired:"知識ベース名は必須です",kbDescriptionRequired:"知識ベースの説明は必須です",embeddingModelUUIDRequired:"埋め込みモデルは必須です",daysAgo:"日前",today:"今日",kbName:"知識ベース名",kbDescription:"知識ベースの説明",topK:"Top K",topKRequired:"Top Kは必須です",topKMax:"Top Kの最大値は30です",topKdescription:"取得する関連性の高い上位K件の文書の数。1~30の範囲で設定できます",defaultDescription:"知識ベース",embeddingModelUUID:"埋め込みモデル",selectEmbeddingModel:"埋め込みモデルを選択",embeddingModelDescription:"テキストのベクトル化に使用する埋め込みモデルを管理します",updateTime:"更新日時",cannotChangeEmbeddingModel:"知識ベース作成後は埋め込みモデルを変更できません",updateKnowledgeBaseSuccess:"知識ベースの更新に成功しました",updateKnowledgeBaseFailed:"知識ベースの更新に失敗しました",documentsTab:{name:"名前",status:"ステータス",noResults:"ドキュメントがありません",dragAndDrop:"ファイルをここにドラッグ&ドロップするか、クリックしてアップロードしてください",uploading:"アップロード中...",supportedFormats:"PDF、Word、TXT、Markdownなどのドキュメントファイルをサポートしています",uploadSuccess:"ファイルのアップロードに成功しました!",uploadError:"ファイルのアップロードに失敗しました。再度お試しください",uploadingFile:"ファイルをアップロード中...",fileSizeExceeded:"ファイルサイズが10MBの制限を超えています。より小さいファイルに分割してください。",actions:"アクション",delete:"ドキュメントを削除",fileDeleteSuccess:"ドキュメントの削除に成功しました",fileDeleteFailed:"ドキュメントの削除に失敗しました",processing:"処理中",completed:"完了",failed:"失敗"},deleteKnowledgeBaseConfirmation:"本当にこの知識ベースを削除しますか?この知識ベースに紐付けられたドキュメントは削除されます。",retrieve:"検索テスト",retrieveTest:"検索テスト",query:"検索",queryPlaceholder:"検索内容を入力...",distance:"距離",content:"内容",fileName:"ファイル名",noResults:"検索結果がありません",retrieveError:"検索に失敗しました",builtIn:"内蔵",external:"外部ナレッジベース",addExternal:"外部ナレッジベースを追加",createExternalSuccess:"外部ナレッジベースが正常に作成されました",updateExternalSuccess:"外部ナレッジベースが正常に更新されました",deleteExternalSuccess:"外部ナレッジベースが正常に削除されました",retriever:"検索器",selectRetriever:"検索器を選択...",retrieverConfiguration:"検索器設定",retrieverInstallInfo:"ナレッジ検索器プラグインは",retrieverMarketLink:"こちらからインストールできます"},register:{title:"LangBot を初期化 👋",description:"これはLangBotの初回起動です",adminAccountNote:"ここで初期化されたアカウントは管理者アカウントとして使用されます",register:"登録",initWithSpace:"Space で初期化",spaceRecommended:"おすすめ:公式の安定したモデル API とクラウドサービスを利用",spaceInfoTip1:"Space は統一されたアカウント認証サービスを提供し、機密情報をアップロードすることはありません。",spaceInfoTip2:"Space アカウントでログインすると、LangBot Models などのクラウドサービスを利用でき、無料のモデル呼び出しクレジットで迅速に開始できます。",spaceInfoTip3:"ログイン方法は他の機能に影響しません。いつでも他のソースからモデルを設定して使用できます。",registerLocal:"ローカルアカウントを登録",registerWithPassword:"メールアドレスとパスワードで登録",initSuccess:"初期化に成功しました。ログインしてください",initFailed:"初期化に失敗しました:"},resetPassword:{title:"パスワードをリセット 🔐",description:"復旧キーと新しいパスワードを入力して、アカウントのパスワードをリセットします",recoveryKey:"復旧キー",recoveryKeyDescription:"設定ファイル `data/config.yaml` の `system.recovery_key` に保存されています",newPassword:"新しいパスワード",enterRecoveryKey:"復旧キーを入力",enterNewPassword:"新しいパスワードを入力",recoveryKeyRequired:"復旧キーは必須です",newPasswordRequired:"新しいパスワードは必須です",resetPassword:"パスワードをリセット",resetting:"リセット中...",resetSuccess:"パスワードのリセットに成功しました。ログインしてください",resetFailed:"パスワードのリセットに失敗しました。メールアドレスと復旧キーを確認してください",backToLogin:"ログインに戻る"},embedding:{description:"テキストのベクトル化に使用する埋め込みモデルを管理します",createModel:"埋め込みモデルを作成",editModel:"埋め込みモデルを編集",getModelListError:"埋め込みモデルリストの取得に失敗しました:",embeddingModels:"埋め込みモデル",extraParametersDescription:"リクエストボディに追加されるパラメータ(encoding_format、dimensions など)"},llm:{description:"チャットメッセージの生成に使用するLLMモデルを管理します",llmModels:"LLMモデル",extraParametersDescription:"リクエストボディに追加されるパラメータ(max_tokens、temperature、top_p など)"},version:{newVersionAvailable:"新しいバージョンが利用可能",viewUpdateGuide:"アップデート方法を見る",noReleaseNotes:"リリースノートはありません"},account:{settings:"アカウント設定",setPassword:"パスワードを設定",passwordSetSuccess:"パスワードの設定に成功しました",passwordStatus:"ローカルパスワード",passwordSet:"設定済み",passwordNotSet:"未設定",passwordSetDescription:"パスワードが設定されています。メールとパスワードでログインできます",spaceStatus:"Space アカウント",spaceBound:"連携済み",spaceNotBound:"未連携",spaceBoundDescription:"Space アカウントと連携済み、公式モデル API とクラウドサービスが利用可能",bindSpace:"Space アカウントを連携",bindSpaceDescription:"連携して公式モデル API とクラウドサービスを利用",bindSpaceButton:"連携",bindSpaceConfirmTitle:"連携を確認",bindSpaceConfirmDescription:"ローカルインスタンスを Space アカウントに連携しようとしています",bindSpaceWarning:"連携後、ログインメールアドレスは {{localEmail}} から Space アカウントのメールアドレスに変更されます。",bindSpaceSuccess:"Space アカウントの連携に成功しました",bindSpaceFailed:"Space アカウントの連携に失敗しました",bindSpaceInvalidState:"無効な連携リクエストです。アカウント設定から再度お試しください。",setPasswordHint:"パスワードを設定するとメールとパスワードでログインできます",spaceEmailMismatch:"Spaceログインのメールアドレスがローカルアカウントのメールアドレスと一致しません"},monitoring:{title:"モニタリング",description:"ボットアクティビティ、LLM呼び出し、システムパフォーマンスを監視",overview:"概要",totalMessages:"総メッセージ数",llmCallsCount:"LLM呼び出し",modelCallsCount:"モデル呼び出し",successRate:"成功率",activeSessions:"アクティブセッション",last24Hours:"過去24時間",filters:{title:"フィルター",bot:"ボット",pipeline:"パイプライン",allBots:"すべてのボット",selectBot:"ボットを選択",allPipelines:"すべてのパイプライン",selectPipeline:"パイプラインを選択",loading:"読み込み中...",timeRange:"時間範囲",customRange:"カスタム範囲",from:"開始",to:"終了",apply:"適用",reset:"フィルターをリセット",lastHour:"過去1時間",last6Hours:"過去6時間",last24Hours:"過去24時間",last7Days:"過去7日間",last30Days:"過去30日間"},tabs:{messages:"メッセージ記録",llmCalls:"LLM呼び出し",embeddingCalls:"Embedding呼び出し",modelCalls:"モデル呼び出し",sessions:"セッション分析",errors:"エラーログ"},messageList:{timestamp:"タイムスタンプ",bot:"ボット",pipeline:"パイプライン",message:"メッセージ",sessionId:"セッションID",status:"ステータス",actions:"アクション",viewDetails:"詳細を表示",copyId:"IDをコピー",noMessages:"メッセージが見つかりません",noMessagesDescription:"フィルターを調整するか、後で確認してください",loading:"メッセージを読み込んでいます...",loadMore:"もっと読み込む",autoRefresh:"自動更新",platform:"プラットフォーム",user:"ユーザー",level:"レベル",runner:"ランナー",viewConversation:"会話詳細を表示"},llmCalls:{model:"モデル",tokens:"トークン数",duration:"期間",cost:"コスト",noData:"LLM呼び出し記録が見つかりません",inputTokens:"入力トークン",outputTokens:"出力トークン",totalTokens:"合計トークン数"},embeddingCalls:{title:"Embedding呼び出し",model:"モデル",tokens:"トークン数",duration:"期間",noData:"Embedding呼び出し記録が見つかりません",promptTokens:"入力トークン",totalTokens:"合計トークン数",inputCount:"入力数",knowledgeBase:"ナレッジベース",queryText:"クエリ"},modelCalls:{title:"モデル呼び出し",llmModel:"対話モデル",embeddingModel:"埋め込みモデル",embeddingCall:"埋め込み呼び出し",retrieveCall:"検索呼び出し",noData:"モデル呼び出し記録が見つかりません"},sessions:{sessionId:"セッションID",messageCount:"メッセージ数",duration:"期間",lastActivity:"最終アクティビティ",noSessions:"セッションが見つかりません",startTime:"開始時刻"},errors:{errorType:"エラータイプ",errorMessage:"エラーメッセージ",occurredAt:"発生時刻",noErrors:"エラーが見つかりません",stackTrace:"スタックトレース",title:"エラー"},messageDetails:{noData:"このクエリにはLLM呼び出しやエラーがありません"},queryVariables:{title:"クエリ変数"},viewMonitoring:"モニタリングを表示",refreshData:"データを更新",exportData:"データをエクスポート",export:{title:"データをエクスポート",exporting:"エクスポート中...",messages:"メッセージ",llmCalls:"LLM コール",embeddingCalls:"Embedding コール",errors:"エラーログ",sessions:"セッション"}},limitation:{maxBotsReached:"ボット数が上限({{max}}個)に達しました。新しいボットを作成するには、既存のボットを削除してください。",maxPipelinesReached:"パイプライン数が上限({{max}}個)に達しました。新しいパイプラインを作成するには、既存のパイプラインを削除してください。",maxExtensionsReached:"拡張機能数が上限({{max}}個)に達しました。新しい MCP サーバーやプラグインを追加するには、既存のものを削除してください。"}}}},fallbackLng:"zh-Hans",debug:!1,interpolation:{escapeValue:!1},detection:{order:["localStorage","navigator"],lookupLocalStorage:"langbot_language",caches:["localStorage"]}}),e.s(["default",0,W],18090)}]);