@acedatacloud/nexior 3.302.0 → 3.303.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ApiCodeButton-CtT8bAt2.js → ApiCodeButton-ClF_5uX0.js} +1 -1
- package/dist/assets/{AskUserQuestionCard-uZblOXXu.js → AskUserQuestionCard-C-DbbwkT.js} +1 -1
- package/dist/assets/{Auth-BeuRbe8c.js → Auth-BccyHRHh.js} +1 -1
- package/dist/assets/{Bare-CP9vwN18.js → Bare-BL9xw7bQ.js} +1 -1
- package/dist/assets/{BotPlaceholder-gvFcZGvB.js → BotPlaceholder-XVpggWts.js} +1 -1
- package/dist/assets/{BottomFooter-DLHW-ZVQ.js → BottomFooter-DhjM420b.js} +1 -1
- package/dist/assets/{Callback-BPve0IFr.js → Callback-bobTWu-X.js} +1 -1
- package/dist/assets/{CodeSnippet-CDQMskUa.js → CodeSnippet-BrRCTbV2.js} +1 -1
- package/dist/assets/{Console-Bx8MWJc6.js → Console-BM97vCWQ.js} +1 -1
- package/dist/assets/{Consumption-BM2XbJ9D.js → Consumption-CRTyuxVK.js} +1 -1
- package/dist/assets/{Conversation-DQsiFT3_.js → Conversation-DOAXXsGS.js} +1 -1
- package/dist/assets/{CopyToClipboard-CGVxVxyj.js → CopyToClipboard-BJ4cWa_D.js} +1 -1
- package/dist/assets/{Detail-RxfpNj25.js → Detail-DQc5vHbc.js} +2 -2
- package/dist/assets/{Extra-DmPZ9vi3.js → Extra-CbXPkJEK.js} +1 -1
- package/dist/assets/{FilePreview-BLX3GPFZ.js → FilePreview-CrQOhaAu.js} +1 -1
- package/dist/assets/{Hailuo-Cj3L_vA4.js → Hailuo-x29FeIOy.js} +1 -1
- package/dist/assets/{History-iofylWei.js → History-3Kg0-Fzz.js} +1 -1
- package/dist/assets/{ImagePreview-BVZPQCEu.js → ImagePreview-C-SawJdM.js} +1 -1
- package/dist/assets/{ImageWrapper-CYYqsiz2.js → ImageWrapper-DImi0_wW.js} +1 -1
- package/dist/assets/{Index-Bjx9tjF0.js → Index-1xCh5CN_.js} +1 -1
- package/dist/assets/{Index-Dq3VyWdJ.js → Index-B8PHDaFR.js} +1 -1
- package/dist/assets/{Index-CPzd01ss.js → Index-B9Kii_MA.js} +1 -1
- package/dist/assets/{Index-DaWh0Kag.js → Index-BBDQ8YNw.js} +1 -1
- package/dist/assets/{Index-CUERIkTe.js → Index-BHCWkSHL.js} +1 -1
- package/dist/assets/{Index-rVR7CNms.js → Index-BMIYDxbP.js} +1 -1
- package/dist/assets/{Index-BzGOGsz4.js → Index-BQp5ET5Z.js} +1 -1
- package/dist/assets/{Index-BApeRLuZ.js → Index-BVFII2fM.js} +1 -1
- package/dist/assets/{Index-BC0a9an9.js → Index-Ba0Q1L6c.js} +1 -1
- package/dist/assets/{Index-Cr5lz6P4.js → Index-BkcnUF3v.js} +1 -1
- package/dist/assets/{Index-Boo6nosF.js → Index-Bt5gYf3S.js} +1 -1
- package/dist/assets/{Index-DIDYEiuO.js → Index-COrR9k9N.js} +1 -1
- package/dist/assets/{Index-DKdEQdph.js → Index-CP5NIvXa.js} +1 -1
- package/dist/assets/{Index-BsuqFwx3.js → Index-CYcL-p8u.js} +1 -1
- package/dist/assets/{Index-DrTvStJ-.js → Index-CkkPGs1A.js} +1 -1
- package/dist/assets/{Index-Aon_UgE7.js → Index-DJ299fC6.js} +1 -1
- package/dist/assets/{Index-BTti-KNW.js → Index-DKtpXRgz.js} +1 -1
- package/dist/assets/{Index-DNlo2jeH.js → Index-DKvnwl-r.js} +1 -1
- package/dist/assets/{Index-C2cfO7-5.js → Index-DTZOgWOT.js} +1 -1
- package/dist/assets/{Index-DDmE9qtM.js → Index-DaQLGcg-.js} +1 -1
- package/dist/assets/{Index-DWj66l_u.js → Index-Dcnoncnn.js} +1 -1
- package/dist/assets/{Index-Nx_dVpG1.js → Index-DmFcvbDg.js} +1 -1
- package/dist/assets/{Index-BKtQpALC.js → Index-Dn65FURQ.js} +1 -1
- package/dist/assets/{Index-cbeGinI_.js → Index-DytqDp37.js} +1 -1
- package/dist/assets/{Index-BqtBmQg4.js → Index-SJRgZksZ.js} +1 -1
- package/dist/assets/{Index-B5AYcmbb.js → Index-ha0MYHcZ.js} +1 -1
- package/dist/assets/{Index-Cznd7xjE.js → Index-m871QGZJ.js} +1 -1
- package/dist/assets/{Index-DVJq2l0I.js → Index-tUawGkGw.js} +1 -1
- package/dist/assets/{Invitees-lX0g1MVJ.js → Invitees-CKImVMfu.js} +1 -1
- package/dist/assets/{List-CbauNyOG.js → List-BvOINiMz.js} +1 -1
- package/dist/assets/{List-DcCc3tCn.js → List-sJjMnij2.js} +1 -1
- package/dist/assets/{List-rjwG1mUA.js → List-tTVzT7A_.js} +1 -1
- package/dist/assets/LocalTools-BZGtRWhj.js +1 -0
- package/dist/assets/{LocalTools-CVH44zeK.js → LocalTools-BouYAaxr.js} +1 -1
- package/dist/assets/LocalTools-DM8BzuBp.css +1 -0
- package/dist/assets/{Main-Y1zZi2g4.js → Main-8MilFfED.js} +1 -1
- package/dist/assets/{Model-Cdw8fjy-.js → Model-B6HlroLE.js} +1 -1
- package/dist/assets/{Navigator-BqdFExpY.js → Navigator-BNk8MfC1.js} +1 -1
- package/dist/assets/{NoTasks-Bi6d1Dpr.js → NoTasks-Bpna1KF3.js} +1 -1
- package/dist/assets/{NotFound-eeg2p6jM.js → NotFound-9ZxJcPjT.js} +1 -1
- package/dist/assets/{Pagination-ZUPZYJjJ.js → Pagination-H17MTYYL.js} +1 -1
- package/dist/assets/{Pay-CKRf9M1R.js → Pay-BmrwfDNY.js} +1 -1
- package/dist/assets/{Player-CuEUw6V_.js → Player-DLpXKvx0.js} +1 -1
- package/dist/assets/{PromptTextarea-BlYgWDBs.js → PromptTextarea-JHBmf8dE.js} +1 -1
- package/dist/assets/{RealtimeCall-Bjdd3LBg.js → RealtimeCall-DAqcrz0k.js} +1 -1
- package/dist/assets/{ScheduledTasks-BlOvIucx.js → ScheduledTasks-B1rbKpsg.js} +1 -1
- package/dist/assets/{Status-C8O22baY.js → Status-BYjWZpoM.js} +1 -1
- package/dist/assets/{Subscribe-RmLefUgX.js → Subscribe-OgcGURg-.js} +1 -1
- package/dist/assets/{TabSwitcher-73mFSUk3.js → TabSwitcher-Dm6iRMbh.js} +1 -1
- package/dist/assets/{Tts-DFByHcV9.js → Tts-DSEHLO9A.js} +1 -1
- package/dist/assets/{VideoPlayer-DbWaz_DH.js → VideoPlayer-BqYd3rkL.js} +1 -1
- package/dist/assets/{avatar-MjlqJzif.js → avatar-DWrRCUpI.js} +1 -1
- package/dist/assets/{basic-DrQLL2hC.js → basic-DK3CxIv9.js} +1 -1
- package/dist/assets/{chat-ClnbM3o6.js → chat-dSE34_oI.js} +1 -1
- package/dist/assets/{codingBridge-CHjVKzPT.js → codingBridge-CvhFSA-x.js} +1 -1
- package/dist/assets/{codingBridgeNotify-DIQ8FH9_.js → codingBridgeNotify-CAgXFakW.js} +2 -2
- package/dist/assets/{collapse-CCnnYz34.js → collapse-DD8ziopn.js} +1 -1
- package/dist/assets/{common-DpgIRzqI.js → common-B41ihZJm.js} +1 -1
- package/dist/assets/{common-YVgHkqoy.js → common-BbaVZouS.js} +1 -1
- package/dist/assets/{common-CcSOzMwA.js → common-Biasf4zm.js} +1 -1
- package/dist/assets/{common-T59BFbSx.js → common-BoAcwOef.js} +1 -1
- package/dist/assets/{common-Bw_o9wux.js → common-CVxcjmLm.js} +1 -1
- package/dist/assets/{common-B8ozmU4U.js → common-CXvgyQTA.js} +1 -1
- package/dist/assets/{common-BsRoMCm3.js → common-CZ7oKPtU.js} +1 -1
- package/dist/assets/{common-r9jwtO34.js → common-C_0ErBA4.js} +1 -1
- package/dist/assets/{common-BtXFMVab.js → common-CgKtgbXN.js} +1 -1
- package/dist/assets/{common-BLqtAzFh.js → common-Cmxdf2_E.js} +1 -1
- package/dist/assets/{common-D3Lou2MC.js → common-CvivEw9T.js} +1 -1
- package/dist/assets/{common-ClTwVqWt.js → common-DFNRsLN1.js} +1 -1
- package/dist/assets/{common-D1_vkOO9.js → common-DJV0c76u.js} +1 -1
- package/dist/assets/{common-BPSdgToC.js → common-D_Nb3vSv.js} +1 -1
- package/dist/assets/{common-CQmWNIVR.js → common-NaBSOA3r.js} +1 -1
- package/dist/assets/{common-CP1qxz41.js → common-PqKiwdW6.js} +1 -1
- package/dist/assets/{common-Ci7qclu4.js → common-cWsMCkDW.js} +1 -1
- package/dist/assets/{common-DeLTr12V.js → common-ucKLoMrO.js} +1 -1
- package/dist/assets/{constants-D_uJ-F_h.js → constants-DNpQuSUd.js} +1 -1
- package/dist/assets/{createTaskActions-1eSIe8XK.js → createTaskActions-BhbtJvKA.js} +1 -1
- package/dist/assets/{date-picker-CSqE7KZG.js → date-picker-BeHFlqbW.js} +1 -1
- package/dist/assets/{digitalhuman-BRjjQGE5.js → digitalhuman-BlqdXR4R.js} +1 -1
- package/dist/assets/{dropdown-B7IRiAl9.js → dropdown-BAfTvsx2.js} +1 -1
- package/dist/assets/{esm-XeJZwR8-.js → esm-BKdVv5p0.js} +1 -1
- package/dist/assets/{esm-BQgqzimj.js → esm-B_QeMYxU.js} +2 -2
- package/dist/assets/{esm-CJ_ATanf.js → esm-C0IHha-f.js} +2 -2
- package/dist/assets/{esm-MGwsLVkX.js → esm-CSyQtxWU.js} +1 -1
- package/dist/assets/{esm-DZJsuKLK.js → esm-DiHDgOvF.js} +3 -3
- package/dist/assets/{esm-C5VGuRET.js → esm-_KxpMuSS.js} +1 -1
- package/dist/assets/esm-ijf2nAIM.js +1 -0
- package/dist/assets/{fish-D8B-1g9V.js → fish-Bx4moYEI.js} +1 -1
- package/dist/assets/{flux-C-rUJSXt.js → flux-B-xeWCQC.js} +1 -1
- package/dist/assets/{grokvideo-CQwmToSN.js → grokvideo-DRhwgGin.js} +1 -1
- package/dist/assets/{hailuo-DfHZ5_ET.js → hailuo-BGwC0Bxc.js} +1 -1
- package/dist/assets/{headshots-CpmtWkik.js → headshots-DnZWvzQ0.js} +1 -1
- package/dist/assets/{image-CHYVeD37.js → image-Dq96Xper.js} +1 -1
- package/dist/assets/{index-DAlDzwmD.js → index-BagZk06I.js} +4 -4
- package/dist/assets/{index.browser.esm-D1yj8Trq.js → index.browser.esm-DZC34pZ2.js} +1 -1
- package/dist/assets/{index.es-CJYlnE-k.js → index.es-B2VlwOr_.js} +1 -1
- package/dist/assets/{input-number-psvu0jQV.js → input-number-Dyg16v0K.js} +1 -1
- package/dist/assets/{kling-BMC-nvvc.js → kling-DvL9ZiYj.js} +1 -1
- package/dist/assets/{luma-BzHqr5KD.js → luma-Bwcmzx_q.js} +1 -1
- package/dist/assets/{maestro-qQ6K3MbP.js → maestro-CtZf5aBh.js} +1 -1
- package/dist/assets/{midjourney-CCJxtiG0.js → midjourney-BJk966ro.js} +1 -1
- package/dist/assets/{nanobanana-BAziA5No.js → nanobanana-TYtXrk6d.js} +1 -1
- package/dist/assets/{openaiimage-Dg8Uq9EP.js → openaiimage-BpMamVmD.js} +1 -1
- package/dist/assets/{pagination-BuJI5vRm.js → pagination-BYwrVl5j.js} +1 -1
- package/dist/assets/{pika-q_W-cIfF.js → pika-wZK9SMPX.js} +1 -1
- package/dist/assets/{pixverse-4CdB69a8.js → pixverse-YB1aXl0C.js} +1 -1
- package/dist/assets/{popover-DgzHdAEA.js → popover-BEMngdIl.js} +1 -1
- package/dist/assets/{producer-PlfKsmy4.js → producer-BmbH9v3S.js} +1 -1
- package/dist/assets/{qrart-Bp5CDdAc.js → qrart-Byu6wm0l.js} +1 -1
- package/dist/assets/{realtime-CrnxGdGh.js → realtime-Qeand8_g.js} +1 -1
- package/dist/assets/{row-CrykrXgG.js → row-BRzneEdS.js} +1 -1
- package/dist/assets/{seedance-ak_2wUcd.js → seedance-rQB1DoM5.js} +1 -1
- package/dist/assets/{seedream-BZCKJg6T.js → seedream-BP2Ngxwx.js} +1 -1
- package/dist/assets/{select-BB_FN7K3.js → select-BdRfhFiQ.js} +1 -1
- package/dist/assets/{serp-C5gS8z2P.js → serp-Dn1V8FpY.js} +1 -1
- package/dist/assets/{slider-BngbyjgS.js → slider-Byv7aKgM.js} +1 -1
- package/dist/assets/{solana-wallets-C8ZhBL3F.js → solana-wallets-Deh1hJN2.js} +2 -2
- package/dist/assets/{solana-wallets-vue-C3XyOA-B.js → solana-wallets-vue-DcexNa0W.js} +1 -1
- package/dist/assets/{sora-DgNR2iPf.js → sora-CIw7PRtp.js} +1 -1
- package/dist/assets/{suno-DKkHkkXg.js → suno-CKA1VF-G.js} +1 -1
- package/dist/assets/{switch-CpaLIXzf.js → switch-kHjfJuQ2.js} +1 -1
- package/dist/assets/{tabs-CkVGOCdt.js → tabs-CMOVMWgH.js} +1 -1
- package/dist/assets/{time-picker-Dru9iojY.js → time-picker-CT7UQj3N.js} +1 -1
- package/dist/assets/{upload-DIG3ggsv.js → upload-DT_UdtVs.js} +1 -1
- package/dist/assets/{veo-HVOt5-4-.js → veo-C5sdh4Tm.js} +1 -1
- package/dist/assets/{wan-IEhAHXKp.js → wan-DII8Uqpo.js} +1 -1
- package/dist/assets/{web-DaD2c3ta.js → web-59LETsgP.js} +1 -1
- package/dist/assets/{web-BrHi6wdD.js → web-BNIj54Nk.js} +1 -1
- package/dist/assets/{web-DFvP_CQI.js → web-BXpirZ0m.js} +1 -1
- package/dist/assets/{web-BBuFjMJd.js → web-CCVoQeTA.js} +1 -1
- package/dist/assets/{web-BpNcCecX.js → web-DNYVwntC.js} +1 -1
- package/dist/assets/{webextrator-gQIZaR3z.js → webextrator-_ZC1OQsq.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/LocalTools-Cv7XbnZm.js +0 -1
- package/dist/assets/LocalTools-DUs9WDc4.css +0 -1
- package/dist/assets/esm-CQHjfEoY.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e,t}from"./rolldown-runtime--c01j_DQ.js";import{Ft as n}from"./index-
|
|
1
|
+
import{o as e,t}from"./rolldown-runtime--c01j_DQ.js";import{Ft as n}from"./index-BagZk06I.js";import{i as r,l as i,n as a,o,t as s}from"./lit-Czpkz5lw.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./wui-text-IdpNh4yv.js";import{$ as m,G as h,H as g,J as _,K as v,Q as ee,U as y,W as b,X as x,Y as S,Z as C,a as w,et as te,g as T,i as ne,n as E,p as re,r as D,s as O,u as ie,v as ae}from"./ConstantsUtil-CiJQ7E9o.js";import{n as oe,t as se}from"./ConnectorUtil-BNHqGaBo.js";var ce=i`
|
|
2
2
|
:host {
|
|
3
3
|
position: relative;
|
|
4
4
|
background-color: var(--wui-color-gray-glass-002);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{zi as e}from"./constants-
|
|
1
|
+
import{zi as e}from"./constants-DNpQuSUd.js";import{Hn as t,Mn as n,Pr as r,Wn as i,jn as a,xr as o}from"./index-BagZk06I.js";var s={namespaced:!0,state:o,mutations:{setModel:(e,t)=>{e.model=t},setModelGroup:(e,t)=>{e.modelGroup=t},setService:(e,t)=>{e.service=t},setCredential:(e,t)=>{e.credential=t},setConversations:(e,t)=>{e.conversations=t},setApplication:(e,t)=>{e.application=t},setApplications:(e,t)=>{e.applications=t},setPendingDraft:(e,t)=>{e.pendingDraft=t||``},resetAll:e=>{Object.assign(e,o())}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},createCredential:async({commit:e,state:t})=>{let n=t.application;if(console.debug(`prepare to create credential for application for chat`,n),!n){console.error(`Application not found`);return}console.debug(`creating create credential for application for chat`,n);let{data:r}=await a.create({application_id:n?.id,host:window.location.origin});return console.debug(`created credential success`,r),e(`setCredential`,r),console.debug(`end createCredential`),r},setModel:async({commit:e},t)=>{e(`setModel`,t)},setModelGroup:async({commit:e},t)=>{e(`setModelGroup`,t)},getService:async({commit:t,state:i})=>{i.status.getService=r.Request;try{let{data:a}=await n.get(e);return i.status.getService=r.Success,t(`setService`,a),a}catch{i.status.getService=r.Error,t(`setService`,void 0)}},setService:async({commit:e},t)=>{console.debug(`set service for chat`,t),e(`setService`,t)},setCredential:async({commit:e},t)=>{console.debug(`set credential`,t),e(`setCredential`,t)},setApplication:async({commit:e,dispatch:t,rootState:n},r)=>{if(console.debug(`set application`,r),e(`setApplication`,r),console.debug(`application is set`),!r){console.debug(`application is null, return`);return}let i=n?.user?.id,a=r?.role===`grantee`,o=r?.credentials?.find(e=>e?.host===window.location.origin);!o&&a&&(o=r?.credentials?.find(e=>e?.user_id===i)),o?(console.debug(`credential exists, set credential`,o),e(`setCredential`,o)):a?(console.warn(`no credential available for granted application`,r),e(`setCredential`,void 0)):(console.debug(`credential not exists, start to create credential for application`,r),await t(`createCredential`))},setApplications:async({commit:e},t)=>{console.debug(`set applications for chat`,t),e(`setApplications`,t)},getApplications:async({commit:t,state:n,rootState:a})=>{if(console.debug(`start to get applications for chat`),!a?.token?.access)return n.status.getApplications=r.Success,t(`setApplications`,[]),t(`setApplication`,void 0),t(`setCredential`,void 0),[];n.status.getApplications=r.Request;try{let{data:a}=await i.getAll({user_id:`me`,service_id:e,affiliation:[`owner`,`granted`]});return console.debug(`get applications success for chat`,a),n.status.getApplications=r.Success,t(`setApplications`,a.items),console.debug(`set applications for chat`,a.items),a.items}catch(e){console.error(`get applications failed for chat`,e),n.status.getApplications=r.Error,t(`setApplications`,void 0),t(`setApplication`,void 0)}},setConversation:async({commit:e,state:t},n)=>{console.debug(`set conversation`,n);let r=t.conversations||[],i=r?.findIndex(e=>e.id===n.id);i>-1?r[i]=n:r?.unshift(n),e(`setConversations`,r),console.debug(`set conversation success`,r)},setConversations:async({commit:e},t)=>{console.debug(`set conversations`,t),e(`setConversations`,t)},getConversations:async({commit:e,state:n,rootState:i})=>{n.status.getConversations=r.Request;let a=n.credential?.token,o=n.modelGroup?.name;if(!a||!o)return n.status.getConversations=r.Error,e(`setConversations`,[]),[];try{let{data:s}=await t.getConversations({userId:i.user?.id,modelGroup:o},{token:a});return console.debug(`get conversations success`,s?.items?.length,`group=`,o),n.status.getConversations=r.Success,e(`setConversations`,s.items),s.items}catch{return n.status.getConversations=r.Error,e(`setConversations`,[]),[]}},getConversation:async({commit:e,state:n},r)=>{let i=n.credential?.token;if(!(!i||!r))try{let{data:a}=await t.getConversation(r,{token:i}),o=n.conversations||[],s=o.findIndex(e=>e.id===r),c=s>-1?{...o[s],...a}:a;if(s>-1){let t=[...o];t[s]=c,e(`setConversations`,t)}return c}catch(e){console.error(`getConversation failed`,r,e);return}}}};export{s as chat,s as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,S as m,T as h,V as g,_,a as v,b as y,c as b,d as x,ea as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,S as m,T as h,V as g,_,a as v,b as y,c as b,d as x,ea as S,f as C,g as w,h as ee,i as te,j as ne,k as re,l as ie,m as ae,n as oe,o as T,p as E,r as D,s as O,t as k,u as A,v as j,w as M,x as N,y as P,z as F}from"./constants-DNpQuSUd.js";import{Pr as I,Vr as L,Wr as R,Xn as z,nn as B}from"./index-BagZk06I.js";import{a as se,i as V,n as H,o as U,r as W}from"./codingBridgeNotify-CAgXFakW.js";var G=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,K=()=>{try{return typeof localStorage<`u`&&localStorage.getItem(`cbDebug`)===`1`}catch{return!1}},q=(e,t)=>{if(!K())return;let n=t?.payload??{};console.debug(`[codingBridge]`,e,{type:t?.type,id:t?.id,node_id:t?.node_id??t?.from_node,action:n?.action,event:n?.event,session_id:n?.session_id,trace_id:n?.trace_id})},ce=class{ws;token;handlers;reconnectDelay=o;reconnectTimer;closedByUser=!1;constructor(e,t){this.token=e,this.handlers=t}get isOpen(){return this.ws?.readyState===WebSocket.OPEN}connect(){this.closedByUser=!1,this.open()}open(){if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return;let e=`${S}?token=${encodeURIComponent(this.token)}`,t;try{t=new WebSocket(e)}catch(e){console.warn(`[codingBridge] failed to open socket`,e),this.scheduleReconnect();return}this.ws=t,t.onopen=()=>{this.reconnectDelay=o,this.handlers.onOpen?.()},t.onmessage=e=>this.onMessage(e),t.onclose=()=>{this.handlers.onClose?.(),this.closedByUser||this.scheduleReconnect()},t.onerror=()=>{t.close()}}onMessage(e){let n;try{n=JSON.parse(e.data)}catch{return}let r=n?.payload??{};switch(q(`recv`,n),n?.type){case t:this.handlers.onEvent?.(r,n?.from_node);break;case p:this.handlers.onNodesSnapshot?.(r.nodes??[]);break;case F:this.handlers.onNodeStatus?.(r.node_id,r.status);break;case w:this.handlers.onRelayError?.(r.code??`error`,r.message??``);break;default:break}}scheduleReconnect(){if(this.closedByUser||this.reconnectTimer)return;let e=this.reconnectDelay;this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=void 0,this.open()},e),this.reconnectDelay=Math.min(this.reconnectDelay*2,g)}sendEnvelope(e,t){if(!this.isOpen)return;let n={v:2,id:G(),ts:Date.now(),type:e,...t};q(`send`,n),this.ws?.send(JSON.stringify(n))}sendToNode(e,t){this.sendEnvelope(ee,{node_id:e,payload:t})}listNodes(){this.sendEnvelope(E,{})}resume(e){this.sendEnvelope(ae,{payload:{resume_from:e}})}close(){if(this.closedByUser=!0,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),void 0),this.ws){this.ws.onclose=null,this.ws.onerror=null,this.ws.onmessage=null,this.ws.onopen=null;try{this.ws.close()}catch{}this.ws=void 0}}},J,Y=()=>typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(16)}${Math.random().toString(16).slice(2)}`,X=(e,t,n)=>({id:Y(),session_id:e,kind:t,ts:Date.now(),...n}),Z=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`)return t}catch{}return{answers:{}}},le=e=>{let t=Z(e).answers??{};return Object.entries(t).map(([e,t])=>`${e} → ${Array.isArray(t)?t.join(`, `):t}`).join(`
|
|
2
2
|
`)},ue=(e,t)=>{H({title:`Approval needed`,body:`Claude wants to use ${t.tool||`a tool`}. Tap to review.`,data:t},t=>{t.node_id&&e(`selectNode`,t.node_id)})},Q=(t,o,p,g,v)=>{let b=g?.event,x=g?.session_id,S=g?.trace_id,C=g?.seq;if(typeof C==`number`&&x){let e=p.lastSeq[x];if(e!==void 0&&C<=e)return;t(`setLastSeq`,{session_id:x,seq:C})}switch(x&&S&&t(`updateSession`,{session_id:x,trace_id:S}),b){case ne:t(`upsertSession`,{session_id:x,node_id:v,status:`running`,cwd:g.cwd,model:g.model,...g.effort===void 0?{}:{effort:g.effort},...g.permission_mode===void 0?{}:{permission_mode:g.permission_mode},trace_id:S});break;case r:{let e=g.sdk_session_id;x&&e&&e!==x&&t(`renameSession`,{from:x,to:e});break}case f:{let e=g.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`appendDelta`,{session_id:x,stream_id:e,text:g.text??``}):t(`appendEvent`,X(x,`text`,{text:g.text??``,stream_id:e,streaming:!0,trace_id:S}));break}case u:{let e=g.id;e&&p.events[x]?.find(t=>t.kind===`text`&&t.stream_id===e)?t(`finalizeStream`,{session_id:x,stream_id:e,text:g.text}):t(`appendEvent`,X(x,`text`,{text:g.text,trace_id:S}));break}case a:t(`appendEvent`,X(x,`thinking`,{text:g.text,trace_id:S}));break;case c:t(`appendEvent`,X(x,`tool_use`,{tool:g.tool,tool_use_id:g.tool_use_id,input:g.input,trace_id:S}));break;case s:t(`appendEvent`,X(x,`tool_result`,{tool_use_id:g.tool_use_id,content:g.content,is_error:g.is_error,trace_id:S}));break;case m:t(`addPermission`,{request_id:g.request_id,session_id:x,node_id:v,tool:g.tool,input:g.input,title:g.title,display_name:g.display_name,description:g.description}),ue(o,{node_id:v,session_id:x,request_id:g.request_id,tool:g.display_name||g.title||g.tool});break;case N:for(let e of g.requests??[])t(`addPermission`,{request_id:e.request_id,session_id:e.session_id,node_id:v,tool:e.tool,input:e.input,title:e.title,display_name:e.display_name,description:e.description});break;case n:t(`removePermission`,g.request_id);break;case re:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`result`,{subtype:g.subtype,is_error:g.is_error,text:g.result,cost_usd:g.cost_usd,cut_uuid:g.cut_uuid,sdk_session_id:g.sdk_session_id,trace_id:S})),t(`updateSession`,{session_id:x,status:`idle`,cost_usd:g.cost_usd});break;case d:t(`appendEvent`,X(x,`notice`,{text:g.text,subtype:g.code,command:g.command,level:g.level}));break;case i:t(`finalizeAllStreams`,{session_id:x}),t(`appendEvent`,X(x,`error`,{text:g.message,trace_id:S})),t(`updateSession`,{session_id:x,status:`error`}),t(`updateStatus`,{key:`getHistoryDetail`,value:I.Success});break;case h:t(`finalizeAllStreams`,{session_id:x}),t(`updateSession`,{session_id:x,status:`closed`});break;case e:t(`rewindToCut`,{session_id:x,cut_uuid:g.cut_uuid}),g.prompt&&t(`appendEvent`,X(x,`prompt`,{text:g.prompt,trace_id:S})),t(`updateSession`,{session_id:x,status:`running`});break;case l:o(`resyncSession`,x);break;case M:for(let e of g.sessions??[])t(`upsertSession`,{session_id:e.session_id,node_id:v,status:e.status??`running`,started:!0,cwd:e.cwd,model:e.model,...e.effort===void 0?{}:{effort:e.effort},...e.permission_mode===void 0?{}:{permission_mode:e.permission_mode}});break;case y:if(v){t(`setHistory`,{node_id:v,sessions:g.sessions??[]}),t(`updateStatus`,{key:`getHistory`,value:I.Success});let e=p.historyRef;e&&e.node_id===v&&!p.currentSessionId&&o(`reattachSession`,e)}break;case P:de(t,p,g,v),t(`updateStatus`,{key:`getHistoryDetail`,value:I.Success});break;case j:t(`setDirectory`,{path:g.path,parent:g.parent??null,sep:g.sep??`/`,entries:g.entries??[],truncated:g.truncated,error:g.error});break;case _:v&&t(`setCapabilities`,{node_id:v,capabilities:{providers:g.providers??[]}});break;default:break}},de=(e,t,n,r)=>{let i=n?.session_id,a=fe(n?.provider);if(!i||!r)return;let o=a===`claude`||a===`codex`||a===`copilot`,s=t.sessions[i],c=!!s&&(s.started===!0||s.status===`running`||s.status===`starting`),l=t.lastComposer?.[r]??{};e(`upsertSession`,{session_id:i,node_id:r,status:c?s.status:`idle`,cwd:n.cwd??s?.cwd??l.cwd,model:n.model??s?.model??l.model,effort:n.effort??s?.effort??l.effort,permission_mode:n.permission_mode??s?.permission_mode??l.permissionMode,provider:a,started:!!c,readonly:!o&&!c});let u=t.events[i]?.length??0,d=(n.events??[]).length,f=s?.status===`running`||s?.status===`starting`;c&&u>0&&(f||u>=d)||e(`setEvents`,{session_id:i,events:(n.events??[]).map((e,t)=>({id:Y(),session_id:i,kind:e.kind,ts:typeof e.ts==`number`?e.ts:Date.now()+t,text:e.text,tool:e.tool,tool_use_id:e.tool_use_id,input:e.input,content:e.content,is_error:e.is_error,subtype:e.subtype,cost_usd:e.cost_usd}))}),e(`setCurrentNode`,r),e(`setCurrentSession`,i),e(`setHistoryRef`,{node_id:r,provider:a,session_id:i})},fe=e=>e===`codex`||e===`copilot`?e:`claude`,$={namespaced:!0,state:z,mutations:{resetAll:e=>{Object.assign(e,z())},updateStatus:(e,t)=>{e.status[t.key]=t.value},setConnection:(e,t)=>{e.connection=t},setNodes:(e,t)=>{e.nodes=t},mergeNodeSnapshot:(e,t)=>{let n=new Set(t.map(e=>e.node_id));for(let t of e.nodes)t.status=n.has(t.node_id)?`online`:`offline`;for(let n of t)e.nodes.some(e=>e.node_id===n.node_id)||e.nodes.push({...n,status:`online`})},setNodeStatus:(e,t)=>{let n=e.nodes.find(e=>e.node_id===t.node_id);n&&(n.status=t.status)},setCurrentNode:(e,t)=>{e.currentNodeId=t},setCurrentSession:(e,t)=>{e.currentSessionId=t},upsertSession:(e,t)=>{e.sessions[t.session_id]={...e.sessions[t.session_id],...t},e.events[t.session_id]||(e.events[t.session_id]=[])},updateSession:(e,t)=>{let n=e.sessions[t.session_id];n&&(e.sessions[t.session_id]={...n,...t})},renameSession:(e,t)=>{let{from:n,to:r}=t;if(n===r||!e.sessions[n])return;e.sessions[r]={...e.sessions[r],...e.sessions[n],session_id:r},delete e.sessions[n];let i=e.events[n];i&&(i.length||!e.events[r]?.length)&&(e.events[r]=i),delete e.events[n],delete e.lastSeq[n],e.lastSeq[r]=0;for(let t of e.permissions)t.session_id===n&&(t.session_id=r);e.currentSessionId===n&&(e.currentSessionId=r),e.historyRef?.session_id===n&&(e.historyRef={...e.historyRef,session_id:r})},appendEvent:(e,t)=>{e.events[t.session_id]||(e.events[t.session_id]=[]),e.events[t.session_id].push(t)},truncateEventsBefore:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.findIndex(e=>e.id===t.event_id);r>=0&&(e.events[t.session_id]=n.slice(0,r))},rewindToCut:(e,t)=>{let n=e.events[t.session_id];if(!n)return;if(!t.cut_uuid){e.events[t.session_id]=[];return}let r=n.findIndex(e=>e.kind===`result`&&e.cut_uuid===t.cut_uuid);r>=0&&(e.events[t.session_id]=n.slice(0,r+1))},setLastSeq:(e,t)=>{let n=e.lastSeq[t.session_id]??0;t.seq>n&&(e.lastSeq[t.session_id]=t.seq)},appendDelta:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(r.text=(r.text??``)+(t.text??``))},finalizeStream:(e,t)=>{let n=e.events[t.session_id];if(!n)return;let r=n.find(e=>e.kind===`text`&&e.stream_id===t.stream_id);r&&(typeof t.text==`string`&&(r.text=t.text),r.streaming=!1)},finalizeAllStreams:(e,t)=>{let n=e.events[t.session_id];if(n)for(let e of n)e.streaming&&=!1},setEvents:(e,t)=>{e.events[t.session_id]=t.events},setHistory:(e,t)=>{e.history[t.node_id]=t.sessions},setHistoryRef:(e,t)=>{e.historyRef=t},setDirectory:(e,t)=>{e.directory=t,e.directoryLoading=!1},setDirectoryLoading:(e,t)=>{e.directoryLoading=t},setLastComposer:(e,t)=>{e.lastComposer={...e.lastComposer,[t.node_id]:{...e.lastComposer[t.node_id],...t.prefs}}},setCapabilities:(e,t)=>{e.capabilities[t.node_id]=t.capabilities},addPermission:(e,t)=>{e.permissions.some(e=>e.request_id===t.request_id)||e.permissions.push(t)},removePermission:(e,t)=>{e.permissions=e.permissions.filter(e=>e.request_id!==t)},removeNodeData:(e,t)=>{delete e.history[t],delete e.capabilities[t],e.historyRef?.node_id===t&&(e.historyRef=void 0);for(let n of Object.values(e.sessions))n.node_id===t&&(delete e.sessions[n.session_id],delete e.events[n.session_id],delete e.lastSeq[n.session_id],e.currentSessionId===n.session_id&&(e.currentSessionId=void 0))}},actions:{resetAll:({commit:e})=>{e(`resetAll`)},getApplications:async()=>{},setApplication:async()=>{},getNodes:async({commit:e,rootState:t})=>{let n=t.token?.access;if(!n)return[];e(`updateStatus`,{key:`getNodes`,value:I.Request});try{let{data:t}=await B.getNodes({token:n});return e(`setNodes`,t.nodes??[]),e(`updateStatus`,{key:`getNodes`,value:I.Success}),t.nodes??[]}catch(t){throw e(`updateStatus`,{key:`getNodes`,value:I.Error}),t}},claimPair:async({commit:e,dispatch:t,rootState:n},r)=>{let i=n.token?.access;if(!i)throw Error(`not authenticated`);e(`updateStatus`,{key:`claimPair`,value:I.Request});try{let{data:n}=await B.claimPair(r.trim(),{token:i});return e(`updateStatus`,{key:`claimPair`,value:I.Success}),await t(`getNodes`),n.node_name}catch(t){throw e(`updateStatus`,{key:`claimPair`,value:I.Error}),t}},deleteNode:async({commit:e,dispatch:t,state:n,rootState:r},i)=>{let a=r.token?.access;if(!a)throw Error(`not authenticated`);e(`updateStatus`,{key:`deleteNode`,value:I.Request});try{await B.deleteNode(i,{token:a}),e(`removeNodeData`,i),n.currentNodeId===i&&(e(`setCurrentNode`,void 0),e(`setCurrentSession`,void 0)),e(`updateStatus`,{key:`deleteNode`,value:I.Success}),await t(`getNodes`)}catch(t){throw e(`updateStatus`,{key:`deleteNode`,value:I.Error}),t}},connect:({commit:e,dispatch:t,state:n,rootState:r})=>{let i=r.token?.access;i&&(J?.isOpen||(J?.close(),e(`setConnection`,`connecting`),J=new ce(i,{onOpen:()=>{e(`setConnection`,`connected`);let r={...n.lastSeq};Object.keys(r).length&&J?.resume(r),n.currentNodeId&&(t(`getHistory`,n.currentNodeId),t(`getCapabilities`,n.currentNodeId),t(`requestSessions`,n.currentNodeId),t(`requestPendingPermissions`,n.currentNodeId))},onClose:()=>e(`setConnection`,`disconnected`),onEvent:(r,i)=>Q(e,t,n,r,i),onNodesSnapshot:t=>{e(`mergeNodeSnapshot`,t)},onNodeStatus:(r,i)=>{e(`setNodeStatus`,{node_id:r,status:i}),i===`online`&&r===n.currentNodeId&&(t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r))},onRelayError:(e,t)=>console.warn(`[codingBridge] relay error`,e,t)}),J.connect()))},disconnect:({commit:e})=>{J?.close(),J=void 0,e(`setConnection`,`disconnected`)},selectNode:({commit:e,dispatch:t,state:n},r)=>{if(e(`setCurrentNode`,r),!r){e(`setCurrentSession`,void 0);return}let i=Object.values(n.sessions).filter(e=>e.node_id===r).map(e=>e.session_id);e(`setCurrentSession`,i.length?i[i.length-1]:void 0),t(`getHistory`,r),t(`getCapabilities`,r),t(`requestSessions`,r),t(`requestPendingPermissions`,r)},requestSessions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:O})},requestPendingPermissions:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:v})},enableNotifications:async({dispatch:e,rootState:t})=>{let n=t.token?.access;if(!n)return`unsupported`;if(R()){let t=await W(t=>{t?.node_id&&(e(`selectNode`,t.node_id),e(`requestPendingPermissions`,t.node_id))});return t?(await B.savePushSubscription({kind:L()?`apns`:`fcm`,token:t,ua:navigator.userAgent},{token:n}),`enabled`):`denied`}let r=await V();if(r===`unsupported`)return`unsupported`;if(r!==`granted`)return`denied`;try{let{data:e}=await B.getPushConfig();if(e.web_push_enabled&&e.vapid_public_key){let t=await se(e.vapid_public_key);t&&await B.savePushSubscription({kind:`webpush`,subscription:t,ua:navigator.userAgent},{token:n})}}catch(e){console.warn(`[codingBridge] web push setup skipped`,e)}return`enabled`},disableNotifications:async({rootState:e})=>{let t=e.token?.access;if(R()||!t)return;let n=await U();if(n)try{await B.deletePushSubscription({endpoint:n},{token:t})}catch(e){console.warn(`[codingBridge] failed to deregister web push`,e)}},newSession:({commit:e})=>{e(`setCurrentSession`,void 0),e(`setHistoryRef`,void 0)},sendPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=n.prompt?.trim(),a=n.images?.length?n.images:void 0,o=n.attachments?.length?n.attachments:void 0;if(!r||!J||!i&&!a&&!o)return;let s=Y(),c=t.currentSessionId,l=c?t.sessions[c]:void 0;if(!l||!l.started){let t=l?.provider||n.provider||`claude`;l?(c=l.session_id,e(`updateSession`,{session_id:c,status:`starting`,trace_id:s,...n.cwd?{cwd:n.cwd}:{},...n.model===void 0?{}:{model:n.model},...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}})):(c=Y(),e(`upsertSession`,{session_id:c,node_id:r,status:`starting`,cwd:n.cwd,model:n.model,effort:n.effort,permission_mode:n.permissionMode,provider:t,trace_id:s}),e(`setCurrentSession`,c),e(`setHistoryRef`,{node_id:r,provider:t,session_id:c})),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,started:!0}),J.sendToNode(r,{action:C,session_id:c,trace_id:s,prompt:i,cwd:n.cwd||l?.cwd||void 0,model:n.model||l?.model||void 0,permission_mode:n.permissionMode||`bypassPermissions`,provider:t,effort:n.effort||void 0,images:a,attachments:o,resume_session_id:l?.session_id||void 0})}else e(`updateSession`,{session_id:c,trace_id:s}),e(`appendEvent`,X(c,`prompt`,{text:i,images:a,attachments:o,trace_id:s})),e(`updateSession`,{session_id:c,status:`running`,model:n.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),J.sendToNode(r,{action:x,session_id:c,trace_id:s,prompt:i,model:n.model??``,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode},images:a,attachments:o})},editPrompt:({commit:e,state:t},n)=>{let r=t.currentNodeId,i=t.currentSessionId,a=n.prompt?.trim();if(!r||!i||!J||!a)return;let o=t.sessions[i],s=t.events[i]??[],c=s.findIndex(e=>e.id===n.eventId);if(!o||c<0)return;let l;for(let e=c-1;e>=0;e--)if(s[e].kind===`result`&&s[e].cut_uuid){l=s[e].cut_uuid;break}let u=n.images?.length?n.images:void 0,d=n.attachments?.length?n.attachments:void 0,f=Y();e(`truncateEventsBefore`,{session_id:i,event_id:n.eventId}),e(`updateSession`,{session_id:i,status:`running`,trace_id:f,model:n.model||o.model||void 0,...n.effort===void 0?{}:{effort:n.effort},...n.permissionMode===void 0?{}:{permission_mode:n.permissionMode}}),e(`appendEvent`,X(i,`prompt`,{text:a,images:u,attachments:d,trace_id:f})),J.sendToNode(r,{action:ie,session_id:i,trace_id:f,cut_uuid:l,prompt:a,model:n.model||o.model||void 0,permission_mode:n.permissionMode||void 0,effort:n.effort||void 0,images:u,attachments:d,restore_code:!!n.restoreCode})},retryLastPrompt:({commit:e,dispatch:t,state:n})=>{let r=n.currentSessionId;if(!r)return;let i=n.sessions[r],a=[...n.events[r]??[]].reverse().find(e=>e.kind===`prompt`);!i||!a||(e(`updateSession`,{session_id:r,started:!1}),t(`sendPrompt`,{prompt:a.text??``,cwd:i.cwd,model:i.model,provider:i.provider,images:a.images,attachments:a.attachments}))},interruptSession:({state:e})=>{let t=e.currentSessionId,n=e.currentNodeId;!t||!n||!J||J.sendToNode(n,{action:A,session_id:t})},closeSession:({commit:e,state:t},n)=>{let r=n??t.currentSessionId;if(!r)return;let i=t.sessions[r]?.node_id??t.currentNodeId;i&&J&&J.sendToNode(i,{action:b,session_id:r}),e(`updateSession`,{session_id:r,status:`closed`}),t.currentSessionId===r&&e(`setCurrentSession`,void 0)},resolvePermission:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:n.decision}),e(`removePermission`,n.request_id))},answerQuestion:({commit:e,state:t},n)=>{let r=t.permissions.find(e=>e.request_id===n.request_id);r&&(J?.sendToNode(r.node_id,{action:T,request_id:n.request_id,decision:`allow`,answer:Z(n.output),answer_text:le(n.output)}),e(`removePermission`,n.request_id))},getHistory:({commit:e,state:t},n)=>{let r=n??t.currentNodeId;!r||!J||(e(`updateStatus`,{key:`getHistory`,value:I.Request}),J.sendToNode(r,{action:te,limit:200}))},getHistoryDetail:({commit:e},t)=>{!t?.node_id||!t?.session_id||!J||(e(`updateStatus`,{key:`getHistoryDetail`,value:I.Request}),J.sendToNode(t.node_id,{action:D,provider:t.provider,session_id:t.session_id}),setTimeout(()=>e(`updateStatus`,{key:`getHistoryDetail`,value:I.Success}),12e3))},reattachSession:({state:e,commit:t,dispatch:n},r)=>{!r?.node_id||!r?.session_id||(t(`setCurrentNode`,r.node_id),t(`setCurrentSession`,r.session_id),n(`getHistoryDetail`,r),n(`requestSessions`,r.node_id),n(`requestPendingPermissions`,r.node_id),J?.resume({[r.session_id]:e.lastSeq[r.session_id]??0}))},resyncSession:({state:e,dispatch:t},n)=>{let r=e.sessions[n];r?.node_id&&t(`getHistoryDetail`,{node_id:r.node_id,session_id:n,provider:r.provider??`claude`})},browseDir:({commit:e,state:t},n)=>{let r=t.currentNodeId;!r||!J||(e(`setDirectoryLoading`,!0),J.sendToNode(r,{action:oe,path:n||void 0}))},clearDirectory:({commit:e})=>{e(`setDirectory`,void 0)},getCapabilities:({state:e},t)=>{let n=t??e.currentNodeId;!n||!J||J.sendToNode(n,{action:k})}}};export{$ as codingBridge,$ as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{Wr as t}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esm-B_QeMYxU.js","assets/index-BagZk06I.js","assets/rolldown-runtime--c01j_DQ.js","assets/preload-helper-zJ_50EbN.js","assets/constants-DNpQuSUd.js","assets/vendor-chart-BJCvKk8-.js","assets/vendor-axios-Ck2ffRoh.js","assets/button-BydTr5nV.js","assets/use-deprecated-B-NFNg3W.js","assets/install-CmiepWqE.js","assets/en-CpRrS3Ur.js","assets/runtime-B1Eal4u3.js","assets/vendor-vue-CCKiwo0U.js","assets/vendor-dayjs-C9ICuEWn.js","assets/use-dialog-BA0DNk5w.js","assets/teleport-BEkn5-id.js","assets/aria-CQaCu-Fx.js","assets/event-BGnHezxC.js","assets/scroll-CgpW_lTC.js","assets/vnode-BKrYEsqE.js","assets/use-aria-QsRrwtXj.js","assets/vendor-vue-router-WDnlh53U.js","assets/index-Bi16_FuT.css","assets/esm-ijf2nAIM.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-zJ_50EbN.js";import{Wr as t}from"./index-BagZk06I.js";var n=`/sw.js`,r=()=>typeof window<`u`&&`Notification`in window,i=()=>typeof navigator<`u`&&`serviceWorker`in navigator,a=()=>i()&&`PushManager`in window,o=()=>r()?Notification.permission:`unsupported`,s=e=>{let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},c=async()=>{if(!i())return null;try{return await navigator.serviceWorker.getRegistration(n)??await navigator.serviceWorker.register(n)}catch(e){return console.warn(`[codingBridge] service worker registration failed`,e),null}},l=async()=>{if(!r())return`unsupported`;if(Notification.permission!==`default`)return Notification.permission;try{return await Notification.requestPermission()}catch{return`denied`}},u=(e,n)=>{if(!(typeof document<`u`&&document.visibilityState===`visible`)){if(t()){d(e);return}if(!(!r()||Notification.permission!==`granted`))try{let t=new Notification(e.title,{body:e.body,tag:e.data.request_id||`coding-bridge-permission`,data:e.data});t.onclick=()=>{try{window.focus()}catch{}n?.(e.data),t.close()}}catch(e){console.warn(`[codingBridge] failed to raise local notification`,e)}}},d=async t=>{try{let{LocalNotifications:n}=await e(async()=>{let{LocalNotifications:e}=await import(`./esm-B_QeMYxU.js`);return{LocalNotifications:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]));if((await n.checkPermissions()).display!==`granted`&&(await n.requestPermissions()).display!==`granted`)return;await n.schedule({notifications:[{id:f(t.data.request_id||`permission`),title:t.title,body:t.body,extra:t.data}]})}catch(e){console.warn(`[codingBridge] native local notification failed`,e)}},f=e=>{let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)%2147483e3},p=async e=>{if(!a()||!e||await l()!==`granted`)return null;let t=await c();if(!t)return null;try{return(await t.pushManager.getSubscription()??await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:s(e)})).toJSON()}catch(e){return console.warn(`[codingBridge] web push subscribe failed`,e),null}},m=async()=>{if(!a())return null;let e=await(await c())?.pushManager.getSubscription();if(!e)return null;let t=e.endpoint;try{await e.unsubscribe()}catch{}return t},h=async n=>{if(!t())return null;try{let{PushNotifications:t}=await e(async()=>{let{PushNotifications:e}=await import(`./esm-ijf2nAIM.js`);return{PushNotifications:e}},__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22])),r=await t.requestPermissions();if(r.receive!==`granted`)return console.warn(`[codingBridge] push permission not granted (receive=${r.receive})`),null;let i=await new Promise(e=>{let n=setTimeout(()=>{console.warn(`[codingBridge] push registration timed out — no device token`),e(null)},1e4);t.addListener(`registration`,t=>{clearTimeout(n),e(t.value)}),t.addListener(`registrationError`,t=>{clearTimeout(n),console.warn(`[codingBridge] push registrationError`,t),e(null)}),t.register()});return n&&t.addListener(`pushNotificationActionPerformed`,e=>{n(e.notification?.data??{})}),i}catch(e){return e?.code===`UNIMPLEMENTED`?console.warn(`[codingBridge] PushNotifications plugin not available in this build`,e):console.warn(`[codingBridge] native push registration failed`,e),null}};export{p as a,l as i,u as n,m as o,h as r,r as s,o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{ai as H}from"./index-
|
|
1
|
+
import{A as e,Bt as t,D as n,E as r,F as i,N as a,O as o,Ot as s,P as c,Pt as l,Q as u,Vt as d,Wt as f,Z as p,b as m,bt as h,ct as g,dt as _,et as v,rt as y,ut as b,v as x,y as S,z as C,zt as w}from"./vendor-chart-BJCvKk8-.js";import{a as T,c as E,i as D,t as O}from"./install-CmiepWqE.js";import{i as k,n as A,r as j,s as M}from"./runtime-B1Eal4u3.js";import{Ct as N,_ as P,l as ee,m as F,nt as I,wt as L}from"./use-deprecated-B-NFNg3W.js";import{t as R}from"./castArray-B2xuZZNf.js";import{r as z,t as B}from"./event-BGnHezxC.js";import{t as V}from"./collapse-transition-C9jp2nDh.js";import{ai as H}from"./index-BagZk06I.js";var U=e=>M(e)||t(e)||l(e),W=A({accordion:Boolean,modelValue:{type:j([Array,String,Number]),default:()=>H([])},expandIconPosition:{type:j([String]),default:`right`},beforeCollapse:{type:j(Function)}}),G={[z]:U,[B]:U},K=Symbol(`collapseContextKey`),q=`ElCollapse`,J=(e,t)=>{let n=h(R(e.modelValue)),r=r=>{n.value=r;let i=e.accordion?n.value[0]:n.value;t(z,i),t(B,i)},i=t=>{if(e.accordion)r([n.value[0]===t?``:t]);else{let e=[...n.value],i=e.indexOf(t);i>-1?e.splice(i,1):e.push(t),r(e)}};return g(()=>e.modelValue,()=>n.value=R(e.modelValue),{deep:!0}),u(K,{activeNames:n,handleItemClick:async t=>{let{beforeCollapse:n}=e;if(!n){i(t);return}let r=n(t);[w(r),k(r)].includes(!0)||L(q,"beforeCollapse must return type `Promise<boolean>` or `boolean`"),w(r)?r.then(e=>{e!==!1&&i(t)}).catch(e=>{N(q,`some error occurred: ${e}`)}):r&&i(t)}}),{activeNames:n,setActiveNames:r}},Y=e=>{let t=E(`collapse`);return{rootKls:r(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},X=T(i({...i({name:`ElCollapse`}),props:W,emits:G,setup(t,{expose:n,emit:r}){let i=t,{activeNames:a,setActiveNames:o}=J(i,r),{rootKls:c}=Y(i);return n({activeNames:a,setActiveNames:o}),(t,n)=>(p(),e(`div`,{class:d(s(c))},[v(t.$slots,`default`)],2))}}),[[`__file`,`collapse.vue`]]),Z=A({title:{type:String,default:``},name:{type:j([String,Number]),default:void 0},icon:{type:F,default:P},disabled:Boolean}),Q=e=>{let t=C(K),{namespace:n}=E(`collapse`),i=h(!1),a=h(!1),o=ee(),c=r(()=>o.current++),l=r(()=>e.name??`${n.value}-id-${o.prefix}-${s(c)}`);return{focusing:i,id:c,isActive:r(()=>t?.activeNames.value.includes(s(l))),handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:i.value=!0},50)},handleHeaderClick:n=>{e.disabled||n.target?.closest(`input, textarea, select`)||(t?.handleItemClick(s(l)),i.value=!1,a.value=!0)},handleEnterClick:e=>{e.target?.closest(`input, textarea, select`)||(e.preventDefault(),t?.handleItemClick(s(l)))}}},te=(e,{focusing:t,isActive:n,id:i})=>{let a=E(`collapse`),o=r(()=>[a.b(`item`),a.is(`active`,s(n)),a.is(`disabled`,e.disabled)]),c=r(()=>[a.be(`item`,`header`),a.is(`active`,s(n)),{focusing:s(t)&&!e.disabled}]),l=r(()=>[a.be(`item`,`arrow`),a.is(`active`,s(n))]);return{itemTitleKls:r(()=>[a.be(`item`,`title`)]),arrowKls:l,headKls:c,rootKls:o,itemWrapperKls:r(()=>a.be(`item`,`wrap`)),itemContentKls:r(()=>a.be(`item`,`content`)),scopedContentId:r(()=>a.b(`content-${s(i)}`)),scopedHeadId:r(()=>a.b(`head-${s(i)}`))}},$=T(i({...i({name:`ElCollapseItem`}),props:Z,setup(t,{expose:r}){let i=t,{focusing:l,id:u,isActive:h,handleFocus:g,handleHeaderClick:C,handleEnterClick:w}=Q(i),{arrowKls:T,headKls:E,rootKls:D,itemTitleKls:O,itemWrapperKls:k,itemContentKls:A,scopedContentId:j,scopedHeadId:M}=te(i,{focusing:l,isActive:h,id:u});return r({isActive:h}),(t,r)=>(p(),e(`div`,{class:d(s(D))},[n(`div`,{id:s(M),class:d(s(E)),"aria-expanded":s(h),"aria-controls":s(j),"aria-describedby":s(j),tabindex:t.disabled?-1:0,role:`button`,onClick:s(C),onKeydown:S(m(s(w),[`stop`]),[`space`,`enter`]),onFocus:s(g),onBlur:e=>l.value=!1},[n(`span`,{class:d(s(O))},[v(t.$slots,`title`,{isActive:s(h)},()=>[a(f(t.title),1)])],2),v(t.$slots,`icon`,{isActive:s(h)},()=>[c(s(I),{class:d(s(T))},{default:b(()=>[(p(),o(y(t.icon)))]),_:1},8,[`class`])])],42,[`id`,`aria-expanded`,`aria-controls`,`aria-describedby`,`tabindex`,`onClick`,`onKeydown`,`onFocus`,`onBlur`]),c(s(V),null,{default:b(()=>[_(n(`div`,{id:s(j),role:`region`,class:d(s(k)),"aria-hidden":!s(h),"aria-labelledby":s(M)},[n(`div`,{class:d(s(A))},[v(t.$slots,`default`)],2)],10,[`id`,`aria-hidden`,`aria-labelledby`]),[[x,s(h)]])]),_:3})],2))}}),[[`__file`,`collapse-item.vue`]]),ne=O(X,{CollapseItem:$}),re=D($);export{re as n,ne as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={"button.setup":{message:`Inställningar`,description:`Text i knappen för att göra inställningar`},"button.start":{message:`Starta`,description:`Text i knappen för att påbörja vissa åtgärder`},"button.copy":{message:`Kopiera`,description:`Text i knappen för att kopiera något`},"button.copied":{message:`Kopierad`,description:`Text i knappen för att indikera att innehållet har kopierats`},"button.restart":{message:`Återställ`,description:`Text i knappen för att återställa något`},"button.preview":{message:`Förhandsgranska`,description:`Text i knappen för att öppna en förhandsvisning av en fil via URL`},"button.seeRawImage":{message:`Visa originalbild`,description:`Text i knappen för att visa den ursprungliga bilden`},"button.seeRawVideo":{message:`Visa video`,description:`Text i knappen för att visa den ursprungliga videon`},"button.edit":{message:`Redigera`,description:`Text i knappen för att redigera innehåll`},"button.login":{message:`Logga in`,description:`Text i knappen för att logga in`},"button.logout":{message:`Logga ut`,description:`Text i knappen för att logga ut`},"button.new":{message:`Ny`,description:`Text i knappen för att skapa ett nytt objekt`},"button.delete":{message:`Ta bort`,description:`Text i knappen för att ta bort innehåll`},"button.deletePermanently":{message:`Radera kontot permanent`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Bekräfta`,description:`Text i knappen för att bekräfta en åtgärd`},"button.cancel":{message:`Avbryt`,description:`Text i knappen för att avbryta en åtgärd`},"button.close":{message:`Stäng`,description:`Text i knappen för att stänga en dialogruta eller panel`},"button.expand":{message:`Expandera`,description:`Knappens text som används för att öppna en fullskärmsredigerare för inmatning av tips.`},"button.alert":{message:`Varning`,description:`Text i knappen för att utfärda en varning`},"button.info":{message:`Information`,description:`Text i knappen för att visa information`},"button.publish":{message:`Publicera`,description:`Text i knappen för att publicera innehåll`},"button.watch":{message:`Titta`,description:`Text i knappen för att titta på något`},"button.verify":{message:`Verifiera identitet`,description:`Text i knappen för att låta användaren verifiera sin identitet`},"button.profile":{message:`Profil`,description:`Text i knappen för att visa användarens profil`},"button.console":{message:`Konsol`,description:`Text i knappen för att visa konsolsidan för att kontrollera något på webbsidan`},"button.learn":{message:`Lär dig`,description:`Text i knappen för att låta användaren lära sig något`},"button.buy":{message:`Köp`,description:`Text i knappen för att låta användaren köpa något`},"button.try":{message:`Prova`,description:`Text i knappen för att låta användaren prova något`},"button.startForFree":{message:`Börja gratis`,description:`Text i knappen för att låta användaren börja gratis`},"button.download":{message:`Ladda ner`,description:`Text i knappen för att ladda ner filer (som ljud, video, bilder)`},"button.downloadAndroid":{message:`Ladda ner Android`,description:`Text i knappen för att ladda ner Android-installationspaketet`},"button.downloadIos":{message:`Ladda ner iOS-installationspaket`,description:`Text i knappen för att ladda ner iOS-installationspaketet`},"button.downloadWindows":{message:`Ladda ner för Windows`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Ladda ner för macOS`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Installera iOS`,description:`Text i knappen för att installera iOS-appen`},"button.apply":{message:`Ansök`,description:`Text i knappen för att låta användaren ansöka om API-tjänst`},"button.refresh":{message:`Uppdatera`,description:`Text i knappen för att uppdatera sidan`},"button.pay":{message:`Betala`,description:`Text i knappen för att låta användaren betala för tjänster`},"button.repay":{message:`Fortsätt betala`,description:`Text i knappen för att låta användaren fortsätta betala för tjänster`},"button.applied":{message:`Ansökt`,description:`Text i knappen för att visa att användaren har ansökt om tjänsten`},"button.acquire":{message:`Få`,description:`Text i knappen för att låta användaren få API-tjänstens token eller nyckel`},"button.fillExample":{message:`Fyll i exempel`,description:`Text i knappen för att låta användaren fylla i exempeldata`},"button.buyMore":{message:`Toppa upp`,description:`Text i knappen för att låta användaren toppa upp. Engelsk översättning måste vara 'Top Up', svensk översättning är 'Toppa upp'.`},"button.update":{message:`Uppdatera`,description:`Text i knappen för att uppdatera innehåll`},"button.view":{message:`Visa`,description:`Text i knappen för att visa något`},"button.create":{message:`Skapa`,description:`Text i knappen för att skapa något`},"button.referralEarnings":{message:`Rekommenderade intäkter`,description:`Text i knappen som visar rekommenderade intäkter, vilket innebär att användaren kan tjäna pengar genom att bjuda in andra att använda tjänsten.`},"button.finish":{message:`Färdig`,description:`Text i knappen för att slutföra en åtgärd`},"entity.id":{message:`ID`,description:`Visar den unika identifieraren för en enhet`},"entity.type":{message:`Typ`,description:`Visar typen av enhet`},"entity.website":{message:`Ace Data Cloud`,description:`Webbplatsens namn, ingen översättning behövs, behåll som 'Ace Data Cloud'`},"entity.copyright":{message:`Upphovsrätt`,description:`Text som visar upphovsrätt`},"entity.platform":{message:`Plattform`,description:`Text som indikerar att detta är en API-tjänstplattform`},"entity.title":{message:`Titel`,description:`Titeln på enheten`},"entity.icon":{message:`Ikon`,description:`Ikonen för enheten`},"entity.status":{message:`Status`,description:`Status för enheten`},"status.loading":{message:`Laddar...`,description:`Statusmeddelande som visas när innehållet laddas`},"error.appleSignInFailed":{message:`Det gick inte att logga in med Apple. Försök igen eller använd en annan inloggningsmetod.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Åtgärd`,description:`Åtgärden för enheten`},"entity.description":{message:`Beskrivning`,description:`Beskrivningen av enheten`},"entity.createdAt":{message:`Skapad`,description:`Tiden då enheten skapades`},"entity.updatedAt":{message:`Uppdaterad`,description:`Tiden då enheten uppdaterades`},"entity.order":{message:`Beställning`,description:`Beställningen för enheten, som innehåller pengar och tjänsteinformation som användaren behöver betala för`},"message.noTasks":{message:`Inga historiska uppgifter, börja en ny uppgift~`,description:`Meddelande när det inte finns några uppgifter`},"message.guestTasks":{message:`Logga in för att starta en uppgift och se dina skapelser här.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Använt belopp`,description:`Visar det belopp som har använts för tjänsten`},"message.mobileAppDescription":{message:`Använd AceData direkt på mobilen, för närvarande tillgänglig för nedladdning av Android APK, iOS-installationspaket kommer att göras tillgängligt efter signering.`,description:`Beskrivning på nedladdningssidan för mobilapplikationen`},"message.mobileAndroidHint":{message:`För Android-telefoner och surfplattor, skanna för att ladda ner den senaste APK.`,description:`Beskrivning på Android-nedladdningskortet`},"message.mobileAndroidPending":{message:`Android-installationspaketet är inte klart än, försök igen senare.`,description:`Meddelande när Android-installationspaketet inte är tillgängligt`},"message.mobileAvailableNow":{message:`Android är tillgänglig för nedladdning`,description:`Visar att Android nu kan laddas ner`},"message.mobileSecureDelivery":{message:`Säker CDN-distribution`,description:`Betonar att nedladdningslänken levereras via CDN`},"message.mobileDirectInstall":{message:`Direkt APK-installation`,description:`Beskriver att Android-installationen är en direkt APK-installation`},"message.mobileLatestRelease":{message:`Aktuell offentlig version`,description:`Visar att den aktuella versionen är den senaste offentliga versionen`},"message.mobileSharedAccount":{message:`Dela konto och kvot med webbversionen`,description:`Förklarar att mobilversionen delar konto med webbversionen`},"message.mobileIosHint":{message:`För iPhone och iPad, kan installeras direkt online; om systemet blockerar kan du först ladda ner IPA och sedan distribuera.`,description:`Beskrivning på iOS-nedladdningskortet`},"message.mobileIosPending":{message:`iOS-installationspaketet är inte tillgängligt för nedladdning än, kommer att göras tillgängligt efter att Apple-certifikat och beskrivningsfil är klara.`,description:`Meddelande när iOS-installationspaketet inte är tillgängligt`},"message.mobileComingSoon":{message:`Kommer snart`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`För Windows 10 och senare (64-bitars). Ladda ner installationsprogrammet och dubbelklicka för att installera.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`För macOS 11 och senare. Välj versionen som passar din Mac — Apple Silicon (M-serien) eller Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Skrivbordsapparna är osignerade beta-versioner. I Windows väljer du ”Mer information → Kör ändå” vid SmartScreen-meddelandet; i macOS högerklickar du på appen och väljer ”Öppna” för att kringgå Gatekeeper.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Hämta på Google Play`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`Ingen åtkomst till Google Play? Ladda ner APK-filen direkt.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Skanna för att öppna Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Vid första installationen av företags- eller Ad Hoc-paket på iOS kan systemet kräva att du först litar på certifikatet i 'Inställningar > Allmänt > VPN och enhetsadministration'.`,description:`Meddelande om installation av mobilapplikation`},"title.mobileApp":{message:`Nedladdning för mobil`,description:`Titel på nedladdningssidan för mobilapplikationen`},"title.mobileFastAccess":{message:`Snabbare åtkomst, ingen appbutik`,description:`Titel på fördelar på nedladdningssidan, betonar snabb installation`},"title.mobileTrustedRelease":{message:`Versioner centralt hanterade, stabil distribution`,description:`Titel på fördelar på nedladdningssidan, betonar stabilitet i versioner och distribution`},"title.mobileUnifiedExperience":{message:`Mobil och webbupplevelse är enhetlig`,description:`Titel på fördelar på nedladdningssidan, betonar enhetlig upplevelse`},"nav.mobileApp":{message:`Mobil`,description:`Nedladdningslänk för mobilapplikation i navigeringen`},"message.mobileFastAccess":{message:`Användare kan skanna för att installera direkt på mobilen, eller ladda ner APK på skrivbordet och sedan distribuera till teammedlemmar, lämpligt för snabba tester och intern testning.`,description:`Fördelar på nedladdningssidan, betonar snabb åtkomst`},"message.mobileTrustedRelease":{message:`Nedladdningslänkar är centralt placerade på samma sida, versionsnummer, plattformsstatus och installationsmetod är tydliga, vilket minskar kommunikationskostnader på grund av spridd information.`,description:`Fördelar på nedladdningssidan, betonar enhetlig distribution`},"message.mobileUnifiedExperience":{message:`Kontosystem, kvoter och tjänsteingångar efter inloggning är enhetliga med webbversionen, vilket gör det enkelt för användare att växla mellan skrivbord och mobil.`,description:`Fördelar på nedladdningssidan, betonar enhetlig kontoupplevelse`},"message.remainingAmount":{message:`Återstående belopp`,description:`Visar det återstående beloppet för tjänsten`},"message.copied":{message:`Kopierad`,description:`Visar meddelande om att innehållet har kopierats framgångsrikt`},"message.restart":{message:`Återgenerera`,description:`Används för att visa meddelande om att innehållet har kopierats framgångsrikt`},"message.confirmDelete":{message:`Är du säker på att du vill ta bort?`,description:`Bekräfta meddelande för att användaren ska ta bort något innehåll`},"message.expiredAt":{message:`Utgångstid`,description:`Används för att visa tjänstens utgångstid`},"message.alert":{message:`Varning`,description:`Meddelande för att varna användaren`},"message.deleteAccountConfirm":{message:`Detta raderar permanent ditt konto och all tillhörande data. Åtgärden kan inte ångras. Är du säker på att du vill fortsätta?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Ditt konto har raderats.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Det gick inte att radera ditt konto. Försök igen senare.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Den här åtgärden kan inte ångras! Ditt konto och all dess data raderas permanent och kan inte återställas.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Raderas permanent: profil, saldo och krediter, applikationer och prenumerationer, API-nycklar och tredjeparts inloggningskopplingar.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Skriv ditt användarnamn för att bekräfta raderingen:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Ange ditt användarnamn här`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Information`,description:`Meddelande för att visa information`},"message.free":{message:`Gratis`,description:`Meddelande som visar att tjänsten är gratis, vilket innebär att användaren inte behöver betala`},"message.startPrice":{message:`Startpris`,description:`Meddelande som visar tjänstens lägsta pris`},"message.joinDiscord":{message:`Gå med i Discord`,description:`Meddelande för att låta användaren gå med i Discord-kanalen`},"message.addWeChat":{message:`Lägg till WeChat`,description:`Meddelande för att låta användaren lägga till WeChat-konto`},"message.serviceTech":{message:`Teknisk support`,description:`Meddelande för att visa teknisk support`},"message.businessCooperation":{message:`Data & Affärssamarbete`,description:`Meddelande för att visa affärssamarbete`},"message.noData":{message:`Inga data`,description:`Meddelande för att visa att det inte finns några data i tabellen eller listan`},"nav.home":{message:`Hem`,description:`Text i webbplatsens navigeringsfält för att visa hemsidan`},"nav.content":{message:`Innehåll`,description:`Text i webbplatsens navigeringsfält för att visa innehållssidan`},"nav.category":{message:`Kategori`,description:`Text i webbplatsens navigeringsfält för att visa kategorisidan`},"nav.service":{message:`Alla tjänster`,description:`Text i webbplatsens navigeringsfält för att visa tjänstersidan`},"nav.profile":{message:`Min profil`,description:`Text i webbplatsens navigeringsfält för att visa profilsidan`},"nav.products":{message:`Produkter`,description:`Text i webbplatsens navigeringsfält för att visa produktsidan`},"nav.referral":{message:`Intäktsallians`,description:`Text i webbplatsens navigeringsfält för att visa rekommendationssidan`},"nav.apiPlatform":{message:`API Plattform`,description:`Text i webbplatsens navigeringsfält för att visa API-plattformssidan`},"nav.document":{message:`Utvecklingsdokumentation`,description:`Text i webbplatsens navigeringsfält för att visa dokumentationssidan`},"nav.console":{message:`Konsol`,description:`Text i webbplatsens navigeringsfält för att visa konsolsidan`},"nav.chatgpt":{message:`ChatGPT`,description:`Text i webbplatsens navigeringsfält för att visa ChatGPT-sidan, vänligen översätt inte detta fält, det måste förbli 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Text i webbplatsens navigeringsfält för att visa DeepSeek-sidan, vänligen översätt inte detta fält, det måste förbli 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Text i webbplatsens navigeringsfält för att visa Grok-sidan, vänligen översätt inte detta fält, det måste förbli 'Grok'`},"nav.chat":{message:`Chat`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Chat'`},"nav.veo":{message:`Veo`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Veo'`},"nav.sora":{message:`Sora`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Text i webbplatsens navigeringsfält för att visa Midjourney-sidan, vänligen översätt inte detta fält, det måste förbli 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Text i webbplatsens navigeringsfält för att visa QRArt-sidan, vänligen översätt inte detta fält, det måste förbli 'QRArt'`},"nav.suno":{message:`Suno`,description:`Text i webbplatsens navigeringsfält för att visa Suno-sidan, vänligen översätt inte detta fält, det måste förbli 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Text i webbplatsens navigeringsfält för att visa Pixverse-sidan, vänligen översätt inte detta fält, det måste förbli 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Text i webbplatsens navigeringsfält för att visa Flux-sidan, vänligen översätt inte detta fält, det måste förbli 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Text i webbplatsens navigeringsfält för att visa Nano Banana-sidan, vänligen översätt inte detta fält, det måste förbli 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Bild`,description:`Text i webbplatsens navigeringsfält för att visa OpenAI Bild-sidan, vänligen översätt inte detta fält, det måste förbli 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Text in the website navigation bar to display the SeeDream page, do not translate this field, must remain as 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`Text in the website navigation bar for displaying the SeeDance page, must remain 'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`Text in the website navigation bar for displaying the Luma page, must remain 'Luma'`},"nav.pika":{message:`Pika`,description:`Text in the website navigation bar for displaying the Pika page, must remain 'Pika'`},"nav.kling":{message:`Kling`,description:`Text in the website navigation bar for displaying the Kling page, must remain 'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`Text in the website navigation bar for displaying the Hailuo page, must remain 'Hailuo'`},"nav.wan":{message:`Wan`,description:`Text in the website navigation bar for displaying the Wan page, must remain 'Wan'`},"nav.producer":{message:`Producer`,description:`Text in the website navigation bar for displaying the Producer page, must remain 'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Text i navigationsfältet på webbplatsen som används för att visa Fish Audio-sidan, vänligen översätt inte detta fält, det måste förbli 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`Text in the website navigation bar for displaying the Kimi page, must remain 'Kimi'`},"nav.serp":{message:`SERP`,description:`Text in the website navigation bar for displaying the SERP page, must remain 'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Bild`,description:`Text in the website navigation bar for displaying the image page`},"nav.music":{message:`Musik`,description:`Text in the website navigation bar for displaying the music page`},"nav.video":{message:`Video`,description:`Text in the website navigation bar for displaying the video page`},"nav.distribution":{message:`Rekommenderad inkomst`,description:`Text in the website navigation bar for displaying the recommended income page`},"nav.connections":{message:`Anslutningar`,description:`Menu item to navigate to the connection management page at auth.acedata.cloud`},"nav.logOut":{message:`Logga ut`,description:`Text in the website navigation bar for logging out`},"nav.deleteAccount":{message:`Radera konto`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Webbplatsinställningar`,description:`Text in the website navigation bar for displaying the site configuration page`},"nav.subsite":{message:`Mina undersidor`,description:`Sidebar entry for 'My Subsite', displayed only when features.subsite is enabled`},"nav.setting":{message:`Inställningar`,description:`Text in the website navigation bar for displaying the settings page`},"nav.headshots":{message:`AI ID-foto`,description:`Text in the website navigation bar for displaying the site configuration page`},"nav.more":{message:`Mer`,description:`Text in the website navigation bar for expanding more services`},"nav.locale":{message:`Språkinställningar`,description:`Text in the website navigation bar for changing the language`},"nav.support":{message:`Kundsupport`,description:`Text in the website navigation bar for displaying the contact page`},"nav.darkMode":{message:`Mörkt läge`,description:`Text in the website navigation bar for switching to dark theme`},"title.alert":{message:`Varning`,description:`Title for warning messages`},"title.placeholderOfSelect":{message:`Vänligen välj`,description:`Placeholder for select input`},"title.placeholderOfInput":{message:`Vänligen fyll i`,description:`Placeholder for input`},"title.allApplications":{message:`Alla ansökningar`,description:`Page title for displaying all applications`},"title.allOrders":{message:`Alla beställningar`,description:`Page title for displaying all orders`},"title.orderInfo":{message:`Beställningsinformation`,description:`Page title for displaying order information`},"title.buyMore":{message:`Top Up`,description:`Page title for recharging. Must be translated to 'Top Up'.`},"title.distribution":{message:`Rekommenderad inkomst`,description:`Page title for displaying recommended income, meaning users can earn by inviting others to use the service`},"title.site":{message:`Webbplatsinställningar`,description:`Page title for displaying site configuration`},"title.distributionHistory":{message:`Rekommendationshistorik`,description:`Page title for displaying recommendation history`},"title.invitee":{message:`Inbjuden`,description:`Page title for displaying the inviter`},"title.allUsages":{message:`Användningshistorik`,description:`Page title for displaying all usages of the API service`},"title.allCredentials":{message:`Nycklar`,description:`Page title for displaying all credentials used to access the API`},"about.title1":{message:`Kontakta oss`,description:`Delens rubrik som visar kontaktinformation`},"about.title2":{message:`Resurser`,description:`Visar delrubrik för länkar`},"about.title3":{message:`Länkar`,description:`Visar delrubrik för supportinformation`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, Delaware 19713, USA`,description:`Företagets adress`},"about.email":{message:`office@acedata.cloud`,description:`Företagets e-post`},"about.link1":{message:`Tjänster`,description:`Länk till dokumentationssidan`},"about.link2":{message:`Utvecklardokumentation`,description:`Länk till tjänstesidan`},"about.link3":{message:`Konsol`,description:`Länk till konsolsidan`},"about.link4":{message:`Profil`,description:`Länk till profilsidan`},"about.link5":{message:`UI-plattform`,description:`Länk till centralsidan`},"about.link6":{message:`Rekommenderade intäkter`,description:`Länk till sidan för rekommenderade intäkter`},"about.link7":{message:`Support`,description:`Länk till supportsidan`},"about.link8":{message:`Användarvillkor`,description:`Länk till sidan för användarvillkor`},"about.link9":{message:`Integritetspolicy`,description:`Länk till sidan för integritetspolicy`},"theme.light":{message:`Ljust tema`,description:`Namn på det ljusa temat`},"theme.dark":{message:`Mörkt tema`,description:`Namn på det mörka temat`},"theme.system":{message:`System`,description:`Namn på systemtemat, indikerar automatisk växling av tema baserat på systeminställningar`},"settings.general":{message:`Allmänna inställningar`,description:`Rubrik för allmänna inställningar på inställningssidan`},"settings.language":{message:`Språk`,description:`Rubrik för språkinställningar på inställningssidan`},"settings.theme":{message:`Tema`,description:`Rubrik för tema-inställningar på inställningssidan`},"settings.seo":{message:`SEO-inställningar`,description:`Rubrik för SEO-inställningar på inställningssidan`},"settings.site":{message:`Webbplatsinställningar`,description:`Rubrik för webbplatsinställningar på inställningssidan`},"settings.distribution":{message:`Distribueringsinställningar`,description:`Rubrik för distribueringsinställningar på inställningssidan`},"settings.function":{message:`Funktionsinställningar`,description:`Rubrik för funktionsinställningar på inställningssidan`},"settings.auth":{message:`Inloggningsmetod`,description:`Inställningssidans sidofältets fliktitel för 'Inloggningsmetod' — konfigurerar de inloggningsmetoder som tillåts på denna webbplats samt standardinloggningsmetod, endast synlig för webbplatsadministratörer.`},"settings.apiKey":{message:`API-nyckel`,description:`API-nyckel etikett i sidofältet på inställningssidan - hantering av API-nycklar från uppströmsleverantörer (BYOK)`},"field.operations":{message:`Åtgärder`,description:`Allmän kolumnrubrik: kolumn för åtgärdsknappar i tabellrader (redigera, ta bort etc.)`},"nav.gemini":{message:`Gemini`,description:`Text i webbplatsens navigeringsfält för att visa Gemini-sidan, måste förbli som 'Gemini'`},"nav.claude":{message:`Claude`,description:`Text i webbplatsens navigeringsfält för att visa Claude-sidan, måste förbli som 'Claude'`},"button.detail":{message:`Visa detaljer`,description:``},"button.testEnv":{message:`Testmiljö`,description:`Text i knappen för att växla till testmiljö`},"button.upload":{message:`Ladda upp`,description:`Text i knappen för att ladda upp filer eller innehåll`},"message.cnbeian":{message:`Kina-regionens registrering`,description:`Information om registrering i Kina-regionen`},"message.copyFailed":{message:`Kopiering misslyckades`,description:`Meddelande om att innehållet inte kunde kopieras`},"nav.tryNow":{message:`Prova nu`,description:`Text i webbplatsens navigeringsfält för att låta användare prova tjänsten`},"title.coin":{message:`Kryptovaluta`,description:`Visar sidrubrik för kryptovaluta`},"title.distributionRank":{message:`Rekommendationsrankning`,description:`Visar sidrubrik för rekommendationsrankning`},"title.distributionPlatformRank":{message:`Plattformsrankning`,description:`Visar sidrubrik för plattformsrankning`},"customers.name1":{message:`Mark Du`,description:`Kundens namn`},"customers.job1":{message:`Programvaruingenjör`,description:`Kundens yrke`},"customers.comment1":{message:`Ace Data Cloud har gett vårt team utmärkt service och hjälpt oss att öka produktiviteten. Mycket nöjd!`,description:`Kundens omdöme`},"customers.name2":{message:`Jacob Williams`,description:`Kundens namn`},"customers.job2":{message:`Produktchef`,description:`Kundens yrke`},"customers.comment2":{message:`Ace Data Cloud är en fantastisk integrationsplattform med utmärkt servicekvalitet.`,description:`Kundens omdöme`},"customers.name3":{message:`Larry Henry`,description:`Kundens namn`},"customers.job3":{message:`Designer`,description:`Kundens yrke`},"customers.comment3":{message:`Jag älskar Ace Data Clouds tjänster, de är användarvänliga och prisvärda. Hoppas de blir ännu bättre!`,description:`Kundens omdöme`},"nav.github":{message:`GitHub`,description:`Länk till GitHub-repo`},"settings.github":{message:`Källkod`,description:`Länk för att se källkoden på GitHub`},"settings.about":{message:`Om`,description:`Inställningssidans om-sektionens rubrik`},"settings.localTools":{message:`Lokala verktyg`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Endast tillgängligt i skrivbordsappen.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Auktoriserade mappar`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Mappar som AI:n får läsa och skriva på den här datorn. Verktygen körs lokalt; ingenting lämnar din enhet utan ditt samtycke.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Förgodkänn alla datoråtgärder`,"settings.localToolsPreauthorizeHint":`Tillåt på en gång skärmbild, klick, skrivning, tangenter och alla åtgärder och begär nödvändiga systembehörigheter.`,"settings.localToolsCuActionsTitle":`Tillåt enskilda åtgärder`,"settings.localToolsCuActionsHint":`Aktivera bara de åtgärder du är bekväm med att låta AI:n utföra utan att fråga varje gång. Var och en kan återkallas här.`,"settings.localToolsCuScreenshot":`Skärmbild`,"settings.localToolsCuClick":`Klick`,"settings.localToolsCuMove":`Flytta pekaren`,"settings.localToolsCuType":`Skriv text`,"settings.localToolsCuKey":`Tryck på tangenter`,"settings.localToolsCuScroll":`Rulla`,"settings.localToolsAddFolder":{message:`Lägg till mapp`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Ta bort`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Inga auktoriserade mappar ännu.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Spara`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Sparat`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Aktiva verktyg`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Alltid tillåtna åtgärder`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Verktygsanrop som du valt att alltid tillåta. De körs utan att fråga igen. Återkalla något för att aktivera bekräftelsen igen.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Återkalla`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Återkalla alla`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`Inga alltid tillåtna åtgärder. Du tillfrågas före varje lokalt verktyg.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Systembehörigheter`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Valfritt. Mappåtkomsten ovan behöver inga av dessa – bevilja bara det som en viss uppgift kräver.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Fullständig diskåtkomst`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Skärminspelning`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Hjälpmedel`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Beviljad`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`Inte beviljad`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Öppna…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Mina underwebbplatser`,description:`Rubriken för fliken för underwebbplatsadministration i inställningsfönstret. Syns endast på officiella huvudwebbplatsen, underwebbplatser visas inte.`},"settings.adminOnlyHint":{message:`Denna sektion är endast synlig för webbplatsadministratörer, vanliga användare har inte tillgång.`,description:`En hint som visas högst upp i fliken för webbplatsinställningar / SEO-inställningar / distributionsinställningar / funktionsinställningar som endast är synlig för administratörer.`},"settings.officialOnlyHint":{message:`Denna sektion är endast synlig på huvudwebbplatsen, underwebbplatser visas inte.`,description:`En hint som visas högst upp i fliken 'Mina underwebbplatser', som förklarar att denna ingång endast visas på den officiella huvudwebbplatsen.`},"settings.customDomain":{message:`Anpassad domän`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Bygg nu`,description:`Texten för knappen 'Bygg underwebbplats med ett klick' på om-sidan, syns endast på officiella huvudwebbplatsen`},"settings.poweredBy":{message:`Öppen källkod`,description:`Rubriken som visar vilken öppen källkodsprojekt webbplatsen är baserad på på om-sidan`},"settings.poweredByTip":{message:`Denna webbplats är baserad på Nexior öppen källkodsprojekt, koden är helt öppen källkod.`,description:`Beskrivningen av vilket öppen källkodsprojekt webbplatsen är baserad på på om-sidan`},"settings.apiService":{message:`API-tjänst`,description:`Rubriken som visar API-tjänsteleverantören på om-sidan`},"settings.apiServiceTip":{message:`Denna webbplats API-tjänst tillhandahålls av Ace Data Cloud.`,description:`Beskrivningen av API-tjänsteleverantören på om-sidan`},"settings.buildYourOwn":{message:`Bygg din egen`,description:`Rubriken som uppmanar användare att bygga en liknande webbplats på om-sidan`},"settings.buildYourOwnTip":{message:`Vill du bygga en liknande AI-webbplats? Kontakta oss för distributionssupport.`,description:`Beskrivningen av att bygga en liknande webbplats på om-sidan`},"settings.contactUs":{message:`Kontakta support`,description:`Texten för knappen för att kontakta support`},"message.viewOnGithub":{message:`Visa på GitHub`,description:`Texten för länken för att se projektet på GitHub`},"title.notFound":{message:`Sidan försvann`,description:`Rubriken för 404-sidan`},"message.notFound":{message:`Sidan du besöker finns inte, länken kan ha ändrats eller tagits bort. Gå till startsidan för att fortsätta utforska AceData's AI-tjänster.`,description:`Underrubriken för 404-sidan`},"message.notFoundEyebrow":{message:`Något gick fel`,description:`Texten för den lilla etiketten högst upp på 404-sidan`},"message.notFoundPath":{message:`Begärd väg`,description:`Etiketten som visar den aktuella begärda vägen på 404-sidan`},"button.backToHome":{message:`Tillbaka till startsidan`,description:`Texten för knappen som används för att gå tillbaka till startsidan`},"button.goBack":{message:`Tillbaka`,description:`Texten för knappen som används för att gå tillbaka till föregående sida i webbläsarhistoriken`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Begäran`,description:`API-koddialogens fliketikett för begärningssnutten (koden som återskapar det aktuella resultatet).`},"tab.apiResponse":{message:`Svar`,description:`API-koddialogens fliketikett för det live-svar som returneras efter att ha klickat på 'Kör'.`},"button.apiRun":{message:`Kör igen`,description:`API-kod dialogknapp som kör begäran live mot API:et med användarens nyckel. Resultatet finns redan, så att klicka kör det igen, och det är debiterbart.`},"button.apiRunning":{message:`Körs…`,description:`API-koddialogens 'Kör'-knappens etikett medan den live begäran är på väg.`},"button.apiRunConfirm":{message:`Bekräfta körning`,description:`Bekräfta-knappens etikett i dialogrutan som varnar för att körning här förbrukar extra krediter.`},"button.viewDocs":{message:`Visa dokumentation`,description:`API-kod dialogfotknapp som öppnar den matchande API-dokumentationssidan på plattformen.`},"message.apiClickRun":{message:`Klicka på "Kör igen" för att använda din API-nyckel för att köra denna begäran i realtid.`,description:`API-kod dialogens svarstabells tomma tillstånd, som visas innan användaren har kört begäran.`},"message.apiRunConfirmTitle":{message:`Bekräfta körning`,description:`Titeln på bekräftelsedialogen som visas innan en begäran körs igen från API-kod dialogen.`},"message.apiRunConfirmDesc":{message:`Denna körning kommer att använda din API-nyckel för att göra ett verkligt anrop till gränssnittet och förbruka extra poäng, bekräftar du att du vill fortsätta?`,description:`Innehållet i bekräftelsedialogen som varnar för att omkörning av begäran är ett verkligt, debiterbart API-anrop.`},"message.apiRunConfirmSkip":{message:`Visa inte igen`,description:`Checkbox i bekräftelsedialogen som, när den är ikryssad, döljer varningen vid efterföljande körningar.`},"message.apiRunTaskCreated":{message:`Uppgiften har skapats, stäng detta fönster för att se de senaste resultaten nedan.`,description:`Framgångsbanner som visas i API-koddialogen efter att en körning returnerar ett uppgifts-id, vilket antyder att den nya uppgiften redan visas i listan bakom dialogen.`},"button.apiViewLatest":{message:`Stäng och visa`,description:`Knapp i API-koddialogens framgångsbanner som stänger dialogen så att användaren kan se den nyligen skapade uppgiften i listan nedan.`},"message.uploadInProgress":{message:`Referensuppladdningarna pågår fortfarande – vänta ett ögonblick.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Texten för Maestro-artikeln på videoproduktionssidan i navigeringsfältet, hålls som 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|
|
1
|
+
var e={"button.setup":{message:`Inställningar`,description:`Text i knappen för att göra inställningar`},"button.start":{message:`Starta`,description:`Text i knappen för att påbörja vissa åtgärder`},"button.copy":{message:`Kopiera`,description:`Text i knappen för att kopiera något`},"button.copied":{message:`Kopierad`,description:`Text i knappen för att indikera att innehållet har kopierats`},"button.restart":{message:`Återställ`,description:`Text i knappen för att återställa något`},"button.preview":{message:`Förhandsgranska`,description:`Text i knappen för att öppna en förhandsvisning av en fil via URL`},"button.seeRawImage":{message:`Visa originalbild`,description:`Text i knappen för att visa den ursprungliga bilden`},"button.seeRawVideo":{message:`Visa video`,description:`Text i knappen för att visa den ursprungliga videon`},"button.edit":{message:`Redigera`,description:`Text i knappen för att redigera innehåll`},"button.login":{message:`Logga in`,description:`Text i knappen för att logga in`},"button.logout":{message:`Logga ut`,description:`Text i knappen för att logga ut`},"button.new":{message:`Ny`,description:`Text i knappen för att skapa ett nytt objekt`},"button.delete":{message:`Ta bort`,description:`Text i knappen för att ta bort innehåll`},"button.deletePermanently":{message:`Radera kontot permanent`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Bekräfta`,description:`Text i knappen för att bekräfta en åtgärd`},"button.cancel":{message:`Avbryt`,description:`Text i knappen för att avbryta en åtgärd`},"button.close":{message:`Stäng`,description:`Text i knappen för att stänga en dialogruta eller panel`},"button.expand":{message:`Expandera`,description:`Knappens text som används för att öppna en fullskärmsredigerare för inmatning av tips.`},"button.alert":{message:`Varning`,description:`Text i knappen för att utfärda en varning`},"button.info":{message:`Information`,description:`Text i knappen för att visa information`},"button.publish":{message:`Publicera`,description:`Text i knappen för att publicera innehåll`},"button.watch":{message:`Titta`,description:`Text i knappen för att titta på något`},"button.verify":{message:`Verifiera identitet`,description:`Text i knappen för att låta användaren verifiera sin identitet`},"button.profile":{message:`Profil`,description:`Text i knappen för att visa användarens profil`},"button.console":{message:`Konsol`,description:`Text i knappen för att visa konsolsidan för att kontrollera något på webbsidan`},"button.learn":{message:`Lär dig`,description:`Text i knappen för att låta användaren lära sig något`},"button.buy":{message:`Köp`,description:`Text i knappen för att låta användaren köpa något`},"button.try":{message:`Prova`,description:`Text i knappen för att låta användaren prova något`},"button.startForFree":{message:`Börja gratis`,description:`Text i knappen för att låta användaren börja gratis`},"button.download":{message:`Ladda ner`,description:`Text i knappen för att ladda ner filer (som ljud, video, bilder)`},"button.downloadAndroid":{message:`Ladda ner Android`,description:`Text i knappen för att ladda ner Android-installationspaketet`},"button.downloadIos":{message:`Ladda ner iOS-installationspaket`,description:`Text i knappen för att ladda ner iOS-installationspaketet`},"button.downloadWindows":{message:`Ladda ner för Windows`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Ladda ner för macOS`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Installera iOS`,description:`Text i knappen för att installera iOS-appen`},"button.apply":{message:`Ansök`,description:`Text i knappen för att låta användaren ansöka om API-tjänst`},"button.refresh":{message:`Uppdatera`,description:`Text i knappen för att uppdatera sidan`},"button.pay":{message:`Betala`,description:`Text i knappen för att låta användaren betala för tjänster`},"button.repay":{message:`Fortsätt betala`,description:`Text i knappen för att låta användaren fortsätta betala för tjänster`},"button.applied":{message:`Ansökt`,description:`Text i knappen för att visa att användaren har ansökt om tjänsten`},"button.acquire":{message:`Få`,description:`Text i knappen för att låta användaren få API-tjänstens token eller nyckel`},"button.fillExample":{message:`Fyll i exempel`,description:`Text i knappen för att låta användaren fylla i exempeldata`},"button.buyMore":{message:`Toppa upp`,description:`Text i knappen för att låta användaren toppa upp. Engelsk översättning måste vara 'Top Up', svensk översättning är 'Toppa upp'.`},"button.update":{message:`Uppdatera`,description:`Text i knappen för att uppdatera innehåll`},"button.view":{message:`Visa`,description:`Text i knappen för att visa något`},"button.create":{message:`Skapa`,description:`Text i knappen för att skapa något`},"button.referralEarnings":{message:`Rekommenderade intäkter`,description:`Text i knappen som visar rekommenderade intäkter, vilket innebär att användaren kan tjäna pengar genom att bjuda in andra att använda tjänsten.`},"button.finish":{message:`Färdig`,description:`Text i knappen för att slutföra en åtgärd`},"entity.id":{message:`ID`,description:`Visar den unika identifieraren för en enhet`},"entity.type":{message:`Typ`,description:`Visar typen av enhet`},"entity.website":{message:`Ace Data Cloud`,description:`Webbplatsens namn, ingen översättning behövs, behåll som 'Ace Data Cloud'`},"entity.copyright":{message:`Upphovsrätt`,description:`Text som visar upphovsrätt`},"entity.platform":{message:`Plattform`,description:`Text som indikerar att detta är en API-tjänstplattform`},"entity.title":{message:`Titel`,description:`Titeln på enheten`},"entity.icon":{message:`Ikon`,description:`Ikonen för enheten`},"entity.status":{message:`Status`,description:`Status för enheten`},"status.loading":{message:`Laddar...`,description:`Statusmeddelande som visas när innehållet laddas`},"error.appleSignInFailed":{message:`Det gick inte att logga in med Apple. Försök igen eller använd en annan inloggningsmetod.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Åtgärd`,description:`Åtgärden för enheten`},"entity.description":{message:`Beskrivning`,description:`Beskrivningen av enheten`},"entity.createdAt":{message:`Skapad`,description:`Tiden då enheten skapades`},"entity.updatedAt":{message:`Uppdaterad`,description:`Tiden då enheten uppdaterades`},"entity.order":{message:`Beställning`,description:`Beställningen för enheten, som innehåller pengar och tjänsteinformation som användaren behöver betala för`},"message.noTasks":{message:`Inga historiska uppgifter, börja en ny uppgift~`,description:`Meddelande när det inte finns några uppgifter`},"message.guestTasks":{message:`Logga in för att starta en uppgift och se dina skapelser här.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Använt belopp`,description:`Visar det belopp som har använts för tjänsten`},"message.mobileAppDescription":{message:`Använd AceData direkt på mobilen, för närvarande tillgänglig för nedladdning av Android APK, iOS-installationspaket kommer att göras tillgängligt efter signering.`,description:`Beskrivning på nedladdningssidan för mobilapplikationen`},"message.mobileAndroidHint":{message:`För Android-telefoner och surfplattor, skanna för att ladda ner den senaste APK.`,description:`Beskrivning på Android-nedladdningskortet`},"message.mobileAndroidPending":{message:`Android-installationspaketet är inte klart än, försök igen senare.`,description:`Meddelande när Android-installationspaketet inte är tillgängligt`},"message.mobileAvailableNow":{message:`Android är tillgänglig för nedladdning`,description:`Visar att Android nu kan laddas ner`},"message.mobileSecureDelivery":{message:`Säker CDN-distribution`,description:`Betonar att nedladdningslänken levereras via CDN`},"message.mobileDirectInstall":{message:`Direkt APK-installation`,description:`Beskriver att Android-installationen är en direkt APK-installation`},"message.mobileLatestRelease":{message:`Aktuell offentlig version`,description:`Visar att den aktuella versionen är den senaste offentliga versionen`},"message.mobileSharedAccount":{message:`Dela konto och kvot med webbversionen`,description:`Förklarar att mobilversionen delar konto med webbversionen`},"message.mobileIosHint":{message:`För iPhone och iPad, kan installeras direkt online; om systemet blockerar kan du först ladda ner IPA och sedan distribuera.`,description:`Beskrivning på iOS-nedladdningskortet`},"message.mobileIosPending":{message:`iOS-installationspaketet är inte tillgängligt för nedladdning än, kommer att göras tillgängligt efter att Apple-certifikat och beskrivningsfil är klara.`,description:`Meddelande när iOS-installationspaketet inte är tillgängligt`},"message.mobileComingSoon":{message:`Kommer snart`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`För Windows 10 och senare (64-bitars). Ladda ner installationsprogrammet och dubbelklicka för att installera.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`För macOS 11 och senare. Välj versionen som passar din Mac — Apple Silicon (M-serien) eller Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Skrivbordsapparna är osignerade beta-versioner. I Windows väljer du ”Mer information → Kör ändå” vid SmartScreen-meddelandet; i macOS högerklickar du på appen och väljer ”Öppna” för att kringgå Gatekeeper.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Hämta på Google Play`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`Ingen åtkomst till Google Play? Ladda ner APK-filen direkt.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Skanna för att öppna Google Play`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Vid första installationen av företags- eller Ad Hoc-paket på iOS kan systemet kräva att du först litar på certifikatet i 'Inställningar > Allmänt > VPN och enhetsadministration'.`,description:`Meddelande om installation av mobilapplikation`},"title.mobileApp":{message:`Nedladdning för mobil`,description:`Titel på nedladdningssidan för mobilapplikationen`},"title.mobileFastAccess":{message:`Snabbare åtkomst, ingen appbutik`,description:`Titel på fördelar på nedladdningssidan, betonar snabb installation`},"title.mobileTrustedRelease":{message:`Versioner centralt hanterade, stabil distribution`,description:`Titel på fördelar på nedladdningssidan, betonar stabilitet i versioner och distribution`},"title.mobileUnifiedExperience":{message:`Mobil och webbupplevelse är enhetlig`,description:`Titel på fördelar på nedladdningssidan, betonar enhetlig upplevelse`},"nav.mobileApp":{message:`Mobil`,description:`Nedladdningslänk för mobilapplikation i navigeringen`},"message.mobileFastAccess":{message:`Användare kan skanna för att installera direkt på mobilen, eller ladda ner APK på skrivbordet och sedan distribuera till teammedlemmar, lämpligt för snabba tester och intern testning.`,description:`Fördelar på nedladdningssidan, betonar snabb åtkomst`},"message.mobileTrustedRelease":{message:`Nedladdningslänkar är centralt placerade på samma sida, versionsnummer, plattformsstatus och installationsmetod är tydliga, vilket minskar kommunikationskostnader på grund av spridd information.`,description:`Fördelar på nedladdningssidan, betonar enhetlig distribution`},"message.mobileUnifiedExperience":{message:`Kontosystem, kvoter och tjänsteingångar efter inloggning är enhetliga med webbversionen, vilket gör det enkelt för användare att växla mellan skrivbord och mobil.`,description:`Fördelar på nedladdningssidan, betonar enhetlig kontoupplevelse`},"message.remainingAmount":{message:`Återstående belopp`,description:`Visar det återstående beloppet för tjänsten`},"message.copied":{message:`Kopierad`,description:`Visar meddelande om att innehållet har kopierats framgångsrikt`},"message.restart":{message:`Återgenerera`,description:`Används för att visa meddelande om att innehållet har kopierats framgångsrikt`},"message.confirmDelete":{message:`Är du säker på att du vill ta bort?`,description:`Bekräfta meddelande för att användaren ska ta bort något innehåll`},"message.expiredAt":{message:`Utgångstid`,description:`Används för att visa tjänstens utgångstid`},"message.alert":{message:`Varning`,description:`Meddelande för att varna användaren`},"message.deleteAccountConfirm":{message:`Detta raderar permanent ditt konto och all tillhörande data. Åtgärden kan inte ångras. Är du säker på att du vill fortsätta?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Ditt konto har raderats.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Det gick inte att radera ditt konto. Försök igen senare.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Den här åtgärden kan inte ångras! Ditt konto och all dess data raderas permanent och kan inte återställas.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Raderas permanent: profil, saldo och krediter, applikationer och prenumerationer, API-nycklar och tredjeparts inloggningskopplingar.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Skriv ditt användarnamn för att bekräfta raderingen:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Ange ditt användarnamn här`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Information`,description:`Meddelande för att visa information`},"message.free":{message:`Gratis`,description:`Meddelande som visar att tjänsten är gratis, vilket innebär att användaren inte behöver betala`},"message.startPrice":{message:`Startpris`,description:`Meddelande som visar tjänstens lägsta pris`},"message.joinDiscord":{message:`Gå med i Discord`,description:`Meddelande för att låta användaren gå med i Discord-kanalen`},"message.addWeChat":{message:`Lägg till WeChat`,description:`Meddelande för att låta användaren lägga till WeChat-konto`},"message.serviceTech":{message:`Teknisk support`,description:`Meddelande för att visa teknisk support`},"message.businessCooperation":{message:`Data & Affärssamarbete`,description:`Meddelande för att visa affärssamarbete`},"message.noData":{message:`Inga data`,description:`Meddelande för att visa att det inte finns några data i tabellen eller listan`},"nav.home":{message:`Hem`,description:`Text i webbplatsens navigeringsfält för att visa hemsidan`},"nav.content":{message:`Innehåll`,description:`Text i webbplatsens navigeringsfält för att visa innehållssidan`},"nav.category":{message:`Kategori`,description:`Text i webbplatsens navigeringsfält för att visa kategorisidan`},"nav.service":{message:`Alla tjänster`,description:`Text i webbplatsens navigeringsfält för att visa tjänstersidan`},"nav.profile":{message:`Min profil`,description:`Text i webbplatsens navigeringsfält för att visa profilsidan`},"nav.products":{message:`Produkter`,description:`Text i webbplatsens navigeringsfält för att visa produktsidan`},"nav.referral":{message:`Intäktsallians`,description:`Text i webbplatsens navigeringsfält för att visa rekommendationssidan`},"nav.apiPlatform":{message:`API Plattform`,description:`Text i webbplatsens navigeringsfält för att visa API-plattformssidan`},"nav.document":{message:`Utvecklingsdokumentation`,description:`Text i webbplatsens navigeringsfält för att visa dokumentationssidan`},"nav.console":{message:`Konsol`,description:`Text i webbplatsens navigeringsfält för att visa konsolsidan`},"nav.chatgpt":{message:`ChatGPT`,description:`Text i webbplatsens navigeringsfält för att visa ChatGPT-sidan, vänligen översätt inte detta fält, det måste förbli 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Text i webbplatsens navigeringsfält för att visa DeepSeek-sidan, vänligen översätt inte detta fält, det måste förbli 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Text i webbplatsens navigeringsfält för att visa Grok-sidan, vänligen översätt inte detta fält, det måste förbli 'Grok'`},"nav.chat":{message:`Chat`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Chat'`},"nav.veo":{message:`Veo`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Veo'`},"nav.sora":{message:`Sora`,description:`Text i webbplatsens navigeringsfält för att visa chatt-sidan, vänligen översätt inte detta fält, det måste förbli 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Text i webbplatsens navigeringsfält för att visa Midjourney-sidan, vänligen översätt inte detta fält, det måste förbli 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Text i webbplatsens navigeringsfält för att visa QRArt-sidan, vänligen översätt inte detta fält, det måste förbli 'QRArt'`},"nav.suno":{message:`Suno`,description:`Text i webbplatsens navigeringsfält för att visa Suno-sidan, vänligen översätt inte detta fält, det måste förbli 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Text i webbplatsens navigeringsfält för att visa Pixverse-sidan, vänligen översätt inte detta fält, det måste förbli 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Text i webbplatsens navigeringsfält för att visa Flux-sidan, vänligen översätt inte detta fält, det måste förbli 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Text i webbplatsens navigeringsfält för att visa Nano Banana-sidan, vänligen översätt inte detta fält, det måste förbli 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Bild`,description:`Text i webbplatsens navigeringsfält för att visa OpenAI Bild-sidan, vänligen översätt inte detta fält, det måste förbli 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Text in the website navigation bar to display the SeeDream page, do not translate this field, must remain as 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`Text in the website navigation bar for displaying the SeeDance page, must remain 'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`Text in the website navigation bar for displaying the Luma page, must remain 'Luma'`},"nav.pika":{message:`Pika`,description:`Text in the website navigation bar for displaying the Pika page, must remain 'Pika'`},"nav.kling":{message:`Kling`,description:`Text in the website navigation bar for displaying the Kling page, must remain 'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`Text in the website navigation bar for displaying the Hailuo page, must remain 'Hailuo'`},"nav.wan":{message:`Wan`,description:`Text in the website navigation bar for displaying the Wan page, must remain 'Wan'`},"nav.producer":{message:`Producer`,description:`Text in the website navigation bar for displaying the Producer page, must remain 'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Text i navigationsfältet på webbplatsen som används för att visa Fish Audio-sidan, vänligen översätt inte detta fält, det måste förbli 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`Text in the website navigation bar for displaying the Kimi page, must remain 'Kimi'`},"nav.serp":{message:`SERP`,description:`Text in the website navigation bar for displaying the SERP page, must remain 'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Bild`,description:`Text in the website navigation bar for displaying the image page`},"nav.music":{message:`Musik`,description:`Text in the website navigation bar for displaying the music page`},"nav.video":{message:`Video`,description:`Text in the website navigation bar for displaying the video page`},"nav.distribution":{message:`Rekommenderad inkomst`,description:`Text in the website navigation bar for displaying the recommended income page`},"nav.connections":{message:`Anslutningar`,description:`Menu item to navigate to the connection management page at auth.acedata.cloud`},"nav.logOut":{message:`Logga ut`,description:`Text in the website navigation bar for logging out`},"nav.deleteAccount":{message:`Radera konto`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Webbplatsinställningar`,description:`Text in the website navigation bar for displaying the site configuration page`},"nav.subsite":{message:`Mina undersidor`,description:`Sidebar entry for 'My Subsite', displayed only when features.subsite is enabled`},"nav.setting":{message:`Inställningar`,description:`Text in the website navigation bar for displaying the settings page`},"nav.headshots":{message:`AI ID-foto`,description:`Text in the website navigation bar for displaying the site configuration page`},"nav.more":{message:`Mer`,description:`Text in the website navigation bar for expanding more services`},"nav.locale":{message:`Språkinställningar`,description:`Text in the website navigation bar for changing the language`},"nav.support":{message:`Kundsupport`,description:`Text in the website navigation bar for displaying the contact page`},"nav.darkMode":{message:`Mörkt läge`,description:`Text in the website navigation bar for switching to dark theme`},"title.alert":{message:`Varning`,description:`Title for warning messages`},"title.placeholderOfSelect":{message:`Vänligen välj`,description:`Placeholder for select input`},"title.placeholderOfInput":{message:`Vänligen fyll i`,description:`Placeholder for input`},"title.allApplications":{message:`Alla ansökningar`,description:`Page title for displaying all applications`},"title.allOrders":{message:`Alla beställningar`,description:`Page title for displaying all orders`},"title.orderInfo":{message:`Beställningsinformation`,description:`Page title for displaying order information`},"title.buyMore":{message:`Top Up`,description:`Page title for recharging. Must be translated to 'Top Up'.`},"title.distribution":{message:`Rekommenderad inkomst`,description:`Page title for displaying recommended income, meaning users can earn by inviting others to use the service`},"title.site":{message:`Webbplatsinställningar`,description:`Page title for displaying site configuration`},"title.distributionHistory":{message:`Rekommendationshistorik`,description:`Page title for displaying recommendation history`},"title.invitee":{message:`Inbjuden`,description:`Page title for displaying the inviter`},"title.allUsages":{message:`Användningshistorik`,description:`Page title for displaying all usages of the API service`},"title.allCredentials":{message:`Nycklar`,description:`Page title for displaying all credentials used to access the API`},"about.title1":{message:`Kontakta oss`,description:`Delens rubrik som visar kontaktinformation`},"about.title2":{message:`Resurser`,description:`Visar delrubrik för länkar`},"about.title3":{message:`Länkar`,description:`Visar delrubrik för supportinformation`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, Delaware 19713, USA`,description:`Företagets adress`},"about.email":{message:`office@acedata.cloud`,description:`Företagets e-post`},"about.link1":{message:`Tjänster`,description:`Länk till dokumentationssidan`},"about.link2":{message:`Utvecklardokumentation`,description:`Länk till tjänstesidan`},"about.link3":{message:`Konsol`,description:`Länk till konsolsidan`},"about.link4":{message:`Profil`,description:`Länk till profilsidan`},"about.link5":{message:`UI-plattform`,description:`Länk till centralsidan`},"about.link6":{message:`Rekommenderade intäkter`,description:`Länk till sidan för rekommenderade intäkter`},"about.link7":{message:`Support`,description:`Länk till supportsidan`},"about.link8":{message:`Användarvillkor`,description:`Länk till sidan för användarvillkor`},"about.link9":{message:`Integritetspolicy`,description:`Länk till sidan för integritetspolicy`},"theme.light":{message:`Ljust tema`,description:`Namn på det ljusa temat`},"theme.dark":{message:`Mörkt tema`,description:`Namn på det mörka temat`},"theme.system":{message:`System`,description:`Namn på systemtemat, indikerar automatisk växling av tema baserat på systeminställningar`},"settings.general":{message:`Allmänna inställningar`,description:`Rubrik för allmänna inställningar på inställningssidan`},"settings.language":{message:`Språk`,description:`Rubrik för språkinställningar på inställningssidan`},"settings.theme":{message:`Tema`,description:`Rubrik för tema-inställningar på inställningssidan`},"settings.seo":{message:`SEO-inställningar`,description:`Rubrik för SEO-inställningar på inställningssidan`},"settings.site":{message:`Webbplatsinställningar`,description:`Rubrik för webbplatsinställningar på inställningssidan`},"settings.distribution":{message:`Distribueringsinställningar`,description:`Rubrik för distribueringsinställningar på inställningssidan`},"settings.function":{message:`Funktionsinställningar`,description:`Rubrik för funktionsinställningar på inställningssidan`},"settings.auth":{message:`Inloggningsmetod`,description:`Inställningssidans sidofältets fliktitel för 'Inloggningsmetod' — konfigurerar de inloggningsmetoder som tillåts på denna webbplats samt standardinloggningsmetod, endast synlig för webbplatsadministratörer.`},"settings.apiKey":{message:`API-nyckel`,description:`API-nyckel etikett i sidofältet på inställningssidan - hantering av API-nycklar från uppströmsleverantörer (BYOK)`},"field.operations":{message:`Åtgärder`,description:`Allmän kolumnrubrik: kolumn för åtgärdsknappar i tabellrader (redigera, ta bort etc.)`},"nav.gemini":{message:`Gemini`,description:`Text i webbplatsens navigeringsfält för att visa Gemini-sidan, måste förbli som 'Gemini'`},"nav.claude":{message:`Claude`,description:`Text i webbplatsens navigeringsfält för att visa Claude-sidan, måste förbli som 'Claude'`},"button.detail":{message:`Visa detaljer`,description:``},"button.testEnv":{message:`Testmiljö`,description:`Text i knappen för att växla till testmiljö`},"button.upload":{message:`Ladda upp`,description:`Text i knappen för att ladda upp filer eller innehåll`},"message.cnbeian":{message:`Kina-regionens registrering`,description:`Information om registrering i Kina-regionen`},"message.copyFailed":{message:`Kopiering misslyckades`,description:`Meddelande om att innehållet inte kunde kopieras`},"nav.tryNow":{message:`Prova nu`,description:`Text i webbplatsens navigeringsfält för att låta användare prova tjänsten`},"title.coin":{message:`Kryptovaluta`,description:`Visar sidrubrik för kryptovaluta`},"title.distributionRank":{message:`Rekommendationsrankning`,description:`Visar sidrubrik för rekommendationsrankning`},"title.distributionPlatformRank":{message:`Plattformsrankning`,description:`Visar sidrubrik för plattformsrankning`},"customers.name1":{message:`Mark Du`,description:`Kundens namn`},"customers.job1":{message:`Programvaruingenjör`,description:`Kundens yrke`},"customers.comment1":{message:`Ace Data Cloud har gett vårt team utmärkt service och hjälpt oss att öka produktiviteten. Mycket nöjd!`,description:`Kundens omdöme`},"customers.name2":{message:`Jacob Williams`,description:`Kundens namn`},"customers.job2":{message:`Produktchef`,description:`Kundens yrke`},"customers.comment2":{message:`Ace Data Cloud är en fantastisk integrationsplattform med utmärkt servicekvalitet.`,description:`Kundens omdöme`},"customers.name3":{message:`Larry Henry`,description:`Kundens namn`},"customers.job3":{message:`Designer`,description:`Kundens yrke`},"customers.comment3":{message:`Jag älskar Ace Data Clouds tjänster, de är användarvänliga och prisvärda. Hoppas de blir ännu bättre!`,description:`Kundens omdöme`},"nav.github":{message:`GitHub`,description:`Länk till GitHub-repo`},"settings.github":{message:`Källkod`,description:`Länk för att se källkoden på GitHub`},"settings.about":{message:`Om`,description:`Inställningssidans om-sektionens rubrik`},"settings.localTools":{message:`Lokala verktyg`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Endast tillgängligt i skrivbordsappen.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Auktoriserade mappar`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Mappar som AI:n får läsa och skriva på den här datorn. Verktygen körs lokalt; ingenting lämnar din enhet utan ditt samtycke.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Förgodkänn alla datoråtgärder`,"settings.localToolsPreauthorizeHint":`Tillåt på en gång skärmbild, klick, skrivning, tangenter och alla åtgärder och begär nödvändiga systembehörigheter.`,"settings.localToolsCuActionsTitle":`Tillåt enskilda åtgärder`,"settings.localToolsCuActionsHint":`Aktivera bara de åtgärder du är bekväm med att låta AI:n utföra utan att fråga varje gång. Var och en kan återkallas här.`,"settings.localToolsCuScreenshot":`Skärmbild`,"settings.localToolsCuClick":`Klick`,"settings.localToolsCuMove":`Flytta pekaren`,"settings.localToolsCuType":`Skriv text`,"settings.localToolsCuKey":`Tryck på tangenter`,"settings.localToolsCuScroll":`Rulla`,"settings.localToolsBuiltinTitle":`Inbyggda verktyg`,"settings.localToolsBuiltinHint":`Aktivera ett verktyg så att AI:n kör det utan att fråga varje gång. Shell kan köra vilket kommando som helst på den här datorn — aktivera bara om du litar på det. Filverktyg begränsas till dina godkända mappar.`,"settings.localToolsBuiltinRisky":`Full åtkomst`,"settings.localToolsAddFolder":{message:`Lägg till mapp`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Ta bort`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Inga auktoriserade mappar ännu.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Spara`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Sparat`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Aktiva verktyg`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Alltid tillåtna åtgärder`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Verktygsanrop som du valt att alltid tillåta. De körs utan att fråga igen. Återkalla något för att aktivera bekräftelsen igen.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Återkalla`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Återkalla alla`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`Inga alltid tillåtna åtgärder. Du tillfrågas före varje lokalt verktyg.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Systembehörigheter`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Valfritt. Mappåtkomsten ovan behöver inga av dessa – bevilja bara det som en viss uppgift kräver.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Fullständig diskåtkomst`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Skärminspelning`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Hjälpmedel`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Beviljad`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`Inte beviljad`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Öppna…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Mina underwebbplatser`,description:`Rubriken för fliken för underwebbplatsadministration i inställningsfönstret. Syns endast på officiella huvudwebbplatsen, underwebbplatser visas inte.`},"settings.adminOnlyHint":{message:`Denna sektion är endast synlig för webbplatsadministratörer, vanliga användare har inte tillgång.`,description:`En hint som visas högst upp i fliken för webbplatsinställningar / SEO-inställningar / distributionsinställningar / funktionsinställningar som endast är synlig för administratörer.`},"settings.officialOnlyHint":{message:`Denna sektion är endast synlig på huvudwebbplatsen, underwebbplatser visas inte.`,description:`En hint som visas högst upp i fliken 'Mina underwebbplatser', som förklarar att denna ingång endast visas på den officiella huvudwebbplatsen.`},"settings.customDomain":{message:`Anpassad domän`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Bygg nu`,description:`Texten för knappen 'Bygg underwebbplats med ett klick' på om-sidan, syns endast på officiella huvudwebbplatsen`},"settings.poweredBy":{message:`Öppen källkod`,description:`Rubriken som visar vilken öppen källkodsprojekt webbplatsen är baserad på på om-sidan`},"settings.poweredByTip":{message:`Denna webbplats är baserad på Nexior öppen källkodsprojekt, koden är helt öppen källkod.`,description:`Beskrivningen av vilket öppen källkodsprojekt webbplatsen är baserad på på om-sidan`},"settings.apiService":{message:`API-tjänst`,description:`Rubriken som visar API-tjänsteleverantören på om-sidan`},"settings.apiServiceTip":{message:`Denna webbplats API-tjänst tillhandahålls av Ace Data Cloud.`,description:`Beskrivningen av API-tjänsteleverantören på om-sidan`},"settings.buildYourOwn":{message:`Bygg din egen`,description:`Rubriken som uppmanar användare att bygga en liknande webbplats på om-sidan`},"settings.buildYourOwnTip":{message:`Vill du bygga en liknande AI-webbplats? Kontakta oss för distributionssupport.`,description:`Beskrivningen av att bygga en liknande webbplats på om-sidan`},"settings.contactUs":{message:`Kontakta support`,description:`Texten för knappen för att kontakta support`},"message.viewOnGithub":{message:`Visa på GitHub`,description:`Texten för länken för att se projektet på GitHub`},"title.notFound":{message:`Sidan försvann`,description:`Rubriken för 404-sidan`},"message.notFound":{message:`Sidan du besöker finns inte, länken kan ha ändrats eller tagits bort. Gå till startsidan för att fortsätta utforska AceData's AI-tjänster.`,description:`Underrubriken för 404-sidan`},"message.notFoundEyebrow":{message:`Något gick fel`,description:`Texten för den lilla etiketten högst upp på 404-sidan`},"message.notFoundPath":{message:`Begärd väg`,description:`Etiketten som visar den aktuella begärda vägen på 404-sidan`},"button.backToHome":{message:`Tillbaka till startsidan`,description:`Texten för knappen som används för att gå tillbaka till startsidan`},"button.goBack":{message:`Tillbaka`,description:`Texten för knappen som används för att gå tillbaka till föregående sida i webbläsarhistoriken`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Begäran`,description:`API-koddialogens fliketikett för begärningssnutten (koden som återskapar det aktuella resultatet).`},"tab.apiResponse":{message:`Svar`,description:`API-koddialogens fliketikett för det live-svar som returneras efter att ha klickat på 'Kör'.`},"button.apiRun":{message:`Kör igen`,description:`API-kod dialogknapp som kör begäran live mot API:et med användarens nyckel. Resultatet finns redan, så att klicka kör det igen, och det är debiterbart.`},"button.apiRunning":{message:`Körs…`,description:`API-koddialogens 'Kör'-knappens etikett medan den live begäran är på väg.`},"button.apiRunConfirm":{message:`Bekräfta körning`,description:`Bekräfta-knappens etikett i dialogrutan som varnar för att körning här förbrukar extra krediter.`},"button.viewDocs":{message:`Visa dokumentation`,description:`API-kod dialogfotknapp som öppnar den matchande API-dokumentationssidan på plattformen.`},"message.apiClickRun":{message:`Klicka på "Kör igen" för att använda din API-nyckel för att köra denna begäran i realtid.`,description:`API-kod dialogens svarstabells tomma tillstånd, som visas innan användaren har kört begäran.`},"message.apiRunConfirmTitle":{message:`Bekräfta körning`,description:`Titeln på bekräftelsedialogen som visas innan en begäran körs igen från API-kod dialogen.`},"message.apiRunConfirmDesc":{message:`Denna körning kommer att använda din API-nyckel för att göra ett verkligt anrop till gränssnittet och förbruka extra poäng, bekräftar du att du vill fortsätta?`,description:`Innehållet i bekräftelsedialogen som varnar för att omkörning av begäran är ett verkligt, debiterbart API-anrop.`},"message.apiRunConfirmSkip":{message:`Visa inte igen`,description:`Checkbox i bekräftelsedialogen som, när den är ikryssad, döljer varningen vid efterföljande körningar.`},"message.apiRunTaskCreated":{message:`Uppgiften har skapats, stäng detta fönster för att se de senaste resultaten nedan.`,description:`Framgångsbanner som visas i API-koddialogen efter att en körning returnerar ett uppgifts-id, vilket antyder att den nya uppgiften redan visas i listan bakom dialogen.`},"button.apiViewLatest":{message:`Stäng och visa`,description:`Knapp i API-koddialogens framgångsbanner som stänger dialogen så att användaren kan se den nyligen skapade uppgiften i listan nedan.`},"message.uploadInProgress":{message:`Referensuppladdningarna pågår fortfarande – vänta ett ögonblick.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Texten för Maestro-artikeln på videoproduktionssidan i navigeringsfältet, hålls som 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={"button.setup":{message:`Aseta`,description:`Painikkeen teksti, jota käytetään asetusten tekemiseen`},"button.start":{message:`Aloita`,description:`Painikkeen teksti, jota käytetään joidenkin toimintojen aloittamiseen`},"button.copy":{message:`Kopioi`,description:`Painikkeen teksti, jota käytetään sisällön kopioimiseen`},"button.copied":{message:`Kopioitu`,description:`Painikkeen teksti, joka osoittaa, että sisältö on kopioitu`},"button.restart":{message:`Uudelleen`,description:`Painikkeen teksti, jota käytetään joidenkin sisältöjen asettamiseen`},"button.preview":{message:`Esikatselu`,description:`Painikkeen teksti, jota käytetään tiedoston esikatselun avaamiseen URL-osoitteen kautta`},"button.seeRawImage":{message:`Näytä alkuperäinen kuva`,description:`Painikkeen teksti, jota käytetään alkuperäisen kuvan katsomiseen`},"button.seeRawVideo":{message:`Näytä video`,description:`Painikkeen teksti, jota käytetään alkuperäisen videon katsomiseen`},"button.edit":{message:`Muokkaa`,description:`Painikkeen teksti, jota käytetään sisällön muokkaamiseen`},"button.login":{message:`Kirjaudu sisään`,description:`Painikkeen teksti, jota käytetään kirjautumiseen`},"button.logout":{message:`Kirjaudu ulos`,description:`Painikkeen teksti, jota käytetään uloskirjautumiseen`},"button.new":{message:`Uusi`,description:`Painikkeen teksti, jota käytetään uuden kohteen luomiseen`},"button.delete":{message:`Poista`,description:`Painikkeen teksti, jota käytetään sisällön poistamiseen`},"button.deletePermanently":{message:`Poista tili pysyvästi`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Vahvista`,description:`Painikkeen teksti, jota käytetään toiminnan vahvistamiseen`},"button.cancel":{message:`Peruuta`,description:`Painikkeen teksti, jota käytetään toiminnan peruuttamiseen`},"button.close":{message:`Sulje`,description:`Painikkeen teksti, jota käytetään dialogin tai paneelin sulkemiseen`},"button.expand":{message:`Laajenna`,description:`Painikkeen ohjeteksti, jota käytetään avamaan ohjeiden syöttökentän koko näytön muokkaustila.`},"button.alert":{message:`Varoitus`,description:`Painikkeen teksti, jota käytetään varoituksen antamiseen`},"button.info":{message:`Tietoa`,description:`Painikkeen teksti, jota käytetään tiedon näyttämiseen`},"button.publish":{message:`Julkaise`,description:`Painikkeen teksti, jota käytetään sisällön julkaisemiseen`},"button.watch":{message:`Katso`,description:`Painikkeen teksti, jota käytetään sisällön katsomiseen`},"button.verify":{message:`Vahvista henkilöllisyys`,description:`Painikkeen teksti, joka mahdollistaa käyttäjän henkilöllisyyden vahvistamisen`},"button.profile":{message:`Profiili`,description:`Painikkeen teksti, jota käytetään käyttäjäprofiilin näyttämiseen`},"button.console":{message:`Konsoli`,description:`Painikkeen teksti, jota käytetään konsolisivun näyttämiseen, jotta voidaan hallita verkkosivun sisältöä`},"button.learn":{message:`Opi`,description:`Painikkeen teksti, jota käytetään käyttäjän opettamiseen`},"button.buy":{message:`Osta`,description:`Painikkeen teksti, jota käytetään käyttäjän ostamiseen`},"button.try":{message:`Kokeile`,description:`Painikkeen teksti, jota käytetään käyttäjän kokeiluun`},"button.startForFree":{message:`Aloita ilmaiseksi`,description:`Painikkeen teksti, jota käytetään käyttäjän ilmaiseksi aloittamiseen`},"button.download":{message:`Lataa`,description:`Painikkeen teksti, jota käytetään tiedostojen lataamiseen (esim. ääni, video, kuva)`},"button.downloadAndroid":{message:`Lataa Android`,description:`Painikkeen teksti, jota käytetään Android-asennustiedoston lataamiseen`},"button.downloadIos":{message:`Lataa iOS-asennustiedosto`,description:`Painikkeen teksti, jota käytetään iOS-asennustiedoston lataamiseen`},"button.downloadWindows":{message:`Lataa Windowsille`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Lataa macOS:lle`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Asenna iOS`,description:`Painikkeen teksti, jota käytetään iOS-sovelluksen asentamiseen`},"button.apply":{message:`Hae`,description:`Painikkeen teksti, jota käytetään käyttäjän API-palvelun hakemiseen`},"button.refresh":{message:`Päivitä`,description:`Painikkeen teksti, jota käytetään sivun päivittämiseen`},"button.pay":{message:`Maksa`,description:`Painikkeen teksti, jota käytetään käyttäjän maksamiseen palvelumaksuista`},"button.repay":{message:`Jatka maksamista`,description:`Painikkeen teksti, jota käytetään käyttäjän maksamisen jatkamiseen`},"button.applied":{message:`Hakemus lähetetty`,description:`Painikkeen teksti, jota käytetään näyttämään, että käyttäjä on hakenut palvelua`},"button.acquire":{message:`Hanki`,description:`Painikkeen teksti, jota käytetään käyttäjän API-palvelun tokenin tai avaimen hankkimiseen`},"button.fillExample":{message:`Täytä esimerkki`,description:`Painikkeen teksti, jota käytetään käyttäjän esimerkkidatan täyttämiseen`},"button.buyMore":{message:`Lataa lisää`,description:`Painikkeen teksti, jota käytetään käyttäjän lataamiseen. Englanniksi on käännettävä 'Top Up', suomeksi 'Lataa lisää'.`},"button.update":{message:`Päivitä`,description:`Painikkeen teksti, jota käytetään sisällön päivittämiseen`},"button.view":{message:`Näytä`,description:`Painikkeen teksti, jota käytetään sisällön näyttämiseen`},"button.create":{message:`Luo`,description:`Painikkeen teksti, jota käytetään sisällön luomiseen`},"button.referralEarnings":{message:`Suositustulot`,description:`Painikkeen teksti, joka näyttää suositustulot, tarkoittaa, että käyttäjä voi ansaita kutsumalla muita käyttämään palvelua`},"button.finish":{message:`Valmis`,description:`Painikkeen teksti, joka käytetään toiminnon loppuunsaattamiseen`},"entity.id":{message:`ID`,description:`Näyttää entiteetin ainutlaatuisen tunnisteen`},"entity.type":{message:`Tyyppi`,description:`Näyttää entiteetin tyypin`},"entity.website":{message:`Ace Data Cloud`,description:`Verkkosivuston nimi, ei tarvitse kääntää, pidä 'Ace Data Cloud'`},"entity.copyright":{message:`Tekijänoikeus`,description:`Näyttää tekijänoikeustekstin`},"entity.platform":{message:`Alusta`,description:`Teksti, joka osoittaa, että tämä on API-palvelualusta`},"entity.title":{message:`Otsikko`,description:`Entiteetin otsikko`},"entity.icon":{message:`Ikoni`,description:`Entiteetin ikoni`},"entity.status":{message:`Tila`,description:`Entiteetin tila`},"status.loading":{message:`Ladataan...`,description:`Sisällön lataamisen aikana näytettävä tilateksti`},"error.appleSignInFailed":{message:`Apple-kirjautuminen epäonnistui. Yritä uudelleen tai käytä toista kirjautumistapaa.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Toiminto`,description:`Entiteetin toiminto`},"entity.description":{message:`Kuvaus`,description:`Entiteetin kuvaus`},"entity.createdAt":{message:`Luotu`,description:`Entiteetin luomisaika`},"entity.updatedAt":{message:`Päivitetty`,description:`Entiteetin päivitysaika`},"entity.order":{message:`Tilaus`,description:`Entiteetin tilaus, joka sisältää rahaa ja palvelutietoja, joista käyttäjän on maksettava`},"message.noTasks":{message:`Ei historiallisia tehtäviä, aloita uusi tehtävä~`,description:`Viesti, kun tehtäviä ei ole`},"message.guestTasks":{message:`Kirjaudu sisään aloittaaksesi tehtävän ja nähdäksesi luomuksesi täällä.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Käytetty määrä`,description:`Näyttää käytetyn palvelumäärän`},"message.mobileAppDescription":{message:`Käytä AceData suoraan puhelimella, tällä hetkellä saatavilla Android APK:n lataaminen, iOS-asennuspaketti avataan latausta varten, kun se on allekirjoitettu.`,description:`Mobiilisovelluksen lataussivun selitys`},"message.mobileAndroidHint":{message:`Sopii Android-puhelimille ja -tableteille, skannaa koodi ja asenna uusin APK.`,description:`Android-latauskortin selitys`},"message.mobileAndroidPending":{message:`Android-asennuspaketti ei ole vielä valmis, yritä myöhemmin uudelleen.`,description:`Vihje, kun Android-asennuspaketti ei ole saatavilla`},"message.mobileAvailableNow":{message:`Android on nyt ladattavissa`,description:`Näyttää, että Android on ladattavissa`},"message.mobileSecureDelivery":{message:`Turvallinen CDN-jakelu`,description:`Korostaa, että latauslinkki toimitetaan CDN:n kautta`},"message.mobileDirectInstall":{message:`Suora APK-asennus`,description:`Kuvaa, että Android-puolella on suora APK-asennustapa`},"message.mobileLatestRelease":{message:`Nykyinen julkinen versio`,description:`Selittää, että näytettävä on uusin julkinen versio`},"message.mobileSharedAccount":{message:`Jaettu tili ja käyttöoikeus verkkosivuston kanssa`,description:`Selittää, että mobiiliversio jakaa tilin verkkosivuston kanssa`},"message.mobileIosHint":{message:`Sopii iPhoneen ja iPadiin, voidaan asentaa suoraan verkosta; jos järjestelmä estää, voit myös ladata IPA:n ja jakaa sen.`,description:`iOS-latauskortin selitys`},"message.mobileIosPending":{message:`iOS-asennuspaketti ei ole vielä ladattavissa, Apple-sertifikaatti ja -profiili ovat työn alla.`,description:`Vihje, kun iOS-asennuspaketti ei ole saatavilla`},"message.mobileComingSoon":{message:`Tulossa pian`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`Windows 10:lle ja uudemmille (64-bittinen). Lataa asennusohjelma ja asenna kaksoisnapsauttamalla.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`macOS 11:lle ja uudemmille. Valitse Maciisi sopiva versio — Apple Silicon (M-sarja) tai Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Työpöytäsovellukset ovat allekirjoittamattomia beta-versioita. Valitse Windowsissa SmartScreen-ilmoituksessa »Lisätietoja → Suorita silti«; valitse macOS:ssä sovellusta hiiren oikealla painikkeella »Avaa« ohittaaksesi Gatekeeperin.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Lataa Google Playsta`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`Eikö Google Play ole käytettävissä? Lataa APK suoraan.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Skannaa avataksesi Google Playn`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Kun asennat iOS:lle ensimmäistä kertaa yritys- tai Ad Hoc-pakettia, järjestelmä saattaa vaatia ensin luottamusta sertifikaattiin 'Asetukset > Yleiset > VPN ja laitehallinta' -valikossa.`,description:`Mobiilisovelluksen asennusvinkki`},"title.mobileApp":{message:`Mobiililataus`,description:`Mobiilisovelluksen lataussivun otsikko`},"title.mobileFastAccess":{message:`Nopeampi pääsy, ei sovelluskauppaa`,description:`Lataussivun etuuskortin otsikko, korostaa nopeaa asennusta`},"title.mobileTrustedRelease":{message:`Versioiden keskitetty hallinta, vakaampi jakelu`,description:`Lataussivun etuuskortin otsikko, korostaa versiota ja jakelun vakautta`},"title.mobileUnifiedExperience":{message:`Mobiiliversion ja verkkosivuston kokemus on yhtenäinen`,description:`Lataussivun etuuskortin otsikko, korostaa yhtenäistä kokemusta`},"nav.mobileApp":{message:`Mobiiliversio`,description:`Navigoinnin mobiilisovelluksen latauslinkki`},"message.mobileFastAccess":{message:`Käyttäjät voivat skannata koodin puhelimella ja asentaa suoraan, tai he voivat ladata APK:n työpöydältä ja jakaa sen tiimin jäsenille, sopii nopeaa kokeilua ja sisäistä testausta varten.`,description:`Lataussivun etuusselitys, korostaa nopeaa pääsyä`},"message.mobileTrustedRelease":{message:`Latauslinkit on keskitetty yhdelle sivulle, versiotiedot, alustan tila ja asennustapa ovat heti nähtävissä, mikä vähentää viestintäkustannuksia, jotka johtuvat linkkien hajautumisesta.`,description:`Lataussivun etuusselitys, korostaa yhtenäistä jakelua`},"message.mobileUnifiedExperience":{message:`Kirjautumisen jälkeen tilijärjestelmä, käyttöoikeudet ja palvelulinkit ovat yhtenäisiä verkkosivuston kanssa, mikä helpottaa käyttäjien saumattomaa siirtymistä työpöydän ja mobiilin välillä.`,description:`Lataussivun etuusselitys, korostaa yhtenäistä tilikokemusta`},"message.remainingAmount":{message:`Jäljellä oleva määrä`,description:`Näyttää jäljellä olevan palvelumäärän`},"message.copied":{message:`Kopioitu`,description:`Näyttää viestin, että sisältö on onnistuneesti kopioitu`},"message.restart":{message:`Uudelleenluo`,description:`Viesti, joka ilmoittaa, että sisältö on onnistuneesti kopioitu`},"message.confirmDelete":{message:`Haluatko varmasti poistaa tämän?`,description:`Vahvistusviesti käyttäjälle, että hän haluaa poistaa jonkin sisällön`},"message.expiredAt":{message:`Vanhentumisaika`,description:`Viesti palvelun vanhentumisajasta`},"message.alert":{message:`Varoitus`,description:`Viesti, joka varoittaa käyttäjää`},"message.deleteAccountConfirm":{message:`Tämä poistaa tilisi ja kaikki siihen liittyvät tiedot pysyvästi. Tätä toimintoa ei voi peruuttaa. Haluatko varmasti jatkaa?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Tilisi on poistettu.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Tilisi poistaminen epäonnistui. Yritä myöhemmin uudelleen.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Tätä toimintoa ei voi peruuttaa! Tilisi ja kaikki sen tiedot poistetaan pysyvästi eikä niitä voi palauttaa.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Poistetaan pysyvästi: profiili, saldo ja krediitit, sovellukset ja tilaukset, API-avaimet sekä kolmannen osapuolen kirjautumissidokset.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Kirjoita käyttäjänimesi vahvistaaksesi poiston:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Kirjoita käyttäjänimesi tähän`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Tietoa`,description:`Viesti, joka näyttää tietoa`},"message.free":{message:`Ilmainen`,description:`Viesti, joka ilmoittaa, että palvelu on ilmainen, mikä tarkoittaa, että käyttäjän ei tarvitse maksaa`},"message.startPrice":{message:`Alkaen`,description:`Viesti palvelun alimmasta hinnasta`},"message.joinDiscord":{message:`Liity Discordiin`,description:`Viesti, joka kehottaa käyttäjää liittymään Discord-kanavalle`},"message.addWeChat":{message:`Lisää WeChat`,description:`Viesti, joka kehottaa käyttäjää lisäämään WeChat-tilin`},"message.serviceTech":{message:`Tekninen tuki`,description:`Viesti teknisestä tuesta`},"message.businessCooperation":{message:`Data & Liiketoimintayhteistyö`,description:`Viesti liiketoimintayhteistyöstä`},"message.noData":{message:`Ei tietoja`,description:`Viesti, joka ilmoittaa, että taulukossa tai luettelossa ei ole tietoja`},"nav.home":{message:`Etusivu`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää etusivun`},"nav.content":{message:`Sisältö`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää sisältösivun`},"nav.category":{message:`Kategoria`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää kategoriasivun`},"nav.service":{message:`Kaikki palvelut`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää palvelusivun`},"nav.profile":{message:`Profiilini`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää profiilisivun`},"nav.products":{message:`Tuotteet`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää tuotesivun`},"nav.referral":{message:`Kumppanuusohjelma`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää suosittelusivun`},"nav.apiPlatform":{message:`API-alusta`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää API-alustasivun`},"nav.document":{message:`Kehittäjädokumentaatio`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää dokumentaatiosivun`},"nav.console":{message:`Konsoli`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää konsolisivun`},"nav.chatgpt":{message:`ChatGPT`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää ChatGPT-sivun, älä käännä tätä kenttää, se on säilytettävä 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää DeepSeek-sivun, älä käännä tätä kenttää, se on säilytettävä 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Grok-sivun, älä käännä tätä kenttää, se on säilytettävä 'Grok'`},"nav.chat":{message:`Chat`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Chat'`},"nav.veo":{message:`Veo`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Veo'`},"nav.sora":{message:`Sora`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Midjourney-sivun, älä käännä tätä kenttää, se on säilytettävä 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää QRArt-sivun, älä käännä tätä kenttää, se on säilytettävä 'QRArt'`},"nav.suno":{message:`Suno`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Suno-sivun, älä käännä tätä kenttää, se on säilytettävä 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Pixverse-sivun, älä käännä tätä kenttää, se on säilytettävä 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Flux-sivun, älä käännä tätä kenttää, se on säilytettävä 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Nano Banana -sivun, älä käännä tätä kenttää, se on säilytettävä 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää OpenAI Image -sivun, älä käännä tätä kenttää, se on säilytettävä 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Verkkosivuston navigointipalkissa oleva teksti, joka näyttää SeeDream-sivun, älä käännä tätä kenttää, se on säilytettävä 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Sivuston navigointipalkissa oleva teksti, joka näyttää Fish Audio -sivun, älä käännä tätä kenttää, sen on oltava 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Kuva`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`Musiikki`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`Video`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`Suositustulot`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`Yhteydet`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`Kirjaudu ulos`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`Poista tili`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Sivuston asetukset`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`Oma alisivusto`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`Asetukset`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`AI-profiilikuva`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`Lisää`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`Kieliasetukset`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`Asiakastuki`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`Tumma tila`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`Varoitus`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`Valitse`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`Täytä`,description:`输入的占位符`},"title.allApplications":{message:`Kaikki hakemukset`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`Kaikki tilaukset`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`Tilaustiedot`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`Lataus`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`Suositustulot`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`Sivuston asetukset`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`Suositushistoria`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`Kutsuja`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`Käyttöhistoria`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`Avaimet`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`Ota yhteyttä`,description:`Näyttää yhteystiedot -osion pääotsikon`},"about.title2":{message:`Resurssit`,description:`Näyttää linkkien osan otsikon`},"about.title3":{message:`Linkit`,description:`Näyttää tukitietojen osan otsikon`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, Delaware 19713, USA`,description:`Yrityksen osoite`},"about.email":{message:`office@acedata.cloud`,description:`Yrityksen sähköposti`},"about.link1":{message:`Palvelut`,description:`Linkki asiakirjasivulle`},"about.link2":{message:`Kehittäjädokumentaatio`,description:`Linkki palvelusivulle`},"about.link3":{message:`Konsoli`,description:`Linkki konsolisivulle`},"about.link4":{message:`Profiili`,description:`Linkki profiilisivulle`},"about.link5":{message:`UI-alusta`,description:`Linkki keskussivulle`},"about.link6":{message:`Suositustulot`,description:`Linkki suositustulojen sivulle`},"about.link7":{message:`Tuki`,description:`Linkki tukisivulle`},"about.link8":{message:`Käyttöehdot`,description:`Linkki käyttöehtosivulle`},"about.link9":{message:`Tietosuojakäytäntö`,description:`Linkki tietosuojakäytännön sivulle`},"theme.light":{message:`Vaalea`,description:`Vaalean teeman nimi`},"theme.dark":{message:`Tumma`,description:`Tumman teeman nimi`},"theme.system":{message:`Järjestelmä`,description:`Järjestelmäteeman nimi, joka tarkoittaa automaattista teeman vaihtamista järjestelmäasetusten mukaan`},"settings.general":{message:`Yleiset asetukset`,description:`Asetussivun yleisten asetusten osan otsikko`},"settings.language":{message:`Kieli`,description:`Asetussivun kieliasetusten osan otsikko`},"settings.theme":{message:`Teema`,description:`Asetussivun teemavalintojen osan otsikko`},"settings.seo":{message:`SEO-asetukset`,description:`Asetussivun SEO-asetusten osan otsikko`},"settings.site":{message:`Sivuston asetukset`,description:`Asetussivun sivuston asetusten osan otsikko`},"settings.distribution":{message:`Jakeluasetukset`,description:`Asetussivun jakeluasetusten osan otsikko`},"settings.function":{message:`Toiminta-asetukset`,description:`Asetussivun toiminta-asetusten osan otsikko`},"settings.auth":{message:`Kirjautumistapa`,description:`Asetussivun sivupalkin 'Kirjautumistapa' välilehden otsikko - määritä, mitä kirjautumistapoja sivustolla sallitaan ja mikä on oletuskirjautumistapa, näkyy vain sivuston ylläpitäjille.`},"settings.apiKey":{message:`API-avain`,description:`Asetussivun sivupalkin API-avain -käytön hallinta`},"field.operations":{message:`Toiminnot`,description:`Yleinen sarakeotsikko: taulukon rivien toimintopainikkeet (muokkaa, poista jne.)`},"nav.gemini":{message:`Gemini`,description:`Teksti verkkosivuston navigointipalkissa, joka näyttää Gemini-sivun, on säilytettävä 'Gemini'`},"nav.claude":{message:`Claude`,description:`Teksti verkkosivuston navigointipalkissa, joka näyttää Claude-sivun, on säilytettävä 'Claude'`},"button.detail":{message:`Näytä tiedot`,description:``},"button.testEnv":{message:`Testiympäristö`,description:`Painikkeen teksti, joka vaihtaa testiympäristöön`},"button.upload":{message:`Lataa`,description:`Painikkeen teksti, joka lataa tiedostoja tai sisältöä`},"message.cnbeian":{message:`Kiinan alueen rekisteröinti`,description:`Kiinan alueen rekisteröinnin selitys`},"message.copyFailed":{message:`Kopiointi epäonnistui`,description:`Näyttää viestin, että sisällön kopiointi epäonnistui`},"nav.tryNow":{message:`Kokeile nyt`,description:`Verkkosivuston navigointipalkissa oleva teksti, joka kannustaa käyttäjää kokeilemaan palvelua`},"title.coin":{message:`Kryptovaluutta`,description:`Näyttää kryptovaluuttojen sivun otsikon`},"title.distributionRank":{message:`Suositusranking`,description:`Näyttää suositusranking-sivun otsikon`},"title.distributionPlatformRank":{message:`Alustaranking`,description:`Näyttää alustaranking-sivun otsikon`},"customers.name1":{message:`Mark Du`,description:`Asiakkaan nimi`},"customers.job1":{message:`Ohjelmistosuunnittelija`,description:`Asiakkaan ammatti`},"customers.comment1":{message:`Ace Data Cloud on tarjonnut erinomaisia palveluja tiimillemme ja auttanut meitä parantamaan tuottavuutta. Erittäin tyytyväinen!`,description:`Asiakkaan arvio`},"customers.name2":{message:`Jacob Williams`,description:`Asiakkaan nimi`},"customers.job2":{message:`Tuotepäällikkö`,description:`Asiakkaan ammatti`},"customers.comment2":{message:`Ace Data Cloud on loistava integrointialusta, palvelun laatu on erinomaista.`,description:`Asiakkaan arvio`},"customers.name3":{message:`Larry Henry`,description:`Asiakkaan nimi`},"customers.job3":{message:`Suunnittelija`,description:`Asiakkaan ammatti`},"customers.comment3":{message:`Pidän Ace Data Cloudin palveluista, ne ovat helppokäyttöisiä ja kohtuuhintaisia, toivon niiden paranevan entisestään!`,description:`Asiakkaan arvio`},"nav.github":{message:`GitHub`,description:`GitHub-repositorion linkki`},"settings.github":{message:`Lähdekoodi`,description:`Linkki lähdekoodin tarkasteluun GitHubissa`},"settings.about":{message:`Tietoja`,description:`Asetussivun tietoja-osan otsikko`},"settings.localTools":{message:`Paikalliset työkalut`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Käytettävissä vain työpöytäsovelluksessa.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Valtuutetut kansiot`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Kansiot, joita tekoäly saa lukea ja kirjoittaa tällä laitteella. Työkalut suoritetaan paikallisesti; mikään ei poistu laitteeltasi ilman suostumustasi.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Esihyväksy kaikki tietokoneen toiminnot`,"settings.localToolsPreauthorizeHint":`Salli kerralla kuvakaappaus, napsautus, kirjoitus, näppäimet ja kaikki toiminnot ja pyydä tarvittavat järjestelmäoikeudet.`,"settings.localToolsCuActionsTitle":`Salli toiminnot erikseen`,"settings.localToolsCuActionsHint":`Ota käyttöön vain ne toiminnot, jotka sallit tekoälyn suorittaa kysymättä joka kerta. Kunkin voi peruuttaa täältä.`,"settings.localToolsCuScreenshot":`Kuvakaappaus`,"settings.localToolsCuClick":`Napsautus`,"settings.localToolsCuMove":`Siirrä osoitinta`,"settings.localToolsCuType":`Kirjoita tekstiä`,"settings.localToolsCuKey":`Näppäinpainallus`,"settings.localToolsCuScroll":`Vieritys`,"settings.localToolsAddFolder":{message:`Lisää kansio`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Poista`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Ei vielä valtuutettuja kansioita.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Tallenna`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Tallennettu`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Aktiiviset työkalut`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Aina sallitut toiminnot`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Työkalukutsut, jotka valitsit sallittavaksi aina. Ne suoritetaan kysymättä uudelleen. Peru mikä tahansa ottaaksesi vahvistuksen taas käyttöön.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Peru`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Peru kaikki`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`Ei aina sallittuja toimintoja. Sinulta kysytään ennen jokaista paikallista työkalua.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Järjestelmän käyttöoikeudet`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Valinnainen. Yllä oleva kansiokäyttö ei tarvitse näitä – myönnä vain se, mitä tietty tehtävä vaatii.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Täysi levyn käyttöoikeus`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Näytön tallennus`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Käyttöapu`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Myönnetty`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`Ei myönnetty`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Avaa…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Omat alisivustot`,description:`Asetusikkunassa alisivustojen hallinta-välilehden otsikko. Näkyy vain virallisella pääsivustolla, alisivustot eivät näy.`},"settings.adminOnlyHint":{message:`Tämä osio on vain sivuston ylläpitäjille, tavalliset käyttäjät eivät pääse siihen käsiksi.`,description:`Vihje, joka näytetään ylläpitäjille näkyvissä olevien asetusten välilehden yläosassa, kuten sivuston asetukset / SEO-asetukset / jakeluasetukset / toiminta-asetukset.`},"settings.officialOnlyHint":{message:`Tämä osio on vain pääsivustolla näkyvissä, alisivustot eivät näytä sitä.`,description:`Vihje, joka näytetään 'Omat alisivustot' -välilehden yläosassa, ilmoittaen, että tämä pääsy on vain virallisella pääsivustolla.`},"settings.customDomain":{message:`Mukautettu verkkotunnus`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Yksi napsautus rakentamiseen`,description:`Tietoja-sivun 'Yksi napsautus alisivuston rakentamiseen' -painikkeen teksti, näkyy vain virallisella pääsivustolla`},"settings.poweredBy":{message:`Avoimen lähdekoodin projekti`,description:`Tietoja-sivulla esitettävä otsikko, joka kertoo, mihin avoimen lähdekoodin projektiin tämä sivusto perustuu`},"settings.poweredByTip":{message:`Tämä sivusto perustuu Nexior-avoimen lähdekoodin projektiin, koodi on täysin avointa.`,description:`Tietoja-sivulla esitettävä selitys, joka kertoo, mihin avoimen lähdekoodin projektiin tämä sivusto perustuu`},"settings.apiService":{message:`API-palvelu`,description:`Tietoja-sivulla esitettävä otsikko, joka kertoo API-palvelun tarjoajasta`},"settings.apiServiceTip":{message:`Tämän sivuston API-palvelun tarjoaa Ace Data Cloud.`,description:`Tietoja-sivulla esitettävä selitys, joka kertoo API-palvelun tarjoajasta`},"settings.buildYourOwn":{message:`Rakenna oma`,description:`Tietoja-sivulla käyttäjälle, joka voi rakentaa samanlaisen sivuston, esitettävä otsikko`},"settings.buildYourOwnTip":{message:`Haluatko rakentaa samanlaisen AI-sivuston? Ota meihin yhteyttä saadaksesi käyttöönottoapua.`,description:`Tietoja-sivulla samanlaisen rakentamisen selitys`},"settings.contactUs":{message:`Ota yhteyttä asiakaspalveluun`,description:`Asiakaspalveluun ottamisen painikkeen teksti`},"message.viewOnGithub":{message:`Katso GitHubissa`,description:`Linkkiteksti projektin katsomiseen GitHubissa`},"title.notFound":{message:`Sivu on kadonnut`,description:`404-sivun otsikko`},"message.notFound":{message:`Käyttämäsi sivu ei ole olemassa, linkki on saattanut muuttua tai poistettu. Palaa etusivulle jatkaaksesi AceData AI -palveluiden tutkimista.`,description:`404-sivun alaotsikon kuvaus`},"message.notFoundEyebrow":{message:`Virhe`,description:`404-sivun yläosan pieni etiketti`},"message.notFoundPath":{message:`Pyyntöpolku`,description:`404-sivulla nykyisen pyyntöpolun esittämiseen käytettävä etiketti`},"button.backToHome":{message:`Palaa etusivulle`,description:`Painikkeen teksti, jota käytetään palaamaan etusivulle`},"button.goBack":{message:`Palaa edelliselle sivulle`,description:`Painikkeen teksti, jota käytetään palaamaan selaushistoriassa edelliselle sivulle`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Pyyntö`,description:`API-koodin dialogin välilehden etiketti pyyntökoodille (koodi, joka toistaa nykyisen tuloksen).`},"tab.apiResponse":{message:`Vastaus`,description:`API-koodin dialogin välilehden etiketti reaaliaikaiselle vastaukselle, joka palautuu Suorita-painiketta napsautettaessa.`},"button.apiRun":{message:`Suorita uudelleen`,description:`API-koodin dialogin painike, joka suorittaa pyynnön uudelleen reaaliaikaisesti API:ta käyttäen käyttäjän avainta. Tulos on jo olemassa, joten napsauttaminen suorittaa sen uudelleen, ja se on laskutettavaa.`},"button.apiRunning":{message:`Suoritetaan…`,description:`API-koodin dialogin Suorita-painikkeen etiketti, kun reaaliaikainen pyyntö on käynnissä.`},"button.apiRunConfirm":{message:`Vahvista suoritus`,description:`Vahvistuspainikkeen etiketti dialogissa, joka varoittaa, että suorittaminen kuluttaa ylimääräisiä krediittejä.`},"button.viewDocs":{message:`Näytä asiakirjat`,description:`API-koodin dialogin alatunnisteen painike, joka avaa vastaavan API-dokumentaatiosivun alustalla.`},"message.apiClickRun":{message:`Napsauta 'Suorita uudelleen' käyttääksesi API-avaintasi tämän pyynnön suorittamiseen reaaliaikaisesti.`,description:`API-koodin dialogin vastaustabin tyhjät tilat, jotka näytetään ennen kuin käyttäjä on suorittanut pyynnön.`},"message.apiRunConfirmTitle":{message:`Vahvista suoritus`,description:`Vahvistusdialogin otsikko, joka näytetään ennen pyynnön uudelleen suorittamista API-koodin dialogista.`},"message.apiRunConfirmDesc":{message:`Tämä suoritus käyttää API-avaintasi ja tekee todellisen kutsun rajapintaan, mikä kuluttaa ylimääräisiä pisteitä. Vahvistatko jatkamisen?`,description:`Vahvistusdialogin runko, joka varoittaa, että pyynnön uudelleen suorittaminen on todellinen, laskutettava API-kutsu.`},"message.apiRunConfirmSkip":{message:`Älä enää muistuta`,description:`Valintaruutu suoritusvahvistusdialogissa, joka, kun se on valittuna, estää varoituksen seuraavilla suorituksilla.`},"message.apiRunTaskCreated":{message:`Tehtävä on luotu, sulje tämä ikkuna nähdäksesi uusimmat tulokset alla.`,description:`Onnistumisbanneri, joka näytetään API-koodin dialogissa sen jälkeen, kun suoritus palauttaa tehtävän ID:n, vihjaten että uusi tehtävä näkyy jo dialogin takana olevassa luettelossa.`},"button.apiViewLatest":{message:`Sulje ja katso`,description:`Painike API-koodin dialogin onnistumisbannerissa, joka sulkee dialogin, jotta käyttäjä voi nähdä juuri luodun tehtävän alla olevassa luettelossa.`},"message.uploadInProgress":{message:`Viiteaineistojen lataus on yhä käynnissä – odota hetki.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Navigointipalkissa Maestro-artikkeleiden muuntaminen videoiksi -sivun teksti, säilytä 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|
|
1
|
+
var e={"button.setup":{message:`Aseta`,description:`Painikkeen teksti, jota käytetään asetusten tekemiseen`},"button.start":{message:`Aloita`,description:`Painikkeen teksti, jota käytetään joidenkin toimintojen aloittamiseen`},"button.copy":{message:`Kopioi`,description:`Painikkeen teksti, jota käytetään sisällön kopioimiseen`},"button.copied":{message:`Kopioitu`,description:`Painikkeen teksti, joka osoittaa, että sisältö on kopioitu`},"button.restart":{message:`Uudelleen`,description:`Painikkeen teksti, jota käytetään joidenkin sisältöjen asettamiseen`},"button.preview":{message:`Esikatselu`,description:`Painikkeen teksti, jota käytetään tiedoston esikatselun avaamiseen URL-osoitteen kautta`},"button.seeRawImage":{message:`Näytä alkuperäinen kuva`,description:`Painikkeen teksti, jota käytetään alkuperäisen kuvan katsomiseen`},"button.seeRawVideo":{message:`Näytä video`,description:`Painikkeen teksti, jota käytetään alkuperäisen videon katsomiseen`},"button.edit":{message:`Muokkaa`,description:`Painikkeen teksti, jota käytetään sisällön muokkaamiseen`},"button.login":{message:`Kirjaudu sisään`,description:`Painikkeen teksti, jota käytetään kirjautumiseen`},"button.logout":{message:`Kirjaudu ulos`,description:`Painikkeen teksti, jota käytetään uloskirjautumiseen`},"button.new":{message:`Uusi`,description:`Painikkeen teksti, jota käytetään uuden kohteen luomiseen`},"button.delete":{message:`Poista`,description:`Painikkeen teksti, jota käytetään sisällön poistamiseen`},"button.deletePermanently":{message:`Poista tili pysyvästi`,description:`Final red delete button at the bottom of the delete confirmation dialog`},"button.confirm":{message:`Vahvista`,description:`Painikkeen teksti, jota käytetään toiminnan vahvistamiseen`},"button.cancel":{message:`Peruuta`,description:`Painikkeen teksti, jota käytetään toiminnan peruuttamiseen`},"button.close":{message:`Sulje`,description:`Painikkeen teksti, jota käytetään dialogin tai paneelin sulkemiseen`},"button.expand":{message:`Laajenna`,description:`Painikkeen ohjeteksti, jota käytetään avamaan ohjeiden syöttökentän koko näytön muokkaustila.`},"button.alert":{message:`Varoitus`,description:`Painikkeen teksti, jota käytetään varoituksen antamiseen`},"button.info":{message:`Tietoa`,description:`Painikkeen teksti, jota käytetään tiedon näyttämiseen`},"button.publish":{message:`Julkaise`,description:`Painikkeen teksti, jota käytetään sisällön julkaisemiseen`},"button.watch":{message:`Katso`,description:`Painikkeen teksti, jota käytetään sisällön katsomiseen`},"button.verify":{message:`Vahvista henkilöllisyys`,description:`Painikkeen teksti, joka mahdollistaa käyttäjän henkilöllisyyden vahvistamisen`},"button.profile":{message:`Profiili`,description:`Painikkeen teksti, jota käytetään käyttäjäprofiilin näyttämiseen`},"button.console":{message:`Konsoli`,description:`Painikkeen teksti, jota käytetään konsolisivun näyttämiseen, jotta voidaan hallita verkkosivun sisältöä`},"button.learn":{message:`Opi`,description:`Painikkeen teksti, jota käytetään käyttäjän opettamiseen`},"button.buy":{message:`Osta`,description:`Painikkeen teksti, jota käytetään käyttäjän ostamiseen`},"button.try":{message:`Kokeile`,description:`Painikkeen teksti, jota käytetään käyttäjän kokeiluun`},"button.startForFree":{message:`Aloita ilmaiseksi`,description:`Painikkeen teksti, jota käytetään käyttäjän ilmaiseksi aloittamiseen`},"button.download":{message:`Lataa`,description:`Painikkeen teksti, jota käytetään tiedostojen lataamiseen (esim. ääni, video, kuva)`},"button.downloadAndroid":{message:`Lataa Android`,description:`Painikkeen teksti, jota käytetään Android-asennustiedoston lataamiseen`},"button.downloadIos":{message:`Lataa iOS-asennustiedosto`,description:`Painikkeen teksti, jota käytetään iOS-asennustiedoston lataamiseen`},"button.downloadWindows":{message:`Lataa Windowsille`,description:`Text in button for downloading the Windows desktop installer`},"button.downloadMac":{message:`Lataa macOS:lle`,description:`Text in button for downloading the macOS desktop installer`},"button.installIos":{message:`Asenna iOS`,description:`Painikkeen teksti, jota käytetään iOS-sovelluksen asentamiseen`},"button.apply":{message:`Hae`,description:`Painikkeen teksti, jota käytetään käyttäjän API-palvelun hakemiseen`},"button.refresh":{message:`Päivitä`,description:`Painikkeen teksti, jota käytetään sivun päivittämiseen`},"button.pay":{message:`Maksa`,description:`Painikkeen teksti, jota käytetään käyttäjän maksamiseen palvelumaksuista`},"button.repay":{message:`Jatka maksamista`,description:`Painikkeen teksti, jota käytetään käyttäjän maksamisen jatkamiseen`},"button.applied":{message:`Hakemus lähetetty`,description:`Painikkeen teksti, jota käytetään näyttämään, että käyttäjä on hakenut palvelua`},"button.acquire":{message:`Hanki`,description:`Painikkeen teksti, jota käytetään käyttäjän API-palvelun tokenin tai avaimen hankkimiseen`},"button.fillExample":{message:`Täytä esimerkki`,description:`Painikkeen teksti, jota käytetään käyttäjän esimerkkidatan täyttämiseen`},"button.buyMore":{message:`Lataa lisää`,description:`Painikkeen teksti, jota käytetään käyttäjän lataamiseen. Englanniksi on käännettävä 'Top Up', suomeksi 'Lataa lisää'.`},"button.update":{message:`Päivitä`,description:`Painikkeen teksti, jota käytetään sisällön päivittämiseen`},"button.view":{message:`Näytä`,description:`Painikkeen teksti, jota käytetään sisällön näyttämiseen`},"button.create":{message:`Luo`,description:`Painikkeen teksti, jota käytetään sisällön luomiseen`},"button.referralEarnings":{message:`Suositustulot`,description:`Painikkeen teksti, joka näyttää suositustulot, tarkoittaa, että käyttäjä voi ansaita kutsumalla muita käyttämään palvelua`},"button.finish":{message:`Valmis`,description:`Painikkeen teksti, joka käytetään toiminnon loppuunsaattamiseen`},"entity.id":{message:`ID`,description:`Näyttää entiteetin ainutlaatuisen tunnisteen`},"entity.type":{message:`Tyyppi`,description:`Näyttää entiteetin tyypin`},"entity.website":{message:`Ace Data Cloud`,description:`Verkkosivuston nimi, ei tarvitse kääntää, pidä 'Ace Data Cloud'`},"entity.copyright":{message:`Tekijänoikeus`,description:`Näyttää tekijänoikeustekstin`},"entity.platform":{message:`Alusta`,description:`Teksti, joka osoittaa, että tämä on API-palvelualusta`},"entity.title":{message:`Otsikko`,description:`Entiteetin otsikko`},"entity.icon":{message:`Ikoni`,description:`Entiteetin ikoni`},"entity.status":{message:`Tila`,description:`Entiteetin tila`},"status.loading":{message:`Ladataan...`,description:`Sisällön lataamisen aikana näytettävä tilateksti`},"error.appleSignInFailed":{message:`Apple-kirjautuminen epäonnistui. Yritä uudelleen tai käytä toista kirjautumistapaa.`,description:`Error toast shown when native Apple sign-in fails for a reason other than user cancellation`},"error.loginLinkExpired":{message:`Login link expired. Please sign in again.`,description:`Shown on the desktop client when an OAuth callback is dropped (state mismatch or expired).`},"entity.operation":{message:`Toiminto`,description:`Entiteetin toiminto`},"entity.description":{message:`Kuvaus`,description:`Entiteetin kuvaus`},"entity.createdAt":{message:`Luotu`,description:`Entiteetin luomisaika`},"entity.updatedAt":{message:`Päivitetty`,description:`Entiteetin päivitysaika`},"entity.order":{message:`Tilaus`,description:`Entiteetin tilaus, joka sisältää rahaa ja palvelutietoja, joista käyttäjän on maksettava`},"message.noTasks":{message:`Ei historiallisia tehtäviä, aloita uusi tehtävä~`,description:`Viesti, kun tehtäviä ei ole`},"message.guestTasks":{message:`Kirjaudu sisään aloittaaksesi tehtävän ja nähdäksesi luomuksesi täällä.`,description:`Prompt shown in the task list area for not-logged-in guests`},"message.usedAmount":{message:`Käytetty määrä`,description:`Näyttää käytetyn palvelumäärän`},"message.mobileAppDescription":{message:`Käytä AceData suoraan puhelimella, tällä hetkellä saatavilla Android APK:n lataaminen, iOS-asennuspaketti avataan latausta varten, kun se on allekirjoitettu.`,description:`Mobiilisovelluksen lataussivun selitys`},"message.mobileAndroidHint":{message:`Sopii Android-puhelimille ja -tableteille, skannaa koodi ja asenna uusin APK.`,description:`Android-latauskortin selitys`},"message.mobileAndroidPending":{message:`Android-asennuspaketti ei ole vielä valmis, yritä myöhemmin uudelleen.`,description:`Vihje, kun Android-asennuspaketti ei ole saatavilla`},"message.mobileAvailableNow":{message:`Android on nyt ladattavissa`,description:`Näyttää, että Android on ladattavissa`},"message.mobileSecureDelivery":{message:`Turvallinen CDN-jakelu`,description:`Korostaa, että latauslinkki toimitetaan CDN:n kautta`},"message.mobileDirectInstall":{message:`Suora APK-asennus`,description:`Kuvaa, että Android-puolella on suora APK-asennustapa`},"message.mobileLatestRelease":{message:`Nykyinen julkinen versio`,description:`Selittää, että näytettävä on uusin julkinen versio`},"message.mobileSharedAccount":{message:`Jaettu tili ja käyttöoikeus verkkosivuston kanssa`,description:`Selittää, että mobiiliversio jakaa tilin verkkosivuston kanssa`},"message.mobileIosHint":{message:`Sopii iPhoneen ja iPadiin, voidaan asentaa suoraan verkosta; jos järjestelmä estää, voit myös ladata IPA:n ja jakaa sen.`,description:`iOS-latauskortin selitys`},"message.mobileIosPending":{message:`iOS-asennuspaketti ei ole vielä ladattavissa, Apple-sertifikaatti ja -profiili ovat työn alla.`,description:`Vihje, kun iOS-asennuspaketti ei ole saatavilla`},"message.mobileComingSoon":{message:`Tulossa pian`,description:`Short status label shown on a platform card (e.g. iOS) while its build is being prepared`},"message.mobileNowOnAppStore":{message:`Now on the App Store`,description:`Status label shown on the iOS card when the app is live on the App Store`},"message.desktopWindowsHint":{message:`Windows 10:lle ja uudemmille (64-bittinen). Lataa asennusohjelma ja asenna kaksoisnapsauttamalla.`,description:`Windows desktop download card description`},"message.desktopMacHint":{message:`macOS 11:lle ja uudemmille. Valitse Maciisi sopiva versio — Apple Silicon (M-sarja) tai Intel.`,description:`macOS desktop download card description`},"message.desktopUnsignedNote":{message:`Työpöytäsovellukset ovat allekirjoittamattomia beta-versioita. Valitse Windowsissa SmartScreen-ilmoituksessa »Lisätietoja → Suorita silti«; valitse macOS:ssä sovellusta hiiren oikealla painikkeella »Avaa« ohittaaksesi Gatekeeperin.`,description:`Note explaining the desktop builds are unsigned betas and how to open them`},"button.getOnGooglePlay":{message:`Lataa Google Playsta`,description:`Button label that opens the app's Google Play Store listing`},"button.getOnAppStore":{message:`Get it on the App Store`,description:`Button label that opens the app's Apple App Store listing`},"message.mobileApkFallback":{message:`Eikö Google Play ole käytettävissä? Lataa APK suoraan.`,description:`Shown next to a secondary button offering a direct APK download for users who cannot access Google Play`},"message.mobilePlayStoreHint":{message:`Skannaa avataksesi Google Playn`,description:`Hint under the QR code explaining that scanning it opens the Google Play listing`},"message.mobileAppStoreHint":{message:`Scan to open the App Store`,description:`Hint under the QR code explaining that scanning it opens the App Store listing`},"message.mobileInstallNote":{message:`Kun asennat iOS:lle ensimmäistä kertaa yritys- tai Ad Hoc-pakettia, järjestelmä saattaa vaatia ensin luottamusta sertifikaattiin 'Asetukset > Yleiset > VPN ja laitehallinta' -valikossa.`,description:`Mobiilisovelluksen asennusvinkki`},"title.mobileApp":{message:`Mobiililataus`,description:`Mobiilisovelluksen lataussivun otsikko`},"title.mobileFastAccess":{message:`Nopeampi pääsy, ei sovelluskauppaa`,description:`Lataussivun etuuskortin otsikko, korostaa nopeaa asennusta`},"title.mobileTrustedRelease":{message:`Versioiden keskitetty hallinta, vakaampi jakelu`,description:`Lataussivun etuuskortin otsikko, korostaa versiota ja jakelun vakautta`},"title.mobileUnifiedExperience":{message:`Mobiiliversion ja verkkosivuston kokemus on yhtenäinen`,description:`Lataussivun etuuskortin otsikko, korostaa yhtenäistä kokemusta`},"nav.mobileApp":{message:`Mobiiliversio`,description:`Navigoinnin mobiilisovelluksen latauslinkki`},"message.mobileFastAccess":{message:`Käyttäjät voivat skannata koodin puhelimella ja asentaa suoraan, tai he voivat ladata APK:n työpöydältä ja jakaa sen tiimin jäsenille, sopii nopeaa kokeilua ja sisäistä testausta varten.`,description:`Lataussivun etuusselitys, korostaa nopeaa pääsyä`},"message.mobileTrustedRelease":{message:`Latauslinkit on keskitetty yhdelle sivulle, versiotiedot, alustan tila ja asennustapa ovat heti nähtävissä, mikä vähentää viestintäkustannuksia, jotka johtuvat linkkien hajautumisesta.`,description:`Lataussivun etuusselitys, korostaa yhtenäistä jakelua`},"message.mobileUnifiedExperience":{message:`Kirjautumisen jälkeen tilijärjestelmä, käyttöoikeudet ja palvelulinkit ovat yhtenäisiä verkkosivuston kanssa, mikä helpottaa käyttäjien saumattomaa siirtymistä työpöydän ja mobiilin välillä.`,description:`Lataussivun etuusselitys, korostaa yhtenäistä tilikokemusta`},"message.remainingAmount":{message:`Jäljellä oleva määrä`,description:`Näyttää jäljellä olevan palvelumäärän`},"message.copied":{message:`Kopioitu`,description:`Näyttää viestin, että sisältö on onnistuneesti kopioitu`},"message.restart":{message:`Uudelleenluo`,description:`Viesti, joka ilmoittaa, että sisältö on onnistuneesti kopioitu`},"message.confirmDelete":{message:`Haluatko varmasti poistaa tämän?`,description:`Vahvistusviesti käyttäjälle, että hän haluaa poistaa jonkin sisällön`},"message.expiredAt":{message:`Vanhentumisaika`,description:`Viesti palvelun vanhentumisajasta`},"message.alert":{message:`Varoitus`,description:`Viesti, joka varoittaa käyttäjää`},"message.deleteAccountConfirm":{message:`Tämä poistaa tilisi ja kaikki siihen liittyvät tiedot pysyvästi. Tätä toimintoa ei voi peruuttaa. Haluatko varmasti jatkaa?`,description:`Confirmation message shown before permanently deleting the user account`},"message.deleteAccountSuccess":{message:`Tilisi on poistettu.`,description:`Message shown after the user account is successfully deleted`},"message.deleteAccountFailed":{message:`Tilisi poistaminen epäonnistui. Yritä myöhemmin uudelleen.`,description:`Message shown when account deletion fails`},"message.deleteAccountWarning":{message:`Tätä toimintoa ei voi peruuttaa! Tilisi ja kaikki sen tiedot poistetaan pysyvästi eikä niitä voi palauttaa.`,description:`Red warning banner at the top of the delete confirmation dialog`},"message.deleteAccountConsequences":{message:`Poistetaan pysyvästi: profiili, saldo ja krediitit, sovellukset ja tilaukset, API-avaimet sekä kolmannen osapuolen kirjautumissidokset.`,description:`Explains what data will be removed in the delete confirmation dialog`},"message.deleteAccountTypePrompt":{message:`Kirjoita käyttäjänimesi vahvistaaksesi poiston:`,description:`Instructs the user to type their username to confirm; the username is shown separately below`},"message.deleteAccountPlaceholder":{message:`Kirjoita käyttäjänimesi tähän`,description:`Placeholder for the username confirmation input`},"message.info":{message:`Tietoa`,description:`Viesti, joka näyttää tietoa`},"message.free":{message:`Ilmainen`,description:`Viesti, joka ilmoittaa, että palvelu on ilmainen, mikä tarkoittaa, että käyttäjän ei tarvitse maksaa`},"message.startPrice":{message:`Alkaen`,description:`Viesti palvelun alimmasta hinnasta`},"message.joinDiscord":{message:`Liity Discordiin`,description:`Viesti, joka kehottaa käyttäjää liittymään Discord-kanavalle`},"message.addWeChat":{message:`Lisää WeChat`,description:`Viesti, joka kehottaa käyttäjää lisäämään WeChat-tilin`},"message.serviceTech":{message:`Tekninen tuki`,description:`Viesti teknisestä tuesta`},"message.businessCooperation":{message:`Data & Liiketoimintayhteistyö`,description:`Viesti liiketoimintayhteistyöstä`},"message.noData":{message:`Ei tietoja`,description:`Viesti, joka ilmoittaa, että taulukossa tai luettelossa ei ole tietoja`},"nav.home":{message:`Etusivu`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää etusivun`},"nav.content":{message:`Sisältö`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää sisältösivun`},"nav.category":{message:`Kategoria`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää kategoriasivun`},"nav.service":{message:`Kaikki palvelut`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää palvelusivun`},"nav.profile":{message:`Profiilini`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää profiilisivun`},"nav.products":{message:`Tuotteet`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää tuotesivun`},"nav.referral":{message:`Kumppanuusohjelma`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää suosittelusivun`},"nav.apiPlatform":{message:`API-alusta`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää API-alustasivun`},"nav.document":{message:`Kehittäjädokumentaatio`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää dokumentaatiosivun`},"nav.console":{message:`Konsoli`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää konsolisivun`},"nav.chatgpt":{message:`ChatGPT`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää ChatGPT-sivun, älä käännä tätä kenttää, se on säilytettävä 'ChatGPT'`},"nav.deepseek":{message:`DeepSeek`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää DeepSeek-sivun, älä käännä tätä kenttää, se on säilytettävä 'DeepSeek'`},"nav.grok":{message:`Grok`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Grok-sivun, älä käännä tätä kenttää, se on säilytettävä 'Grok'`},"nav.chat":{message:`Chat`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Chat'`},"nav.veo":{message:`Veo`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Veo'`},"nav.sora":{message:`Sora`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää chattasivun, älä käännä tätä kenttää, se on säilytettävä 'Sora'`},"nav.midjourney":{message:`Midjourney`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Midjourney-sivun, älä käännä tätä kenttää, se on säilytettävä 'Midjourney'`},"nav.qrart":{message:`QRArt`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää QRArt-sivun, älä käännä tätä kenttää, se on säilytettävä 'QRArt'`},"nav.suno":{message:`Suno`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Suno-sivun, älä käännä tätä kenttää, se on säilytettävä 'Suno'`},"nav.pixverse":{message:`Pixverse`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Pixverse-sivun, älä käännä tätä kenttää, se on säilytettävä 'Pixverse'`},"nav.flux":{message:`Flux`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Flux-sivun, älä käännä tätä kenttää, se on säilytettävä 'Flux'`},"nav.nanobanana":{message:`Nano Banana`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää Nano Banana -sivun, älä käännä tätä kenttää, se on säilytettävä 'Nano Banana'`},"nav.openaiimage":{message:`OpenAI Image`,description:`Verkkosivuston navigointipalkin teksti, joka näyttää OpenAI Image -sivun, älä käännä tätä kenttää, se on säilytettävä 'OpenAI Image'`},"nav.seedream":{message:`SeeDream`,description:`Verkkosivuston navigointipalkissa oleva teksti, joka näyttää SeeDream-sivun, älä käännä tätä kenttää, se on säilytettävä 'SeeDream'`},"nav.seedance":{message:`SeeDance`,description:`网站导航栏中的文本,用于显示SeeDance页面,请不要翻译此字段,必须保持为'SeeDance'`},"nav.grokvideo":{message:`Grok Video`,description:`Text in the website navigation bar to display the Grok Imagine video page`},"nav.luma":{message:`Luma`,description:`网站导航栏中的文本,用于显示Luma页面,请不要翻译此字段,必须保持为'Luma'`},"nav.pika":{message:`Pika`,description:`网站导航栏中的文本,用于显示Pika页面,请不要翻译此字段,必须保持为'Pika'`},"nav.kling":{message:`Kling`,description:`网站导航栏中的文本,用于显示Kling页面,请不要翻译此字段,必须保持为'Kling'`},"nav.hailuo":{message:`Hailuo`,description:`网站导航栏中的文本,用于显示Hailuo页面,请不要翻译此字段,必须保持为'Hailuo'`},"nav.wan":{message:`Wan`,description:`网站导航栏中的文本,用于显示Wan页面,请不要翻译此字段,必须保持为'Wan'`},"nav.producer":{message:`Producer`,description:`网站导航栏中的文本,用于显示Producer页面,请不要翻译此字段,必须保持为'Producer'`},"nav.fish":{message:`Fish Audio`,description:`Sivuston navigointipalkissa oleva teksti, joka näyttää Fish Audio -sivun, älä käännä tätä kenttää, sen on oltava 'Fish Audio'`},"nav.kimi":{message:`Kimi`,description:`网站导航栏中的文本,用于显示Kimi页面,请不要翻译此字段,必须保持为'Kimi'`},"nav.serp":{message:`SERP`,description:`网站导航栏中的文本,用于显示SERP页面,请不要翻译此字段,必须保持为'SERP'`},"nav.codingBridge":{message:`Coding Bridge`,description:`Text in the website navigation bar to display the Coding Bridge page, must remain as 'Coding Bridge'`},"nav.webextrator":{message:`WebExtrator`,description:`Text in the website navigation bar to display the WebExtrator page, must remain as 'WebExtrator'`},"nav.image":{message:`Kuva`,description:`网站导航栏中的文本,用于显示图片页面`},"nav.music":{message:`Musiikki`,description:`网站导航栏中的文本,用于显示音乐页面`},"nav.video":{message:`Video`,description:`网站导航栏中的文本,用于显示视频页面`},"nav.distribution":{message:`Suositustulot`,description:`网站导航栏中的文本,用于显示推荐收益页面`},"nav.connections":{message:`Yhteydet`,description:`跳转到 auth.acedata.cloud 连接管理页的菜单项`},"nav.logOut":{message:`Kirjaudu ulos`,description:`网站导航栏中的文本,用于退出登录`},"nav.deleteAccount":{message:`Poista tili`,description:`Menu item to permanently delete the current user account`},"nav.site":{message:`Sivuston asetukset`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.subsite":{message:`Oma alisivusto`,description:`侧边栏“我的分站”入口,仅在站点开启 features.subsite 时显示`},"nav.setting":{message:`Asetukset`,description:`网站导航栏中的文本,用于显示设置页面`},"nav.headshots":{message:`AI-profiilikuva`,description:`网站导航栏中的文本,用于显示站点配置页面`},"nav.more":{message:`Lisää`,description:`网站导航栏中的文本,用于展开更多服务`},"nav.locale":{message:`Kieliasetukset`,description:`网站导航栏中的文本,用于更改语言`},"nav.support":{message:`Asiakastuki`,description:`网站导航栏中的文本,用于显示联系页面`},"nav.darkMode":{message:`Tumma tila`,description:`网站导航栏中的文本,用于切换到深色主题`},"title.alert":{message:`Varoitus`,description:`警告消息的标题`},"title.placeholderOfSelect":{message:`Valitse`,description:`选择输入的占位符`},"title.placeholderOfInput":{message:`Täytä`,description:`输入的占位符`},"title.allApplications":{message:`Kaikki hakemukset`,description:`显示所有申请的页面标题`},"title.allOrders":{message:`Kaikki tilaukset`,description:`显示所有订单的页面标题`},"title.orderInfo":{message:`Tilaustiedot`,description:`显示订单信息的页面标题`},"title.buyMore":{message:`Lataus`,description:`页面标题,用于充值。英文必须翻译为“Top Up”,中文为“充值”。`},"title.distribution":{message:`Suositustulot`,description:`显示推荐收入的页面标题,意味着用户可以通过邀请他人使用该服务来赚钱`},"title.site":{message:`Sivuston asetukset`,description:`显示站点配置的页面标题`},"title.distributionHistory":{message:`Suositushistoria`,description:`显示推荐历史的页面标题`},"title.invitee":{message:`Kutsuja`,description:`显示邀请人的页面标题`},"title.allUsages":{message:`Käyttöhistoria`,description:`显示API服务所有使用的页面标题`},"title.allCredentials":{message:`Avaimet`,description:`显示所有凭证的页面标题,凭证用于访问API`},"about.title1":{message:`Ota yhteyttä`,description:`Näyttää yhteystiedot -osion pääotsikon`},"about.title2":{message:`Resurssit`,description:`Näyttää linkkien osan otsikon`},"about.title3":{message:`Linkit`,description:`Näyttää tukitietojen osan otsikon`},"about.address":{message:`131 Continental Dr, Suite 305, Newark, Delaware 19713, USA`,description:`Yrityksen osoite`},"about.email":{message:`office@acedata.cloud`,description:`Yrityksen sähköposti`},"about.link1":{message:`Palvelut`,description:`Linkki asiakirjasivulle`},"about.link2":{message:`Kehittäjädokumentaatio`,description:`Linkki palvelusivulle`},"about.link3":{message:`Konsoli`,description:`Linkki konsolisivulle`},"about.link4":{message:`Profiili`,description:`Linkki profiilisivulle`},"about.link5":{message:`UI-alusta`,description:`Linkki keskussivulle`},"about.link6":{message:`Suositustulot`,description:`Linkki suositustulojen sivulle`},"about.link7":{message:`Tuki`,description:`Linkki tukisivulle`},"about.link8":{message:`Käyttöehdot`,description:`Linkki käyttöehtosivulle`},"about.link9":{message:`Tietosuojakäytäntö`,description:`Linkki tietosuojakäytännön sivulle`},"theme.light":{message:`Vaalea`,description:`Vaalean teeman nimi`},"theme.dark":{message:`Tumma`,description:`Tumman teeman nimi`},"theme.system":{message:`Järjestelmä`,description:`Järjestelmäteeman nimi, joka tarkoittaa automaattista teeman vaihtamista järjestelmäasetusten mukaan`},"settings.general":{message:`Yleiset asetukset`,description:`Asetussivun yleisten asetusten osan otsikko`},"settings.language":{message:`Kieli`,description:`Asetussivun kieliasetusten osan otsikko`},"settings.theme":{message:`Teema`,description:`Asetussivun teemavalintojen osan otsikko`},"settings.seo":{message:`SEO-asetukset`,description:`Asetussivun SEO-asetusten osan otsikko`},"settings.site":{message:`Sivuston asetukset`,description:`Asetussivun sivuston asetusten osan otsikko`},"settings.distribution":{message:`Jakeluasetukset`,description:`Asetussivun jakeluasetusten osan otsikko`},"settings.function":{message:`Toiminta-asetukset`,description:`Asetussivun toiminta-asetusten osan otsikko`},"settings.auth":{message:`Kirjautumistapa`,description:`Asetussivun sivupalkin 'Kirjautumistapa' välilehden otsikko - määritä, mitä kirjautumistapoja sivustolla sallitaan ja mikä on oletuskirjautumistapa, näkyy vain sivuston ylläpitäjille.`},"settings.apiKey":{message:`API-avain`,description:`Asetussivun sivupalkin API-avain -käytön hallinta`},"field.operations":{message:`Toiminnot`,description:`Yleinen sarakeotsikko: taulukon rivien toimintopainikkeet (muokkaa, poista jne.)`},"nav.gemini":{message:`Gemini`,description:`Teksti verkkosivuston navigointipalkissa, joka näyttää Gemini-sivun, on säilytettävä 'Gemini'`},"nav.claude":{message:`Claude`,description:`Teksti verkkosivuston navigointipalkissa, joka näyttää Claude-sivun, on säilytettävä 'Claude'`},"button.detail":{message:`Näytä tiedot`,description:``},"button.testEnv":{message:`Testiympäristö`,description:`Painikkeen teksti, joka vaihtaa testiympäristöön`},"button.upload":{message:`Lataa`,description:`Painikkeen teksti, joka lataa tiedostoja tai sisältöä`},"message.cnbeian":{message:`Kiinan alueen rekisteröinti`,description:`Kiinan alueen rekisteröinnin selitys`},"message.copyFailed":{message:`Kopiointi epäonnistui`,description:`Näyttää viestin, että sisällön kopiointi epäonnistui`},"nav.tryNow":{message:`Kokeile nyt`,description:`Verkkosivuston navigointipalkissa oleva teksti, joka kannustaa käyttäjää kokeilemaan palvelua`},"title.coin":{message:`Kryptovaluutta`,description:`Näyttää kryptovaluuttojen sivun otsikon`},"title.distributionRank":{message:`Suositusranking`,description:`Näyttää suositusranking-sivun otsikon`},"title.distributionPlatformRank":{message:`Alustaranking`,description:`Näyttää alustaranking-sivun otsikon`},"customers.name1":{message:`Mark Du`,description:`Asiakkaan nimi`},"customers.job1":{message:`Ohjelmistosuunnittelija`,description:`Asiakkaan ammatti`},"customers.comment1":{message:`Ace Data Cloud on tarjonnut erinomaisia palveluja tiimillemme ja auttanut meitä parantamaan tuottavuutta. Erittäin tyytyväinen!`,description:`Asiakkaan arvio`},"customers.name2":{message:`Jacob Williams`,description:`Asiakkaan nimi`},"customers.job2":{message:`Tuotepäällikkö`,description:`Asiakkaan ammatti`},"customers.comment2":{message:`Ace Data Cloud on loistava integrointialusta, palvelun laatu on erinomaista.`,description:`Asiakkaan arvio`},"customers.name3":{message:`Larry Henry`,description:`Asiakkaan nimi`},"customers.job3":{message:`Suunnittelija`,description:`Asiakkaan ammatti`},"customers.comment3":{message:`Pidän Ace Data Cloudin palveluista, ne ovat helppokäyttöisiä ja kohtuuhintaisia, toivon niiden paranevan entisestään!`,description:`Asiakkaan arvio`},"nav.github":{message:`GitHub`,description:`GitHub-repositorion linkki`},"settings.github":{message:`Lähdekoodi`,description:`Linkki lähdekoodin tarkasteluun GitHubissa`},"settings.about":{message:`Tietoja`,description:`Asetussivun tietoja-osan otsikko`},"settings.localTools":{message:`Paikalliset työkalut`,description:`Desktop-only settings tab for managing local tool folders, permissions and grants.`},"settings.localToolsDesktopOnly":{message:`Käytettävissä vain työpöytäsovelluksessa.`,description:`Shown when the Local Tools tab is opened on web/mobile.`},"settings.localToolsFoldersTitle":{message:`Valtuutetut kansiot`,description:`Heading for the list of folders the AI may read/write locally.`},"settings.localToolsFoldersHint":{message:`Kansiot, joita tekoäly saa lukea ja kirjoittaa tällä laitteella. Työkalut suoritetaan paikallisesti; mikään ei poistu laitteeltasi ilman suostumustasi.`,description:`Help text under the authorized-folders heading.`},"settings.localToolsComputerUseTitle":{message:`Computer Use (experimental)`,description:`Heading for the opt-in Computer Use (screen + mouse/keyboard control) toggle.`},"settings.localToolsComputerUseHint":{message:`Let the AI see your screen and control the mouse and keyboard on this computer. Off by default — turn it on only when you need it. On macOS, grant Screen Recording and Accessibility permissions below. Each action still asks for your confirmation.`,description:`Help text under the Computer Use toggle.`},"settings.localToolsPreauthorizeAll":`Esihyväksy kaikki tietokoneen toiminnot`,"settings.localToolsPreauthorizeHint":`Salli kerralla kuvakaappaus, napsautus, kirjoitus, näppäimet ja kaikki toiminnot ja pyydä tarvittavat järjestelmäoikeudet.`,"settings.localToolsCuActionsTitle":`Salli toiminnot erikseen`,"settings.localToolsCuActionsHint":`Ota käyttöön vain ne toiminnot, jotka sallit tekoälyn suorittaa kysymättä joka kerta. Kunkin voi peruuttaa täältä.`,"settings.localToolsCuScreenshot":`Kuvakaappaus`,"settings.localToolsCuClick":`Napsautus`,"settings.localToolsCuMove":`Siirrä osoitinta`,"settings.localToolsCuType":`Kirjoita tekstiä`,"settings.localToolsCuKey":`Näppäinpainallus`,"settings.localToolsCuScroll":`Vieritys`,"settings.localToolsBuiltinTitle":`Sisäänrakennetut työkalut`,"settings.localToolsBuiltinHint":`Ota työkalu käyttöön, niin tekoäly suorittaa sen kysymättä joka kerta. Shell voi suorittaa minkä tahansa komennon tällä koneella — ota käyttöön vain jos luotat. Tiedostotyökalut pysyvät sallituissa kansioissasi.`,"settings.localToolsBuiltinRisky":`Täysi käyttöoikeus`,"settings.localToolsAddFolder":{message:`Lisää kansio`,description:`Button to pick a folder to authorize.`},"settings.localToolsRemove":{message:`Poista`,description:`Button to remove an authorized folder.`},"settings.localToolsNoFolders":{message:`Ei vielä valtuutettuja kansioita.`,description:`Empty state for the authorized-folders list.`},"settings.localToolsSave":{message:`Tallenna`,description:`Save the authorized folders.`},"settings.localToolsSaved":{message:`Tallennettu`,description:`Transient confirmation after saving local-tool folders.`},"settings.localToolsActiveTools":{message:`Aktiiviset työkalut`,description:`Label before the list of currently available local tools.`},"settings.localToolsGrantsTitle":{message:`Aina sallitut toiminnot`,description:`Heading for the persistent consent grants list.`},"settings.localToolsGrantsHint":{message:`Työkalukutsut, jotka valitsit sallittavaksi aina. Ne suoritetaan kysymättä uudelleen. Peru mikä tahansa ottaaksesi vahvistuksen taas käyttöön.`,description:`Help text under the always-allowed actions heading.`},"settings.localToolsRevoke":{message:`Peru`,description:`Button to revoke a single always-allow grant.`},"settings.localToolsRevokeAll":{message:`Peru kaikki`,description:`Button to revoke every always-allow grant.`},"settings.localToolsNoGrants":{message:`Ei aina sallittuja toimintoja. Sinulta kysytään ennen jokaista paikallista työkalua.`,description:`Empty state for the always-allowed actions list.`},"settings.localToolsPermsTitle":{message:`Järjestelmän käyttöoikeudet`,description:`Heading for the macOS system-permission section.`},"settings.localToolsPermsHint":{message:`Valinnainen. Yllä oleva kansiokäyttö ei tarvitse näitä – myönnä vain se, mitä tietty tehtävä vaatii.`,description:`Help text under the system-permissions heading.`},"settings.localToolsPermFullDisk":{message:`Täysi levyn käyttöoikeus`,description:`macOS Full Disk Access permission row.`},"settings.localToolsPermScreen":{message:`Näytön tallennus`,description:`macOS Screen Recording permission row.`},"settings.localToolsPermAccessibility":{message:`Käyttöapu`,description:`macOS Accessibility permission row.`},"settings.localToolsGranted":{message:`Myönnetty`,description:`Status tag when a system permission is granted.`},"settings.localToolsNotGranted":{message:`Ei myönnetty`,description:`Status tag when a system permission is not granted.`},"settings.localToolsOpen":{message:`Avaa…`,description:`Button to open the relevant macOS System Settings pane.`},"settings.subsites":{message:`Omat alisivustot`,description:`Asetusikkunassa alisivustojen hallinta-välilehden otsikko. Näkyy vain virallisella pääsivustolla, alisivustot eivät näy.`},"settings.adminOnlyHint":{message:`Tämä osio on vain sivuston ylläpitäjille, tavalliset käyttäjät eivät pääse siihen käsiksi.`,description:`Vihje, joka näytetään ylläpitäjille näkyvissä olevien asetusten välilehden yläosassa, kuten sivuston asetukset / SEO-asetukset / jakeluasetukset / toiminta-asetukset.`},"settings.officialOnlyHint":{message:`Tämä osio on vain pääsivustolla näkyvissä, alisivustot eivät näytä sitä.`,description:`Vihje, joka näytetään 'Omat alisivustot' -välilehden yläosassa, ilmoittaen, että tämä pääsy on vain virallisella pääsivustolla.`},"settings.customDomain":{message:`Mukautettu verkkotunnus`,description:`Title for the custom-domain management tab in the settings popup. Visible only on subsites (non-main-official hosts) for site admins.`},"settings.buildNow":{message:`Yksi napsautus rakentamiseen`,description:`Tietoja-sivun 'Yksi napsautus alisivuston rakentamiseen' -painikkeen teksti, näkyy vain virallisella pääsivustolla`},"settings.poweredBy":{message:`Avoimen lähdekoodin projekti`,description:`Tietoja-sivulla esitettävä otsikko, joka kertoo, mihin avoimen lähdekoodin projektiin tämä sivusto perustuu`},"settings.poweredByTip":{message:`Tämä sivusto perustuu Nexior-avoimen lähdekoodin projektiin, koodi on täysin avointa.`,description:`Tietoja-sivulla esitettävä selitys, joka kertoo, mihin avoimen lähdekoodin projektiin tämä sivusto perustuu`},"settings.apiService":{message:`API-palvelu`,description:`Tietoja-sivulla esitettävä otsikko, joka kertoo API-palvelun tarjoajasta`},"settings.apiServiceTip":{message:`Tämän sivuston API-palvelun tarjoaa Ace Data Cloud.`,description:`Tietoja-sivulla esitettävä selitys, joka kertoo API-palvelun tarjoajasta`},"settings.buildYourOwn":{message:`Rakenna oma`,description:`Tietoja-sivulla käyttäjälle, joka voi rakentaa samanlaisen sivuston, esitettävä otsikko`},"settings.buildYourOwnTip":{message:`Haluatko rakentaa samanlaisen AI-sivuston? Ota meihin yhteyttä saadaksesi käyttöönottoapua.`,description:`Tietoja-sivulla samanlaisen rakentamisen selitys`},"settings.contactUs":{message:`Ota yhteyttä asiakaspalveluun`,description:`Asiakaspalveluun ottamisen painikkeen teksti`},"message.viewOnGithub":{message:`Katso GitHubissa`,description:`Linkkiteksti projektin katsomiseen GitHubissa`},"title.notFound":{message:`Sivu on kadonnut`,description:`404-sivun otsikko`},"message.notFound":{message:`Käyttämäsi sivu ei ole olemassa, linkki on saattanut muuttua tai poistettu. Palaa etusivulle jatkaaksesi AceData AI -palveluiden tutkimista.`,description:`404-sivun alaotsikon kuvaus`},"message.notFoundEyebrow":{message:`Virhe`,description:`404-sivun yläosan pieni etiketti`},"message.notFoundPath":{message:`Pyyntöpolku`,description:`404-sivulla nykyisen pyyntöpolun esittämiseen käytettävä etiketti`},"button.backToHome":{message:`Palaa etusivulle`,description:`Painikkeen teksti, jota käytetään palaamaan etusivulle`},"button.goBack":{message:`Palaa edelliselle sivulle`,description:`Painikkeen teksti, jota käytetään palaamaan selaushistoriassa edelliselle sivulle`},"title.apiCode":{message:`API code for this request`,description:`Title of the dialog that shows the equivalent API code (curl / Python / Node) that would reproduce a result generated inside the product`},"message.viewCodeHint":{message:`Show API code for this request`,description:`Tooltip text on the View Code button shown alongside result-card action buttons (U1/U2/Download/Extend/...). Clicking the button opens a dialog with curl / Python / Node snippets that reproduce the same generation via the public API.`},"button.viewCode":{message:`View code`,description:`Button text that opens a dialog with the equivalent API code (curl / Python / Node) for the current result, similar to the OpenAI Playground 'View code' affordance`},"button.getApiKey":{message:`Get an API key`,description:`Link text in the API code dialog footer that opens the platform console page where users can create an API key`},"button.apiPlatform":{message:`API Platform`,description:`API code dialog footer button label. Clicking opens https://platform.acedata.cloud/ in a new tab so users can manage their API keys, balance and usage.`},"message.apiCodeIntro":{message:`Run this from your own code to produce the same result. Replace <YOUR_API_KEY> with a key from your platform console.`,description:`Helper text shown above the code tabs in the API code dialog, explaining how to use the snippet`},"tab.apiRequest":{message:`Pyyntö`,description:`API-koodin dialogin välilehden etiketti pyyntökoodille (koodi, joka toistaa nykyisen tuloksen).`},"tab.apiResponse":{message:`Vastaus`,description:`API-koodin dialogin välilehden etiketti reaaliaikaiselle vastaukselle, joka palautuu Suorita-painiketta napsautettaessa.`},"button.apiRun":{message:`Suorita uudelleen`,description:`API-koodin dialogin painike, joka suorittaa pyynnön uudelleen reaaliaikaisesti API:ta käyttäen käyttäjän avainta. Tulos on jo olemassa, joten napsauttaminen suorittaa sen uudelleen, ja se on laskutettavaa.`},"button.apiRunning":{message:`Suoritetaan…`,description:`API-koodin dialogin Suorita-painikkeen etiketti, kun reaaliaikainen pyyntö on käynnissä.`},"button.apiRunConfirm":{message:`Vahvista suoritus`,description:`Vahvistuspainikkeen etiketti dialogissa, joka varoittaa, että suorittaminen kuluttaa ylimääräisiä krediittejä.`},"button.viewDocs":{message:`Näytä asiakirjat`,description:`API-koodin dialogin alatunnisteen painike, joka avaa vastaavan API-dokumentaatiosivun alustalla.`},"message.apiClickRun":{message:`Napsauta 'Suorita uudelleen' käyttääksesi API-avaintasi tämän pyynnön suorittamiseen reaaliaikaisesti.`,description:`API-koodin dialogin vastaustabin tyhjät tilat, jotka näytetään ennen kuin käyttäjä on suorittanut pyynnön.`},"message.apiRunConfirmTitle":{message:`Vahvista suoritus`,description:`Vahvistusdialogin otsikko, joka näytetään ennen pyynnön uudelleen suorittamista API-koodin dialogista.`},"message.apiRunConfirmDesc":{message:`Tämä suoritus käyttää API-avaintasi ja tekee todellisen kutsun rajapintaan, mikä kuluttaa ylimääräisiä pisteitä. Vahvistatko jatkamisen?`,description:`Vahvistusdialogin runko, joka varoittaa, että pyynnön uudelleen suorittaminen on todellinen, laskutettava API-kutsu.`},"message.apiRunConfirmSkip":{message:`Älä enää muistuta`,description:`Valintaruutu suoritusvahvistusdialogissa, joka, kun se on valittuna, estää varoituksen seuraavilla suorituksilla.`},"message.apiRunTaskCreated":{message:`Tehtävä on luotu, sulje tämä ikkuna nähdäksesi uusimmat tulokset alla.`,description:`Onnistumisbanneri, joka näytetään API-koodin dialogissa sen jälkeen, kun suoritus palauttaa tehtävän ID:n, vihjaten että uusi tehtävä näkyy jo dialogin takana olevassa luettelossa.`},"button.apiViewLatest":{message:`Sulje ja katso`,description:`Painike API-koodin dialogin onnistumisbannerissa, joka sulkee dialogin, jotta käyttäjä voi nähdä juuri luodun tehtävän alla olevassa luettelossa.`},"message.uploadInProgress":{message:`Viiteaineistojen lataus on yhä käynnissä – odota hetki.`,description:`Toast shown when the user clicks the Generate button while one or more reference uploads are still in flight. Asks them to wait for uploads to complete before retrying.`},"appUpgrade.title":{message:`Update required`,description:`Title of the native-app version gate modal shown at startup when the installed build is older than what the backend supports.`},"appUpgrade.blockMessage":{message:`This version is no longer supported. Please update from the app store to continue.`,description:`Body text of the hard-block upgrade modal shown when the installed version is below min_supported. The modal has no dismiss affordance — the only button opens the app store.`},"appUpgrade.softMessage":{message:`A newer version is available. Update from the app store for the best experience.`,description:`Body text of the soft upgrade prompt shown when the installed version is below latest but above min_supported. The user can dismiss and keep using the app.`},"appUpgrade.openStore":{message:`Update now`,description:`Primary button on the upgrade modal — opens the App Store / Play Store URL in the system browser.`},"appUpgrade.later":{message:`Later`,description:`Secondary button on the soft upgrade prompt — dismisses the modal and lets the user keep using the current version. Only shown for non-forced upgrades.`},"nav.maestro":{message:`Maestro`,description:`Navigointipalkissa Maestro-artikkeleiden muuntaminen videoiksi -sivun teksti, säilytä 'Maestro'`},"nav.digitalhuman":{message:`Digital Human`,description:`Text in the website navigation bar for the Digital Human talking-head page`}};export{e as default};
|