多国语言支持
This commit is contained in:
1 parent
b98c0333e6
commit
04de5e5a8e
23 files changed
+7795
-1279
No files matched your search
@@ -80,6 +80,10 @@ AB 循环是一个独立功能开关。开启后会显示浮动输入窗,可
|
||||
|
||||
可以保存和加载完整工程配置,也可以使用内置预设快速开始。场景对象支持复制、显隐和撤回。
|
||||
|
||||
12. 多语言界面
|
||||
|
||||
网站支持简体中文、繁体中文、英语、日语、韩语、法语、德语、葡萄牙语和西班牙语。首次访问会根据浏览器语言自动选择界面语言,也可以随时在画布顶部切换;选择结果会自动保存。
|
||||
|
||||
推荐使用流程
|
||||
------------
|
||||
|
||||
|
||||
@@ -351,6 +351,16 @@ Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经
|
||||
- 关键帧精简;
|
||||
- 结构校验。
|
||||
|
||||
### 7.10 多语言
|
||||
|
||||
- 使用 `vue-i18n` 管理中英文及后续语言;
|
||||
- 当前支持简体中文、繁体中文、英语、日语、韩语、法语、德语、葡萄牙语和西班牙语;
|
||||
- 语言下拉框位于画布顶部工具栏、背景图与使用说明之间;
|
||||
- 首次访问按浏览器语言自动选择,无法匹配时回退英文;
|
||||
- 自动识别结果和手动选择均写入浏览器缓存;
|
||||
- 配置字段、Spine 枚举和导出数据保持语言无关,只切换显示文本;
|
||||
- 页面标题、参数面板、时间轴、使用说明、配置状态和主要错误提示均随语言切换。
|
||||
|
||||
---
|
||||
|
||||
## 八、数据结构与兼容
|
||||
|
||||
Vendored
+1257
File diff suppressed because it is too large.
Load diff
@@ -1 +1 @@
|
||||
.help-overlay[data-v-4bb9bc76]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-4bb9bc76]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-4bb9bc76]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-4bb9bc76]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-4bb9bc76]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-4bb9bc76]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-4bb9bc76]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-4bb9bc76]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-4bb9bc76]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-4bb9bc76]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-4bb9bc76]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-4bb9bc76]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-4bb9bc76]{color:#dce4f7}.help-grid[data-v-4bb9bc76]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-4bb9bc76]{display:grid;gap:0;margin:0}.help-list>div[data-v-4bb9bc76]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-4bb9bc76]:last-child{border-bottom:0}.help-list dt[data-v-4bb9bc76]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-4bb9bc76]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-4bb9bc76]{display:grid;gap:7px}.shortcut-list>div[data-v-4bb9bc76]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-4bb9bc76]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-4bb9bc76]{color:#65728b;font-size:10px}.shortcut-list em[data-v-4bb9bc76]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-4bb9bc76]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-4bb9bc76]{margin-top:12px}.help-export p[data-v-4bb9bc76]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-4bb9bc76]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-4bb9bc76]{margin-top:12px}.help-module-head[data-v-4bb9bc76]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-4bb9bc76]:hover{color:#fff}.help-module-head .mtitle[data-v-4bb9bc76]{flex:1;min-width:0}.help-module-head .caret[data-v-4bb9bc76]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-4bb9bc76]{color:#fff}.help-module.open .help-module-head .caret[data-v-4bb9bc76]{color:#9fb2ff}.help-module .mnum[data-v-4bb9bc76]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-4bb9bc76]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-4bb9bc76]{color:#b8c2ff}.help-module .connector-intro[data-v-4bb9bc76]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-4bb9bc76]{color:#dce4f7}.help-module .dl-link[data-v-4bb9bc76]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-4bb9bc76]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-4bb9bc76]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-4bb9bc76]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-4bb9bc76]{padding:66px 12px 14px}.help-grid[data-v-4bb9bc76]{grid-template-columns:1fr}}.topbar[data-v-6411b316]{position:absolute;top:10px;left:10px;right:10px;dispLine truncated
|
||||
.help-overlay[data-v-4bb9bc76]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-4bb9bc76]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-4bb9bc76]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-4bb9bc76]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-4bb9bc76]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-4bb9bc76]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-4bb9bc76]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-4bb9bc76]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-4bb9bc76]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-4bb9bc76]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-4bb9bc76]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-4bb9bc76]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-4bb9bc76]{color:#dce4f7}.help-grid[data-v-4bb9bc76]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-4bb9bc76]{display:grid;gap:0;margin:0}.help-list>div[data-v-4bb9bc76]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-4bb9bc76]:last-child{border-bottom:0}.help-list dt[data-v-4bb9bc76]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-4bb9bc76]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-4bb9bc76]{display:grid;gap:7px}.shortcut-list>div[data-v-4bb9bc76]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-4bb9bc76]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-4bb9bc76]{color:#65728b;font-size:10px}.shortcut-list em[data-v-4bb9bc76]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-4bb9bc76]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-4bb9bc76]{margin-top:12px}.help-export p[data-v-4bb9bc76]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-4bb9bc76]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-4bb9bc76]{margin-top:12px}.help-module-head[data-v-4bb9bc76]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-4bb9bc76]:hover{color:#fff}.help-module-head .mtitle[data-v-4bb9bc76]{flex:1;min-width:0}.help-module-head .caret[data-v-4bb9bc76]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-4bb9bc76]{color:#fff}.help-module.open .help-module-head .caret[data-v-4bb9bc76]{color:#9fb2ff}.help-module .mnum[data-v-4bb9bc76]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-4bb9bc76]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-4bb9bc76]{color:#b8c2ff}.help-module .connector-intro[data-v-4bb9bc76]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-4bb9bc76]{color:#dce4f7}.help-module .dl-link[data-v-4bb9bc76]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-4bb9bc76]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-4bb9bc76]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-4bb9bc76]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-4bb9bc76]{padding:66px 12px 14px}.help-grid[data-v-4bb9bc76]{grid-template-columns:1fr}}.topbar[data-v-6411b316]{position:absolute;top:10px;left:10px;right:10px;dispLine truncated
|
||||
@@ -1,4 +1,4 @@
|
||||
var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-DQ5rq6hP.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-DQ5rq6hP.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-Ck8IwYQq.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-Ck8IwYQq.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadLine truncated
|
||||
var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-2QgDjwRs.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-2QgDjwRs.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-DxBJZqWf.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-DxBJZqWf.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadLine truncated
|
||||
attribute vec2 aVertexPosition;
|
||||
attribute vec2 aTextureCoord;
|
||||
|
||||
Vendored
-1257
File diff suppressed because it is too large.
Load diff
@@ -1,2 +1,2 @@
|
||||
var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-DQ5rq6hP.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-DQ5rq6hP.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1)Line truncated
|
||||
var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-2QgDjwRs.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-2QgDjwRs.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1)Line truncated
|
||||
${n}`:""}`)}remove(t){t=this.pathPrefix+t;const e=this.cache.assets[t];return e.dispose&&e.dispose(),delete this.cache.assets[t],delete this.cache.assetsRefCount[t],delete this.cache.assetsLoaded[t],e}removeAll(){for(const t in this.cache.assets){const e=this.cache.assets[t];e.dispose&&e.dispose()}this.cache.assets={},this.cache.assetsLoaded={},this.cache.assetsRefCount={}}isLoadingComplete(){return this.toLoad===0}getToLoad(){return this.toLoad}getLoaded(){return this.loaded}dispose(){this.removeAll()}disposeAsset(t){const e=this.cache.assets[t];if(e instanceof ht){e.dispose();return}this.disposeAssetInternal(t)}hasErrors(){return Object.keys(this.errors).length>0}getErrors(){return this.errors}disposeAssetInternal(t){if(this.cache.assetsRefCount[t]>0&&--this.cache.assetsRefCount[t]===0)return this.remove(t)}createTextureAtlas(t,e,n,s){const i=new ht(t);i.dispose=()=>{var o;if(!(this.cache.assetsRefCount[n]<=0)){this.disposeAssetInternal(n);for(const r of i.pages)(o=r.texture)==null||o.dispose()}};for(const o of i.pages){const r=this.texturePath(e,o.name,s);this.texturePmaInfo[this.pathPrefix+r]=o.pma}return i}createTexture(t,e,n){const s=this.textureLoader(n,e),i=s.dispose.bind(s);return s.dispose=()=>{this.disposeAssetInternal(t)&&i()},s}texturePath(t,e,n){return n?n[e]:t+e}}const nt=class nt{constructor(){T(this,"assets",{});T(this,"assetsRefCount",{});T(this,"assetsLoaded",{})}static getCache(t){const e=nt.AVAILABLE_CACHES.get(t);if(e)return e;const n=new nt;return nt.AVAILABLE_CACHES.set(t,n),n}async addAsset(t,e){return this.assetsLoaded[t]=Promise.resolve(e),this.assets[t]=e,e}getAsset(t){return this.assetsLoaded[t]}};T(nt,"AVAILABLE_CACHES",new Map);let lt=nt;class bt{constructor(){T(this,"callbacks",{});T(this,"rawDataUris",{})}dataUriToString(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");return e!==-1?(e+=7,atob(t.substr(e))):t.substr(t.indexOf(",")+1)}base64ToUint8Array(t){var e=window.atob(t),n=e.length,s=new Uint8Array(n);for(let i=0;i<n;i++)s[i]=e.charCodeAt(i);return s}dataUriToUint8Array(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");if(e===-1)throw new Error("Not a binary data URI.");return e+=7,this.base64ToUint8Array(t.substr(e))}downloadText(t,e,n){if(this.start(t,e,n))return;const s=this.rawDataUris[t];if(s&&!s.includes(".")){try{this.finish(t,200,this.dataUriToString(s))}catch(r){this.finish(t,400,JSON.stringify(r))}return}const i=new XMLHttpRequest;i.overrideMimeType("text/html"),i.open("GET",s||t,!0);const o=()=>{this.finish(t,i.status,i.responseText)};i.onload=o,i.onerror=o,i.send()}downloadJson(t,e,n){this.downloadText(t,s=>{e(JSON.parse(s))},n)}downloadBinary(t,e,n){if(this.start(t,e,n))return;const s=this.rawDataUris[t];if(s&&!s.includes(".")){try{this.finish(t,200,this.dataUriToUint8Array(s))}catch(r){this.finish(t,400,JSON.stringify(r))}return}const i=new XMLHttpRequest;i.open("GET",s||t,!0),i.responseType="arraybuffer";const o=()=>{this.finish(t,i.status,i.response)};i.onload=()=>{i.status===200||i.status===0?this.finish(t,200,new Uint8Array(i.response)):o()},i.onerror=o,i.send()}start(t,e,n){let s=this.callbacks[t];try{if(s)return!0;this.callbacks[t]=s=[]}finally{s.push(e,n)}}finish(t,e,n){const s=this.callbacks[t];if(delete this.callbacks[t],e===200||e===0)for(let i=0,o=s.length;i<o;i+=2)s[i](n);else for(let i=1,o=s.length;i<o;i+=2)s[i](e,n)}}class Vt{constructor(t,e=!1){T(this,"atlas");T(this,"allowMissingRegions");this.atlas=t,this.allowMissingRegions=e}findRegions(t,e,n){const s=n.regions;for(let i=0,o=s.length;i<o;i++)s[i]=this.findRegion(t,n.getPath(e,i))}findRegion(t,e){const n=this.atlas.findRegion(e);if(!n&&!this.allowMissingRegions)throw new Error(`Region not found in atlas: ${e} (attachment: ${t})`);return n}newRegionAttachment(t,e,n,s,i){return this.findRegions(n,s,i),new pt(n,i)}newMeshAttachment(t,e,n,s,i){return this.findRegions(n,s,i),new dt(n,i)}newBoundingBoxAttachment(t,e,n){return new ut(n)}newPathAttachment(t,e,n){return new mt(n)}newPointAttachment(t,e,n){return new yt(n)}newClippingAttachment(t,e,n){return new rt(n)}}class Lt{constructor(){T(this,"minX",0);T(this,"minY",0);T(this,"maxX",0);T(this,"maxY",0);T(this,"boundingBoxes",[]);T(this,"polygons",[]);T(this,"polygonPool",new at(()=>D.newFloatArray(16)))}update(t,e){if(!t)throw new Error("skeleton cannot be null.");const n=this.boundingBoxes,s=this.polygons,i=this.polygonPool,o=t.slots,r=o.length;n.length=0,i.freeAll(s),s.length=0;for(let l=0;l<r;l++){const c=o[l];if(!c.bone.active)continue;const a=c.appliedPose.attachment;if(a instanceof ut){n.push(a);let h=i.obtain();h.length!==a.worldVerticesLength&&(h=D.newFloatArray(a.worldVerticesLength)),s.push(h),a.computeWorldVertices(t,c,0,a.worldVerticesLength,h,0,2)}}e?this.aabbCompute():(this.minX=Number.POSITIVE_INFINITY,this.minY=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.maxY=Number.NEGATIVE_INFINITY)}aabbCompute(){let t=Number.POSITIVE_INFLine truncated
|
||||
Vendored
+2
-2
@@ -8,8 +8,8 @@
|
||||
html, body { margin: 0; padding: 0; background: #111; color: #eee; font-family: system-ui, -apple-system, sans-serif; }
|
||||
#app { display: flex; flex-direction: column; height: 100vh; }
|
||||
</style>
|
||||
<script type="module" crossorigin src="/assets/index-DQ5rq6hP.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BJgrTIS_.css">
|
||||
<script type="module" crossorigin src="/assets/index-2QgDjwRs.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CA-Q3Zzr.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"test:particle-events": "node scripts/verify-particle-events.mjs",
|
||||
"test:sub-emitter-timeline": "node scripts/verify-sub-emitter-timeline.mjs",
|
||||
"test:i18n": "node scripts/verify-i18n.mjs",
|
||||
"i18n:generate": "node scripts/generate-i18n-locales.mjs && node scripts/apply-i18n-overrides.mjs",
|
||||
"test:connector": "node scripts/verify-spine-connector.mjs",
|
||||
"test:connector:spine38-path": "node scripts/verify-spine38-connector-path.mjs",
|
||||
"test:connector:sea": "node scripts/verify-connector-sea.mjs",
|
||||
|
||||
@@ -0,0 +1,297 @@
|
||||
import { readFile, writeFile } from 'node:fs/promises'
|
||||
|
||||
const overrides = {
|
||||
'zh-TW': {
|
||||
common: {
|
||||
close: '關閉', reset: '重設', add: '新增', remove: '移除', delete: '刪除', clear: '清除',
|
||||
cancel: '取消', confirm: '確定', none: '無', enabled: '啟用', disabled: '停用',
|
||||
fixed: '固定', random: '隨機', curve: '曲線', followExport: '跟隨匯出',
|
||||
linear: '線性', bezier: '貝茲', above: '上方', below: '下方', left: '左側', right: '右側',
|
||||
seconds: '秒', frames: '幀',
|
||||
},
|
||||
toolbar: {
|
||||
settings: '系統設定', undo: '復原上一步 (Ctrl+Z)', pan: '拖曳畫布 (Q)', translate: '位移 (W)',
|
||||
rotate: '旋轉 (E)', scale: '縮放 (R)', zoomIn: '放大', zoomOut: '縮小', fitView: '適合畫布',
|
||||
toggleGrid: '切換網格', resetView: '重設視圖', background: '背景圖', backgroundSettings: '背景圖顯示設定',
|
||||
changeBackground: '更換圖像', uploadBackground: '上傳圖像', clearBackground: '清除背景',
|
||||
noBackground: '未上傳圖像', opacity: '透明度', help: '使用說明', openHelp: '查看使用說明',
|
||||
},
|
||||
config: { title: '設定管理', save: '儲存設定', load: '載入設定', selectPreset: '選擇預設', noPresets: '無預設檔案' },
|
||||
image: { fixed: '固定', sequence: '序列幀', onceHide: '單次-尾幀消失', onceHold: '單次-尾幀固定', loopForward: '正向循環', loopReverse: '反向循環', weight: '權重 %', pivot: '貼圖軸點' },
|
||||
emission: {
|
||||
title: '發射模式', stream: '持續', burst: '爆發', normalStream: '一般持續', loopStream: '循環持續',
|
||||
rate: '發射速率', duration: '發射時長', burstCount: '單次數量', delay: '延遲時間',
|
||||
shapeTitle: '發射器形狀', point: '點', circle: '圓形', rect: '矩形', cone: '錐形', path: '路徑',
|
||||
},
|
||||
attributes: { title: '粒子屬性', initialParams: '粒子初始參數', lifecycleTitle: '粒子生命週期變化參數' },
|
||||
appearance: { title: '外觀與資源', opacity: '透明度', renderLayer: '渲染層級(Spine 插槽)', imageResources: '圖片資源', independentAlpha: '獨立透明度', off: '關閉', normal: '正常', add: '相加', multiply: '相乘', screen: '濾色' },
|
||||
scene: { title: '場景物件', particle: '粒子', subEmitter: '子發射器', collision: '碰撞', path: '路徑', positionX: 'X 位置', positionY: 'Y 位置', offsetX: 'X 偏移', offsetY: 'Y 偏移', rotation: '旋轉', scaleX: 'X 縮放', scaleY: 'Y 縮放', xPosition: 'X 位置', yPosition: 'Y 位置', scaleXShort: 'X 縮放', scaleYShort: 'Y 縮放', seed: '隨機種子' },
|
||||
modifiers: {
|
||||
title: '修改器', damping: '阻尼', enableNoise: '開啟移動雜訊', enableGravity: '開啟重力', enableWind: '開啟風力',
|
||||
enableForceField: '開啟力場', enableVortex: '開啟漩渦', enableAttraction: '開啟吸附', enableTrail: '開啟拖尾',
|
||||
enableFollow: '開啟發射器跟隨', enableCollision: '開啟碰撞', enableSubEmitter: '開啟子發射器',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: '持續循環播放', abLoop: '獨立 A/B 區間循環', abLoopShort: 'AB 循環',
|
||||
emission: '持續發射', particleLife: '粒子存在', spineAnimation: 'Spine 動畫', ownerAnimation: '所屬動畫', frameStatus: '幀 {current} / {total}',
|
||||
},
|
||||
export: { title: '匯出設定', spineVersion: 'Spine 版本', fps: '匯出 FPS', exportJson: '匯出 Spine JSON', exportImages: '匯出圖片 ZIP', connectorReady: '連接器可用 · Spine 已就緒', connectorOffline: '本機 Spine 連接器未啟動', spineNotFound: '連接器已啟動,但找不到 Spine', notAuthorized: '連接器已啟動,但目前網站尚未授權', checking: '偵測中', offline: '未啟動', notFound: '找不到 Spine', unauthorized: '未授權', connectorBusy: '正在重新計算並產生 Spine 專案', connectorGenerate: '使用本機 Spine 自動產生 {version} 專案' },
|
||||
spine: { title: 'Spine 屬性', resources: 'Spine 資源', animations: 'Spine 動畫', hierarchy: '階層樹', xPosition: 'X 位置', yPosition: 'Y 位置', rotation: '旋轉', startTime: '開始時間', scaleX: 'X 縮放', scaleY: 'Y 縮放' },
|
||||
help: { title: '使用說明', commonOps: '常用操作', shortcuts: '快速鍵', modules: '功能模組詳解' },
|
||||
presets: { particleSweep: '1.粒子掃過', barBlocks: '2.長條方塊', forceTrail: '3.力場拖尾', lightningSequence: '4.雷電序列幀', texturePivot: '5.貼圖軸點', subEmitter: '6.子發射器' },
|
||||
},
|
||||
ja: {
|
||||
common: {
|
||||
close: '閉じる', reset: 'リセット', add: '追加', remove: '削除', delete: '削除', clear: 'クリア',
|
||||
cancel: 'キャンセル', confirm: '確定', none: 'なし', enabled: '有効', disabled: '無効',
|
||||
fixed: '固定', random: 'ランダム', curve: 'カーブ', followExport: 'エクスポート設定に従う',
|
||||
linear: 'リニア', bezier: 'ベジェ', above: '上', below: '下', left: '左', right: '右',
|
||||
seconds: '秒', frames: 'フレーム',
|
||||
},
|
||||
toolbar: {
|
||||
settings: '設定', undo: '元に戻す (Ctrl+Z)', pan: 'キャンバス移動 (Q)', translate: '移動 (W)',
|
||||
rotate: '回転 (E)', scale: '拡大縮小 (R)', zoomIn: '拡大', zoomOut: '縮小', fitView: 'キャンバスに合わせる',
|
||||
toggleGrid: 'グリッド切替', resetView: 'ビューをリセット', background: '背景', backgroundSettings: '背景画像設定',
|
||||
changeBackground: '画像を変更', uploadBackground: '画像をアップロード', clearBackground: '背景をクリア',
|
||||
noBackground: '画像なし', opacity: '不透明度', help: 'ヘルプ', openHelp: 'ヘルプを開く',
|
||||
},
|
||||
config: { title: '設定管理', save: '設定を保存', load: '設定を読み込む', selectPreset: 'プリセットを選択', noPresets: 'プリセットなし' },
|
||||
image: { fixed: '固定', sequence: 'シーケンス', onceHide: '1回・最終フレームで非表示', onceHold: '1回・最終フレームを保持', loopForward: '正方向ループ', loopReverse: '逆方向ループ', weight: '重み %', pivot: 'テクスチャピボット' },
|
||||
emission: {
|
||||
title: 'エミッションモード', stream: 'ストリーム', burst: 'バースト', normalStream: '通常ストリーム', loopStream: 'ループストリーム',
|
||||
rate: '放出レート', duration: '放出時間', burstCount: '一度の放出数', delay: '遅延時間',
|
||||
shapeTitle: 'エミッター形状', point: '点', circle: '円', rect: '矩形', cone: '円錐', path: 'パス',
|
||||
},
|
||||
attributes: { title: 'パーティクル属性', initialParams: 'パーティクル初期値', lifecycleTitle: 'ライフタイム中の変化' },
|
||||
appearance: { title: '外観とリソース', opacity: '不透明度', renderLayer: 'レンダー階層(Spine スロット)', imageResources: '画像リソース', independentAlpha: '独立した不透明度', off: 'オフ', normal: '通常', add: '加算', multiply: '乗算', screen: 'スクリーン' },
|
||||
scene: { title: 'シーンオブジェクト', particle: 'パーティクル', subEmitter: 'サブエミッター', collision: 'コリジョン', path: 'パス', positionX: 'X 位置', positionY: 'Y 位置', offsetX: 'X オフセット', offsetY: 'Y オフセット', rotation: '回転', scaleX: 'X スケール', scaleY: 'Y スケール', xPosition: 'X 位置', yPosition: 'Y 位置', scaleXShort: 'X スケール', scaleYShort: 'Y スケール', seed: 'ランダムシード' },
|
||||
modifiers: {
|
||||
title: 'モディファイア', damping: '減衰', enableNoise: '移動ノイズを有効化', enableGravity: '重力を有効化', enableWind: '風を有効化',
|
||||
enableForceField: 'フォースフィールドを有効化', enableVortex: '渦を有効化', enableAttraction: '吸着を有効化', enableTrail: 'トレイルを有効化',
|
||||
enableFollow: 'エミッター追従を有効化', enableCollision: 'コリジョンを有効化', enableSubEmitter: 'サブエミッターを有効化',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: '連続ループ再生', abLoop: '独立した A/B 区間ループ', abLoopShort: 'AB ループ',
|
||||
emission: '放出中', particleLife: 'パーティクル存在', spineAnimation: 'Spine アニメーション', ownerAnimation: '所属アニメーション', frameStatus: 'フレーム {current} / {total}',
|
||||
},
|
||||
export: { title: 'エクスポート設定', spineVersion: 'Spine バージョン', fps: 'エクスポート FPS', exportJson: 'Spine JSON を書き出す', exportImages: '画像 ZIP を書き出す', connectorReady: 'コネクタ使用可能 · Spine 準備完了', connectorOffline: 'ローカル Spine コネクタが起動していません', spineNotFound: 'コネクタは起動していますが Spine が見つかりません', notAuthorized: 'コネクタは起動していますが、このサイトは未認証です', checking: '確認中', offline: '未起動', notFound: 'Spine が見つかりません', unauthorized: '未認証', connectorBusy: 'Spine プロジェクトを再計算して生成中', connectorGenerate: 'ローカル Spine で Spine {version} プロジェクトを生成' },
|
||||
spine: { title: 'Spine プロパティ', resources: 'Spine リソース', animations: 'Spine アニメーション', hierarchy: '階層ツリー', xPosition: 'X 位置', yPosition: 'Y 位置', rotation: '回転', startTime: '開始時間', scaleX: 'X スケール', scaleY: 'Y スケール' },
|
||||
help: { title: 'ヘルプ', commonOps: 'よく使う操作', shortcuts: 'ショートカット', modules: '機能モジュール' },
|
||||
presets: { particleSweep: '1.パーティクルスイープ', barBlocks: '2.バーブロック', forceTrail: '3.フォースフィールドトレイル', lightningSequence: '4.雷シーケンス', texturePivot: '5.テクスチャピボット', subEmitter: '6.サブエミッター' },
|
||||
},
|
||||
ko: {
|
||||
common: {
|
||||
close: '닫기', reset: '초기화', add: '추가', remove: '제거', delete: '삭제', clear: '지우기',
|
||||
cancel: '취소', confirm: '확인', none: '없음', enabled: '사용', disabled: '사용 안 함',
|
||||
fixed: '고정', random: '랜덤', curve: '곡선', followExport: '내보내기 설정 따르기',
|
||||
linear: '선형', bezier: '베지어', above: '위', below: '아래', left: '왼쪽', right: '오른쪽',
|
||||
seconds: '초', frames: '프레임',
|
||||
},
|
||||
toolbar: {
|
||||
settings: '설정', undo: '실행 취소 (Ctrl+Z)', pan: '캔버스 이동 (Q)', translate: '이동 (W)',
|
||||
rotate: '회전 (E)', scale: '크기 조절 (R)', zoomIn: '확대', zoomOut: '축소', fitView: '캔버스에 맞추기',
|
||||
toggleGrid: '그리드 전환', resetView: '보기 초기화', background: '배경', backgroundSettings: '배경 이미지 설정',
|
||||
changeBackground: '이미지 교체', uploadBackground: '이미지 업로드', clearBackground: '배경 지우기',
|
||||
noBackground: '이미지 없음', opacity: '불투명도', help: '도움말', openHelp: '도움말 열기',
|
||||
},
|
||||
config: { title: '설정 관리', save: '설정 저장', load: '설정 불러오기', selectPreset: '프리셋 선택', noPresets: '프리셋 없음' },
|
||||
image: { fixed: '고정', sequence: '시퀀스', onceHide: '1회·마지막 프레임에서 숨김', onceHold: '1회·마지막 프레임 유지', loopForward: '정방향 루프', loopReverse: '역방향 루프', weight: '가중치 %', pivot: '텍스처 피벗' },
|
||||
emission: {
|
||||
title: '이미션 모드', stream: '스트림', burst: '버스트', normalStream: '일반 스트림', loopStream: '루프 스트림',
|
||||
rate: '이미션 속도', duration: '이미션 시간', burstCount: '1회 생성 수', delay: '지연 시간',
|
||||
shapeTitle: '이미터 모양', point: '점', circle: '원', rect: '사각형', cone: '원뿔', path: '경로',
|
||||
},
|
||||
attributes: { title: '파티클 속성', initialParams: '파티클 초기값', lifecycleTitle: '수명에 따른 변화' },
|
||||
appearance: { title: '외형과 리소스', opacity: '불투명도', renderLayer: '렌더링 레이어(Spine 슬롯)', imageResources: '이미지 리소스', independentAlpha: '독립 불투명도', off: '끄기', normal: '일반', add: '더하기', multiply: '곱하기', screen: '스크린' },
|
||||
scene: { title: '장면 오브젝트', particle: '파티클', subEmitter: '하위 이미터', collision: '충돌', path: '경로', positionX: 'X 위치', positionY: 'Y 위치', offsetX: 'X 오프셋', offsetY: 'Y 오프셋', rotation: '회전', scaleX: 'X 크기', scaleY: 'Y 크기', xPosition: 'X 위치', yPosition: 'Y 위치', scaleXShort: 'X 크기', scaleYShort: 'Y 크기', seed: '랜덤 시드' },
|
||||
modifiers: {
|
||||
title: '모디파이어', damping: '감쇠', enableNoise: '이동 노이즈 사용', enableGravity: '중력 사용', enableWind: '바람 사용',
|
||||
enableForceField: '힘장 사용', enableVortex: '소용돌이 사용', enableAttraction: '흡인 사용', enableTrail: '트레일 사용',
|
||||
enableFollow: '이미터 추적 사용', enableCollision: '충돌 사용', enableSubEmitter: '하위 이미터 사용',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: '연속 루프 재생', abLoop: '독립 A/B 구간 루프', abLoopShort: 'AB 루프',
|
||||
emission: '이미션 중', particleLife: '파티클 존재', spineAnimation: 'Spine 애니메이션', ownerAnimation: '소속 애니메이션', frameStatus: '프레임 {current} / {total}',
|
||||
},
|
||||
export: { title: '내보내기 설정', spineVersion: 'Spine 버전', fps: '내보내기 FPS', exportJson: 'Spine JSON 내보내기', exportImages: '이미지 ZIP 내보내기', connectorReady: '커넥터 사용 가능 · Spine 준비됨', connectorOffline: '로컬 Spine 커넥터가 실행 중이 아닙니다', spineNotFound: '커넥터는 실행 중이지만 Spine을 찾을 수 없습니다', notAuthorized: '커넥터는 실행 중이지만 이 사이트는 승인되지 않았습니다', checking: '확인 중', offline: '오프라인', notFound: 'Spine 없음', unauthorized: '승인되지 않음', connectorBusy: 'Spine 프로젝트를 다시 계산하고 생성 중', connectorGenerate: '로컬 Spine으로 Spine {version} 프로젝트 생성' },
|
||||
spine: { title: 'Spine 속성', resources: 'Spine 리소스', animations: 'Spine 애니메이션', hierarchy: '계층 트리', xPosition: 'X 위치', yPosition: 'Y 위치', rotation: '회전', startTime: '시작 시간', scaleX: 'X 크기', scaleY: 'Y 크기' },
|
||||
help: { title: '도움말', commonOps: '자주 쓰는 작업', shortcuts: '단축키', modules: '기능 모듈' },
|
||||
presets: { particleSweep: '1.파티클 스윕', barBlocks: '2.바 블록', forceTrail: '3.힘장 트레일', lightningSequence: '4.번개 시퀀스', texturePivot: '5.텍스처 피벗', subEmitter: '6.하위 이미터' },
|
||||
},
|
||||
fr: {
|
||||
common: {
|
||||
close: 'Fermer', reset: 'Réinitialiser', add: 'Ajouter', remove: 'Retirer', delete: 'Supprimer', clear: 'Effacer',
|
||||
cancel: 'Annuler', confirm: 'Confirmer', none: 'Aucun', enabled: 'Activé', disabled: 'Désactivé',
|
||||
fixed: 'Fixe', random: 'Aléatoire', curve: 'Courbe', followExport: 'Suivre l’export',
|
||||
linear: 'Linéaire', bezier: 'Bézier', above: 'Au-dessus', below: 'En dessous', left: 'Gauche', right: 'Droite',
|
||||
seconds: 's', frames: 'images',
|
||||
},
|
||||
toolbar: {
|
||||
settings: 'Paramètres', undo: 'Annuler (Ctrl+Z)', pan: 'Déplacer le canevas (Q)', translate: 'Déplacement (W)',
|
||||
rotate: 'Rotation (E)', scale: 'Échelle (R)', zoomIn: 'Zoom avant', zoomOut: 'Zoom arrière', fitView: 'Ajuster le canevas',
|
||||
toggleGrid: 'Afficher/masquer la grille', resetView: 'Réinitialiser la vue', background: 'Arrière-plan', backgroundSettings: 'Paramètres de l’arrière-plan',
|
||||
changeBackground: 'Remplacer l’image', uploadBackground: 'Importer une image', clearBackground: 'Effacer l’arrière-plan',
|
||||
noBackground: 'Aucune image', opacity: 'Opacité', help: 'Aide', openHelp: 'Ouvrir l’aide',
|
||||
},
|
||||
config: { title: 'Configuration', save: 'Enregistrer', load: 'Charger', selectPreset: 'Choisir un préréglage', noPresets: 'Aucun préréglage' },
|
||||
image: { fixed: 'Image fixe', sequence: 'Séquence', onceHide: 'Une fois, masquer à la fin', onceHold: 'Une fois, conserver la dernière image', loopForward: 'Boucle avant', loopReverse: 'Boucle arrière', weight: 'Poids %', pivot: 'Pivot de texture' },
|
||||
emission: {
|
||||
title: 'Mode d’émission', stream: 'Continu', burst: 'Rafale', normalStream: 'Continu standard', loopStream: 'Boucle continue',
|
||||
rate: 'Taux d’émission', duration: 'Durée d’émission', burstCount: 'Quantité par rafale', delay: 'Délai',
|
||||
shapeTitle: 'Forme de l’émetteur', point: 'Point', circle: 'Cercle', rect: 'Rectangle', cone: 'Cône', path: 'Chemin',
|
||||
},
|
||||
attributes: { title: 'Attributs des particules', initialParams: 'Valeurs initiales', lifecycleTitle: 'Évolution pendant la durée de vie' },
|
||||
appearance: { title: 'Apparence et ressources', opacity: 'Opacité', renderLayer: 'Calque de rendu (slot Spine)', imageResources: 'Ressources d’image', independentAlpha: 'Opacité indépendante', off: 'Désactivé', normal: 'Normal', add: 'Ajout', multiply: 'Multiplication', screen: 'Écran' },
|
||||
scene: { title: 'Objets de scène', particle: 'Particules', subEmitter: 'Sous-émetteur', collision: 'Collision', path: 'Chemin', positionX: 'Position X', positionY: 'Position Y', offsetX: 'Décalage X', offsetY: 'Décalage Y', rotation: 'Rotation', scaleX: 'Échelle X', scaleY: 'Échelle Y', xPosition: 'Position X', yPosition: 'Position Y', scaleXShort: 'Échelle X', scaleYShort: 'Échelle Y', seed: 'Graine aléatoire' },
|
||||
modifiers: {
|
||||
title: 'Modificateurs', damping: 'Amortissement', enableNoise: 'Activer le bruit de mouvement', enableGravity: 'Activer la gravité', enableWind: 'Activer le vent',
|
||||
enableForceField: 'Activer le champ de force', enableVortex: 'Activer le tourbillon', enableAttraction: 'Activer l’attraction', enableTrail: 'Activer la traînée',
|
||||
enableFollow: 'Activer le suivi de l’émetteur', enableCollision: 'Activer la collision', enableSubEmitter: 'Activer les sous-émetteurs',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: 'Lecture en boucle continue', abLoop: 'Boucle indépendante de plage A/B', abLoopShort: 'Boucle AB',
|
||||
emission: 'Émission', particleLife: 'Particules actives', spineAnimation: 'Animation Spine', ownerAnimation: 'Animation associée', frameStatus: 'Image {current} / {total}',
|
||||
},
|
||||
export: { title: 'Paramètres d’export', spineVersion: 'Version de Spine', fps: 'FPS d’export', exportJson: 'Exporter Spine JSON', exportImages: 'Exporter les images ZIP', connectorReady: 'Connecteur disponible · Spine prêt', connectorOffline: 'Le connecteur Spine local n’est pas démarré', spineNotFound: 'Le connecteur est démarré, mais Spine est introuvable', notAuthorized: 'Le connecteur est démarré, mais ce site n’est pas autorisé', checking: 'Vérification', offline: 'Hors ligne', notFound: 'Spine introuvable', unauthorized: 'Non autorisé', connectorBusy: 'Recalcul et génération du projet Spine', connectorGenerate: 'Générer un projet Spine {version} avec Spine local' },
|
||||
spine: { title: 'Propriétés Spine', resources: 'Ressources Spine', animations: 'Animations Spine', hierarchy: 'Hiérarchie', xPosition: 'Position X', yPosition: 'Position Y', rotation: 'Rotation', startTime: 'Heure de début', scaleX: 'Échelle X', scaleY: 'Échelle Y' },
|
||||
help: { title: 'Aide', commonOps: 'Actions courantes', shortcuts: 'Raccourcis', modules: 'Guide des modules' },
|
||||
presets: { particleSweep: '1.Balayage de particules', barBlocks: '2.Blocs rectangulaires', forceTrail: '3.Traînée de champ de force', lightningSequence: '4.Séquence d’éclairs', texturePivot: '5.Pivot de texture', subEmitter: '6.Sous-émetteur' },
|
||||
},
|
||||
de: {
|
||||
common: {
|
||||
close: 'Schließen', reset: 'Zurücksetzen', add: 'Hinzufügen', remove: 'Entfernen', delete: 'Löschen', clear: 'Leeren',
|
||||
cancel: 'Abbrechen', confirm: 'Bestätigen', none: 'Keine', enabled: 'Aktiviert', disabled: 'Deaktiviert',
|
||||
fixed: 'Fest', random: 'Zufällig', curve: 'Kurve', followExport: 'Exporteinstellung folgen',
|
||||
linear: 'Linear', bezier: 'Bézier', above: 'Über', below: 'Unter', left: 'Links', right: 'Rechts',
|
||||
seconds: 's', frames: 'Frames',
|
||||
},
|
||||
toolbar: {
|
||||
settings: 'Einstellungen', undo: 'Rückgängig (Ctrl+Z)', pan: 'Canvas verschieben (Q)', translate: 'Verschieben (W)',
|
||||
rotate: 'Drehen (E)', scale: 'Skalieren (R)', zoomIn: 'Vergrößern', zoomOut: 'Verkleinern', fitView: 'An Canvas anpassen',
|
||||
toggleGrid: 'Raster umschalten', resetView: 'Ansicht zurücksetzen', background: 'Hintergrund', backgroundSettings: 'Hintergrundeinstellungen',
|
||||
changeBackground: 'Bild ersetzen', uploadBackground: 'Bild hochladen', clearBackground: 'Hintergrund löschen',
|
||||
noBackground: 'Kein Bild', opacity: 'Deckkraft', help: 'Hilfe', openHelp: 'Hilfe öffnen',
|
||||
},
|
||||
config: { title: 'Konfiguration', save: 'Konfiguration speichern', load: 'Konfiguration laden', selectPreset: 'Voreinstellung wählen', noPresets: 'Keine Voreinstellungen' },
|
||||
image: { fixed: 'Einzelbild', sequence: 'Sequenz', onceHide: 'Einmal, am Ende ausblenden', onceHold: 'Einmal, letztes Bild halten', loopForward: 'Vorwärts-Schleife', loopReverse: 'Rückwärts-Schleife', weight: 'Gewicht %', pivot: 'Textur-Pivot' },
|
||||
emission: {
|
||||
title: 'Emissionsmodus', stream: 'Kontinuierlich', burst: 'Burst', normalStream: 'Normaler Stream', loopStream: 'Loop-Stream',
|
||||
rate: 'Emissionsrate', duration: 'Emissionsdauer', burstCount: 'Menge pro Burst', delay: 'Verzögerung',
|
||||
shapeTitle: 'Emitterform', point: 'Punkt', circle: 'Kreis', rect: 'Rechteck', cone: 'Kegel', path: 'Pfad',
|
||||
},
|
||||
attributes: { title: 'Partikeleigenschaften', initialParams: 'Initialwerte', lifecycleTitle: 'Änderung über die Lebensdauer' },
|
||||
appearance: { title: 'Aussehen und Ressourcen', opacity: 'Deckkraft', renderLayer: 'Renderebene (Spine-Slot)', imageResources: 'Bildressourcen', independentAlpha: 'Unabhängige Deckkraft', off: 'Aus', normal: 'Normal', add: 'Addieren', multiply: 'Multiplizieren', screen: 'Bildschirm' },
|
||||
scene: { title: 'Szenenobjekte', particle: 'Partikel', subEmitter: 'Sub-Emitter', collision: 'Kollision', path: 'Pfad', positionX: 'X-Position', positionY: 'Y-Position', offsetX: 'X-Versatz', offsetY: 'Y-Versatz', rotation: 'Drehung', scaleX: 'X-Skalierung', scaleY: 'Y-Skalierung', xPosition: 'X-Position', yPosition: 'Y-Position', scaleXShort: 'X-Skalierung', scaleYShort: 'Y-Skalierung', seed: 'Zufallsseed' },
|
||||
modifiers: {
|
||||
title: 'Modifikatoren', damping: 'Dämpfung', enableNoise: 'Bewegungsrauschen aktivieren', enableGravity: 'Schwerkraft aktivieren', enableWind: 'Wind aktivieren',
|
||||
enableForceField: 'Kraftfeld aktivieren', enableVortex: 'Wirbel aktivieren', enableAttraction: 'Anziehung aktivieren', enableTrail: 'Schweif aktivieren',
|
||||
enableFollow: 'Emitter-Verfolgung aktivieren', enableCollision: 'Kollision aktivieren', enableSubEmitter: 'Sub-Emitter aktivieren',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: 'Dauerhaft in Schleife abspielen', abLoop: 'Unabhängige A/B-Bereichsschleife', abLoopShort: 'AB-Schleife',
|
||||
emission: 'Emission', particleLife: 'Aktive Partikel', spineAnimation: 'Spine-Animation', ownerAnimation: 'Zugehörige Animation', frameStatus: 'Frame {current} / {total}',
|
||||
},
|
||||
export: { title: 'Exporteinstellungen', spineVersion: 'Spine-Version', fps: 'Export-FPS', exportJson: 'Spine JSON exportieren', exportImages: 'Bilder-ZIP exportieren', connectorReady: 'Connector verfügbar · Spine bereit', connectorOffline: 'Der lokale Spine-Connector läuft nicht', spineNotFound: 'Der Connector läuft, aber Spine wurde nicht gefunden', notAuthorized: 'Der Connector läuft, aber diese Website ist nicht autorisiert', checking: 'Prüfung', offline: 'Offline', notFound: 'Spine nicht gefunden', unauthorized: 'Nicht autorisiert', connectorBusy: 'Spine-Projekt wird neu berechnet und erstellt', connectorGenerate: 'Spine-{version}-Projekt mit lokalem Spine erstellen' },
|
||||
spine: { title: 'Spine-Eigenschaften', resources: 'Spine-Ressourcen', animations: 'Spine-Animationen', hierarchy: 'Hierarchie', xPosition: 'X-Position', yPosition: 'Y-Position', rotation: 'Drehung', startTime: 'Startzeit', scaleX: 'X-Skalierung', scaleY: 'Y-Skalierung' },
|
||||
help: { title: 'Hilfe', commonOps: 'Häufige Aktionen', shortcuts: 'Tastenkürzel', modules: 'Modulhandbuch' },
|
||||
presets: { particleSweep: '1.Partikel-Sweep', barBlocks: '2.Balkenblöcke', forceTrail: '3.Kraftfeldschweif', lightningSequence: '4.Blitzsequenz', texturePivot: '5.Textur-Pivot', subEmitter: '6.Sub-Emitter' },
|
||||
},
|
||||
'pt-BR': {
|
||||
common: {
|
||||
close: 'Fechar', reset: 'Redefinir', add: 'Adicionar', remove: 'Remover', delete: 'Excluir', clear: 'Limpar',
|
||||
cancel: 'Cancelar', confirm: 'Confirmar', none: 'Nenhum', enabled: 'Ativado', disabled: 'Desativado',
|
||||
fixed: 'Fixo', random: 'Aleatório', curve: 'Curva', followExport: 'Seguir exportação',
|
||||
linear: 'Linear', bezier: 'Bézier', above: 'Acima', below: 'Abaixo', left: 'Esquerda', right: 'Direita',
|
||||
seconds: 's', frames: 'quadros',
|
||||
},
|
||||
toolbar: {
|
||||
settings: 'Configurações', undo: 'Desfazer (Ctrl+Z)', pan: 'Mover tela (Q)', translate: 'Mover (W)',
|
||||
rotate: 'Girar (E)', scale: 'Escalar (R)', zoomIn: 'Ampliar', zoomOut: 'Reduzir', fitView: 'Ajustar à tela',
|
||||
toggleGrid: 'Alternar grade', resetView: 'Redefinir visualização', background: 'Fundo', backgroundSettings: 'Configurações do fundo',
|
||||
changeBackground: 'Trocar imagem', uploadBackground: 'Enviar imagem', clearBackground: 'Limpar fundo',
|
||||
noBackground: 'Nenhuma imagem', opacity: 'Opacidade', help: 'Ajuda', openHelp: 'Abrir ajuda',
|
||||
},
|
||||
config: { title: 'Gerenciamento de configuração', save: 'Salvar configuração', load: 'Carregar configuração', selectPreset: 'Selecionar predefinição', noPresets: 'Nenhuma predefinição' },
|
||||
image: { fixed: 'Imagem única', sequence: 'Sequência', onceHide: 'Uma vez, ocultar no final', onceHold: 'Uma vez, manter último quadro', loopForward: 'Loop para frente', loopReverse: 'Loop reverso', weight: 'Peso %', pivot: 'Pivô da textura' },
|
||||
emission: {
|
||||
title: 'Modo de emissão', stream: 'Contínuo', burst: 'Explosão', normalStream: 'Contínuo normal', loopStream: 'Loop contínuo',
|
||||
rate: 'Taxa de emissão', duration: 'Duração da emissão', burstCount: 'Quantidade por explosão', delay: 'Atraso',
|
||||
shapeTitle: 'Forma do emissor', point: 'Ponto', circle: 'Círculo', rect: 'Retângulo', cone: 'Cone', path: 'Caminho',
|
||||
},
|
||||
attributes: { title: 'Atributos das partículas', initialParams: 'Valores iniciais', lifecycleTitle: 'Alterações durante o tempo de vida' },
|
||||
appearance: { title: 'Aparência e recursos', opacity: 'Opacidade', renderLayer: 'Camada de renderização (slot Spine)', imageResources: 'Recursos de imagem', independentAlpha: 'Opacidade independente', off: 'Desligado', normal: 'Normal', add: 'Adição', multiply: 'Multiplicação', screen: 'Tela' },
|
||||
scene: { title: 'Objetos da cena', particle: 'Partículas', subEmitter: 'Subemissor', collision: 'Colisão', path: 'Caminho', positionX: 'Posição X', positionY: 'Posição Y', offsetX: 'Deslocamento X', offsetY: 'Deslocamento Y', rotation: 'Rotação', scaleX: 'Escala X', scaleY: 'Escala Y', xPosition: 'Posição X', yPosition: 'Posição Y', scaleXShort: 'Escala X', scaleYShort: 'Escala Y', seed: 'Semente aleatória' },
|
||||
modifiers: {
|
||||
title: 'Modificadores', damping: 'Amortecimento', enableNoise: 'Ativar ruído de movimento', enableGravity: 'Ativar gravidade', enableWind: 'Ativar vento',
|
||||
enableForceField: 'Ativar campo de força', enableVortex: 'Ativar vórtice', enableAttraction: 'Ativar atração', enableTrail: 'Ativar rastro',
|
||||
enableFollow: 'Ativar seguimento do emissor', enableCollision: 'Ativar colisão', enableSubEmitter: 'Ativar subemissores',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: 'Reprodução em loop contínuo', abLoop: 'Loop independente do intervalo A/B', abLoopShort: 'Loop AB',
|
||||
emission: 'Emissão', particleLife: 'Partículas ativas', spineAnimation: 'Animação Spine', ownerAnimation: 'Animação associada', frameStatus: 'Quadro {current} / {total}',
|
||||
},
|
||||
export: { title: 'Configurações de exportação', spineVersion: 'Versão do Spine', fps: 'FPS de exportação', exportJson: 'Exportar Spine JSON', exportImages: 'Exportar imagens ZIP', connectorReady: 'Conector disponível · Spine pronto', connectorOffline: 'O conector local do Spine não está em execução', spineNotFound: 'O conector está ativo, mas o Spine não foi encontrado', notAuthorized: 'O conector está ativo, mas este site não está autorizado', checking: 'Verificando', offline: 'Offline', notFound: 'Spine não encontrado', unauthorized: 'Não autorizado', connectorBusy: 'Recalculando e gerando o projeto Spine', connectorGenerate: 'Gerar projeto Spine {version} com o Spine local' },
|
||||
spine: { title: 'Propriedades do Spine', resources: 'Recursos Spine', animations: 'Animações Spine', hierarchy: 'Hierarquia', xPosition: 'Posição X', yPosition: 'Posição Y', rotation: 'Rotação', startTime: 'Tempo inicial', scaleX: 'Escala X', scaleY: 'Escala Y' },
|
||||
help: { title: 'Ajuda', commonOps: 'Ações comuns', shortcuts: 'Atalhos', modules: 'Guia dos módulos' },
|
||||
presets: { particleSweep: '1.Varredura de partículas', barBlocks: '2.Blocos retangulares', forceTrail: '3.Rastro de campo de força', lightningSequence: '4.Sequência de raios', texturePivot: '5.Pivô da textura', subEmitter: '6.Subemissor' },
|
||||
},
|
||||
es: {
|
||||
common: {
|
||||
close: 'Cerrar', reset: 'Restablecer', add: 'Añadir', remove: 'Quitar', delete: 'Eliminar', clear: 'Limpiar',
|
||||
cancel: 'Cancelar', confirm: 'Confirmar', none: 'Ninguno', enabled: 'Activado', disabled: 'Desactivado',
|
||||
fixed: 'Fijo', random: 'Aleatorio', curve: 'Curva', followExport: 'Seguir exportación',
|
||||
linear: 'Lineal', bezier: 'Bézier', above: 'Arriba', below: 'Abajo', left: 'Izquierda', right: 'Derecha',
|
||||
seconds: 's', frames: 'fotogramas',
|
||||
},
|
||||
toolbar: {
|
||||
settings: 'Ajustes', undo: 'Deshacer (Ctrl+Z)', pan: 'Mover lienzo (Q)', translate: 'Mover (W)',
|
||||
rotate: 'Girar (E)', scale: 'Escalar (R)', zoomIn: 'Acercar', zoomOut: 'Alejar', fitView: 'Ajustar al lienzo',
|
||||
toggleGrid: 'Mostrar/ocultar cuadrícula', resetView: 'Restablecer vista', background: 'Fondo', backgroundSettings: 'Ajustes del fondo',
|
||||
changeBackground: 'Cambiar imagen', uploadBackground: 'Subir imagen', clearBackground: 'Borrar fondo',
|
||||
noBackground: 'Sin imagen', opacity: 'Opacidad', help: 'Ayuda', openHelp: 'Abrir ayuda',
|
||||
},
|
||||
config: { title: 'Gestión de configuración', save: 'Guardar configuración', load: 'Cargar configuración', selectPreset: 'Seleccionar preajuste', noPresets: 'Sin preajustes' },
|
||||
image: { fixed: 'Imagen única', sequence: 'Secuencia', onceHide: 'Una vez, ocultar al final', onceHold: 'Una vez, mantener último fotograma', loopForward: 'Bucle hacia delante', loopReverse: 'Bucle inverso', weight: 'Peso %', pivot: 'Pivote de textura' },
|
||||
emission: {
|
||||
title: 'Modo de emisión', stream: 'Continuo', burst: 'Ráfaga', normalStream: 'Continuo normal', loopStream: 'Bucle continuo',
|
||||
rate: 'Tasa de emisión', duration: 'Duración de emisión', burstCount: 'Cantidad por ráfaga', delay: 'Retardo',
|
||||
shapeTitle: 'Forma del emisor', point: 'Punto', circle: 'Círculo', rect: 'Rectángulo', cone: 'Cono', path: 'Ruta',
|
||||
},
|
||||
attributes: { title: 'Atributos de partículas', initialParams: 'Valores iniciales', lifecycleTitle: 'Cambios durante la vida útil' },
|
||||
appearance: { title: 'Apariencia y recursos', opacity: 'Opacidad', renderLayer: 'Capa de renderizado (slot de Spine)', imageResources: 'Recursos de imagen', independentAlpha: 'Opacidad independiente', off: 'Desactivado', normal: 'Normal', add: 'Suma', multiply: 'Multiplicación', screen: 'Pantalla' },
|
||||
scene: { title: 'Objetos de escena', particle: 'Partículas', subEmitter: 'Subemisor', collision: 'Colisión', path: 'Ruta', positionX: 'Posición X', positionY: 'Posición Y', offsetX: 'Desplazamiento X', offsetY: 'Desplazamiento Y', rotation: 'Rotación', scaleX: 'Escala X', scaleY: 'Escala Y', xPosition: 'Posición X', yPosition: 'Posición Y', scaleXShort: 'Escala X', scaleYShort: 'Escala Y', seed: 'Semilla aleatoria' },
|
||||
modifiers: {
|
||||
title: 'Modificadores', damping: 'Amortiguación', enableNoise: 'Activar ruido de movimiento', enableGravity: 'Activar gravedad', enableWind: 'Activar viento',
|
||||
enableForceField: 'Activar campo de fuerza', enableVortex: 'Activar vórtice', enableAttraction: 'Activar atracción', enableTrail: 'Activar estela',
|
||||
enableFollow: 'Activar seguimiento del emisor', enableCollision: 'Activar colisión', enableSubEmitter: 'Activar subemisores',
|
||||
},
|
||||
timeline: {
|
||||
continuousLoop: 'Reproducción en bucle continuo', abLoop: 'Bucle independiente del rango A/B', abLoopShort: 'Bucle AB',
|
||||
emission: 'Emisión', particleLife: 'Partículas activas', spineAnimation: 'Animación de Spine', ownerAnimation: 'Animación asociada', frameStatus: 'Fotograma {current} / {total}',
|
||||
},
|
||||
export: { title: 'Ajustes de exportación', spineVersion: 'Versión de Spine', fps: 'FPS de exportación', exportJson: 'Exportar Spine JSON', exportImages: 'Exportar imágenes ZIP', connectorReady: 'Conector disponible · Spine listo', connectorOffline: 'El conector local de Spine no está iniciado', spineNotFound: 'El conector está iniciado, pero no se encontró Spine', notAuthorized: 'El conector está iniciado, pero este sitio no está autorizado', checking: 'Comprobando', offline: 'Sin conexión', notFound: 'Spine no encontrado', unauthorized: 'No autorizado', connectorBusy: 'Recalculando y generando el proyecto de Spine', connectorGenerate: 'Generar proyecto Spine {version} con Spine local' },
|
||||
spine: { title: 'Propiedades de Spine', resources: 'Recursos de Spine', animations: 'Animaciones de Spine', hierarchy: 'Jerarquía', xPosition: 'Posición X', yPosition: 'Posición Y', rotation: 'Rotación', startTime: 'Tiempo inicial', scaleX: 'Escala X', scaleY: 'Escala Y' },
|
||||
help: { title: 'Ayuda', commonOps: 'Acciones comunes', shortcuts: 'Atajos', modules: 'Guía de módulos' },
|
||||
presets: { particleSweep: '1.Barrido de partículas', barBlocks: '2.Bloques rectangulares', forceTrail: '3.Estela de campo de fuerza', lightningSequence: '4.Secuencia de rayos', texturePivot: '5.Pivote de textura', subEmitter: '6.Subemisor' },
|
||||
},
|
||||
}
|
||||
|
||||
function merge(target, source) {
|
||||
for (const [key, value] of Object.entries(source)) {
|
||||
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
||||
target[key] ||= {}
|
||||
merge(target[key], value)
|
||||
} else {
|
||||
target[key] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const [locale, values] of Object.entries(overrides)) {
|
||||
const path = `src/i18n/locales/${locale}.json`
|
||||
const messages = JSON.parse(await readFile(path, 'utf8'))
|
||||
merge(messages, values)
|
||||
await writeFile(path, `${JSON.stringify(messages, null, 2)}\n`)
|
||||
}
|
||||
|
||||
console.log('Applied terminology overrides for all added locales.')
|
||||
@@ -0,0 +1,136 @@
|
||||
import { readFile, writeFile } from 'node:fs/promises'
|
||||
|
||||
const source = JSON.parse(await readFile('src/i18n/locales/zh-CN.json', 'utf8'))
|
||||
|
||||
const localeConfigs = {
|
||||
'zh-TW': { title: 'Spine粒子編輯器-Yeomai' },
|
||||
ja: { title: 'Spineパーティクルエディター-Yeomai' },
|
||||
ko: { title: 'Spine 파티클 에디터-Yeomai' },
|
||||
fr: { title: 'Spine Particle Editor-Yeomai' },
|
||||
de: { title: 'Spine Particle Editor-Yeomai' },
|
||||
'pt-BR': { title: 'Spine Particle Editor-Yeomai' },
|
||||
es: { title: 'Spine Particle Editor-Yeomai' },
|
||||
}
|
||||
|
||||
const nativeLanguageLabels = {
|
||||
zhCN: '中文',
|
||||
zhTW: '繁體中文',
|
||||
en: 'English',
|
||||
ja: '日本語',
|
||||
ko: '한국어',
|
||||
fr: 'Français',
|
||||
de: 'Deutsch',
|
||||
ptBR: 'Português',
|
||||
es: 'Español',
|
||||
}
|
||||
|
||||
const protectedTerms = [
|
||||
'SpineParticle', 'Spine', 'Yeomai', 'JSON', 'FPS', 'ZIP', 'PNG', 'JPEG',
|
||||
'WebP', 'WebGL', 'Bézier', 'Bezier', 'Mesh', 'Atlas', 'Ctrl', 'macOS',
|
||||
'Windows', 'Universal', 'A/B', 'AB',
|
||||
]
|
||||
|
||||
function flatten(value, path = '', result = []) {
|
||||
for (const [key, child] of Object.entries(value)) {
|
||||
const nextPath = path ? `${path}.${key}` : key
|
||||
if (child && typeof child === 'object' && !Array.isArray(child)) flatten(child, nextPath, result)
|
||||
else result.push({ path: nextPath, value: child })
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
function setPath(target, path, value) {
|
||||
const parts = path.split('.')
|
||||
let current = target
|
||||
for (let index = 0; index < parts.length - 1; index++) {
|
||||
current = current[parts[index]] ||= {}
|
||||
}
|
||||
current[parts.at(-1)] = value
|
||||
}
|
||||
|
||||
function protectText(text) {
|
||||
const values = []
|
||||
const escapedTerms = protectedTerms
|
||||
.sort((a, b) => b.length - a.length)
|
||||
.map((term) => term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
|
||||
const pattern = new RegExp(`\\{[a-zA-Z0-9_]+\\}|\\b(?:${escapedTerms.join('|')})\\b`, 'g')
|
||||
const protectedText = String(text).replace(pattern, (match) => {
|
||||
const token = `ZXQV${values.length}QXZ`
|
||||
values.push(match)
|
||||
return token
|
||||
})
|
||||
return { protectedText, values }
|
||||
}
|
||||
|
||||
function restoreText(text, values) {
|
||||
return String(text).replace(/ZXQV(\d+)QXZ/g, (_match, index) => values[Number(index)] ?? '')
|
||||
}
|
||||
|
||||
async function translateBatch(texts, target) {
|
||||
const params = new URLSearchParams({
|
||||
client: 'dict-chrome-ex',
|
||||
sl: 'zh-CN',
|
||||
tl: target,
|
||||
})
|
||||
for (const text of texts) params.append('q', text)
|
||||
const response = await fetch(`https://clients5.google.com/translate_a/t?${params}`, {
|
||||
signal: AbortSignal.timeout(30000),
|
||||
})
|
||||
if (!response.ok) throw new Error(`Translation HTTP ${response.status}`)
|
||||
const body = await response.json()
|
||||
if (!Array.isArray(body)) throw new Error('Unexpected translation response')
|
||||
if (body.length !== texts.length) {
|
||||
throw new Error(`Translation count mismatch: expected ${texts.length}, got ${body.length}`)
|
||||
}
|
||||
return body.map((value) => typeof value === 'string' ? value : JSON.stringify(value))
|
||||
}
|
||||
|
||||
async function translateLocale(code, config) {
|
||||
const entries = flatten(source).filter(({ path }) => !path.startsWith('language.') && path !== 'app.title')
|
||||
const translated = {}
|
||||
const batches = []
|
||||
let batch = []
|
||||
let encodedLength = 0
|
||||
for (const entry of entries) {
|
||||
const protectedEntry = protectText(entry.value)
|
||||
const item = { ...entry, ...protectedEntry }
|
||||
const itemLength = encodeURIComponent(item.protectedText).length + 3
|
||||
if (batch.length && encodedLength + itemLength > 7000) {
|
||||
batches.push(batch)
|
||||
batch = []
|
||||
encodedLength = 0
|
||||
}
|
||||
batch.push(item)
|
||||
encodedLength += itemLength
|
||||
}
|
||||
if (batch.length) batches.push(batch)
|
||||
|
||||
for (let index = 0; index < batches.length; index++) {
|
||||
const current = batches[index]
|
||||
let values
|
||||
for (let attempt = 0; attempt < 4; attempt++) {
|
||||
try {
|
||||
values = await translateBatch(current.map((entry) => entry.protectedText), code)
|
||||
break
|
||||
} catch (error) {
|
||||
if (attempt === 3) throw error
|
||||
await new Promise((resolve) => setTimeout(resolve, 1800 * (attempt + 1)))
|
||||
}
|
||||
}
|
||||
current.forEach((entry, itemIndex) => {
|
||||
setPath(translated, entry.path, restoreText(values[itemIndex], entry.values))
|
||||
})
|
||||
process.stdout.write(`${code}: ${index + 1}/${batches.length}\n`)
|
||||
await new Promise((resolve) => setTimeout(resolve, 500))
|
||||
}
|
||||
|
||||
translated.app.title = config.title
|
||||
translated.language = nativeLanguageLabels
|
||||
await writeFile(`src/i18n/locales/${code}.json`, `${JSON.stringify(translated, null, 2)}\n`)
|
||||
}
|
||||
|
||||
for (const [code, config] of Object.entries(localeConfigs)) {
|
||||
await translateLocale(code, config)
|
||||
}
|
||||
|
||||
console.log('Generated locale drafts. Review and override key terminology before release.')
|
||||
+53
-14
@@ -1,8 +1,12 @@
|
||||
import { readFile } from 'node:fs/promises'
|
||||
import { build } from 'esbuild'
|
||||
|
||||
const zh = JSON.parse(await readFile('src/i18n/locales/zh-CN.json', 'utf8'))
|
||||
const en = JSON.parse(await readFile('src/i18n/locales/en.json', 'utf8'))
|
||||
const localeCodes = ['zh-CN', 'zh-TW', 'en', 'ja', 'ko', 'fr', 'de', 'pt-BR', 'es']
|
||||
const localeMessages = Object.fromEntries(await Promise.all(localeCodes.map(async (code) => [
|
||||
code,
|
||||
JSON.parse(await readFile(`src/i18n/locales/${code}.json`, 'utf8')),
|
||||
])))
|
||||
const zh = localeMessages['zh-CN']
|
||||
|
||||
function flattenKeys(value, prefix = '') {
|
||||
const keys = []
|
||||
@@ -18,14 +22,41 @@ function flattenKeys(value, prefix = '') {
|
||||
}
|
||||
|
||||
const zhKeys = flattenKeys(zh)
|
||||
const enKeys = flattenKeys(en)
|
||||
const missingInEnglish = zhKeys.filter((key) => !enKeys.includes(key))
|
||||
const missingInChinese = enKeys.filter((key) => !zhKeys.includes(key))
|
||||
if (missingInEnglish.length || missingInChinese.length) {
|
||||
throw new Error([
|
||||
missingInEnglish.length ? `Missing in English: ${missingInEnglish.join(', ')}` : '',
|
||||
missingInChinese.length ? `Missing in Chinese: ${missingInChinese.join(', ')}` : '',
|
||||
].filter(Boolean).join('\n'))
|
||||
|
||||
function getPath(value, path) {
|
||||
return path.split('.').reduce((current, key) => current?.[key], value)
|
||||
}
|
||||
function placeholders(value) {
|
||||
return [...String(value).matchAll(/\{[a-zA-Z0-9_]+\}/g)].map((match) => match[0]).sort()
|
||||
}
|
||||
|
||||
for (const code of localeCodes.slice(1)) {
|
||||
const messages = localeMessages[code]
|
||||
const keys = flattenKeys(messages)
|
||||
const missing = zhKeys.filter((key) => !keys.includes(key))
|
||||
const extra = keys.filter((key) => !zhKeys.includes(key))
|
||||
if (missing.length || extra.length) {
|
||||
throw new Error([
|
||||
missing.length ? `${code} missing: ${missing.join(', ')}` : '',
|
||||
extra.length ? `${code} extra: ${extra.join(', ')}` : '',
|
||||
].filter(Boolean).join('\n'))
|
||||
}
|
||||
for (const key of zhKeys) {
|
||||
if (!String(getPath(messages, key) ?? '').trim()) {
|
||||
throw new Error(`${code}.${key} is empty`)
|
||||
}
|
||||
const expected = placeholders(getPath(zh, key))
|
||||
const actual = placeholders(getPath(messages, key))
|
||||
if (JSON.stringify(expected) !== JSON.stringify(actual)) {
|
||||
throw new Error(`${code}.${key} placeholders differ: ${expected.join(',')} != ${actual.join(',')}`)
|
||||
}
|
||||
}
|
||||
if (JSON.stringify(messages).includes('ZXQV') || /\uE000|\uE001|\uE002/.test(JSON.stringify(messages))) {
|
||||
throw new Error(`${code} contains unresolved translation tokens`)
|
||||
}
|
||||
if (!String(messages.app?.title || '').includes('Yeomai')) {
|
||||
throw new Error(`${code} title must keep the Yeomai brand`)
|
||||
}
|
||||
}
|
||||
|
||||
const bundled = await build({
|
||||
@@ -42,12 +73,20 @@ const i18nModule = await import(
|
||||
|
||||
const cases = [
|
||||
[null, ['zh-CN'], 'zh-CN'],
|
||||
[null, ['zh-Hant-TW'], 'zh-CN'],
|
||||
[null, ['zh-Hant-TW'], 'zh-TW'],
|
||||
[null, ['zh-HK'], 'zh-TW'],
|
||||
[null, ['en-US'], 'en'],
|
||||
[null, ['fr-FR'], 'en'],
|
||||
[null, ['ko-KR', 'en-US'], 'en'],
|
||||
[null, ['ja-JP'], 'ja'],
|
||||
[null, ['ko-KR'], 'ko'],
|
||||
[null, ['fr-FR'], 'fr'],
|
||||
[null, ['de-DE'], 'de'],
|
||||
[null, ['pt-PT'], 'pt-BR'],
|
||||
[null, ['es-MX'], 'es'],
|
||||
[null, ['it-IT'], 'en'],
|
||||
[null, ['it-IT', 'de-DE'], 'de'],
|
||||
['en', ['zh-CN'], 'en'],
|
||||
['zh-CN', ['en-US'], 'zh-CN'],
|
||||
['ja', ['en-US'], 'ja'],
|
||||
]
|
||||
for (const [saved, browserLanguages, expected] of cases) {
|
||||
const actual = i18nModule.resolveAppLocale(saved, browserLanguages)
|
||||
@@ -56,4 +95,4 @@ for (const [saved, browserLanguages, expected] of cases) {
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`i18n 校验通过:${zhKeys.length} 个消息键,中英语言包一致,自动语言与缓存优先级正确`)
|
||||
console.log(`i18n 校验通过:${localeCodes.length} 种语言、${zhKeys.length} 个消息键,键与占位符一致,自动语言与缓存优先级正确`)
|
||||
+35
-1
@@ -1,10 +1,24 @@
|
||||
import { createI18n } from 'vue-i18n'
|
||||
import de from './locales/de.json'
|
||||
import en from './locales/en.json'
|
||||
import es from './locales/es.json'
|
||||
import fr from './locales/fr.json'
|
||||
import ja from './locales/ja.json'
|
||||
import ko from './locales/ko.json'
|
||||
import ptBR from './locales/pt-BR.json'
|
||||
import zhCN from './locales/zh-CN.json'
|
||||
import zhTW from './locales/zh-TW.json'
|
||||
|
||||
export const SUPPORTED_LOCALES = [
|
||||
{ code: 'zh-CN', label: '中文' },
|
||||
{ code: 'zh-TW', label: '繁體中文' },
|
||||
{ code: 'en', label: 'English' },
|
||||
{ code: 'ja', label: '日本語' },
|
||||
{ code: 'ko', label: '한국어' },
|
||||
{ code: 'fr', label: 'Français' },
|
||||
{ code: 'de', label: 'Deutsch' },
|
||||
{ code: 'pt-BR', label: 'Português' },
|
||||
{ code: 'es', label: 'Español' },
|
||||
] as const
|
||||
|
||||
export type AppLocale = typeof SUPPORTED_LOCALES[number]['code']
|
||||
@@ -17,7 +31,20 @@ function isAppLocale(value: unknown): value is AppLocale {
|
||||
|
||||
export function resolveAppLocale(saved: unknown, browserLanguages: readonly string[]): AppLocale {
|
||||
if (isAppLocale(saved)) return saved
|
||||
return browserLanguages.some((language) => language.toLowerCase().startsWith('zh')) ? 'zh-CN' : 'en'
|
||||
for (const browserLanguage of browserLanguages) {
|
||||
const language = browserLanguage.toLowerCase()
|
||||
if (language.startsWith('zh')) {
|
||||
return language.includes('hant') || /-(tw|hk|mo)(-|$)/.test(language) ? 'zh-TW' : 'zh-CN'
|
||||
}
|
||||
if (language.startsWith('ja')) return 'ja'
|
||||
if (language.startsWith('ko')) return 'ko'
|
||||
if (language.startsWith('fr')) return 'fr'
|
||||
if (language.startsWith('de')) return 'de'
|
||||
if (language.startsWith('pt')) return 'pt-BR'
|
||||
if (language.startsWith('es')) return 'es'
|
||||
if (language.startsWith('en')) return 'en'
|
||||
}
|
||||
return 'en'
|
||||
}
|
||||
|
||||
function detectInitialLocale(): AppLocale {
|
||||
@@ -45,7 +72,14 @@ export const i18n = createI18n({
|
||||
fallbackLocale: 'en',
|
||||
messages: {
|
||||
'zh-CN': zhCN,
|
||||
'zh-TW': zhTW,
|
||||
en,
|
||||
ja,
|
||||
ko,
|
||||
fr,
|
||||
de,
|
||||
'pt-BR': ptBR,
|
||||
es,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "Ziehen Sie, um die Höhe der Zeitleiste anzupassen",
|
||||
"systems": "System",
|
||||
"particlesBones": "Partikel (Knochen)",
|
||||
"rootBone": "Wurzelknochen",
|
||||
"hudTip": "Radzoom · Klicken Sie mit der linken Maustaste, um die Leinwand zu ziehen",
|
||||
"title": "Spine-Partikeleditor - Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "Schließen",
|
||||
"reset": "Zurücksetzen",
|
||||
"add": "Hinzufügen",
|
||||
"remove": "Entfernen",
|
||||
"delete": "Löschen",
|
||||
"clear": "Leeren",
|
||||
"cancel": "Abbrechen",
|
||||
"confirm": "Bestätigen",
|
||||
"none": "Keine",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"fixed": "Fest",
|
||||
"random": "Zufällig",
|
||||
"curve": "Kurve",
|
||||
"followExport": "Exporteinstellung folgen",
|
||||
"linear": "Linear",
|
||||
"bezier": "Bézier",
|
||||
"above": "Über",
|
||||
"below": "Unter",
|
||||
"left": "Links",
|
||||
"right": "Rechts",
|
||||
"seconds": "s",
|
||||
"frames": "Frames"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "Einstellungen",
|
||||
"undo": "Rückgängig (Ctrl+Z)",
|
||||
"pan": "Canvas verschieben (Q)",
|
||||
"translate": "Verschieben (W)",
|
||||
"rotate": "Drehen (E)",
|
||||
"scale": "Skalieren (R)",
|
||||
"zoomIn": "Vergrößern",
|
||||
"zoomOut": "Verkleinern",
|
||||
"fitView": "An Canvas anpassen",
|
||||
"toggleGrid": "Raster umschalten",
|
||||
"resetView": "Ansicht zurücksetzen",
|
||||
"background": "Hintergrund",
|
||||
"backgroundSettings": "Hintergrundeinstellungen",
|
||||
"changeBackground": "Bild ersetzen",
|
||||
"uploadBackground": "Bild hochladen",
|
||||
"clearBackground": "Hintergrund löschen",
|
||||
"noBackground": "Kein Bild",
|
||||
"backgroundX": "X-Versatz des Hintergrundbilds",
|
||||
"backgroundY": "Y-Versatz des Hintergrundbilds",
|
||||
"backgroundOpacity": "Transparenz des Hintergrundbilds",
|
||||
"opacity": "Deckkraft",
|
||||
"help": "Hilfe",
|
||||
"openHelp": "Hilfe öffnen"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Systemeinstellungen",
|
||||
"layout": "Schnittstellenlayout",
|
||||
"parameterPanelPosition": "Position des Parameterfelds",
|
||||
"panelOnRight": "Das Parameterfeld wird rechts angezeigt",
|
||||
"history": "Operationsgeschichte",
|
||||
"maxUndo": "Maximale Anzahl Schritte zurück",
|
||||
"canvasGuides": "Hilfsdisplay aus Leinwand",
|
||||
"emitter": "Startpunkt",
|
||||
"bones": "Knochenverbindung",
|
||||
"bonePointSize": "Größe der Knochenpunktzeichnung",
|
||||
"boneAxisSize": "Zeichnungsgröße der Achse",
|
||||
"skinMesh": "enthäutetes Netz",
|
||||
"enableTicks": "Häkchen aktivieren",
|
||||
"tickFontSize": "Textgröße skalieren",
|
||||
"tickWidth": "Dicke der Teilstriche",
|
||||
"axisColor": "Achsenfarbe",
|
||||
"showAxisLabels": "Skalenwert anzeigen",
|
||||
"cacheNote": "Die gesamten Systemeinstellungen werden automatisch im aktuellen Browser gespeichert"
|
||||
},
|
||||
"config": {
|
||||
"title": "Konfiguration",
|
||||
"save": "Konfiguration speichern",
|
||||
"saveTitle": "Alle Editorkonfigurationen speichern (Ctrl+S)",
|
||||
"load": "Konfiguration laden",
|
||||
"loadTitle": "Lokale Editorkonfiguration laden",
|
||||
"presets": "Voreinstellungsliste",
|
||||
"selectPreset": "Voreinstellung wählen",
|
||||
"noPresets": "Keine Voreinstellungen",
|
||||
"saved": "Die Konfiguration wurde lokal gespeichert",
|
||||
"loading": "Konfiguration wird geladen…",
|
||||
"loaded": "Geladen: {name}",
|
||||
"presetLoading": "Voreinstellungen werden geladen…",
|
||||
"presetLoaded": "Voreinstellung geladen: {name}",
|
||||
"presetNamingError": "{message}, bitte überprüfen Sie die Standarddateibenennung",
|
||||
"presetTransferTitle": "Voreinstellung laden",
|
||||
"presetDownloading": "{file} wird heruntergeladen…",
|
||||
"presetParsing": "Standardkonfiguration wird analysiert...",
|
||||
"presetRestoring": "Standardressourcen werden analysiert und wiederhergestellt...",
|
||||
"presetComplete": "Das Laden der Voreinstellungen ist abgeschlossen",
|
||||
"presetListError": "Voreinstellungsliste kann nicht gelesen werden",
|
||||
"presetReadError": "Voreinstellung konnte nicht gelesen werden: {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.Partikel-Sweep",
|
||||
"barBlocks": "2.Balkenblöcke",
|
||||
"forceTrail": "3.Kraftfeldschweif",
|
||||
"lightningSequence": "4.Blitzsequenz",
|
||||
"texturePivot": "5.Textur-Pivot",
|
||||
"subEmitter": "6.Sub-Emitter"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "Ziehen Sie den quadratischen Griff, um den Bogen anzupassen. · Doppelklicken Sie auf eine leere Stelle, um einen neuen zu erstellen. · Doppelklicken Sie auf einen Knoten, um ihn zu löschen",
|
||||
"linearHint": "Doppelklicken Sie auf eine leere Stelle, um eine neue zu erstellen. Doppelklicken Sie auf einen Knoten, um ihn zu löschen. Ziehen Sie einen Knoten, um ihn anzupassen.",
|
||||
"resetTitle": "Standardkurve wiederherstellen"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "Doppelklicken Sie auf das Menüband, um eine Farbmarkierung hinzuzufügen",
|
||||
"color": "Farbcode",
|
||||
"colorValue": "Farbwert der Farbskala",
|
||||
"position": "Position der Farbmarkierung",
|
||||
"addMiddle": "Fügen Sie Farbe in der Mitte hinzu",
|
||||
"delete": "Aktuelles Farbfeld löschen",
|
||||
"hint": "Doppelklicken Sie auf das Farbband, um ein neues hinzuzufügen. · Ziehen Sie die Farbmarkierung, um ihre Position anzupassen. · Doppelklicken Sie auf die Farbmarkierung, um sie zu löschen"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "Winkelversatz",
|
||||
"value": "Zahlenwert",
|
||||
"lower": "untere Grenze",
|
||||
"upper": "Obergrenze",
|
||||
"rangeLower": "Untere Bereichsgrenze",
|
||||
"rangeUpper": "Oberer Bereich",
|
||||
"curveInput": "Kurveneingabe →",
|
||||
"direction": "Startrichtung"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "Drehpunkt der Karte",
|
||||
"zoomOut": "herauszoomen",
|
||||
"zoomIn": "vergrößern",
|
||||
"expand": "Zoomen Sie auf Vollbildbetrieb",
|
||||
"interaction": "Klicken/Ziehen mit der linken Maustaste, um den Drehpunkt festzulegen · Rechtsklick zum Ziehen der Leinwand · Scrollrad zum Zoomen",
|
||||
"previewAlt": "Pivot-Punkt-Vorschau",
|
||||
"noImage": "Kein Bild ausgewählt",
|
||||
"resetCenter": "Neupositionierung in der Mitte (50 %, 50 %)",
|
||||
"coordinates": "Achspunktkoordinaten (%)",
|
||||
"rotationTest": "Achsenrotationstest",
|
||||
"static": "Trotzdem",
|
||||
"spin": "Drehung",
|
||||
"swing": "Swing",
|
||||
"rotationAlt": "Rotationstest",
|
||||
"topLeft": "oben links",
|
||||
"top": "Ganz oben",
|
||||
"topRight": "oben rechts",
|
||||
"left": "Rechts links",
|
||||
"center": "Mitte",
|
||||
"right": "Rechts",
|
||||
"bottomLeft": "unten links",
|
||||
"bottom": "Direkt unten",
|
||||
"bottomRight": "unten rechts"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "Wählen Sie Sequenzrahmenbilder aus",
|
||||
"chooseLocal": "Lokales Bild auswählen",
|
||||
"subfolder": "Unterordner",
|
||||
"name": "Name",
|
||||
"restore": "Stellen Sie {name} wieder her",
|
||||
"deleteResource": "Bildressourcen löschen",
|
||||
"imageMode": "Bildmodus",
|
||||
"fixed": "Einzelbild",
|
||||
"sequence": "Sequenz",
|
||||
"playbackMode": "Wiedergabemodus",
|
||||
"onceHide": "Einmal, am Ende ausblenden",
|
||||
"onceHold": "Einmal, letztes Bild halten",
|
||||
"loopForward": "Vorwärts-Schleife",
|
||||
"loopReverse": "Rückwärts-Schleife",
|
||||
"playbackFps": "Bildrate der Wiedergabe",
|
||||
"chooseSequenceMulti": "Sequenzbilder auswählen (Mehrfachauswahl)",
|
||||
"weight": "Gewicht %",
|
||||
"unlockWeight": "Proportionssperre entsperren",
|
||||
"lockWeight": "Sperren Sie das aktuelle Verhältnis",
|
||||
"pivot": "Textur-Pivot",
|
||||
"collapsePivot": "Einstellung des Drehpunkts einklappen",
|
||||
"expandPivot": "Erweitern Sie die Drehpunktanpassung",
|
||||
"pivotModal": "Texturrotationsachsenpunkt, große Bildverfeinerung",
|
||||
"pivotModalDesc": "Klicken oder ziehen Sie irgendwo auf der Karte unten, um das Rotations-/Schwingzentrum der Partikel genau festzulegen.",
|
||||
"pivotZoomHint": "Unterstützt 100 % ~ 400 % Vergrößerung, präzises Zielen auf die Spitze oder Wurzel:",
|
||||
"confirmPivot": "Drehpunkt ermitteln und speichern",
|
||||
"noSequence": "Kein Sequenzbild ausgewählt",
|
||||
"firstFrame": "Rahmen 1",
|
||||
"firstImage": "erstes Bild",
|
||||
"lastImage": "letztes Bild",
|
||||
"pivotOn": "Geöffnet: X {x}% | Y {y}%",
|
||||
"pivotOff": "Nicht aktiviert, die Standardeinstellung liegt etwa in der Bildmitte (50 %, 50 %).",
|
||||
"pivotCustom": "Der Drehpunkt wurde angepasst: X {x}% | Y {y}%",
|
||||
"frameCountOne": "1 Rahmen · {name}",
|
||||
"frameCountMany": "Rahmen {count} · {first} → {last}",
|
||||
"sequenceSelected": "Der Frame {count} wurde ausgewählt und in der Reihenfolge {first}-{last} abgespielt"
|
||||
},
|
||||
"timeline": {
|
||||
"play": "Spielen(D)",
|
||||
"pause": "Pause (D)",
|
||||
"toStart": "Gehe zurück zum ersten Frame (S)",
|
||||
"previous": "vorherigen Frame",
|
||||
"next": "nächsten Frame",
|
||||
"toEnd": "Zum letzten Bild wechseln",
|
||||
"continuousLoop": "Dauerhaft in Schleife abspielen",
|
||||
"abLoop": "Unabhängige A/B-Bereichsschleife",
|
||||
"abLoopShort": "AB-Schleife",
|
||||
"abRange": "AB Zyklusintervall",
|
||||
"playbackStart": "Benutzerdefiniertes Startbild für die Wiedergabe",
|
||||
"playbackEnd": "Benutzerdefiniertes Wiedergabe-Endbild",
|
||||
"startFrame": "Startbild abspielen",
|
||||
"endFrame": "Endbild abspielen",
|
||||
"frame": "rahmen",
|
||||
"emission": "Emission",
|
||||
"particleLife": "Aktive Partikel",
|
||||
"spineAnimation": "Spine-Animation",
|
||||
"ownerAnimation": "Zugehörige Animation",
|
||||
"setOwnerAnimation": "Legen Sie die Animation fest, zu der das aktuelle Partikelsystem gehört",
|
||||
"chooseOwnerAnimation": "Wählen Sie die Animation aus",
|
||||
"animationName": "Animationsname",
|
||||
"renameAnimation": "Aktuelle Animation umbenennen",
|
||||
"rename": "Umbenennen",
|
||||
"newAnimation": "+ Neu",
|
||||
"keepOneAnimation": "Mindestens eine Animation muss beibehalten werden",
|
||||
"spinePreview": "Spine Vorschauanimation",
|
||||
"noSpineAnimation": "Keine Spine-Animation verfügbar",
|
||||
"none": "keiner",
|
||||
"systemName": "System {index}",
|
||||
"dragLoopDuration": "Dauer des Drag-Loop-Segments",
|
||||
"dragEmissionDuration": "Drag-Dauer",
|
||||
"dragSpineStart": "Ziehen Sie, um die Startzeit der Animation anzupassen",
|
||||
"noAnimationData": "Derzeit sind keine Animationsdaten zum Anzeigen vorhanden.",
|
||||
"animationNameEmpty": "Der Animationsname darf nicht leer sein",
|
||||
"animationNameDuplicate": "Animationsnamen können nicht wiederholt werden",
|
||||
"animationRenameFailed": "Der Animationsname kann nicht geändert werden",
|
||||
"zoomIn": "vergrößern",
|
||||
"zoomOut": "herauszoomen",
|
||||
"zoomFit": "Mäßig",
|
||||
"frameStatus": "Frame {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "Emissionsmodus",
|
||||
"reset": "Sendemodusparameter zurücksetzen",
|
||||
"stream": "Kontinuierlich",
|
||||
"burst": "Burst",
|
||||
"normalStream": "Normaler Stream",
|
||||
"loopStream": "Loop-Stream",
|
||||
"rate": "Emissionsrate",
|
||||
"duration": "Emissionsdauer",
|
||||
"loopDuration": "Startdauer (f)",
|
||||
"generateStart": "Generieren Sie eine Startschleifenanimation",
|
||||
"generateEnd": "Generieren Sie eine Endloop-Animation",
|
||||
"customDuration": "Dauer angeben",
|
||||
"auto": "Automatisch {frames}f",
|
||||
"startLoopDuration": "Dauer des Schleifensegments starten",
|
||||
"endLoopDuration": "Dauer des Endschleifensegments",
|
||||
"loopWarning": "Der Schleifenpersistenzmodus unterstützt keine Knochenverfolgung und Pfadverfolgung; Die Partikelverfolgungseinstellungen werden beim Betreten oder Verlassen auf die Standardwerte zurückgesetzt.",
|
||||
"burstCount": "Menge pro Burst",
|
||||
"delay": "Verzögerung",
|
||||
"shapeTitle": "Emitterform",
|
||||
"shapeReset": "Setzen Sie die Parameter der Emitterform zurück",
|
||||
"shape": "Form",
|
||||
"point": "Punkt",
|
||||
"circle": "Kreis",
|
||||
"rect": "Rechteck",
|
||||
"cone": "Kegel",
|
||||
"path": "Pfad",
|
||||
"innerDiameter": "Innendurchmesser",
|
||||
"outerDiameter": "Außendurchmesser",
|
||||
"innerRadius": "Innenradius",
|
||||
"outerRadius": "Außenradius",
|
||||
"coneDirection": "Kegelausrichtung",
|
||||
"coneAngle": "Konischer Öffnungswinkel",
|
||||
"innerWidth": "Innenweite",
|
||||
"innerHeight": "Hoch drinnen",
|
||||
"outerWidth": "Außenbreite",
|
||||
"outerHeight": "Extra hoch",
|
||||
"selectPath": "Pfad auswählen",
|
||||
"noPath": "Kein Pfad (Punktemission)",
|
||||
"birthDistribution": "Geburtenverteilung",
|
||||
"evenDistribution": "Gleichmäßige feste Verteilung",
|
||||
"randomDistribution": "Zufallsverteilung",
|
||||
"emissionAngle": "Startwinkel",
|
||||
"radial": "Radial (Mitte nach außen)",
|
||||
"pathNormal": "senkrecht zum Pfad",
|
||||
"pathTangent": "entlang der Wegrichtung",
|
||||
"fixedAngle": "fester Winkel",
|
||||
"baseAngle": "Basiswinkel",
|
||||
"randomRange": "zufälliger Bereich",
|
||||
"showShape": "Form zeigen"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "Partikeleigenschaften",
|
||||
"reset": "Partikelattributparameter zurücksetzen",
|
||||
"initialParams": "Initialwerte",
|
||||
"initialLife": "anfänglicher Lebenszyklus",
|
||||
"randomSample": "Zufallsauswahl →",
|
||||
"initialSpeed": "Anfangsgeschwindigkeit",
|
||||
"initialScale": "anfängliche Skalierung",
|
||||
"uniform": "vereinheitlicht",
|
||||
"separateXY": "XY-Trennung",
|
||||
"scaleX": "Zoom X",
|
||||
"scaleY": "Zoom Y",
|
||||
"initialRotation": "anfängliche Rotation",
|
||||
"lifecycleTitle": "Änderung über die Lebensdauer",
|
||||
"speedOverLife": "Lebenszyklusgeschwindigkeit",
|
||||
"speedMultiplier": "Geschwindigkeitsmultiplikator",
|
||||
"lifeTo": "Lebenszyklus →",
|
||||
"scaleOverLife": "Skalierung während des Lebenszyklus",
|
||||
"scaleMultiplier": "Zoomverhältnis",
|
||||
"multiplierX": "Vergrößerung",
|
||||
"multiplierY": "Vergrößerung Y",
|
||||
"rotationOverLife": "Während des Lebenszyklus rotieren",
|
||||
"rotationSpeed": "Rotationsgeschwindigkeit"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Aussehen und Ressourcen",
|
||||
"reset": "Aussehen und Ressourcenparameter zurücksetzen",
|
||||
"opacity": "Deckkraft",
|
||||
"curveMode": "Kurvenmodus",
|
||||
"transparent": "0 (transparent)",
|
||||
"opaque": "1 (undurchsichtig)",
|
||||
"renderLayer": "Renderebene (Spine-Slot)",
|
||||
"top": "oberstes Niveau",
|
||||
"spineSlot": "Spine-Steckplatz",
|
||||
"selectSpine": "Bitte wählen Sie Spine aus",
|
||||
"noSpine": "Nicht verfügbar Spine",
|
||||
"noSlot": "Noch kein Slot ausgewählt",
|
||||
"reselect": "Neu auswählen",
|
||||
"selectSlot": "Steckplatz auswählen",
|
||||
"searchSlots": "Nach Steckplatz- oder Zubehörnamen suchen…",
|
||||
"searchSlotsAria": "Suchplätze",
|
||||
"emptySlot": "Leerer Steckplatz",
|
||||
"noMatchingSlots": "Kein passender Steckplatz",
|
||||
"above": "oben auf diesem Slot-Bild",
|
||||
"below": "unter diesem Slot-Bild",
|
||||
"followAttachment": "Ein- und Ausblenden mit Slot-Zubehör",
|
||||
"previewOnly": "Das Anpassen der Anzeigeebene wirkt sich nur auf die Editor-Vorschau aus und hat keinen Einfluss auf die exportierten Daten.",
|
||||
"imageResources": "Bildressourcen",
|
||||
"addImage": "Bildressourcen hinzufügen",
|
||||
"scale": "Zoom",
|
||||
"color": "Farbe",
|
||||
"fixedColor": "feste Farbe",
|
||||
"randomColor": "zufällige Farbe",
|
||||
"lifetime": "Lebenszyklus",
|
||||
"normal": "Normal",
|
||||
"add": "Addieren",
|
||||
"multiply": "Multiplizieren",
|
||||
"screen": "Bildschirm",
|
||||
"fixedColorValue": "fester Farbwert",
|
||||
"randomColorHint": "Jedes Teilchen wählt bei seiner Geburt zufällig eine Farbe aus dem Band aus und bleibt während seines Lebenszyklus unverändert.",
|
||||
"independentAlpha": "Unabhängige Deckkraft",
|
||||
"off": "Aus"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · Bild oben",
|
||||
"slotLabelBelow": "{spine} / {slot} · Unter dem Bild",
|
||||
"resolvedAbove": "Über dem {slot}-Bild und unter seinem Slot gerendert",
|
||||
"resolvedBetween": "Gerendert zwischen {previous} und {slot}",
|
||||
"warningNoSpine": "Es ist kein Spine geladen und die Partikel werden vorübergehend oben angezeigt.",
|
||||
"warningNoSelection": "Spine wurde noch nicht ausgewählt und die Partikel werden vorübergehend oben angezeigt.",
|
||||
"warningMissingSpine": "Das Ziel Spine existiert nicht und die Partikel werden vorübergehend oben angezeigt.",
|
||||
"warningNotReady": "Das Ziel Spine ist nicht bereit und die Partikel werden vorübergehend oben angezeigt.",
|
||||
"warningMissingSlot": "Der Zielplatz existiert nicht (die Ressource wurde möglicherweise ersetzt) und die Partikel werden vorübergehend oben angezeigt.",
|
||||
"warningFirstSlot": "Dies ist der erste Slot und kann nicht darunter angezeigt werden, die Partikel werden vorübergehend oben angezeigt."
|
||||
},
|
||||
"export": {
|
||||
"title": "Exporteinstellungen",
|
||||
"reset": "Exporteinstellungen zurücksetzen",
|
||||
"imagesPath": "Bildpfad (Spine-Bildpfad)",
|
||||
"spineVersion": "Spine-Version",
|
||||
"keyframeCurve": "Keyframe-Interpolationskurve",
|
||||
"linear": "Linear",
|
||||
"smoothBezier": "Glatter Bezier (Glatter Bézier)",
|
||||
"bezierHelp": "Smooth Bezier passt kontinuierliche Bewegungen innerhalb der Fehlertoleranz an; Geburt, Tod, Bindungswechsel und Mutationen verwenden weiterhin Schritt-Keyframes.",
|
||||
"spine38Help": "Spine 3.8 unterstützt das Bezier-Array pro Kanal von 4.x nicht und wird beim Export in toleranzreduzierte stückweise lineare Keyframes konvertiert.",
|
||||
"fps": "Export-FPS",
|
||||
"omitFps": "Schreiben Sie keine fps",
|
||||
"fpsHelp": "Behalten Sie die tatsächlichen Sekunden der Animation bei, wenn Sie FPS ändern. „Keine FPS schreiben“ lässt nur die FPS-Metadaten von Spine weg.",
|
||||
"integerFrames": "Ganzzahlige Frame-Ausrichtung",
|
||||
"bonePool": "Knochenobjektpool",
|
||||
"excludeEmpty": "Schließen Sie inhaltslose Animationen aus",
|
||||
"baking": "Die Animation wird neu berechnet und gebacken",
|
||||
"exportJsonTitle": "Exportieren Sie Spine {version} JSON",
|
||||
"preparing": "Der Export wird vorbereitet...",
|
||||
"exportJson": "Spine JSON exportieren",
|
||||
"exportImagesTitle": "Laden Sie das vom aktuellen Partikelsystem ZIP verwendete Bild separat herunter",
|
||||
"organizingImages": "Bilder sortieren...",
|
||||
"exportImages": "Bilder-ZIP exportieren",
|
||||
"generatingProject": "Projekt wird erstellt...",
|
||||
"exportSpine": ".spine-Paket exportieren",
|
||||
"authorize": "Autorisieren Sie die aktuelle Website",
|
||||
"authorizeTitle": "Autorisieren Sie die aktuelle Website im nativen Connector",
|
||||
"refreshConnector": "Überprüfen Sie den Stecker erneut",
|
||||
"refresh": "auffrischen",
|
||||
"recalculating": "Partikelanimation wird neu berechnet...",
|
||||
"exported": "Exportiert Spine {version}: {systems} Partikelsysteme, {animations} Animationen, {bones} Wurzelknochen {warning}",
|
||||
"resourceWarning": ";{count} Ressourcentipps (fehlende Bilder werden weiterhin exportiert)",
|
||||
"timeout": "Neuberechnung des Animations-Timeouts. Bitte bestätigen Sie, dass die Seite noch ausgeführt wird, und versuchen Sie es erneut",
|
||||
"preparingProject": "Bilder sortieren und diese Maschine Spine nennen…",
|
||||
"projectExported": "{fileName} wurde generiert: einschließlich .spine-Projekt und {images}-Bilder, Spine {version}",
|
||||
"collectingImages": "Zusammenstellung von Bildern, die derzeit vom Partikelsystem verwendet werden ...",
|
||||
"imagesExported": "{fileName} wurde generiert: {folder}/ enthält {images}-Bilder",
|
||||
"connectorChecking": "Lokaler Spine-Anschluss wird erkannt...",
|
||||
"connectorOffline": "Der lokale Spine-Connector läuft nicht",
|
||||
"spineNotFound": "Der Connector läuft, aber Spine wurde nicht gefunden",
|
||||
"notAuthorized": "Der Connector läuft, aber diese Website ist nicht autorisiert",
|
||||
"connectorReady": "Connector verfügbar · Spine bereit",
|
||||
"connectorBusy": "Spine-Projekt wird neu berechnet und erstellt",
|
||||
"connectorGenerate": "Spine-{version}-Projekt mit lokalem Spine erstellen",
|
||||
"unknown": "unbekannt",
|
||||
"checking": "Prüfung",
|
||||
"offline": "Offline",
|
||||
"notFound": "Spine nicht gefunden",
|
||||
"unauthorized": "Nicht autorisiert",
|
||||
"projectTransferTitle": "Exportieren Sie das Spine-Paket",
|
||||
"projectTransferDetail": "Partikelanimation wird neu berechnet...",
|
||||
"projectTransferDownload": "Das Spine-Projektpaket wurde heruntergeladen",
|
||||
"generatingJson": "Generieren von Spine JSON…",
|
||||
"preparingProjectFiles": "Projektbilder zusammenstellen...",
|
||||
"uploading": "Daten werden in den Spine-Connector hochgeladen...",
|
||||
"spineProcessing": "Spine konvertiert das Projekt, bitte warten...",
|
||||
"downloadingProject": "Das generierte Spine-Projektpaket wird heruntergeladen ...",
|
||||
"handingToBrowser": "Übergabe an den Browser zum Download..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "Vollendet",
|
||||
"failed": "Der Vorgang ist fehlgeschlagen"
|
||||
},
|
||||
"scene": {
|
||||
"title": "Szenenobjekte",
|
||||
"addParticle": "Partikelsystem hinzufügen",
|
||||
"addParticleShort": "+Teilchen",
|
||||
"addCollider": "Collider hinzufügen",
|
||||
"addColliderShort": "+Kollision",
|
||||
"addPath": "Pfad hinzufügen",
|
||||
"addPathShort": "+ Pfad",
|
||||
"addSpine": "Fügen Sie Spine hinzu",
|
||||
"copyTitle": "Kopieren Sie das aktuell ausgewählte Szenenobjekt",
|
||||
"showParticle": "Partikelsystem anzeigen",
|
||||
"hideParticle": "Partikelsystem ausblenden",
|
||||
"showCollider": "Collider anzeigen",
|
||||
"hideCollider": "Collider ausblenden",
|
||||
"showPath": "Pfad anzeigen",
|
||||
"hidePath": "Pfad ausblenden",
|
||||
"showSpine": "Anzeige Spine",
|
||||
"hideSpine": "Spine ausblenden",
|
||||
"particle": "Partikel",
|
||||
"subEmitter": "Sub-Emitter",
|
||||
"collision": "Kollision",
|
||||
"path": "Pfad",
|
||||
"deleteParticle": "Partikelsystem löschen",
|
||||
"deleteCollider": "Collider löschen",
|
||||
"deletePath": "Pfad löschen",
|
||||
"deleteSpine": "Löschen Sie Spine",
|
||||
"empty": "Es sind noch keine Objekte in der Szene vorhanden",
|
||||
"name": "Name",
|
||||
"positionX": "X-Position",
|
||||
"positionY": "Y-Position",
|
||||
"offsetX": "X-Versatz",
|
||||
"offsetY": "Y-Versatz",
|
||||
"rotation": "Drehung",
|
||||
"scaleX": "X-Skalierung",
|
||||
"scaleY": "Y-Skalierung",
|
||||
"seed": "Zufallsseed",
|
||||
"seedTitle": "Steuern Sie alle Zufallsattribute, die Ressourcenauswahl und die Zufallsstichprobe von Modifikatoren im Partikelsystem",
|
||||
"randomizeSeed": "Generieren Sie einen neuen globalen Zufallsstartwert",
|
||||
"seedHint": "Steuern Sie die anfänglichen Zufallsparameter, die Ressourcenauswahl und die Modifikator-Zufallsstichprobe. Der gleiche Samen kann den gleichen Effekt hervorrufen",
|
||||
"colliderTitle": "Collider-Eigenschaften",
|
||||
"colliderName": "Collider-Name",
|
||||
"type": "Typ",
|
||||
"circle": "runden",
|
||||
"ellipse": "Oval",
|
||||
"rect": "Rechteck",
|
||||
"polygon": "Polygon",
|
||||
"custom": "Anpassen",
|
||||
"enabled": "aktivieren",
|
||||
"xPosition": "X-Position",
|
||||
"yPosition": "Y-Position",
|
||||
"scaleXShort": "X-Skalierung",
|
||||
"scaleYShort": "Y-Skalierung",
|
||||
"radius": "Radius",
|
||||
"radiusX": "X-Radius",
|
||||
"radiusY": "Y-Radius",
|
||||
"width": "Breite",
|
||||
"height": "hoch",
|
||||
"sides": "Anzahl der Seiten",
|
||||
"collisionResponse": "Crash-Reaktion",
|
||||
"physics": "Physik (Sprung/Reibung)",
|
||||
"pause": "Pause (Stopp)",
|
||||
"destroy": "Verschwinden (sofort zerstören)",
|
||||
"elasticity": "Elastizität (0-1)",
|
||||
"friction": "Reibung (0-1)",
|
||||
"followPath": "Folgen Sie dem Weg",
|
||||
"targetPath": "Zielpfad",
|
||||
"notSelected": "(nicht ausgewählt)",
|
||||
"moveDuration": "Bewegungsdauer (Sekunden)",
|
||||
"followDirection": "Richtung entlang des Pfades",
|
||||
"moveProgressCurve": "Bewegliche Fortschrittskurve",
|
||||
"moveProgressHelp": "Horizontale Achse: Echtzeit/Bewegungsdauer; vertikale Achse: Pfadfortschritt (0=Startpunkt → 1=Endpunkt)",
|
||||
"pathTitle": "Pfadattribut",
|
||||
"pathName": "Pfadname",
|
||||
"closedPath": "geschlossener Weg",
|
||||
"pathColor": "Pfadfarbe",
|
||||
"pathHelp": "Bedienungsanleitung:",
|
||||
"pathHelpItems": "Doppelklicken Sie auf den leeren Bereich/die leere Kurve: Erstellen Sie einen neuen Ankerpunkt, doppelklicken Sie auf den Ankerpunkt: löschen Sie den Knoten, doppelklicken Sie ein zweites Mal und ziehen Sie: erstellen Sie einen neuen und ziehen Sie den Griff heraus, ziehen Sie den Ankerpunkt, um die Position zu verschieben, ziehen Sie den Griff, um die Kurve anzupassen, Umschalt + Ziehgriff: vollständig symmetrisch auf beiden Seiten, Alt + Ziehgriff: unabhängige Steuerung einer Seite, Ctrl + Klick/Rahmenauswahl: ausgewählte Knoten hinzufügen, Alt+Klick/Rahmenauswahl: ausgewählte Knoten subtrahieren Knoten, Alt+Klick in den leeren Bereich: Löschen Sie alle Auswahlen, wählen Sie mehrere Knoten aus und ziehen Sie sie als Ganzes",
|
||||
"applyPresetShape": "Wenden Sie eine voreingestellte Form an",
|
||||
"choosePreset": "Wählen Sie eine Voreinstellung...",
|
||||
"square": "Quadrat",
|
||||
"star": "Sternform",
|
||||
"applyPreset": "Voreinstellung anwenden",
|
||||
"clearAnchors": "klarer Ankerpunkt",
|
||||
"panelHint": "Verwenden Sie die Schaltfläche in der oberen rechten Ecke, um ein Szenenobjekt zu erstellen"
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "Modifikatoren",
|
||||
"reset": "Modifikatorparameter zurücksetzen",
|
||||
"damping": "Dämpfung",
|
||||
"enableNoise": "Bewegungsrauschen aktivieren",
|
||||
"strength": "Stärke",
|
||||
"noiseRange": "Schwankungsbreite",
|
||||
"noiseSpeed": "Zeitliche Durchflussrate",
|
||||
"noiseHint": "Intensitätssteuerung beeinflusst den Anteil · Schwankungsbereich steuert die maximale Abweichung · Zeitfluss steuert die Änderungsgeschwindigkeit",
|
||||
"enableGravity": "Schwerkraft aktivieren",
|
||||
"gravityStrength": "Schwerkraftstärke",
|
||||
"strengthMin": "Stärke min",
|
||||
"strengthMax": "Stärke max",
|
||||
"direction": "Richtung",
|
||||
"gravityOverLife": "Schwerkraft während des Lebenszyklus",
|
||||
"windOverLife": "Lebenszyklus Wind",
|
||||
"axisStrength": "Vertikale Achse: Intensität 0~1",
|
||||
"directionHint": "0° nach rechts · -90° nach unten · Negative Intensität kehrt die Richtung um",
|
||||
"enableWind": "Wind aktivieren",
|
||||
"windStrength": "Windstärke",
|
||||
"enableForceField": "Kraftfeld aktivieren",
|
||||
"centerX": "Mitte X",
|
||||
"centerY": "Zentrum Y",
|
||||
"forceStrength": "Kraftfeldstärke",
|
||||
"forceRadius": "Kraftfeldradius",
|
||||
"falloffMode": "Decay-Modus",
|
||||
"constant": "Konstant (die Geschwindigkeit ändert sich innerhalb des Bereichs nicht)",
|
||||
"linearFalloff": "Linearer Abfall (Kante ist 0)",
|
||||
"inverseFalloff": "Umgekehrt proportional zur Entfernung (am stärksten in der Mitte)",
|
||||
"forceHint": "Positive Zahlen ziehen sich zur Mitte hin an, negative Zahlen stoßen sich nach außen ab und der Kraftfeldkreis kann innerhalb der Leinwand gezogen werden.",
|
||||
"showShape": "Form zeigen",
|
||||
"enableVortex": "Wirbel aktivieren",
|
||||
"vortexHint": "Positive Zahlen gegen den Uhrzeigersinn · Negative Zahlen im Uhrzeigersinn",
|
||||
"enableAttraction": "Anziehung aktivieren",
|
||||
"attractionX": "Adsorptionspunkt X",
|
||||
"attractionY": "Adsorptionspunkt Y",
|
||||
"attractionRadius": "Adsorptionsradius",
|
||||
"attractionDuration": "Adsorptionszeit",
|
||||
"delay": "Verzögerungszeit",
|
||||
"delayMode": "Verzögerungsmodus",
|
||||
"globalTime": "einheitliche Zeit",
|
||||
"particleLife": "Das Leben einzelner Teilchen",
|
||||
"attractionPath": "Adsorptionsmethode",
|
||||
"straight": "Gerade",
|
||||
"attractionHint": "Nach einer Verzögerung beginnt die Adsorption an der aktuellen Position. Wenn es den roten Bereich erreicht, stirbt es ab. Der Adsorptionskreis kann innerhalb der Leinwand gezogen werden.",
|
||||
"enableTrail": "Schweif aktivieren",
|
||||
"trailImages": "Nachgestellte unabhängige Bilder",
|
||||
"addTrailImage": "Fügen Sie nachgestellte Bildressourcen hinzu",
|
||||
"trailRotation": "drehen",
|
||||
"trailBones": "Anzahl der nachlaufenden Knochen",
|
||||
"trailRatio": "Trailing-Verhältnis (%)",
|
||||
"trailLength": "Nachlauflänge",
|
||||
"randomRange": "zufälliger Bereich",
|
||||
"lengthRatio": "Längenverhältnis (%)",
|
||||
"lengthMin": "Mindestlänge (%)",
|
||||
"lengthMax": "Maximale Länge (%)",
|
||||
"trailWidth": "Nachlaufbreite",
|
||||
"widthRatio": "Breitenverhältnis (%)",
|
||||
"widthMin": "Mindestbreite (%)",
|
||||
"widthMax": "Maximale Breite (%)",
|
||||
"widthScale": "Breitenskalierung",
|
||||
"followParticle": "Teilchen folgen",
|
||||
"lifeLengthCurve": "Lebenszykluslängenkurve",
|
||||
"shapeCurve": "Formkurve (Kopf → Schwanzbreite)",
|
||||
"colorMode": "Farbmodus",
|
||||
"blendMode": "Mischmodus",
|
||||
"fixedColor": "feste Farbe",
|
||||
"alphaMode": "Transparenzmodus",
|
||||
"opacity": "Transparenz",
|
||||
"gridRows": "Anzahl der Rasterzeilen",
|
||||
"gridCols": "Anzahl der Rasterspalten",
|
||||
"trailHint": "Jedes Partikel generiert im Verhältnis zu den Ressourcen eine Reihe von Geschwister-Trailing-Bones. Die zufällige Länge und Breite werden bei der Geburt des Partikels bestimmt, und derselbe Samen kann stabil reproduziert werden",
|
||||
"enableFollow": "Emitter-Verfolgung aktivieren",
|
||||
"followMode": "Folgemodus",
|
||||
"noFollow": "keiner",
|
||||
"followPath": "Folge dem Weg",
|
||||
"selectedBone": "ausgewählte Knochen",
|
||||
"emitterAngleMode": "Senderwinkelmodus",
|
||||
"fixedAngle": "fester Winkel",
|
||||
"followMoveDirection": "Folgen Sie der Bewegungsrichtung",
|
||||
"moveProgressCurve": "Bewegungsfortschrittskurve (0→1)",
|
||||
"moveDuration": "Bewegungsdauer (s)",
|
||||
"followSpace": "Folgen Sie dem Raum",
|
||||
"localSpace": "Lokaler Raum (GEN-Bewegung)",
|
||||
"worldSpace": "Weltraum (Partikelerzeugungspunktbewegung)",
|
||||
"moveDirection": "Bewegungsrichtung",
|
||||
"forward": "Vorwärts (Startpunkt → Endpunkt)",
|
||||
"reverse": "Umkehren (Endpunkt → Startpunkt)",
|
||||
"followOffset": "Offset-Startpunkt (0-1)",
|
||||
"followSpaceHint": "Der lokale Raum bewegt den gesamten Emitter; Der Weltraum verschiebt nur den Entstehungspunkt neuer Partikel und die geborenen Partikel bleiben an der Weltposition.",
|
||||
"followTarget": "Folgen Sie dem Ziel:",
|
||||
"noValidBone": "Es wurde noch kein gültiger Bone gebunden. Bitte wählen Sie zuerst den Bone im Spine-Hierarchiebaum aus.",
|
||||
"rebind": "neu binden",
|
||||
"bind": "Bindung",
|
||||
"selectedBoneLabel": "Aktuell ausgewählter Knochen:",
|
||||
"boneLocalSpace": "Lokaler Raum (bewegt sich mit Knochen)",
|
||||
"boneWorldSpace": "Weltraum (Partikel behalten ihre Position, nachdem sie erzeugt wurden)",
|
||||
"offsetX": "Verschiebungsoffset X",
|
||||
"offsetY": "Verschiebungsoffset Y",
|
||||
"rotationOffset": "Rotationsversatz",
|
||||
"scaleOffsetX": "Skalierungsversatz X",
|
||||
"scaleOffsetY": "Skalenversatz Y",
|
||||
"boneFollowHint": "Der Emitter folgt nur der Position des ausgewählten Spine-Bones und erbt nicht die Rotation oder Skalierung von Spine; Die Partikeltransformation verwendet die eigenen Parameter und den oberen Offset des Partikelsystems.",
|
||||
"enableCollision": "Kollision aktivieren",
|
||||
"collisionObjects": "Beteiligte Kollisionsobjekte",
|
||||
"colliderDisabled": "{name} (Collider deaktiviert)",
|
||||
"clearCollider": "Kollisionsobjekt löschen {name}",
|
||||
"addCollider": "Szenenkollisionsobjekte hinzufügen",
|
||||
"noAvailableColliders": "Es müssen keine Kollisionsobjekte hinzugefügt werden",
|
||||
"noCollidersSelected": "Es ist kein Kollisionsobjekt ausgewählt und die aktuellen Partikel kollidieren nicht.",
|
||||
"available": "Verfügbar",
|
||||
"disabled": "Deaktiviert",
|
||||
"collisionHint": "Nur hinzugefügte und aktivierte Szenenkollisionsobjekte nehmen an der Kollision des aktuellen Partikelsystems teil.",
|
||||
"enableSubEmitter": "Sub-Emitter aktivieren",
|
||||
"triggerTiming": "Wählen Sie die Triggerzeit",
|
||||
"birth": "geboren",
|
||||
"death": "sterben",
|
||||
"collision": "Kollision",
|
||||
"chooseTarget": "Zielpartikelsystem auswählen",
|
||||
"noTarget": "Keine (Partikelsystem)",
|
||||
"deleteSubEmitter": "Löschen Sie diesen Sub-Emitter",
|
||||
"probability": "Emissionswahrscheinlichkeit",
|
||||
"collisionLimit": "Kollisionsgrenze",
|
||||
"inherit": "erben",
|
||||
"colorInheritMode": "Farbvererbungsmethode",
|
||||
"add": "Hinzufügen",
|
||||
"replace": "Abdeckung",
|
||||
"addSubEmitter": "+ Neuer Sub-Emitter hinzugefügt",
|
||||
"inheritNone": "Keine (Standard)",
|
||||
"inheritAll": "Alle Eigenschaften",
|
||||
"inheritColor": "Farbe",
|
||||
"inheritScale": "Größe",
|
||||
"inheritRotation": "drehen",
|
||||
"inheritLife": "Lebenszyklus"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Spine-Eigenschaften",
|
||||
"name": "Spine-Name",
|
||||
"xPosition": "X-Position",
|
||||
"yPosition": "Y-Position",
|
||||
"rotation": "Drehung",
|
||||
"scaleX": "X-Skalierung",
|
||||
"scaleY": "Y-Skalierung",
|
||||
"startTime": "Startzeit",
|
||||
"resources": "Spine-Ressourcen",
|
||||
"chooseFolder": "Ordner auswählen und laden",
|
||||
"folderHint": "Lesen Sie JSON / SKEL, Atlas und alle Texturen in einem Ordner gleichzeitig; Ressourcen können unten noch einzeln ausgetauscht werden.",
|
||||
"choose": "wählen",
|
||||
"chooseMultiple": "Auswählen (Mehrfachauswahl)",
|
||||
"loading": "Laden…",
|
||||
"load": "↧ Laden",
|
||||
"clear": "Klar",
|
||||
"supportNote": "Unterstützt Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Laden bei Bedarf, wenn die entsprechende Version ausgeführt wird · Lokal offline",
|
||||
"currentResource": "Aktuelle Ressource {version}",
|
||||
"animations": "Spine-Animationen",
|
||||
"noAnimations": "Keine Animation verfügbar",
|
||||
"timelineAnimation": "Spielen Sie die Animation auf der Timeline ab",
|
||||
"no": "keiner",
|
||||
"hierarchy": "Hierarchie",
|
||||
"clearBoneTitle": "Klicken Sie, um die Knochenauswahl zu löschen",
|
||||
"noBoneTitle": "Derzeit sind keine Knochen ausgewählt",
|
||||
"clearBone": "Ausgewählte Knochen löschen: {name}",
|
||||
"currentBone": "Aktuelles Skelett:",
|
||||
"clearSlotTitle": "Klicken Sie hier, um die Slot-Auswahl zu löschen",
|
||||
"noSlotTitle": "Derzeit ist kein Steckplatz ausgewählt",
|
||||
"clearSlot": "Ausgewählten Steckplatz löschen: {name}",
|
||||
"currentSlot": "Aktueller Slot:",
|
||||
"notSelected": "Nicht ausgewählt",
|
||||
"expandAll": "Alles erweitern",
|
||||
"collapseAll": "Alles einklappen",
|
||||
"bones": "Skeleton",
|
||||
"slots": "Slot",
|
||||
"notLoaded": "Nicht geladen Spine",
|
||||
"searchBones": "Suche nach Knochen",
|
||||
"searchBonesPlaceholder": "Knochennamen suchen…",
|
||||
"clearSearch": "Suche löschen",
|
||||
"clearBoneSearch": "Klare Knochensuche",
|
||||
"noMatchingBones": "Kein passender Knochen gefunden",
|
||||
"expandChildren": "Untergeordnete Knochen erweitern",
|
||||
"collapseChildren": "Kinderknochen kollabieren lassen",
|
||||
"notLoadedSlots": "Spine-Steckplatz nicht geladen",
|
||||
"searchSlots": "Suchplätze",
|
||||
"searchSlotsPlaceholder": "Nach Steckplatz- oder Zubehörnamen suchen…",
|
||||
"clearSlotSearch": "Slot-Suche löschen",
|
||||
"noMatchingSlots": "Kein passender Steckplatz gefunden",
|
||||
"slotTitle": "{name} (Skelett: {bone}, Anhang: {attachment})",
|
||||
"empty": "null",
|
||||
"textureSummary": "{count} Zhang: {names}",
|
||||
"textureImages": "Texturbilder",
|
||||
"missingFolderAssets": "Der ausgewählte Ordner fehlt: {missing}",
|
||||
"chooseAssets": "Bitte wählen Sie nacheinander die Daten Spine, Atlas und alle Texturbilder aus"
|
||||
},
|
||||
"help": {
|
||||
"title": "Hilfe",
|
||||
"subtitle": "Schneller Einstieg vom Erstellen von Partikeln bis zum Speichern und Exportieren",
|
||||
"close": "Anweisungen schließen",
|
||||
"closeShort": "Schließen (Esc)",
|
||||
"quickStart": "Schnellstart",
|
||||
"stepCreate": "Erstellen Sie ein Objekt: Verwenden Sie +Particles / +Collision / +Path / +Spine im „Szenenobjekt“ auf der linken Seite, um ein Szenenobjekt hinzuzufügen.",
|
||||
"stepEdit": "Partikel bearbeiten: Wählen Sie das Partikelsystem aus und passen Sie „Emissionsmodus → Emitterform → Partikeleigenschaften → Aussehen und Ressourcen → Modifikator“ an.",
|
||||
"stepPreview": "Überprüfen Sie den Effekt: Die untere Timeline kann Bild für Bild abgespielt, angehalten oder verschoben werden. Es wird automatisch neu berechnet, nachdem die Parameter geändert wurden.",
|
||||
"stepExport": "Speichern und exportieren: Benutzen Sie „Konfiguration speichern“, um das Projekt beizubehalten; „Export Spine Json / images package / .spine package“, um das fertige Produkt auszugeben.",
|
||||
"quickNote": "„Zurücksetzen“ auf der rechten Seite des Titels jeder Modulgruppe kann die Standardparameter der Gruppe wiederherstellen; Die Systemeinstellungen werden automatisch im aktuellen Browser gespeichert.",
|
||||
"commonOps": "Häufige Aktionen",
|
||||
"eye": "kleine Augen",
|
||||
"eyeDesc": "Objekte einzeln ein-/ausblenden; Verborgene Partikelsysteme werden nicht exportiert.",
|
||||
"copyDesc": "Kopiert das aktuell ausgewählte Objekt vollständig, um den Vergleich verschiedener Parameter zu erleichtern.",
|
||||
"backgroundDesc": "Laden Sie das Referenzbild hoch und passen Sie Position und Transparenz nur für die Leinwandvorschau an.",
|
||||
"settingsDesc": "Das Layout der Verwaltungsoberfläche, die Zusatzanzeige, der Maßstab usw. werden automatisch im Browser gespeichert.",
|
||||
"undoDesc": "Ctrl+Z fährt einen Schritt zurück; Die maximale Schrittanzahl kann in den Systemeinstellungen angepasst werden.",
|
||||
"spineBoneDesc": "Suchen und wählen Sie einen Knochen im Hierarchiebaum aus, der vom Partikelemitter zum Folgen verwendet werden kann.",
|
||||
"shortcuts": "Tastenkürzel",
|
||||
"undoShortcut": "Machen Sie den vorherigen Schritt rückgängig",
|
||||
"saveShortcut": "Konfiguration speichern",
|
||||
"panShortcut": "Leinwand ziehen",
|
||||
"translateShortcut": "Verdrängungswerkzeug",
|
||||
"rotateShortcut": "Rotationswerkzeug",
|
||||
"scaleShortcut": "Zoom-Tool",
|
||||
"playShortcut": "abspielen/pausieren",
|
||||
"startShortcut": "Gehen Sie zurück zum ersten Bild",
|
||||
"shortcutNote": "Q/W/E/R müssen zuerst auf die Leinwand klicken; Wenn sich der Cursor im Eingabefeld befindet, wird die Einzeltastenkombination nicht ausgelöst.",
|
||||
"modules": "Modulhandbuch",
|
||||
"configTitle": "Konfigurationsmanagement",
|
||||
"saveConfigDesc": "Speichern Sie alle aktuellen Szenenobjekte und Parameter als Projekt-JSON-Dateien (Ctrl+S wird auch unterstützt).",
|
||||
"loadConfigDesc": "Wählen Sie die lokale Konfigurationsdatei aus, um das gesamte Projekt wiederherzustellen.",
|
||||
"presetDesc": "Wählen Sie im Dropdown-Menü eine Standard-Schnellanwendung aus. Klicken Sie auf das Dropdown-Menü, um die Liste zu aktualisieren.",
|
||||
"configScope": "Umfang",
|
||||
"configScopeDesc": "Die Konfiguration enthält Objekte und Parameter; Schnittstellen- und Systemeinstellungen werden separat im Browser gespeichert.",
|
||||
"sceneTitle": "Szenenobjekt",
|
||||
"particleDesc": "Kernobjekt. Position, Offset, Drehung, Skalierung und Zufallsstartwert können eingestellt werden; Der gleiche Samen kann den gleichen Effekt hervorrufen.",
|
||||
"colliderDesc": "Kreis/Ellipse/Rechteck/Polygon/benutzerdefiniert, unterstützt physisches Abprallen, Anhalten, Zerstören und Bewegung entlang des Pfades.",
|
||||
"pathDesc": "Bezier-Pfad mit Unterstützung für Ankerpunkte, Steuerpunkte, Abschluss, Farbe und voreingestellte Formen.",
|
||||
"spineDesc": "Laden Sie Spine-Daten, Atlas und Texturen, durchsuchen Sie Bones und Slots und folgen Sie den Emittern.",
|
||||
"sceneCommonDesc": "Objekte können unabhängig voneinander angezeigt und kopiert werden; Verborgene Partikelsysteme werden nicht exportiert.",
|
||||
"emissionDesc": "Kontinuierliches Feuer, Feuerstoß, Verzögerung und dreistufige Start-/Schleifen-/End-Schleifendauer.",
|
||||
"burstDesc": "Gibt eine bestimmte Anzahl von Partikeln auf einmal ab.",
|
||||
"delayDesc": "Die Wartezeit bis zum Beginn der Emission, entsprechend dem linken Ende des Partikelbalkens.",
|
||||
"loopNote": "Die Schleifenpersistenz unterstützt Knochen- und Pfadverfolgung nicht und die folgenden Einstellungen werden beim Umschalten wiederhergestellt.",
|
||||
"shapeDesc": "Punkt-, Kreis-, Rechteck-, Kegel- oder Pfad-Spawn-Bereich. Kreise/Kegel unterstützen Innen- und Außenradien und Rechtecke unterstützen Innen- und Außenbreite und -höhe.",
|
||||
"angleDesc": "Fest, zufällig, radial, Pfadnormale oder Pfadtangente.",
|
||||
"initialDesc": "Lebenszyklus, Geschwindigkeit, Skalierung und Rotationsunterstützung sind fest, zufällig, Kurve und Rotation können der Startrichtung folgen.",
|
||||
"overLifeDesc": "Geschwindigkeitsvergrößerung, Zoomvergrößerung und Rotationsgeschwindigkeit können über die Lebenszykluskurve gesteuert werden.",
|
||||
"alphaDesc": "Transparenz unterstützt fest oder gekrümmt; Der Kurvenmodus kann abgeleitet, linear oder Bezier folgen.",
|
||||
"imageDesc": "Einzelbild oder Sequenzrahmen, Multibild-Gewichtungs-Randomisierung, Drehpunkt, Farbe, Mischmodus und unabhängige Transparenz.",
|
||||
"sequenceDesc": "Zu den Wiedergabemethoden gehören einmaliges Ausblenden, einmaliges Einfrieren, Vorwärtsschleife und Rückwärtsschleife.",
|
||||
"noiseDesc": "Erzeugen Sie Jitter-Spuren und steuern Sie Intensität, Reichweite und Geschwindigkeit.",
|
||||
"gravityDesc": "Schwerkraft-, Wind- und Lebenszyklusintensitätskurven.",
|
||||
"forceDesc": "Globale Kraftfelder, Wirbel, Adsorption und Kollisionen.",
|
||||
"trailDesc": "Unabhängige nachgestellte Assets, Knochenanzahl, Länge, Breite, Form, Farbe und Transparenzkurven.",
|
||||
"followDesc": "Der Emitter kann einem Pfad oder Spine Bone folgen.",
|
||||
"collisionDesc": "Wählen Sie Szenenkollisionsobjekte und Partikelkollisionsreaktionen aus.",
|
||||
"exportDesc": "Legen Sie den Bildpfad, die Spine-Version, die Keyframe-Kurve, FPS, Integer-Frames, den Bone-Pool und die leere Animation fest.",
|
||||
"exportButtonsDesc": "Sie können Spine JSON, Bilder ZIP exportieren oder .spine-Projekte über den Connector generieren.",
|
||||
"connectorTitle": "Gebrauchsanweisung für den Spine-Stecker",
|
||||
"connectorIntro": "Der Connector übermittelt JSON und von der Webseite generierte Bilder an Spine, das auf dem lokalen Computer installiert und aktiviert wurde, und konvertiert sie in bearbeitbare .spine-Projekte.",
|
||||
"prerequisite": "Frontload",
|
||||
"prerequisiteDesc": "Auf dem Computer ist Spine installiert und aktiviert, und der Desktop-Connector wurde gestartet.",
|
||||
"download": "herunterladen",
|
||||
"webSide": "Webseite",
|
||||
"webSideDesc": "Nachdem „Connector verfügbar · Spine ist bereit“ angezeigt wird, klicken Sie auf „.spine-Paket exportieren“.",
|
||||
"authorization": "erste Genehmigung",
|
||||
"authorizationDesc": "Bei der ersten Verbindung muss die Quelle der Website überprüft und einmal zugelassen werden; Dieses Gerät speichert die Autorisierungs-Whitelist.",
|
||||
"pathSetup": "Pfadeinstellungen",
|
||||
"pathSetupDesc": "Der Connector erkennt Spine automatisch. Wenn es nicht gefunden werden kann, können Sie den Anwendungspfad manuell angeben.",
|
||||
"downloadResult": "Ergebnisse herunterladen",
|
||||
"downloadResultDesc": "Holen Sie sich das ZIP-Paket, das das .spine-Projekt und das Bildverzeichnis enthält.",
|
||||
"version": "Version",
|
||||
"versionDesc": "Der Stecker passt automatisch zu Spine 3.8~4.3 entsprechend der JSON-Version.",
|
||||
"security": "Sicherheit",
|
||||
"securityDesc": "Hören Sie nur auf die lokale Adresse, die Autorisierung wird im Connector gespeichert und die temporären Dateien werden nach der Konvertierung bereinigt.",
|
||||
"differenceTitle": "Was ist der Unterschied zwischen Konfigurieren und Exportieren?",
|
||||
"differenceDesc": "„Konfiguration speichern“ speichert alle editierbaren Objekte und Parameter; „Export Spine Json“ exportiert nur das angezeigte Partikelsystem und backt die Kollisions-, Folge-, Nachlauf- und Sub-Emitter-Ergebnisse in unabhängige Animationsdaten."
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "Nach dem Aufrufen des kontinuierlichen Schleifenmodus werden die Partikelverfolgungseinstellungen ungültig und auf den Standardwert zurückgesetzt. Weitermachen?",
|
||||
"confirmLoopFollowExit": "Nach dem Verlassen des Schleifenpersistenzmodus werden die Partikelverfolgungseinstellungen ungültig und auf ihre Standardwerte zurückgesetzt. Weitermachen?",
|
||||
"invalidJson": "Die Konfigurationsdatei ist ungültig JSON",
|
||||
"invalidConfigFormat": "Nicht das Editorprofil SpineParticle",
|
||||
"unsupportedConfigVersion": "Konfigurationsversion noch nicht unterstützt: {version}",
|
||||
"missingScene": "In der Konfigurationsdatei fehlen vollständige Szenendaten",
|
||||
"missingEmbeddedSpine": "Die Konfiguration enthält keine wiederverwendbaren Spine-Originalressourcen",
|
||||
"chooseJsonConfig": "Bitte wählen Sie eine .json-Konfigurationsdatei aus",
|
||||
"settingsInvalidJson": "Der Systemeinstellungscache ist ungültig JSON",
|
||||
"settingsFormat": "Nicht SpineParticle Editor-Systemeinstellungscache",
|
||||
"settingsVersion": "Die Systemkonfigurationsversion wird noch nicht unterstützt: {version}",
|
||||
"settingsMissing": "Im Systemeinstellungscache fehlen Einstellungen",
|
||||
"noExportableImages": "Für das aktuell sichtbare Partikelsystem sind keine exportierbaren Bilder vorhanden",
|
||||
"invalidZipPath": "ZIP Ungültiger Dateipfad",
|
||||
"spineFileType": "Spine-Daten unterstützen nur .json oder .skel",
|
||||
"atlasFileType": "Atlas-Dateien unterstützen nur .atlas",
|
||||
"chooseTexture": "Bitte wählen Sie mindestens ein Texturbild aus",
|
||||
"binaryParseFailed": "Binäres Parsen von Spine ist fehlgeschlagen (4.3: {v43}; alte Version: {v42})",
|
||||
"invalidSpineJson": "Spine JSON Ungültiges Dateiformat",
|
||||
"unsupportedSpineJsonVersion": "Spine JSON-Version wird nicht unterstützt, nur {versions} wird unterstützt",
|
||||
"unsupportedSpineDataVersion": "Die Datenversion Spine wird nicht unterstützt, nur {versions} wird unterstützt",
|
||||
"embeddedReadFailed": "Die eingebettete Spine-Datei kann nicht gelesen werden: {name}",
|
||||
"missingImageWarning": "Bild „{file}“ fehlt oder hat unlesbare Abmessungen, Pfad bleibt erhalten.",
|
||||
"missingTrailImageWarning": "Das nachgestellte Bild „{file}“ fehlt und der Pfad wurde beibehalten.",
|
||||
"emptyCacheWarning": "Für „{name}“ ist kein Framebuffer verfügbar.",
|
||||
"readExportImageFailed": "Exportiertes Bild kann nicht gelesen werden: {name}",
|
||||
"connectorOffline": "Der lokale Spine-Connector wurde nicht erkannt. Bitte aktivieren Sie zuerst den Connector",
|
||||
"connectorHttpError": "Der Spine-Connector gibt den Fehler HTTP {status} zurück",
|
||||
"invalidTrailUV": "Ungültige UV-Daten für nachgestelltes Netz „{name}“",
|
||||
"missingTrailVertices": "Im nachgestellten Netz „{name}“ fehlen Scheitelpunktdaten",
|
||||
"trailIndexOutOfRange": "Dreiecksindex des nachgestellten Netzes „{name}“ außerhalb der Grenzen",
|
||||
"invalidTrailHull": "Die Außenkonturnummer des nachlaufenden Netzes „{name}“ ist ungültig",
|
||||
"trailHullIndexOutOfRange": "Der Außenkonturkantenindex des nachgestellten Netzes „{name}“ liegt außerhalb der Grenzen",
|
||||
"invalidInfluenceCount": "Das nachgestellte Netz „{name}“ enthält eine ungültige Anzahl an Knochengewichten",
|
||||
"missingBoneReference": "Das nachgestellte Netz „{name}“ verweist auf einen nicht vorhandenen Knochen",
|
||||
"invalidWeight": "Das nachfolgende Raster „{name}“ enthält ungültige Gewichtsdaten",
|
||||
"weightSum": "Die Scheitelpunktgewichte des nachgestellten Netzes „{name}“ ergeben in der Summe nicht 1",
|
||||
"vertexCountMismatch": "Das nachgestellte Netz „{name}“ weist eine inkonsistente Anzahl von Scheitelpunkten und UVs auf",
|
||||
"invalidInherit": "Der geerbte Wert „{inherit}“ für Bone „{name}“ entspricht nicht dem Spine {version} JSON-Format",
|
||||
"trailBoneParent": "Der Trailing-Bone „{name}“ muss direkt unter dem Partikelsystem-Bone aufgehängt werden und darf keine Bone-Kette bilden.",
|
||||
"trailSlotEmpty": "Der gewichtete Tailing-Slot „{name}“ kann keine leeren Anhänge verwenden. Die entsprechende Knochenskalierung sollte in der Nichterscheinungs- oder Todesphase auf 0 gesetzt werden.",
|
||||
"spine38Version": "Spine 3.8 Die exportierte Versions-ID muss 3.8 sein",
|
||||
"spine38Inherit": "Spine 3.8 Bone „{name}“ sollte „Transform“ verwenden und kann nicht „Inherit“ verwenden",
|
||||
"spine38SlotColor": "Spine 3.8 Slot-Farbzeitleiste muss Farbe / TwoColor verwenden",
|
||||
"spine38AttachmentName": "Spine 3.8 Der versteckte Rahmen der Anhang-Timeline muss explizit als Name geschrieben werden: null",
|
||||
"spine38RotationAngle": "Spine 3.8 Sie müssen den Winkel verwenden, um die Zeitachse zu drehen",
|
||||
"spine38Curve": "Spine 3.8 unterstützt das 4.x-Array-Kurvenformat nicht",
|
||||
"unsupportedExportVersion": "Die exportierte Version wird nicht unterstützt, nur Spine {versions} wird unterstützt",
|
||||
"exportVersionMismatch": "Inkonsistente Exportversion: auf Spine {expected} gesetzt, JSON markiert als Spine {actual}",
|
||||
"exportMissingBones": "Beim Exportergebnis fehlen Knochen",
|
||||
"missingAtlasTexture": "Die von Atlas referenzierte Textur ist nicht ausgewählt: {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "Sprache",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,14 @@
|
||||
"language": {
|
||||
"label": "Language",
|
||||
"zhCN": "中文",
|
||||
"en": "English"
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
},
|
||||
"common": {
|
||||
"close": "Close",
|
||||
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "Arrastra para ajustar la altura de la línea de tiempo",
|
||||
"systems": "sistema",
|
||||
"particlesBones": "Partículas (huesos)",
|
||||
"rootBone": "hueso de la raíz",
|
||||
"hudTip": "Zoom de rueda · Clic izquierdo para arrastrar el lienzo",
|
||||
"title": "Editor de partículas Spine - Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "Cerrar",
|
||||
"reset": "Restablecer",
|
||||
"add": "Añadir",
|
||||
"remove": "Quitar",
|
||||
"delete": "Eliminar",
|
||||
"clear": "Limpiar",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirmar",
|
||||
"none": "Ninguno",
|
||||
"enabled": "Activado",
|
||||
"disabled": "Desactivado",
|
||||
"fixed": "Fijo",
|
||||
"random": "Aleatorio",
|
||||
"curve": "Curva",
|
||||
"followExport": "Seguir exportación",
|
||||
"linear": "Lineal",
|
||||
"bezier": "Bézier",
|
||||
"above": "Arriba",
|
||||
"below": "Abajo",
|
||||
"left": "Izquierda",
|
||||
"right": "Derecha",
|
||||
"seconds": "s",
|
||||
"frames": "fotogramas"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "Ajustes",
|
||||
"undo": "Deshacer (Ctrl+Z)",
|
||||
"pan": "Mover lienzo (Q)",
|
||||
"translate": "Mover (W)",
|
||||
"rotate": "Girar (E)",
|
||||
"scale": "Escalar (R)",
|
||||
"zoomIn": "Acercar",
|
||||
"zoomOut": "Alejar",
|
||||
"fitView": "Ajustar al lienzo",
|
||||
"toggleGrid": "Mostrar/ocultar cuadrícula",
|
||||
"resetView": "Restablecer vista",
|
||||
"background": "Fondo",
|
||||
"backgroundSettings": "Ajustes del fondo",
|
||||
"changeBackground": "Cambiar imagen",
|
||||
"uploadBackground": "Subir imagen",
|
||||
"clearBackground": "Borrar fondo",
|
||||
"noBackground": "Sin imagen",
|
||||
"backgroundX": "Desplazamiento X de la imagen de fondo",
|
||||
"backgroundY": "Desplazamiento Y de la imagen de fondo",
|
||||
"backgroundOpacity": "Transparencia de la imagen de fondo",
|
||||
"opacity": "Opacidad",
|
||||
"help": "Ayuda",
|
||||
"openHelp": "Abrir ayuda"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configuración del sistema",
|
||||
"layout": "Diseño de interfaz",
|
||||
"parameterPanelPosition": "Ubicación del panel de parámetros",
|
||||
"panelOnRight": "El panel de parámetros se muestra a la derecha.",
|
||||
"history": "Historial de operaciones",
|
||||
"maxUndo": "Número máximo de pasos hacia atrás",
|
||||
"canvasGuides": "Display auxiliar de lona",
|
||||
"emitter": "punto de lanzamiento",
|
||||
"bones": "Conexión ósea",
|
||||
"bonePointSize": "Tamaño del dibujo de la punta del hueso",
|
||||
"boneAxisSize": "Tamaño del dibujo del eje",
|
||||
"skinMesh": "malla desollada",
|
||||
"enableTicks": "Habilitar ticks",
|
||||
"tickFontSize": "Escalar el tamaño del texto",
|
||||
"tickWidth": "espesor de la marca de verificación",
|
||||
"axisColor": "color del eje",
|
||||
"showAxisLabels": "Mostrar valor de escala",
|
||||
"cacheNote": "Toda la configuración del sistema se guarda automáticamente en el navegador actual."
|
||||
},
|
||||
"config": {
|
||||
"title": "Gestión de configuración",
|
||||
"save": "Guardar configuración",
|
||||
"saveTitle": "Guarde todas las configuraciones del editor (Ctrl+S)",
|
||||
"load": "Cargar configuración",
|
||||
"loadTitle": "Cargar la configuración del editor local",
|
||||
"presets": "Lista preestablecida",
|
||||
"selectPreset": "Seleccionar preajuste",
|
||||
"noPresets": "Sin preajustes",
|
||||
"saved": "La configuración se ha guardado localmente.",
|
||||
"loading": "Cargando configuración…",
|
||||
"loaded": "Cargado: {name}",
|
||||
"presetLoading": "Cargando ajustes preestablecidos…",
|
||||
"presetLoaded": "Preestablecido cargado: {name}",
|
||||
"presetNamingError": "{message}, verifique el nombre de archivo predeterminado",
|
||||
"presetTransferTitle": "Cargar preajuste",
|
||||
"presetDownloading": "Descargando {file}…",
|
||||
"presetParsing": "Analizando la configuración predeterminada...",
|
||||
"presetRestoring": "Analizando y restaurando recursos predeterminados...",
|
||||
"presetComplete": "Carga preestablecida completada",
|
||||
"presetListError": "No se puede leer la lista preestablecida",
|
||||
"presetReadError": "No se puede leer el ajuste preestablecido: {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.Barrido de partículas",
|
||||
"barBlocks": "2.Bloques rectangulares",
|
||||
"forceTrail": "3.Estela de campo de fuerza",
|
||||
"lightningSequence": "4.Secuencia de rayos",
|
||||
"texturePivot": "5.Pivote de textura",
|
||||
"subEmitter": "6.Subemisor"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "Arrastre el controlador cuadrado para ajustar el arco · Haga doble clic en un espacio en blanco para crear uno nuevo · Haga doble clic en un nodo para eliminarlo",
|
||||
"linearHint": "Haga doble clic en un espacio en blanco para crear uno nuevo. Haga doble clic en un nodo para eliminarlo. Arrastra un nodo para ajustarlo.",
|
||||
"resetTitle": "Restaurar curva predeterminada"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "Haga doble clic en la cinta para agregar una marca de color.",
|
||||
"color": "Código de colores",
|
||||
"colorValue": "Valor de color de la escala de color",
|
||||
"position": "Posición de la marca de color",
|
||||
"addMiddle": "Añade color en el medio.",
|
||||
"delete": "Eliminar parche de color actual",
|
||||
"hint": "Haga doble clic en la banda de color para agregar una nueva · Arrastre la marca de color para ajustar su posición · Haga doble clic en la marca de color para eliminarla"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "Desplazamiento de ángulo",
|
||||
"value": "valor numérico",
|
||||
"lower": "límite inferior",
|
||||
"upper": "límite superior",
|
||||
"rangeLower": "Límite inferior del rango",
|
||||
"rangeUpper": "Rango superior",
|
||||
"curveInput": "Entrada de curva →",
|
||||
"direction": "Dirección de lanzamiento"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "punto de pivote del mapa",
|
||||
"zoomOut": "alejar",
|
||||
"zoomIn": "agrandar",
|
||||
"expand": "Operación de zoom a pantalla completa",
|
||||
"interaction": "Haga clic izquierdo/arrastre para establecer el punto de pivote · Haga clic derecho para arrastrar el lienzo · Rueda de desplazamiento para hacer zoom",
|
||||
"previewAlt": "Vista previa del punto de pivote",
|
||||
"noImage": "Ninguna imagen seleccionada",
|
||||
"resetCenter": "Reposicionar en el medio (50%, 50%)",
|
||||
"coordinates": "Coordenadas del punto del eje (%)",
|
||||
"rotationTest": "Prueba de rotación del eje",
|
||||
"static": "aún",
|
||||
"spin": "rotación",
|
||||
"swing": "balancearse",
|
||||
"rotationAlt": "prueba de rotación",
|
||||
"topLeft": "arriba a la izquierda",
|
||||
"top": "Justo arriba",
|
||||
"topRight": "arriba a la derecha",
|
||||
"left": "derecha izquierda",
|
||||
"center": "medio",
|
||||
"right": "Bien",
|
||||
"bottomLeft": "abajo a la izquierda",
|
||||
"bottom": "Directamente debajo·abajo",
|
||||
"bottomRight": "abajo a la derecha"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "Seleccionar imágenes de fotogramas de secuencia",
|
||||
"chooseLocal": "Seleccionar imagen local",
|
||||
"subfolder": "subcarpeta",
|
||||
"name": "nombre",
|
||||
"restore": "Restaurar {name}",
|
||||
"deleteResource": "Eliminar recursos de imagen",
|
||||
"imageMode": "Modo de imagen",
|
||||
"fixed": "Imagen única",
|
||||
"sequence": "Secuencia",
|
||||
"playbackMode": "modo de juego",
|
||||
"onceHide": "Una vez, ocultar al final",
|
||||
"onceHold": "Una vez, mantener último fotograma",
|
||||
"loopForward": "Bucle hacia delante",
|
||||
"loopReverse": "Bucle inverso",
|
||||
"playbackFps": "Velocidad de fotogramas de reproducción",
|
||||
"chooseSequenceMulti": "Seleccionar fotogramas de secuencia (múltiples selecciones)",
|
||||
"weight": "Peso %",
|
||||
"unlockWeight": "Desbloquear bloqueo de proporción",
|
||||
"lockWeight": "Bloquear la proporción actual",
|
||||
"pivot": "Pivote de textura",
|
||||
"collapsePivot": "Ajuste del punto de pivote de colapso",
|
||||
"expandPivot": "Ampliar el ajuste del punto de pivote",
|
||||
"pivotModal": "Refinamiento de imagen grande del punto del eje de rotación de la textura",
|
||||
"pivotModalDesc": "Haga clic o arrastre a cualquier parte del mapa a continuación para establecer con precisión el centro de rotación/oscilación de las partículas.",
|
||||
"pivotZoomHint": "Admite un aumento del 100 % al 400 % y apunta con precisión a la punta o la raíz:",
|
||||
"confirmPivot": "Determinar y guardar el punto de pivote",
|
||||
"noSequence": "No se ha seleccionado ningún cuadro de secuencia",
|
||||
"firstFrame": "Cuadro 1",
|
||||
"firstImage": "primera foto",
|
||||
"lastImage": "última foto",
|
||||
"pivotOn": "Abierto: X {x}% | Y {y}%",
|
||||
"pivotOff": "No activado, el valor predeterminado está alrededor del centro de la imagen (50%, 50%)",
|
||||
"pivotCustom": "Se ha personalizado el punto de pivote: X {x}% | Y {y}%",
|
||||
"frameCountOne": "1 cuadro · {name}",
|
||||
"frameCountMany": "Marco {count} · {first} → {last}",
|
||||
"sequenceSelected": "El fotograma {count} ha sido seleccionado y reproducido en el orden {first}-{last}."
|
||||
},
|
||||
"timeline": {
|
||||
"play": "Reproducir(D)",
|
||||
"pause": "Pausa (D)",
|
||||
"toStart": "Volver al primer cuadro (S)",
|
||||
"previous": "fotograma anterior",
|
||||
"next": "siguiente fotograma",
|
||||
"toEnd": "Ir al último fotograma",
|
||||
"continuousLoop": "Reproducción en bucle continuo",
|
||||
"abLoop": "Bucle independiente del rango A/B",
|
||||
"abLoopShort": "Bucle AB",
|
||||
"abRange": "Intervalo de ciclo AB",
|
||||
"playbackStart": "Cuadro de inicio de reproducción personalizado",
|
||||
"playbackEnd": "Fotograma final de reproducción personalizado",
|
||||
"startFrame": "Reproducir cuadro de inicio",
|
||||
"endFrame": "Reproducir fotograma final",
|
||||
"frame": "marco",
|
||||
"emission": "Emisión",
|
||||
"particleLife": "Partículas activas",
|
||||
"spineAnimation": "Animación de Spine",
|
||||
"ownerAnimation": "Animación asociada",
|
||||
"setOwnerAnimation": "Establecer la animación a la que pertenece el sistema de partículas actual.",
|
||||
"chooseOwnerAnimation": "Seleccione la animación",
|
||||
"animationName": "Nombre de la animación",
|
||||
"renameAnimation": "Cambiar el nombre de la animación actual",
|
||||
"rename": "Rebautizar",
|
||||
"newAnimation": "+ Nuevo",
|
||||
"keepOneAnimation": "Es necesario conservar al menos una animación.",
|
||||
"spinePreview": "Animación de vista previa Spine",
|
||||
"noSpineAnimation": "No hay animación Spine disponible",
|
||||
"none": "ninguno",
|
||||
"systemName": "Sistema {index}",
|
||||
"dragLoopDuration": "Duración del segmento del bucle de arrastre",
|
||||
"dragEmissionDuration": "Duración del arrastre",
|
||||
"dragSpineStart": "Arrastre para ajustar la hora de inicio de la animación",
|
||||
"noAnimationData": "Actualmente no hay datos de animación para mostrar.",
|
||||
"animationNameEmpty": "El nombre de la animación no puede estar vacío.",
|
||||
"animationNameDuplicate": "Los nombres de las animaciones no se pueden repetir.",
|
||||
"animationRenameFailed": "No se puede modificar el nombre de la animación",
|
||||
"zoomIn": "agrandar",
|
||||
"zoomOut": "alejar",
|
||||
"zoomFit": "Moderado",
|
||||
"frameStatus": "Fotograma {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "Modo de emisión",
|
||||
"reset": "Restablecer los parámetros del modo de transmisión",
|
||||
"stream": "Continuo",
|
||||
"burst": "Ráfaga",
|
||||
"normalStream": "Continuo normal",
|
||||
"loopStream": "Bucle continuo",
|
||||
"rate": "Tasa de emisión",
|
||||
"duration": "Duración de emisión",
|
||||
"loopDuration": "Duración del lanzamiento (f)",
|
||||
"generateStart": "Generar animación de bucle de inicio",
|
||||
"generateEnd": "Generar animación de bucle final",
|
||||
"customDuration": "Especificar duración",
|
||||
"auto": "Automático {frames}f",
|
||||
"startLoopDuration": "Duración del segmento de bucle inicial",
|
||||
"endLoopDuration": "Duración del segmento de bucle final",
|
||||
"loopWarning": "El modo de persistencia de bucle no admite el seguimiento de huesos ni el seguimiento de rutas; Las siguientes configuraciones de partículas se restaurarán a los valores predeterminados al entrar o salir.",
|
||||
"burstCount": "Cantidad por ráfaga",
|
||||
"delay": "Retardo",
|
||||
"shapeTitle": "Forma del emisor",
|
||||
"shapeReset": "Restablecer los parámetros de forma del emisor",
|
||||
"shape": "forma",
|
||||
"point": "Punto",
|
||||
"circle": "Círculo",
|
||||
"rect": "Rectángulo",
|
||||
"cone": "Cono",
|
||||
"path": "Ruta",
|
||||
"innerDiameter": "diámetro interior",
|
||||
"outerDiameter": "diámetro exterior",
|
||||
"innerRadius": "radio interior",
|
||||
"outerRadius": "radio exterior",
|
||||
"coneDirection": "Orientación cónica",
|
||||
"coneAngle": "Ángulo de apertura cónica",
|
||||
"innerWidth": "ancho interior",
|
||||
"innerHeight": "Alto por dentro",
|
||||
"outerWidth": "Ancho exterior",
|
||||
"outerHeight": "extra alto",
|
||||
"selectPath": "Seleccionar ruta",
|
||||
"noPath": "Sin camino (emisión puntual)",
|
||||
"birthDistribution": "distribución de nacimientos",
|
||||
"evenDistribution": "Distribución fija equiespaciada",
|
||||
"randomDistribution": "distribución aleatoria",
|
||||
"emissionAngle": "ángulo de lanzamiento",
|
||||
"radial": "Radial (centro hacia afuera)",
|
||||
"pathNormal": "perpendicular al camino",
|
||||
"pathTangent": "a lo largo de la dirección del camino",
|
||||
"fixedAngle": "ángulo fijo",
|
||||
"baseAngle": "ángulo base",
|
||||
"randomRange": "rango aleatorio",
|
||||
"showShape": "mostrar forma"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "Atributos de partículas",
|
||||
"reset": "Restablecer parámetros de atributos de partículas",
|
||||
"initialParams": "Valores iniciales",
|
||||
"initialLife": "ciclo de vida inicial",
|
||||
"randomSample": "Muestreo aleatorio →",
|
||||
"initialSpeed": "velocidad inicial",
|
||||
"initialScale": "escalamiento inicial",
|
||||
"uniform": "unificado",
|
||||
"separateXY": "separación XY",
|
||||
"scaleX": "Ampliar X",
|
||||
"scaleY": "Zoom Y",
|
||||
"initialRotation": "rotación inicial",
|
||||
"lifecycleTitle": "Cambios durante la vida útil",
|
||||
"speedOverLife": "velocidad del ciclo de vida",
|
||||
"speedMultiplier": "multiplicador de velocidad",
|
||||
"lifeTo": "ciclo de vida →",
|
||||
"scaleOverLife": "Escalar durante el ciclo de vida",
|
||||
"scaleMultiplier": "Relación de zoom",
|
||||
"multiplierX": "Aumento",
|
||||
"multiplierY": "Ampliación Y",
|
||||
"rotationOverLife": "Girar durante el ciclo de vida.",
|
||||
"rotationSpeed": "Velocidad de rotación"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Apariencia y recursos",
|
||||
"reset": "Restablecer parámetros de apariencia y recursos",
|
||||
"opacity": "Opacidad",
|
||||
"curveMode": "Modo curva",
|
||||
"transparent": "0 (transparente)",
|
||||
"opaque": "1 (opaco)",
|
||||
"renderLayer": "Capa de renderizado (slot de Spine)",
|
||||
"top": "nivel superior",
|
||||
"spineSlot": "Ranura Spine",
|
||||
"selectSpine": "Por favor seleccione Spine",
|
||||
"noSpine": "Ninguno disponible Spine",
|
||||
"noSlot": "Aún no se ha seleccionado ningún espacio",
|
||||
"reselect": "Reseleccionar",
|
||||
"selectSlot": "Seleccionar ranura",
|
||||
"searchSlots": "Busque el nombre de la ranura o del accesorio...",
|
||||
"searchSlotsAria": "Buscar espacios",
|
||||
"emptySlot": "Ranura vacía",
|
||||
"noMatchingSlots": "No hay ranura coincidente",
|
||||
"above": "encima de esta imagen de tragamonedas",
|
||||
"below": "debajo de esta imagen de tragamonedas",
|
||||
"followAttachment": "Mostrar y ocultar con accesorios de tragamonedas",
|
||||
"previewOnly": "Ajustar el nivel de visualización solo afecta la vista previa del editor y no afecta los datos exportados.",
|
||||
"imageResources": "Recursos de imagen",
|
||||
"addImage": "Agregar recursos de imagen",
|
||||
"scale": "Zoom",
|
||||
"color": "color",
|
||||
"fixedColor": "color fijo",
|
||||
"randomColor": "color aleatorio",
|
||||
"lifetime": "ciclo vital",
|
||||
"normal": "Normal",
|
||||
"add": "Suma",
|
||||
"multiply": "Multiplicación",
|
||||
"screen": "Pantalla",
|
||||
"fixedColorValue": "valor de color fijo",
|
||||
"randomColorHint": "Cada partícula elige aleatoriamente un color de la cinta cuando nace y permanece sin cambios durante su ciclo de vida.",
|
||||
"independentAlpha": "Opacidad independiente",
|
||||
"off": "Desactivado"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · Imagen de arriba",
|
||||
"slotLabelBelow": "{spine} / {slot} · Debajo de la imagen",
|
||||
"resolvedAbove": "Representado encima de la imagen {slot} y debajo de su ranura.",
|
||||
"resolvedBetween": "Representado entre {previous} y {slot}",
|
||||
"warningNoSpine": "No hay ningún Spine cargado y las partículas se muestran temporalmente en la parte superior.",
|
||||
"warningNoSelection": "Spine aún no se ha seleccionado y las partículas se muestran temporalmente en la parte superior.",
|
||||
"warningMissingSpine": "El objetivo Spine no existe y las partículas se muestran temporalmente en la parte superior.",
|
||||
"warningNotReady": "El objetivo Spine no está listo y las partículas se muestran temporalmente en la parte superior.",
|
||||
"warningMissingSlot": "La ranura de destino no existe (es posible que el recurso haya sido reemplazado) y las partículas se muestran temporalmente en la parte superior.",
|
||||
"warningFirstSlot": "Esta es la primera ranura y no se puede mostrar debajo de ella; las partículas se muestran temporalmente en la parte superior."
|
||||
},
|
||||
"export": {
|
||||
"title": "Ajustes de exportación",
|
||||
"reset": "Restablecer la configuración de exportación",
|
||||
"imagesPath": "Ruta de imagen (Ruta de imágenes Spine)",
|
||||
"spineVersion": "Versión de Spine",
|
||||
"keyframeCurve": "Curva de interpolación de fotogramas clave",
|
||||
"linear": "Lineal",
|
||||
"smoothBezier": "Bézier suave (Suave Bézier)",
|
||||
"bezierHelp": "Smooth Bezier ajusta el movimiento continuo dentro de la tolerancia al error; El nacimiento, la muerte, el cambio de apego y las mutaciones todavía utilizan fotogramas clave de pasos.",
|
||||
"spine38Help": "Spine 3.8 no admite la matriz Bézier por canal de 4.x y se convierte a fotogramas clave lineales por partes con tolerancia reducida al exportar.",
|
||||
"fps": "FPS de exportación",
|
||||
"omitFps": "No escribas fps",
|
||||
"fpsHelp": "Mantenga los segundos reales de la animación sin cambios al modificar FPS; \"No escribir fps\" solo omite los metadatos de fps de Spine.",
|
||||
"integerFrames": "Alineación de marco entero",
|
||||
"bonePool": "Conjunto de objetos óseos",
|
||||
"excludeEmpty": "Excluir animaciones sin contenido",
|
||||
"baking": "La animación se está recalculando y horneando.",
|
||||
"exportJsonTitle": "Exportar Spine {version} JSON",
|
||||
"preparing": "Preparándonos para exportar...",
|
||||
"exportJson": "Exportar Spine JSON",
|
||||
"exportImagesTitle": "Descargue por separado la imagen utilizada por el sistema de partículas actual ZIP",
|
||||
"organizingImages": "Ordenando imágenes...",
|
||||
"exportImages": "Exportar imágenes ZIP",
|
||||
"generatingProject": "Generando proyecto...",
|
||||
"exportSpine": "Exportar paquete .spine",
|
||||
"authorize": "Autorizar sitio web actual",
|
||||
"authorizeTitle": "Autorizar el sitio web actual en el conector nativo",
|
||||
"refreshConnector": "Vuelva a comprobar el conector",
|
||||
"refresh": "refrescar",
|
||||
"recalculating": "Recalculando la animación de partículas...",
|
||||
"exported": "Exportado Spine {version}: sistemas de partículas {systems}, animaciones {animations}, huesos de raíz {bones} {warning}",
|
||||
"resourceWarning": ";{count} sugerencias de recursos (las imágenes que faltan aún se exportan)",
|
||||
"timeout": "Nuevo cálculo del tiempo de espera de la animación. Confirme que la página aún se está ejecutando e inténtelo nuevamente.",
|
||||
"preparingProject": "Ordenando imágenes y llamando a esta máquina Spine…",
|
||||
"projectExported": "Se ha generado {fileName}: incluye el proyecto .spine y las imágenes {images}, Spine {version}",
|
||||
"collectingImages": "Cotejando imágenes utilizadas actualmente por el sistema de partículas...",
|
||||
"imagesExported": "Se ha generado {fileName}: {folder}/ contiene imágenes {images}",
|
||||
"connectorChecking": "Detectando el conector local Spine...",
|
||||
"connectorOffline": "El conector local de Spine no está iniciado",
|
||||
"spineNotFound": "El conector está iniciado, pero no se encontró Spine",
|
||||
"notAuthorized": "El conector está iniciado, pero este sitio no está autorizado",
|
||||
"connectorReady": "Conector disponible · Spine listo",
|
||||
"connectorBusy": "Recalculando y generando el proyecto de Spine",
|
||||
"connectorGenerate": "Generar proyecto Spine {version} con Spine local",
|
||||
"unknown": "desconocido",
|
||||
"checking": "Comprobando",
|
||||
"offline": "Sin conexión",
|
||||
"notFound": "Spine no encontrado",
|
||||
"unauthorized": "No autorizado",
|
||||
"projectTransferTitle": "Exportar paquete Spine",
|
||||
"projectTransferDetail": "Recalculando la animación de partículas...",
|
||||
"projectTransferDownload": "Se ha descargado el paquete del proyecto Spine.",
|
||||
"generatingJson": "Generando Spine JSON…",
|
||||
"preparingProjectFiles": "Recopilando imágenes del proyecto...",
|
||||
"uploading": "Cargando datos al conector Spine...",
|
||||
"spineProcessing": "Spine está convirtiendo el proyecto, espere...",
|
||||
"downloadingProject": "Descargando el paquete de proyecto Spine generado...",
|
||||
"handingToBrowser": "Entregando al navegador para descargar..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "Terminado",
|
||||
"failed": "Operación fallida"
|
||||
},
|
||||
"scene": {
|
||||
"title": "Objetos de escena",
|
||||
"addParticle": "Agregar sistema de partículas",
|
||||
"addParticleShort": "+partícula",
|
||||
"addCollider": "Agregar colisionador",
|
||||
"addColliderShort": "+colisión",
|
||||
"addPath": "agregar ruta",
|
||||
"addPathShort": "+ camino",
|
||||
"addSpine": "Añadir Spine",
|
||||
"copyTitle": "Copiar el objeto de escena seleccionado actualmente",
|
||||
"showParticle": "Mostrar sistema de partículas",
|
||||
"hideParticle": "Ocultar sistema de partículas",
|
||||
"showCollider": "mostrar colisionadores",
|
||||
"hideCollider": "Ocultar colisionador",
|
||||
"showPath": "mostrar ruta",
|
||||
"hidePath": "Ocultar ruta",
|
||||
"showSpine": "Pantalla Spine",
|
||||
"hideSpine": "Ocultar Spine",
|
||||
"particle": "Partículas",
|
||||
"subEmitter": "Subemisor",
|
||||
"collision": "Colisión",
|
||||
"path": "Ruta",
|
||||
"deleteParticle": "Eliminar sistema de partículas",
|
||||
"deleteCollider": "Eliminar colisionadores",
|
||||
"deletePath": "eliminar ruta",
|
||||
"deleteSpine": "Eliminar Spine",
|
||||
"empty": "Aún no hay objetos en la escena.",
|
||||
"name": "nombre",
|
||||
"positionX": "Posición X",
|
||||
"positionY": "Posición Y",
|
||||
"offsetX": "Desplazamiento X",
|
||||
"offsetY": "Desplazamiento Y",
|
||||
"rotation": "Rotación",
|
||||
"scaleX": "Escala X",
|
||||
"scaleY": "Escala Y",
|
||||
"seed": "Semilla aleatoria",
|
||||
"seedTitle": "Controle todos los atributos aleatorios, la selección de recursos y el muestreo aleatorio de modificadores en el sistema de partículas.",
|
||||
"randomizeSeed": "Generar una nueva semilla aleatoria global",
|
||||
"seedHint": "Controlar los parámetros aleatorios iniciales, la selección de recursos y el muestreo aleatorio modificador; la misma semilla puede reproducir el mismo efecto",
|
||||
"colliderTitle": "Propiedades del colisionador",
|
||||
"colliderName": "Nombre del colisionador",
|
||||
"type": "tipo",
|
||||
"circle": "redondo",
|
||||
"ellipse": "oval",
|
||||
"rect": "rectángulo",
|
||||
"polygon": "polígono",
|
||||
"custom": "Personalizar",
|
||||
"enabled": "permitir",
|
||||
"xPosition": "Posición X",
|
||||
"yPosition": "Posición Y",
|
||||
"scaleXShort": "Escala X",
|
||||
"scaleYShort": "Escala Y",
|
||||
"radius": "radio",
|
||||
"radiusX": "radio X",
|
||||
"radiusY": "radio Y",
|
||||
"width": "ancho",
|
||||
"height": "alto",
|
||||
"sides": "Número de lados",
|
||||
"collisionResponse": "Respuesta de choque",
|
||||
"physics": "Física (rebote/fricción)",
|
||||
"pause": "Pausa (parar)",
|
||||
"destroy": "Desaparecer (destruir inmediatamente)",
|
||||
"elasticity": "Elasticidad (0-1)",
|
||||
"friction": "Fricción (0-1)",
|
||||
"followPath": "Sigue el camino",
|
||||
"targetPath": "ruta de destino",
|
||||
"notSelected": "(no seleccionado)",
|
||||
"moveDuration": "Duración del movimiento (segundos)",
|
||||
"followDirection": "dirección a lo largo del camino",
|
||||
"moveProgressCurve": "Curva de progreso en movimiento",
|
||||
"moveProgressHelp": "Eje horizontal: tiempo real/duración del movimiento; eje vertical: progreso del camino (0=punto inicial → 1=punto final)",
|
||||
"pathTitle": "atributo de ruta",
|
||||
"pathName": "nombre de la ruta",
|
||||
"closedPath": "camino cerrado",
|
||||
"pathColor": "color del camino",
|
||||
"pathHelp": "Instrucciones de funcionamiento:",
|
||||
"pathHelpItems": "Haga doble clic en el espacio en blanco/curva: cree un nuevo punto de anclaje, haga doble clic en el punto de anclaje: elimine el nodo, haga doble clic la segunda vez y arrastre: cree uno nuevo y extraiga el controlador, arrastre el punto de anclaje para mover la posición, arrastre el controlador para ajustar la curva, Mayús + controlador de arrastre: completamente simétrico en ambos lados, Alt+control de arrastre: controle independientemente un lado, Ctrl+clic/selección de marco: agregue nodos seleccionados, Alt+clic/selección de marco: reste nodos seleccionados, Alt+clic en el espacio en blanco: borre todas las selecciones, seleccione varios nodos y arrástrelos como un todo",
|
||||
"applyPresetShape": "Aplicar una forma preestablecida",
|
||||
"choosePreset": "Seleccione un preajuste...",
|
||||
"square": "Cuadrado",
|
||||
"star": "forma de estrella",
|
||||
"applyPreset": "Aplicar preajuste",
|
||||
"clearAnchors": "punto de anclaje claro",
|
||||
"panelHint": "Utilice el botón en la esquina superior derecha para crear un objeto de escena."
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "Modificadores",
|
||||
"reset": "Restablecer parámetros del modificador",
|
||||
"damping": "Amortiguación",
|
||||
"enableNoise": "Activar ruido de movimiento",
|
||||
"strength": "fortaleza",
|
||||
"noiseRange": "Rango de fluctuación",
|
||||
"noiseSpeed": "Flujo de tiempo",
|
||||
"noiseHint": "El control de intensidad afecta la proporción · El rango de fluctuación controla la desviación máxima · El flujo de tiempo controla la velocidad de cambio",
|
||||
"enableGravity": "Activar gravedad",
|
||||
"gravityStrength": "Fuerza de gravedad",
|
||||
"strengthMin": "Fuerza mínima",
|
||||
"strengthMax": "Fuerza máxima",
|
||||
"direction": "dirección",
|
||||
"gravityOverLife": "Gravedad durante el ciclo de vida.",
|
||||
"windOverLife": "viento del ciclo de vida",
|
||||
"axisStrength": "Eje vertical: intensidad 0~1",
|
||||
"directionHint": "0° derecha · -90° abajo · La intensidad negativa invierte la dirección",
|
||||
"enableWind": "Activar viento",
|
||||
"windStrength": "fuerza del viento",
|
||||
"enableForceField": "Activar campo de fuerza",
|
||||
"centerX": "Centro X",
|
||||
"centerY": "Centro Y",
|
||||
"forceStrength": "Fuerza del campo de fuerza",
|
||||
"forceRadius": "radio del campo de fuerza",
|
||||
"falloffMode": "modo de decadencia",
|
||||
"constant": "Constante (la velocidad no cambia dentro del rango)",
|
||||
"linearFalloff": "Caída lineal (el borde es 0)",
|
||||
"inverseFalloff": "Inversamente proporcional a la distancia (más fuerte en el centro)",
|
||||
"forceHint": "Los números positivos se atraen hacia el centro, los números negativos se repelen hacia afuera y el círculo del campo de fuerza se puede arrastrar dentro del lienzo.",
|
||||
"showShape": "mostrar forma",
|
||||
"enableVortex": "Activar vórtice",
|
||||
"vortexHint": "Números positivos en sentido antihorario · Números negativos en sentido horario",
|
||||
"enableAttraction": "Activar atracción",
|
||||
"attractionX": "Punto de adsorción X",
|
||||
"attractionY": "Punto de adsorción Y",
|
||||
"attractionRadius": "radio de adsorción",
|
||||
"attractionDuration": "tiempo de adsorción",
|
||||
"delay": "tiempo de retraso",
|
||||
"delayMode": "Modo de retardo",
|
||||
"globalTime": "tiempo unificado",
|
||||
"particleLife": "vida de una sola partícula",
|
||||
"attractionPath": "Método de adsorción",
|
||||
"straight": "linea recta",
|
||||
"attractionHint": "Después del retraso, la adsorción comienza desde la posición actual. Cuando alcance el rango rojo, morirá. El círculo de adsorción se puede arrastrar dentro del lienzo.",
|
||||
"enableTrail": "Activar estela",
|
||||
"trailImages": "Imágenes finales independientes",
|
||||
"addTrailImage": "Agregar recursos de imágenes finales",
|
||||
"trailRotation": "girar",
|
||||
"trailBones": "Número de huesos posteriores",
|
||||
"trailRatio": "Relación de seguimiento (%)",
|
||||
"trailLength": "longitud de salida",
|
||||
"randomRange": "rango aleatorio",
|
||||
"lengthRatio": "Relación de longitud (%)",
|
||||
"lengthMin": "Longitud mínima (%)",
|
||||
"lengthMax": "Longitud máxima (%)",
|
||||
"trailWidth": "Ancho de salida",
|
||||
"widthRatio": "relación de ancho (%)",
|
||||
"widthMin": "Ancho mínimo (%)",
|
||||
"widthMax": "Ancho máximo (%)",
|
||||
"widthScale": "escala de ancho",
|
||||
"followParticle": "seguir partículas",
|
||||
"lifeLengthCurve": "curva de longitud del ciclo de vida",
|
||||
"shapeCurve": "Curva de forma (cabeza → ancho de cola)",
|
||||
"colorMode": "modo de color",
|
||||
"blendMode": "modo de fusión",
|
||||
"fixedColor": "color fijo",
|
||||
"alphaMode": "modo de transparencia",
|
||||
"opacity": "transparencia",
|
||||
"gridRows": "Número de filas de la cuadrícula",
|
||||
"gridCols": "Número de columnas de la cuadrícula",
|
||||
"trailHint": "Cada partícula genera un conjunto de huesos posteriores hermanos en proporción a los recursos; la longitud y el ancho aleatorios se determinan cuando nace la partícula, y la misma semilla se puede reproducir de manera estable",
|
||||
"enableFollow": "Activar seguimiento del emisor",
|
||||
"followMode": "modo de seguimiento",
|
||||
"noFollow": "ninguno",
|
||||
"followPath": "sigue el camino",
|
||||
"selectedBone": "huesos seleccionados",
|
||||
"emitterAngleMode": "Modo de ángulo del transmisor",
|
||||
"fixedAngle": "ángulo fijo",
|
||||
"followMoveDirection": "Sigue la dirección del movimiento.",
|
||||
"moveProgressCurve": "Curva de progreso del movimiento (0→1)",
|
||||
"moveDuration": "Duración del movimiento (s)",
|
||||
"followSpace": "seguir el espacio",
|
||||
"localSpace": "Espacio local (movimiento GEN)",
|
||||
"worldSpace": "Espacio mundial (movimiento del punto de generación de partículas)",
|
||||
"moveDirection": "dirección de movimiento",
|
||||
"forward": "Adelante (punto inicial → punto final)",
|
||||
"reverse": "Invertir (punto final → punto inicial)",
|
||||
"followOffset": "Punto de partida compensado (0-1)",
|
||||
"followSpaceHint": "El espacio local mueve todo el emisor; el espacio mundial solo mueve el punto de generación de nuevas partículas, y las partículas nacidas permanecen en la posición mundial.",
|
||||
"followTarget": "Sigue el objetivo:",
|
||||
"noValidBone": "Aún no se ha vinculado ningún hueso válido; seleccione primero el hueso en el árbol jerárquico Spine.",
|
||||
"rebind": "reencuadernar",
|
||||
"bind": "vinculante",
|
||||
"selectedBoneLabel": "Hueso actualmente seleccionado:",
|
||||
"boneLocalSpace": "Espacio local (se mueve con huesos)",
|
||||
"boneWorldSpace": "Espacio mundial (las partículas mantienen su posición después de generarse)",
|
||||
"offsetX": "Compensación de desplazamiento X",
|
||||
"offsetY": "Compensación de desplazamiento Y",
|
||||
"rotationOffset": "Desplazamiento de rotación",
|
||||
"scaleOffsetX": "Compensación de escala X",
|
||||
"scaleOffsetY": "Desplazamiento de escala Y",
|
||||
"boneFollowHint": "El emisor solo sigue la posición del hueso Spine seleccionado y no hereda la rotación o escala de Spine; la transformación de partículas utiliza los propios parámetros del sistema de partículas y el desplazamiento superior.",
|
||||
"enableCollision": "Activar colisión",
|
||||
"collisionObjects": "Objetos de colisión participantes",
|
||||
"colliderDisabled": "{name} (colisionadores desactivados)",
|
||||
"clearCollider": "Borrar objeto de colisión {name}",
|
||||
"addCollider": "Agregar objetos de colisión de escena",
|
||||
"noAvailableColliders": "No hay objetos de colisión para agregar",
|
||||
"noCollidersSelected": "No se selecciona ningún objeto de colisión y las partículas actuales no colisionarán.",
|
||||
"available": "Disponible",
|
||||
"disabled": "Desactivado",
|
||||
"collisionHint": "Sólo los objetos de colisión de escena agregados y habilitados participarán en la colisión del sistema de partículas actual.",
|
||||
"enableSubEmitter": "Activar subemisores",
|
||||
"triggerTiming": "Elija el tiempo de activación",
|
||||
"birth": "nacido",
|
||||
"death": "morir",
|
||||
"collision": "colisión",
|
||||
"chooseTarget": "Seleccione el sistema de partículas objetivo",
|
||||
"noTarget": "Ninguno (sistema de partículas)",
|
||||
"deleteSubEmitter": "Eliminar este subemisor",
|
||||
"probability": "probabilidad de emisión",
|
||||
"collisionLimit": "Límite de colisión",
|
||||
"inherit": "heredar",
|
||||
"colorInheritMode": "Método de herencia de color",
|
||||
"add": "Agregar",
|
||||
"replace": "cubrir",
|
||||
"addSubEmitter": "+ Se agregó un nuevo subemisor",
|
||||
"inheritNone": "Ninguno (predeterminado)",
|
||||
"inheritAll": "Todas las propiedades",
|
||||
"inheritColor": "color",
|
||||
"inheritScale": "tamaño",
|
||||
"inheritRotation": "girar",
|
||||
"inheritLife": "ciclo vital"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Propiedades de Spine",
|
||||
"name": "Nombre Spine",
|
||||
"xPosition": "Posición X",
|
||||
"yPosition": "Posición Y",
|
||||
"rotation": "Rotación",
|
||||
"scaleX": "Escala X",
|
||||
"scaleY": "Escala Y",
|
||||
"startTime": "Tiempo inicial",
|
||||
"resources": "Recursos de Spine",
|
||||
"chooseFolder": "Seleccionar carpeta y cargar",
|
||||
"folderHint": "Lea JSON / SKEL, Atlas y todas las texturas en una carpeta a la vez; Los recursos aún se pueden reemplazar individualmente a continuación.",
|
||||
"choose": "elegir",
|
||||
"chooseMultiple": "Seleccionar (múltiples opciones)",
|
||||
"loading": "cargando…",
|
||||
"load": "↧ Cargar",
|
||||
"clear": "Claro",
|
||||
"supportNote": "Soporte Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Carga bajo demanda cuando se está ejecutando la versión correspondiente · Local fuera de línea",
|
||||
"currentResource": "Recurso actual {version}",
|
||||
"animations": "Animaciones de Spine",
|
||||
"noAnimations": "No hay animación disponible",
|
||||
"timelineAnimation": "Reproducir animación en la línea de tiempo",
|
||||
"no": "ninguno",
|
||||
"hierarchy": "Jerarquía",
|
||||
"clearBoneTitle": "Haga clic para borrar la selección de huesos",
|
||||
"noBoneTitle": "No hay huesos seleccionados actualmente",
|
||||
"clearBone": "Borrar huesos seleccionados: {name}",
|
||||
"currentBone": "Esqueleto actual:",
|
||||
"clearSlotTitle": "Haga clic para borrar la selección de ranuras",
|
||||
"noSlotTitle": "Actualmente no hay ningún espacio seleccionado",
|
||||
"clearSlot": "Borrar ranura seleccionada: {name}",
|
||||
"currentSlot": "Ranura actual:",
|
||||
"notSelected": "No seleccionado",
|
||||
"expandAll": "Expandir todo",
|
||||
"collapseAll": "Contraer todo",
|
||||
"bones": "esqueleto",
|
||||
"slots": "ranura",
|
||||
"notLoaded": "No cargado Spine",
|
||||
"searchBones": "buscar huesos",
|
||||
"searchBonesPlaceholder": "Buscar nombre del hueso…",
|
||||
"clearSearch": "Borrar búsqueda",
|
||||
"clearBoneSearch": "Búsqueda ósea clara",
|
||||
"noMatchingBones": "No se encontró ningún hueso coincidente",
|
||||
"expandChildren": "Ampliar los huesos del niño",
|
||||
"collapseChildren": "Colapso de huesos infantiles",
|
||||
"notLoadedSlots": "Ranura Spine no cargada",
|
||||
"searchSlots": "Buscar espacios",
|
||||
"searchSlotsPlaceholder": "Busque el nombre de la ranura o del accesorio...",
|
||||
"clearSlotSearch": "Borrar búsqueda de espacios",
|
||||
"noMatchingSlots": "No se encontró ninguna ranura coincidente",
|
||||
"slotTitle": "{name} (esqueleto: {bone}, accesorio: {attachment})",
|
||||
"empty": "nulo",
|
||||
"textureSummary": "{count}Zhang: {names}",
|
||||
"textureImages": "Cuadros de textura",
|
||||
"missingFolderAssets": "Falta la carpeta seleccionada: {missing}",
|
||||
"chooseAssets": "Seleccione los datos Spine, Atlas y todas las imágenes de textura en secuencia"
|
||||
},
|
||||
"help": {
|
||||
"title": "Ayuda",
|
||||
"subtitle": "Inicio rápido desde la creación de partículas hasta el guardado y la exportación",
|
||||
"close": "Cerrar instrucciones",
|
||||
"closeShort": "Cerrar (Esc)",
|
||||
"quickStart": "inicio rápido",
|
||||
"stepCreate": "Cree un objeto: use +Partículas / +Colisión / +Ruta / +Spine en el \"Objeto de escena\" a la izquierda para agregar un objeto de escena.",
|
||||
"stepEdit": "Editar partículas: seleccione el sistema de partículas y ajuste \"Modo de emisión → Forma del emisor → Propiedades de las partículas → Apariencia y recursos → Modificador\".",
|
||||
"stepPreview": "Compruebe el efecto: la línea de tiempo inferior se puede reproducir, pausar, cuadro por cuadro o arrastrar; se recalculará automáticamente después de modificar los parámetros.",
|
||||
"stepExport": "Guardar y exportar: utilice \"Guardar configuración\" para conservar el proyecto; \"Exportar Spine Json/paquete de imágenes/paquete .spine\" para generar el producto terminado.",
|
||||
"quickNote": "\"Restablecer\" en el lado derecho del título de cada grupo de módulos puede restaurar los parámetros predeterminados del grupo; La configuración del sistema se guardará automáticamente en el navegador actual.",
|
||||
"commonOps": "Acciones comunes",
|
||||
"eye": "ojos pequeños",
|
||||
"eyeDesc": "Mostrar/ocultar objetos individualmente; Los sistemas de partículas ocultas no se exportan.",
|
||||
"copyDesc": "Copia completamente el objeto seleccionado actualmente para facilitar la comparación de diferentes parámetros.",
|
||||
"backgroundDesc": "Cargue la imagen de referencia y ajuste la posición y la transparencia solo para la vista previa del lienzo.",
|
||||
"settingsDesc": "El diseño de la interfaz de administración, la pantalla auxiliar, la escala, etc. se guardan automáticamente en el navegador.",
|
||||
"undoDesc": "Ctrl+Z retrocede un paso; el número máximo de pasos se puede ajustar en la configuración del sistema.",
|
||||
"spineBoneDesc": "Busque y seleccione un hueso en el árbol jerárquico, que el emisor de partículas puede utilizar para seguir.",
|
||||
"shortcuts": "Atajos",
|
||||
"undoShortcut": "Deshacer el paso anterior",
|
||||
"saveShortcut": "Guardar configuración",
|
||||
"panShortcut": "Arrastrar lienzo",
|
||||
"translateShortcut": "herramienta de desplazamiento",
|
||||
"rotateShortcut": "herramienta rotativa",
|
||||
"scaleShortcut": "herramienta de zoom",
|
||||
"playShortcut": "reproducir/pausar",
|
||||
"startShortcut": "Volver al primer fotograma",
|
||||
"shortcutNote": "Q / W / E / R primero debe hacer clic en el lienzo; cuando el cursor está en el cuadro de entrada, la tecla de acceso directo de una sola tecla no se activará.",
|
||||
"modules": "Guía de módulos",
|
||||
"configTitle": "Gestión de configuración",
|
||||
"saveConfigDesc": "Guarde todos los objetos y parámetros de la escena actual como archivos JSON del proyecto (también se admite Ctrl+S).",
|
||||
"loadConfigDesc": "Seleccione el archivo de configuración local para restaurar el proyecto completo.",
|
||||
"presetDesc": "Seleccione una Aplicación rápida predeterminada en el menú desplegable; haga clic en el menú desplegable para actualizar la lista.",
|
||||
"configScope": "alcance",
|
||||
"configScopeDesc": "La configuración contiene objetos y parámetros; La interfaz y la configuración del sistema se almacenan por separado en el navegador.",
|
||||
"sceneTitle": "objeto de escena",
|
||||
"particleDesc": "objeto central. Se pueden configurar posición, desplazamiento, rotación, escala y semilla aleatoria; la misma semilla puede reproducir el mismo efecto.",
|
||||
"colliderDesc": "Círculo/elipse/rectángulo/polígono/personalizado, admite rebote físico, pausa, destrucción y movimiento a lo largo del camino.",
|
||||
"pathDesc": "Ruta Bezier con soporte para puntos de anclaje, manijas de control, cierre, color y formas preestablecidas.",
|
||||
"spineDesc": "Cargue datos Spine, Atlas y texturas, busque huesos y ranuras, y siga los emisores.",
|
||||
"sceneCommonDesc": "Los objetos se pueden revelar y copiar de forma independiente; Los sistemas de partículas ocultas no se exportan.",
|
||||
"emissionDesc": "Duración del bucle de tres etapas de disparo continuo, ráfaga, retraso e inicio/bucle/finalización.",
|
||||
"burstDesc": "Emite un número específico de partículas a la vez.",
|
||||
"delayDesc": "El tiempo de espera antes de que comience la emisión, correspondiente al extremo izquierdo de la barra de partículas.",
|
||||
"loopNote": "La persistencia del bucle no admite el seguimiento de huesos ni de rutas, y las siguientes configuraciones se restaurarán al cambiar.",
|
||||
"shapeDesc": "Área de generación de puntos, círculos, rectángulos, conos o caminos. Los círculos/conos admiten radios internos y externos, y los rectángulos admiten ancho y alto internos y externos.",
|
||||
"angleDesc": "Fijo, aleatorio, radial, trayectoria normal o trayectoria tangente.",
|
||||
"initialDesc": "El ciclo de vida, la velocidad, el escalado y la rotación admiten soporte fijo, aleatorio, curvo y la rotación puede seguir la dirección de lanzamiento.",
|
||||
"overLifeDesc": "La ampliación de velocidad, la ampliación del zoom y la velocidad de rotación se pueden controlar mediante la curva del ciclo de vida.",
|
||||
"alphaDesc": "Soportes de transparencia fijos o curvos; El modo de curva puede seguir la derivada, lineal o Bézier.",
|
||||
"imageDesc": "Imagen única o fotograma de secuencia, aleatorización de peso de varias imágenes, punto de pivote, color, modo de fusión y transparencia independiente.",
|
||||
"sequenceDesc": "Los métodos de reproducción incluyen ocultación de una sola vez, congelación de una sola vez, bucle de avance y bucle de retroceso.",
|
||||
"noiseDesc": "Genere trazas de fluctuación y controle la intensidad, el alcance y la velocidad.",
|
||||
"gravityDesc": "Curvas de intensidad de gravedad, viento y ciclo de vida.",
|
||||
"forceDesc": "Campos de fuerza globales, vórtices, adsorción y colisiones.",
|
||||
"trailDesc": "Activos finales independientes, número de huesos, longitud, ancho, forma, color y curvas de transparencia.",
|
||||
"followDesc": "El emisor puede seguir un camino o hueso Spine.",
|
||||
"collisionDesc": "Seleccione objetos de colisión de escena y respuestas de colisión de partículas.",
|
||||
"exportDesc": "Establezca la ruta de la imagen, la versión Spine, la curva de fotogramas clave, FPS, los fotogramas enteros, el conjunto de huesos y la animación vacía.",
|
||||
"exportButtonsDesc": "Puede exportar Spine JSON, imágenes ZIP o generar proyectos .spine a través del conector.",
|
||||
"connectorTitle": "Instrucciones de uso del conector Spine",
|
||||
"connectorIntro": "El conector entrega el JSON y las imágenes generadas por la página web al Spine que se ha instalado y activado en la máquina local, y los convierte en proyectos .spine editables.",
|
||||
"prerequisite": "carga frontal",
|
||||
"prerequisiteDesc": "La computadora tiene Spine instalado y activado, y se ha iniciado el conector de escritorio.",
|
||||
"download": "descargar",
|
||||
"webSide": "Página web",
|
||||
"webSideDesc": "Después de que aparezca \"Conector disponible · Spine está listo\", haga clic en \"Exportar paquete .spine\".",
|
||||
"authorization": "primera autorización",
|
||||
"authorizationDesc": "La primera conexión debe verificar la fuente del sitio web y permitirla una vez; Esta máquina guarda la lista blanca de autorización.",
|
||||
"pathSetup": "Configuración de ruta",
|
||||
"pathSetupDesc": "El conector detectará automáticamente Spine; si no se puede encontrar, puede especificar manualmente la ruta de la aplicación.",
|
||||
"downloadResult": "Descargar resultados",
|
||||
"downloadResultDesc": "Obtenga el paquete ZIP, que contiene el proyecto .spine y el directorio de imágenes.",
|
||||
"version": "Versión",
|
||||
"versionDesc": "El conector coincide automáticamente con Spine 3.8~4.3 según la versión JSON.",
|
||||
"security": "Seguridad",
|
||||
"securityDesc": "Solo escuche la dirección local, la autorización se guarda en el conector y los archivos temporales se limpian después de la conversión.",
|
||||
"differenceTitle": "¿Cuál es la diferencia entre configurar y exportar?",
|
||||
"differenceDesc": "\"Guardar configuración\" guarda todos los objetos y parámetros que se pueden editar; \"Exportar Spine Json\" solo exporta el sistema de partículas mostrado y convierte los resultados de colisión, seguimiento, seguimiento y subemisor en datos de animación independientes."
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "Después de ingresar al modo de bucle continuo, la siguiente configuración de partículas no será válida y se restaurará al valor predeterminado. ¿Continuar?",
|
||||
"confirmLoopFollowExit": "Después de salir del modo de persistencia del bucle, la siguiente configuración de partículas no será válida y se restaurará a sus valores predeterminados. ¿Continuar?",
|
||||
"invalidJson": "El archivo de configuración no es válido JSON",
|
||||
"invalidConfigFormat": "No es el perfil del editor SpineParticle",
|
||||
"unsupportedConfigVersion": "Versión de configuración aún no compatible: {version}",
|
||||
"missingScene": "Al archivo de configuración le faltan datos completos de la escena",
|
||||
"missingEmbeddedSpine": "La configuración no contiene recursos originales Spine reutilizables",
|
||||
"chooseJsonConfig": "Seleccione un archivo de configuración .json",
|
||||
"settingsInvalidJson": "La caché de configuración del sistema no es válida JSON",
|
||||
"settingsFormat": "No caché de configuración del sistema del editor SpineParticle",
|
||||
"settingsVersion": "La versión de configuración del sistema aún no es compatible: {version}",
|
||||
"settingsMissing": "A la caché de configuración del sistema le faltan configuraciones",
|
||||
"noExportableImages": "No hay imágenes exportables para el sistema de partículas visible actualmente.",
|
||||
"invalidZipPath": "ZIP Ruta de archivo no válida",
|
||||
"spineFileType": "Los datos Spine solo admiten .json o .skel",
|
||||
"atlasFileType": "Los archivos Atlas solo admiten .atlas",
|
||||
"chooseTexture": "Por favor seleccione al menos una imagen de textura",
|
||||
"binaryParseFailed": "Error en el análisis binario de Spine (4.3: {v43}; versión anterior: {v42})",
|
||||
"invalidSpineJson": "Spine JSON Formato de archivo no válido",
|
||||
"unsupportedSpineJsonVersion": "La versión Spine JSON no es compatible, solo se admite {versions}",
|
||||
"unsupportedSpineDataVersion": "La versión de datos Spine no es compatible, solo se admite {versions}",
|
||||
"embeddedReadFailed": "No se puede leer el archivo Spine incrustado: {name}",
|
||||
"missingImageWarning": "Falta la imagen \"{file}\" o tiene dimensiones ilegibles, la ruta se conserva.",
|
||||
"missingTrailImageWarning": "Falta la imagen final \"{file}\" y se ha conservado la ruta.",
|
||||
"emptyCacheWarning": "No hay framebuffer disponible para '{name}'.",
|
||||
"readExportImageFailed": "No se puede leer la imagen exportada: {name}",
|
||||
"connectorOffline": "Conector local Spine no detectado, habilite el conector primero",
|
||||
"connectorHttpError": "El conector Spine devuelve el error: HTTP {status}",
|
||||
"invalidTrailUV": "Datos UV no válidos para la malla final '{name}'",
|
||||
"missingTrailVertices": "A la malla final '{name}' le faltan datos de vértice",
|
||||
"trailIndexOutOfRange": "Índice triangular de la malla final '{name}' fuera de límites",
|
||||
"invalidTrailHull": "El número del contorno exterior de la malla final \"{name}\" no es válido",
|
||||
"trailHullIndexOutOfRange": "El índice del borde del contorno exterior de la malla final \"{name}\" está fuera de límites",
|
||||
"invalidInfluenceCount": "La malla final '{name}' contiene un número no válido de pesos óseos",
|
||||
"missingBoneReference": "La malla final '{name}' hace referencia a un hueso inexistente",
|
||||
"invalidWeight": "La cuadrícula final \"{name}\" contiene datos de peso no válidos",
|
||||
"weightSum": "Los pesos de los vértices de la malla final '{name}' no suman 1",
|
||||
"vertexCountMismatch": "La malla final '{name}' tiene un número inconsistente de vértices y UV",
|
||||
"invalidInherit": "El valor heredado '{inherit}' para el hueso '{name}' no se ajusta al formato Spine {version} JSON",
|
||||
"trailBoneParent": "El hueso posterior \"{name}\" debe colgarse directamente debajo del hueso del sistema de partículas y no puede formar una cadena ósea.",
|
||||
"trailSlotEmpty": "La ranura de cola ponderada \"{name}\" no puede utilizar accesorios vacíos. La escala ósea correspondiente debe establecerse en 0 en la fase de no aparición o muerte.",
|
||||
"spine38Version": "Spine 3.8 El ID de la versión exportada debe ser 3.8",
|
||||
"spine38Inherit": "Spine 3.8 Bone \"{name}\" debería usar transformar y no puede usar heredar",
|
||||
"spine38SlotColor": "La línea de tiempo de color de la ranura Spine 3.8 debe usar color/twoColor",
|
||||
"spine38AttachmentName": "Spine 3.8 El fotograma oculto de la línea de tiempo del archivo adjunto debe tener un nombre escrito explícitamente: nulo",
|
||||
"spine38RotationAngle": "Spine 3.8 Debes usar el ángulo para rotar el eje del tiempo",
|
||||
"spine38Curve": "Spine 3.8 no admite el formato de curva de matriz 4.x",
|
||||
"unsupportedExportVersion": "La versión exportada no es compatible, solo se admite Spine {versions}",
|
||||
"exportVersionMismatch": "Versión de exportación inconsistente: establecida en Spine {expected}, JSON marcada como Spine {actual}",
|
||||
"exportMissingBones": "Al resultado de la exportación le faltan huesos",
|
||||
"missingAtlasTexture": "La textura a la que hace referencia Atlas no está seleccionada: {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "Idioma",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "Faites glisser pour ajuster la hauteur de la timeline",
|
||||
"systems": "système",
|
||||
"particlesBones": "Particules (os)",
|
||||
"rootBone": "os de la racine",
|
||||
"hudTip": "Zoom sur la molette · Clic gauche pour faire glisser la toile",
|
||||
"title": "Éditeur de particules Spine - Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "Fermer",
|
||||
"reset": "Réinitialiser",
|
||||
"add": "Ajouter",
|
||||
"remove": "Retirer",
|
||||
"delete": "Supprimer",
|
||||
"clear": "Effacer",
|
||||
"cancel": "Annuler",
|
||||
"confirm": "Confirmer",
|
||||
"none": "Aucun",
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé",
|
||||
"fixed": "Fixe",
|
||||
"random": "Aléatoire",
|
||||
"curve": "Courbe",
|
||||
"followExport": "Suivre l’export",
|
||||
"linear": "Linéaire",
|
||||
"bezier": "Bézier",
|
||||
"above": "Au-dessus",
|
||||
"below": "En dessous",
|
||||
"left": "Gauche",
|
||||
"right": "Droite",
|
||||
"seconds": "s",
|
||||
"frames": "images"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "Paramètres",
|
||||
"undo": "Annuler (Ctrl+Z)",
|
||||
"pan": "Déplacer le canevas (Q)",
|
||||
"translate": "Déplacement (W)",
|
||||
"rotate": "Rotation (E)",
|
||||
"scale": "Échelle (R)",
|
||||
"zoomIn": "Zoom avant",
|
||||
"zoomOut": "Zoom arrière",
|
||||
"fitView": "Ajuster le canevas",
|
||||
"toggleGrid": "Afficher/masquer la grille",
|
||||
"resetView": "Réinitialiser la vue",
|
||||
"background": "Arrière-plan",
|
||||
"backgroundSettings": "Paramètres de l’arrière-plan",
|
||||
"changeBackground": "Remplacer l’image",
|
||||
"uploadBackground": "Importer une image",
|
||||
"clearBackground": "Effacer l’arrière-plan",
|
||||
"noBackground": "Aucune image",
|
||||
"backgroundX": "Décalage X de l'image d'arrière-plan",
|
||||
"backgroundY": "Décalage Y de l'image d'arrière-plan",
|
||||
"backgroundOpacity": "Transparence de l’image d’arrière-plan",
|
||||
"opacity": "Opacité",
|
||||
"help": "Aide",
|
||||
"openHelp": "Ouvrir l’aide"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Paramètres système",
|
||||
"layout": "Disposition de l'interface",
|
||||
"parameterPanelPosition": "Emplacement du panneau de paramètres",
|
||||
"panelOnRight": "Le panneau de paramètres est affiché à droite",
|
||||
"history": "Historique des opérations",
|
||||
"maxUndo": "Nombre maximum de pas en arrière",
|
||||
"canvasGuides": "Affichage auxiliaire en toile",
|
||||
"emitter": "point de lancement",
|
||||
"bones": "Connexion osseuse",
|
||||
"bonePointSize": "Taille du dessin de la pointe osseuse",
|
||||
"boneAxisSize": "Taille du dessin des axes",
|
||||
"skinMesh": "maille écorchée",
|
||||
"enableTicks": "Activer les ticks",
|
||||
"tickFontSize": "Taille du texte à l'échelle",
|
||||
"tickWidth": "épaisseur de la graduation",
|
||||
"axisColor": "couleur de l'axe",
|
||||
"showAxisLabels": "Afficher la valeur de l'échelle",
|
||||
"cacheNote": "L'ensemble des paramètres du système sont automatiquement enregistrés dans le navigateur actuel"
|
||||
},
|
||||
"config": {
|
||||
"title": "Configuration",
|
||||
"save": "Enregistrer",
|
||||
"saveTitle": "Enregistrez toutes les configurations de l'éditeur (Ctrl+S)",
|
||||
"load": "Charger",
|
||||
"loadTitle": "Charger la configuration de l'éditeur local",
|
||||
"presets": "Liste des préréglages",
|
||||
"selectPreset": "Choisir un préréglage",
|
||||
"noPresets": "Aucun préréglage",
|
||||
"saved": "La configuration a été enregistrée localement",
|
||||
"loading": "Chargement de la configuration…",
|
||||
"loaded": "Chargé : {name}",
|
||||
"presetLoading": "Chargement des préréglages…",
|
||||
"presetLoaded": "Préréglage chargé : {name}",
|
||||
"presetNamingError": "{message}, veuillez vérifier le nom de fichier par défaut",
|
||||
"presetTransferTitle": "Charger le préréglage",
|
||||
"presetDownloading": "Téléchargement de {file}…",
|
||||
"presetParsing": "Analyse de la configuration par défaut...",
|
||||
"presetRestoring": "Analyse et restauration des ressources par défaut...",
|
||||
"presetComplete": "Chargement du préréglage terminé",
|
||||
"presetListError": "Impossible de lire la liste des préréglages",
|
||||
"presetReadError": "Impossible de lire le préréglage : {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.Balayage de particules",
|
||||
"barBlocks": "2.Blocs rectangulaires",
|
||||
"forceTrail": "3.Traînée de champ de force",
|
||||
"lightningSequence": "4.Séquence d’éclairs",
|
||||
"texturePivot": "5.Pivot de texture",
|
||||
"subEmitter": "6.Sous-émetteur"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "Faites glisser la poignée carrée pour ajuster l'arc · Double-cliquez sur un espace vide pour en créer un nouveau · Double-cliquez sur un nœud pour le supprimer",
|
||||
"linearHint": "Double-cliquez sur un espace vide pour en créer un nouveau. Double-cliquez sur un nœud pour le supprimer. Faites glisser un nœud pour l'ajuster.",
|
||||
"resetTitle": "Restaurer la courbe par défaut"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "Double-cliquez sur le ruban pour ajouter une marque de couleur",
|
||||
"color": "Code couleur",
|
||||
"colorValue": "Valeur de couleur de l'échelle de couleurs",
|
||||
"position": "Position de la marque de couleur",
|
||||
"addMiddle": "Ajouter de la couleur au milieu",
|
||||
"delete": "Supprimer le patch de couleur actuel",
|
||||
"hint": "Double-cliquez sur la bande de couleur pour en ajouter une nouvelle · Faites glisser la marque de couleur pour ajuster sa position · Double-cliquez sur la marque de couleur pour la supprimer"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "Décalage angulaire",
|
||||
"value": "valeur numérique",
|
||||
"lower": "limite inférieure",
|
||||
"upper": "limite supérieure",
|
||||
"rangeLower": "Limite inférieure de la plage",
|
||||
"rangeUpper": "Gamme supérieure",
|
||||
"curveInput": "Entrée de courbe →",
|
||||
"direction": "Direction du lancement"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "point pivot de la carte",
|
||||
"zoomOut": "dézoomer",
|
||||
"zoomIn": "agrandir",
|
||||
"expand": "Zoom en mode plein écran",
|
||||
"interaction": "Clic gauche/glissez pour définir le point pivot · Clic droit pour faire glisser la toile · Molette de défilement pour zoomer",
|
||||
"previewAlt": "Aperçu du point pivot",
|
||||
"noImage": "Aucune image sélectionnée",
|
||||
"resetCenter": "Repositionner au milieu (50 %, 50 %)",
|
||||
"coordinates": "Coordonnées du point de l'axe (%)",
|
||||
"rotationTest": "Test de rotation des axes",
|
||||
"static": "toujours",
|
||||
"spin": "rotation",
|
||||
"swing": "balançoire",
|
||||
"rotationAlt": "Essai de rotation",
|
||||
"topLeft": "en haut à gauche",
|
||||
"top": "Tout de suite",
|
||||
"topRight": "en haut à droite",
|
||||
"left": "Droite gauche",
|
||||
"center": "milieu",
|
||||
"right": "Droite",
|
||||
"bottomLeft": "en bas à gauche",
|
||||
"bottom": "Directement en dessous·en bas",
|
||||
"bottomRight": "en bas à droite"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "Sélectionnez des images de séquence",
|
||||
"chooseLocal": "Sélectionnez une image locale",
|
||||
"subfolder": "sous-dossier",
|
||||
"name": "nom",
|
||||
"restore": "Restaurer {name}",
|
||||
"deleteResource": "Supprimer les ressources d'images",
|
||||
"imageMode": "Mode image",
|
||||
"fixed": "Image fixe",
|
||||
"sequence": "Séquence",
|
||||
"playbackMode": "mode de lecture",
|
||||
"onceHide": "Une fois, masquer à la fin",
|
||||
"onceHold": "Une fois, conserver la dernière image",
|
||||
"loopForward": "Boucle avant",
|
||||
"loopReverse": "Boucle arrière",
|
||||
"playbackFps": "Fréquence d'images de lecture",
|
||||
"chooseSequenceMulti": "Sélectionner des images de séquence (sélections multiples)",
|
||||
"weight": "Poids %",
|
||||
"unlockWeight": "Déverrouiller le verrouillage des proportions",
|
||||
"lockWeight": "Verrouiller la proportion actuelle",
|
||||
"pivot": "Pivot de texture",
|
||||
"collapsePivot": "Réduire l’ajustement du point pivot",
|
||||
"expandPivot": "Développer l'ajustement du point pivot",
|
||||
"pivotModal": "Point d'axe de rotation de texture, raffinement de grande image",
|
||||
"pivotModalDesc": "Cliquez ou faites glisser n'importe où sur la carte ci-dessous pour définir avec précision le centre de rotation/oscillation des particules.",
|
||||
"pivotZoomHint": "Prend en charge un grossissement de 100 % à 400 %, une visée précise vers la pointe ou la racine :",
|
||||
"confirmPivot": "Déterminer et enregistrer le point pivot",
|
||||
"noSequence": "Aucune image de séquence sélectionnée",
|
||||
"firstFrame": "Cadre 1",
|
||||
"firstImage": "première photo",
|
||||
"lastImage": "dernière photo",
|
||||
"pivotOn": "Ouvert : X {x}% | Y {y}%",
|
||||
"pivotOff": "Non activé, la valeur par défaut se situe autour du centre de l'image (50 %, 50 %)",
|
||||
"pivotCustom": "Le point pivot a été personnalisé : X {x}% | Y {y}%",
|
||||
"frameCountOne": "1 cadre · {name}",
|
||||
"frameCountMany": "Cadre {count} · {first} → {last}",
|
||||
"sequenceSelected": "L'image {count} a été sélectionnée et lue dans l'ordre {first}-{last}."
|
||||
},
|
||||
"timeline": {
|
||||
"play": "Jouer(D)",
|
||||
"pause": "Pause (D)",
|
||||
"toStart": "Revenir à la première image (S)",
|
||||
"previous": "image précédente",
|
||||
"next": "image suivante",
|
||||
"toEnd": "Passer à la dernière image",
|
||||
"continuousLoop": "Lecture en boucle continue",
|
||||
"abLoop": "Boucle indépendante de plage A/B",
|
||||
"abLoopShort": "Boucle AB",
|
||||
"abRange": "Intervalle de cycle AB",
|
||||
"playbackStart": "Image de début de lecture personnalisée",
|
||||
"playbackEnd": "Image de fin de lecture personnalisée",
|
||||
"startFrame": "Lire l'image de début",
|
||||
"endFrame": "Lire l'image de fin",
|
||||
"frame": "cadre",
|
||||
"emission": "Émission",
|
||||
"particleLife": "Particules actives",
|
||||
"spineAnimation": "Animation Spine",
|
||||
"ownerAnimation": "Animation associée",
|
||||
"setOwnerAnimation": "Définir l'animation à laquelle appartient le système de particules actuel",
|
||||
"chooseOwnerAnimation": "Sélectionnez l'animation",
|
||||
"animationName": "Nom de l'animation",
|
||||
"renameAnimation": "Renommer l'animation actuelle",
|
||||
"rename": "Rebaptiser",
|
||||
"newAnimation": "+ Nouveau",
|
||||
"keepOneAnimation": "Au moins une animation doit être conservée",
|
||||
"spinePreview": "Animation d'aperçu Spine",
|
||||
"noSpineAnimation": "Aucune animation Spine disponible",
|
||||
"none": "aucun",
|
||||
"systemName": "Système {index}",
|
||||
"dragLoopDuration": "Durée du segment de boucle de glisser",
|
||||
"dragEmissionDuration": "Durée du glissement",
|
||||
"dragSpineStart": "Faites glisser pour ajuster l'heure de début de l'animation",
|
||||
"noAnimationData": "Il n'y a actuellement aucune donnée d'animation à afficher.",
|
||||
"animationNameEmpty": "Le nom de l'animation ne peut pas être vide",
|
||||
"animationNameDuplicate": "Les noms d'animation ne peuvent pas être répétés",
|
||||
"animationRenameFailed": "Impossible de modifier le nom de l'animation",
|
||||
"zoomIn": "agrandir",
|
||||
"zoomOut": "dézoomer",
|
||||
"zoomFit": "Modéré",
|
||||
"frameStatus": "Image {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "Mode d’émission",
|
||||
"reset": "Réinitialiser les paramètres du mode de transmission",
|
||||
"stream": "Continu",
|
||||
"burst": "Rafale",
|
||||
"normalStream": "Continu standard",
|
||||
"loopStream": "Boucle continue",
|
||||
"rate": "Taux d’émission",
|
||||
"duration": "Durée d’émission",
|
||||
"loopDuration": "Durée de lancement (f)",
|
||||
"generateStart": "Générer une animation de boucle de démarrage",
|
||||
"generateEnd": "Générer une animation de fin de boucle",
|
||||
"customDuration": "Préciser la durée",
|
||||
"auto": "Automatique {frames}f",
|
||||
"startLoopDuration": "Durée du segment de démarrage de la boucle",
|
||||
"endLoopDuration": "Durée du segment de fin de boucle",
|
||||
"loopWarning": "Le mode de persistance de boucle ne prend pas en charge le suivi d'os et le suivi de chemin ; les paramètres de suivi des particules seront restaurés aux valeurs par défaut lors de l'entrée ou de la sortie.",
|
||||
"burstCount": "Quantité par rafale",
|
||||
"delay": "Délai",
|
||||
"shapeTitle": "Forme de l’émetteur",
|
||||
"shapeReset": "Réinitialiser les paramètres de forme de l'émetteur",
|
||||
"shape": "forme",
|
||||
"point": "Point",
|
||||
"circle": "Cercle",
|
||||
"rect": "Rectangle",
|
||||
"cone": "Cône",
|
||||
"path": "Chemin",
|
||||
"innerDiameter": "diamètre intérieur",
|
||||
"outerDiameter": "diamètre extérieur",
|
||||
"innerRadius": "rayon intérieur",
|
||||
"outerRadius": "rayon extérieur",
|
||||
"coneDirection": "Orientation conique",
|
||||
"coneAngle": "Angle d'ouverture conique",
|
||||
"innerWidth": "largeur intérieure",
|
||||
"innerHeight": "Haut à l'intérieur",
|
||||
"outerWidth": "Largeur extérieure",
|
||||
"outerHeight": "Très haut",
|
||||
"selectPath": "Sélectionnez le chemin",
|
||||
"noPath": "Pas de chemin (émission ponctuelle)",
|
||||
"birthDistribution": "répartition des naissances",
|
||||
"evenDistribution": "Distribution fixe équidistante",
|
||||
"randomDistribution": "distribution aléatoire",
|
||||
"emissionAngle": "angle de lancement",
|
||||
"radial": "Radial (centre vers l'extérieur)",
|
||||
"pathNormal": "perpendiculaire au chemin",
|
||||
"pathTangent": "dans la direction du chemin",
|
||||
"fixedAngle": "angle fixe",
|
||||
"baseAngle": "angle de base",
|
||||
"randomRange": "plage aléatoire",
|
||||
"showShape": "montrer la forme"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "Attributs des particules",
|
||||
"reset": "Réinitialiser les paramètres d'attributs de particules",
|
||||
"initialParams": "Valeurs initiales",
|
||||
"initialLife": "cycle de vie initial",
|
||||
"randomSample": "Échantillonnage aléatoire →",
|
||||
"initialSpeed": "vitesse initiale",
|
||||
"initialScale": "mise à l'échelle initiale",
|
||||
"uniform": "unifié",
|
||||
"separateXY": "Séparation XY",
|
||||
"scaleX": "ZoomX",
|
||||
"scaleY": "Zoom Y",
|
||||
"initialRotation": "rotation initiale",
|
||||
"lifecycleTitle": "Évolution pendant la durée de vie",
|
||||
"speedOverLife": "vitesse du cycle de vie",
|
||||
"speedMultiplier": "multiplicateur de vitesse",
|
||||
"lifeTo": "cycle de vie →",
|
||||
"scaleOverLife": "Échelle pendant le cycle de vie",
|
||||
"scaleMultiplier": "Taux de zoom",
|
||||
"multiplierX": "Grossissement",
|
||||
"multiplierY": "Grossissement Y",
|
||||
"rotationOverLife": "Rotation pendant le cycle de vie",
|
||||
"rotationSpeed": "Vitesse de rotation"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Apparence et ressources",
|
||||
"reset": "Réinitialiser les paramètres d'apparence et de ressources",
|
||||
"opacity": "Opacité",
|
||||
"curveMode": "Mode courbe",
|
||||
"transparent": "0 (transparent)",
|
||||
"opaque": "1(opaque)",
|
||||
"renderLayer": "Calque de rendu (slot Spine)",
|
||||
"top": "niveau supérieur",
|
||||
"spineSlot": "Emplacement Spine",
|
||||
"selectSpine": "Veuillez sélectionner Spine",
|
||||
"noSpine": "Aucun disponible Spine",
|
||||
"noSlot": "Aucun créneau sélectionné pour l'instant",
|
||||
"reselect": "Sélectionner de nouveau",
|
||||
"selectSlot": "Sélectionnez un emplacement",
|
||||
"searchSlots": "Rechercher le nom de l'emplacement ou de l'accessoire…",
|
||||
"searchSlotsAria": "Rechercher des créneaux",
|
||||
"emptySlot": "Emplacement vide",
|
||||
"noMatchingSlots": "Aucun emplacement correspondant",
|
||||
"above": "au-dessus de cette photo de machine à sous",
|
||||
"below": "sous cette photo de machine à sous",
|
||||
"followAttachment": "Afficher et masquer avec les accessoires de machines à sous",
|
||||
"previewOnly": "Le réglage du niveau d'affichage affecte uniquement l'aperçu de l'éditeur et n'affecte pas les données exportées.",
|
||||
"imageResources": "Ressources d’image",
|
||||
"addImage": "Ajouter des ressources d'images",
|
||||
"scale": "Zoom",
|
||||
"color": "couleur",
|
||||
"fixedColor": "couleur fixe",
|
||||
"randomColor": "couleur aléatoire",
|
||||
"lifetime": "cycle de vie",
|
||||
"normal": "Normal",
|
||||
"add": "Ajout",
|
||||
"multiply": "Multiplication",
|
||||
"screen": "Écran",
|
||||
"fixedColorValue": "valeur de couleur fixe",
|
||||
"randomColorHint": "Chaque particule choisit au hasard une couleur sur le ruban à sa naissance et reste inchangée tout au long de son cycle de vie.",
|
||||
"independentAlpha": "Opacité indépendante",
|
||||
"off": "Désactivé"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · Photo ci-dessus",
|
||||
"slotLabelBelow": "{spine} / {slot} · Sous la photo",
|
||||
"resolvedAbove": "Rendu au-dessus de l'image {slot} et en dessous de son emplacement",
|
||||
"resolvedBetween": "Rendu entre {previous} et {slot}",
|
||||
"warningNoSpine": "Aucun Spine n'est chargé et les particules sont temporairement affichées en haut.",
|
||||
"warningNoSelection": "Spine n'a pas encore été sélectionné et les particules sont temporairement affichées en haut.",
|
||||
"warningMissingSpine": "La cible Spine n'existe pas et les particules sont temporairement affichées en haut.",
|
||||
"warningNotReady": "La cible Spine n'est pas prête et les particules sont temporairement affichées en haut.",
|
||||
"warningMissingSlot": "L'emplacement cible n'existe pas (la ressource a peut-être été remplacée) et les particules sont temporairement affichées en haut.",
|
||||
"warningFirstSlot": "Il s'agit du premier emplacement et ne peut pas être affiché en dessous, les particules sont temporairement affichées en haut."
|
||||
},
|
||||
"export": {
|
||||
"title": "Paramètres d’export",
|
||||
"reset": "Réinitialiser les paramètres d'exportation",
|
||||
"imagesPath": "Chemin de l'image (Chemin des images Spine)",
|
||||
"spineVersion": "Version de Spine",
|
||||
"keyframeCurve": "Courbe d'interpolation d'images clés",
|
||||
"linear": "Linéaire",
|
||||
"smoothBezier": "Bézier Lisse (Lisse Bézier)",
|
||||
"bezierHelp": "Smooth Bezier s'adapte au mouvement continu dans la tolérance d'erreur ; la naissance, la mort, le changement d'attachement et les mutations utilisent toujours des images clés d'étape.",
|
||||
"spine38Help": "Spine 3.8 ne prend pas en charge le tableau Bézier par canal de 4.x et est converti en images clés linéaires par morceaux à tolérance réduite lors de l'exportation.",
|
||||
"fps": "FPS d’export",
|
||||
"omitFps": "N'écrivez pas de fps",
|
||||
"fpsHelp": "Conservez les secondes réelles de l'animation inchangées lors de la modification de FPS ; \"Ne pas écrire de fps\" omet uniquement les métadonnées fps de Spine.",
|
||||
"integerFrames": "Alignement du cadre entier",
|
||||
"bonePool": "Pool d'objets osseux",
|
||||
"excludeEmpty": "Exclure les animations sans contenu",
|
||||
"baking": "L'animation est recalculée et cuite",
|
||||
"exportJsonTitle": "Exporter Spine {version} JSON",
|
||||
"preparing": "Préparation à l'exportation...",
|
||||
"exportJson": "Exporter Spine JSON",
|
||||
"exportImagesTitle": "Téléchargez séparément l'image utilisée par le système de particules actuel ZIP",
|
||||
"organizingImages": "Tri des images...",
|
||||
"exportImages": "Exporter les images ZIP",
|
||||
"generatingProject": "Génération du projet...",
|
||||
"exportSpine": "Exporter le package .spine",
|
||||
"authorize": "Autoriser le site Web actuel",
|
||||
"authorizeTitle": "Autoriser le site web actuel dans le connecteur natif",
|
||||
"refreshConnector": "Revérifiez le connecteur",
|
||||
"refresh": "rafraîchir",
|
||||
"recalculating": "Recalcul de l'animation des particules...",
|
||||
"exported": "Spine {version} exportés : systèmes de particules {systems}, animations {animations}, os racinaires {bones} {warning}",
|
||||
"resourceWarning": ";{count} astuces sur les ressources (les images manquantes sont toujours exportées)",
|
||||
"timeout": "Recalcul du délai d'expiration de l'animation, veuillez confirmer que la page est toujours en cours d'exécution et réessayer",
|
||||
"preparingProject": "Trier les images et appeler cette machine Spine…",
|
||||
"projectExported": "{fileName} a été généré : y compris le projet .spine et les images {images}, Spine {version}",
|
||||
"collectingImages": "Rassembler les images actuellement utilisées par le système de particules...",
|
||||
"imagesExported": "{fileName} a été généré : {folder}/ contient des images {images}",
|
||||
"connectorChecking": "Détection du connecteur Spine local...",
|
||||
"connectorOffline": "Le connecteur Spine local n’est pas démarré",
|
||||
"spineNotFound": "Le connecteur est démarré, mais Spine est introuvable",
|
||||
"notAuthorized": "Le connecteur est démarré, mais ce site n’est pas autorisé",
|
||||
"connectorReady": "Connecteur disponible · Spine prêt",
|
||||
"connectorBusy": "Recalcul et génération du projet Spine",
|
||||
"connectorGenerate": "Générer un projet Spine {version} avec Spine local",
|
||||
"unknown": "inconnu",
|
||||
"checking": "Vérification",
|
||||
"offline": "Hors ligne",
|
||||
"notFound": "Spine introuvable",
|
||||
"unauthorized": "Non autorisé",
|
||||
"projectTransferTitle": "Exporter le package Spine",
|
||||
"projectTransferDetail": "Recalcul de l'animation des particules...",
|
||||
"projectTransferDownload": "Le package du projet Spine a été téléchargé",
|
||||
"generatingJson": "Génération de Spine JSON…",
|
||||
"preparingProjectFiles": "Rassemblement des photos du projet...",
|
||||
"uploading": "Téléchargement des données vers le connecteur Spine...",
|
||||
"spineProcessing": "Spine est en train de convertir le projet, veuillez patienter...",
|
||||
"downloadingProject": "Téléchargement du package de projet Spine généré...",
|
||||
"handingToBrowser": "Passage au navigateur pour le téléchargement..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "Complété",
|
||||
"failed": "L'opération a échoué"
|
||||
},
|
||||
"scene": {
|
||||
"title": "Objets de scène",
|
||||
"addParticle": "Ajouter un système de particules",
|
||||
"addParticleShort": "+particule",
|
||||
"addCollider": "Ajouter un collisionneur",
|
||||
"addColliderShort": "+collision",
|
||||
"addPath": "ajouter un chemin",
|
||||
"addPathShort": "+ chemin",
|
||||
"addSpine": "Ajouter Spine",
|
||||
"copyTitle": "Copier l'objet de scène actuellement sélectionné",
|
||||
"showParticle": "Afficher le système de particules",
|
||||
"hideParticle": "Masquer le système de particules",
|
||||
"showCollider": "montrer les collisionneurs",
|
||||
"hideCollider": "Masquer le collisionneur",
|
||||
"showPath": "montrer le chemin",
|
||||
"hidePath": "Masquer le chemin",
|
||||
"showSpine": "Affichage Spine",
|
||||
"hideSpine": "Masquer Spine",
|
||||
"particle": "Particules",
|
||||
"subEmitter": "Sous-émetteur",
|
||||
"collision": "Collision",
|
||||
"path": "Chemin",
|
||||
"deleteParticle": "Supprimer le système de particules",
|
||||
"deleteCollider": "Supprimer les collisionneurs",
|
||||
"deletePath": "supprimer le chemin",
|
||||
"deleteSpine": "Supprimer Spine",
|
||||
"empty": "Il n'y a pas encore d'objets dans la scène",
|
||||
"name": "nom",
|
||||
"positionX": "Position X",
|
||||
"positionY": "Position Y",
|
||||
"offsetX": "Décalage X",
|
||||
"offsetY": "Décalage Y",
|
||||
"rotation": "Rotation",
|
||||
"scaleX": "Échelle X",
|
||||
"scaleY": "Échelle Y",
|
||||
"seed": "Graine aléatoire",
|
||||
"seedTitle": "Contrôlez tous les attributs aléatoires, la sélection des ressources et l'échantillonnage aléatoire du modificateur dans le système de particules",
|
||||
"randomizeSeed": "Générer une nouvelle graine aléatoire globale",
|
||||
"seedHint": "Contrôler les paramètres aléatoires initiaux, la sélection des ressources et l'échantillonnage aléatoire du modificateur ; la même graine peut reproduire le même effet",
|
||||
"colliderTitle": "Propriétés du collisionneur",
|
||||
"colliderName": "Nom du collisionneur",
|
||||
"type": "taper",
|
||||
"circle": "rond",
|
||||
"ellipse": "ovale",
|
||||
"rect": "rectangle",
|
||||
"polygon": "polygone",
|
||||
"custom": "Personnaliser",
|
||||
"enabled": "activer",
|
||||
"xPosition": "Position X",
|
||||
"yPosition": "Position Y",
|
||||
"scaleXShort": "Échelle X",
|
||||
"scaleYShort": "Échelle Y",
|
||||
"radius": "rayon",
|
||||
"radiusX": "Rayon X",
|
||||
"radiusY": "Rayon Y",
|
||||
"width": "largeur",
|
||||
"height": "haut",
|
||||
"sides": "Nombre de côtés",
|
||||
"collisionResponse": "Réponse en cas d'accident",
|
||||
"physics": "Physique (rebond/frottement)",
|
||||
"pause": "Pause (arrêter)",
|
||||
"destroy": "Disparaître (détruire immédiatement)",
|
||||
"elasticity": "Élasticité (0-1)",
|
||||
"friction": "Frictions (0-1)",
|
||||
"followPath": "Suivez le chemin",
|
||||
"targetPath": "chemin cible",
|
||||
"notSelected": "(non sélectionné)",
|
||||
"moveDuration": "Durée du mouvement (secondes)",
|
||||
"followDirection": "direction le long du chemin",
|
||||
"moveProgressCurve": "Courbe de progression en mouvement",
|
||||
"moveProgressHelp": "Axe horizontal : temps réel/durée du mouvement ; axe vertical : progression du chemin (0=point de départ → 1=point final)",
|
||||
"pathTitle": "attribut de chemin",
|
||||
"pathName": "nom du chemin",
|
||||
"closedPath": "chemin fermé",
|
||||
"pathColor": "couleur du chemin",
|
||||
"pathHelp": "Mode d'emploi :",
|
||||
"pathHelpItems": "Double-cliquez sur l'espace vide/la courbe : créez un nouveau point d'ancrage, double-cliquez sur le point d'ancrage : supprimez le nœud, double-cliquez une deuxième fois et faites glisser : créez-en un nouveau et retirez la poignée, faites glisser le point d'ancrage pour déplacer la position, faites glisser la poignée pour ajuster la courbe, Maj + faites glisser la poignée : complètement symétrique des deux côtés, A lt+glissez la poignée : contrôlez indépendamment un côté, Ctrl+sélection clic/cadre : ajouter les nœuds sélectionnés, Alt+clic/sélection de cadre : soustraire la sélection nœuds, Alt+clic dans l'espace vide : effacez toutes les sélections, sélectionnez plusieurs nœuds et faites-les glisser dans leur ensemble",
|
||||
"applyPresetShape": "Appliquer une forme prédéfinie",
|
||||
"choosePreset": "Sélectionnez un préréglage...",
|
||||
"square": "Carré",
|
||||
"star": "forme d'étoile",
|
||||
"applyPreset": "Appliquer le préréglage",
|
||||
"clearAnchors": "point d'ancrage clair",
|
||||
"panelHint": "Utilisez le bouton dans le coin supérieur droit pour créer un objet de scène"
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "Modificateurs",
|
||||
"reset": "Réinitialiser les paramètres du modificateur",
|
||||
"damping": "Amortissement",
|
||||
"enableNoise": "Activer le bruit de mouvement",
|
||||
"strength": "force",
|
||||
"noiseRange": "Plage de fluctuation",
|
||||
"noiseSpeed": "Débit temporel",
|
||||
"noiseHint": "Le contrôle de l'intensité affecte la proportion · La plage de fluctuation contrôle l'écart maximum · Le flux temporel contrôle la vitesse de changement",
|
||||
"enableGravity": "Activer la gravité",
|
||||
"gravityStrength": "Force de gravité",
|
||||
"strengthMin": "Force min.",
|
||||
"strengthMax": "Force maximale",
|
||||
"direction": "direction",
|
||||
"gravityOverLife": "La gravité pendant le cycle de vie",
|
||||
"windOverLife": "Vent du cycle de vie",
|
||||
"axisStrength": "Axe vertical : intensité 0~1",
|
||||
"directionHint": "0° à droite · -90° vers le bas · L'intensité négative inverse la direction",
|
||||
"enableWind": "Activer le vent",
|
||||
"windStrength": "force du vent",
|
||||
"enableForceField": "Activer le champ de force",
|
||||
"centerX": "Centre X",
|
||||
"centerY": "Centre Y",
|
||||
"forceStrength": "Intensité du champ de force",
|
||||
"forceRadius": "rayon du champ de force",
|
||||
"falloffMode": "mode de désintégration",
|
||||
"constant": "Constante (la vitesse ne change pas dans la plage)",
|
||||
"linearFalloff": "Atténuation linéaire (le bord est 0)",
|
||||
"inverseFalloff": "Inversement proportionnel à la distance (le plus fort au centre)",
|
||||
"forceHint": "Les nombres positifs attirent vers le centre, les nombres négatifs se repoussent vers l'extérieur et le cercle du champ de force peut être déplacé dans le canevas.",
|
||||
"showShape": "montrer la forme",
|
||||
"enableVortex": "Activer le tourbillon",
|
||||
"vortexHint": "Nombres positifs dans le sens inverse des aiguilles d'une montre · Nombres négatifs dans le sens des aiguilles d'une montre",
|
||||
"enableAttraction": "Activer l’attraction",
|
||||
"attractionX": "Point d'adsorption X",
|
||||
"attractionY": "Point d'adsorption Y",
|
||||
"attractionRadius": "rayon d'adsorption",
|
||||
"attractionDuration": "Temps d'adsorption",
|
||||
"delay": "Temps de retard",
|
||||
"delayMode": "Mode retard",
|
||||
"globalTime": "temps unifié",
|
||||
"particleLife": "durée de vie d'une seule particule",
|
||||
"attractionPath": "Méthode d'adsorption",
|
||||
"straight": "ligne droite",
|
||||
"attractionHint": "Après un délai, l'adsorption démarre à partir de la position actuelle. Lorsqu'il atteint la zone rouge, il mourra. Le cercle d'adsorption peut être glissé dans la toile.",
|
||||
"enableTrail": "Activer la traînée",
|
||||
"trailImages": "Images indépendantes de fin",
|
||||
"addTrailImage": "Ajouter des ressources d'image de fin",
|
||||
"trailRotation": "tourner",
|
||||
"trailBones": "Nombre d'os arrière",
|
||||
"trailRatio": "Ratio de suivi (%)",
|
||||
"trailLength": "Longueur de fuite",
|
||||
"randomRange": "plage aléatoire",
|
||||
"lengthRatio": "Rapport de longueur (%)",
|
||||
"lengthMin": "Longueur minimale (%)",
|
||||
"lengthMax": "Longueur maximale (%)",
|
||||
"trailWidth": "Largeur de fuite",
|
||||
"widthRatio": "rapport de largeur (%)",
|
||||
"widthMin": "Largeur minimale (%)",
|
||||
"widthMax": "Largeur maximale (%)",
|
||||
"widthScale": "mise à l'échelle de la largeur",
|
||||
"followParticle": "suivre les particules",
|
||||
"lifeLengthCurve": "courbe de longueur du cycle de vie",
|
||||
"shapeCurve": "Courbe de forme (largeur tête → queue)",
|
||||
"colorMode": "mode couleur",
|
||||
"blendMode": "mode de fusion",
|
||||
"fixedColor": "couleur fixe",
|
||||
"alphaMode": "mode transparence",
|
||||
"opacity": "transparence",
|
||||
"gridRows": "Nombre de lignes de grille",
|
||||
"gridCols": "Nombre de colonnes de grille",
|
||||
"trailHint": "Chaque particule génère un ensemble d’os frères et sœurs proportionnels aux ressources ; la longueur et la largeur aléatoires sont déterminées à la naissance de la particule, et la même graine peut être reproduite de manière stable",
|
||||
"enableFollow": "Activer le suivi de l’émetteur",
|
||||
"followMode": "mode suivi",
|
||||
"noFollow": "aucun",
|
||||
"followPath": "suivre le chemin",
|
||||
"selectedBone": "os sélectionnés",
|
||||
"emitterAngleMode": "Mode angle de l'émetteur",
|
||||
"fixedAngle": "angle fixe",
|
||||
"followMoveDirection": "Suivre la direction du mouvement",
|
||||
"moveProgressCurve": "Courbe de progression du mouvement (0→1)",
|
||||
"moveDuration": "Durée(s) du mouvement",
|
||||
"followSpace": "suivre l'espace",
|
||||
"localSpace": "Espace local (mouvement GEN)",
|
||||
"worldSpace": "Espace mondial (mouvement du point de génération de particules)",
|
||||
"moveDirection": "direction de déplacement",
|
||||
"forward": "Suivant (point de départ → point final)",
|
||||
"reverse": "Inverse (point final → point de départ)",
|
||||
"followOffset": "Point de départ décalé (0-1)",
|
||||
"followSpaceHint": "L'espace local déplace l'émetteur tout entier ; l'espace mondial ne déplace que le point d'apparition des nouvelles particules, et les particules nées restent à la position du monde.",
|
||||
"followTarget": "Suivez la cible :",
|
||||
"noValidBone": "Aucun os valide n'a encore été lié, veuillez d'abord sélectionner l'os dans l'arborescence hiérarchique Spine.",
|
||||
"rebind": "relier",
|
||||
"bind": "obligatoire",
|
||||
"selectedBoneLabel": "Os actuellement sélectionné :",
|
||||
"boneLocalSpace": "Espace local (se déplace avec les os)",
|
||||
"boneWorldSpace": "Espace mondial (les particules conservent leur position après avoir été générées)",
|
||||
"offsetX": "Décalage de déplacement X",
|
||||
"offsetY": "Décalage de déplacement Y",
|
||||
"rotationOffset": "Décalage de rotation",
|
||||
"scaleOffsetX": "Décalage d'échelle X",
|
||||
"scaleOffsetY": "Décalage d'échelle Y",
|
||||
"boneFollowHint": "L'émetteur suit uniquement la position de l'os Spine sélectionné et n'hérite pas de la rotation ou de la mise à l'échelle de Spine ; la transformation des particules utilise les propres paramètres et le décalage supérieur du système de particules.",
|
||||
"enableCollision": "Activer la collision",
|
||||
"collisionObjects": "Objets de collision participants",
|
||||
"colliderDisabled": "{name} (collisionneurs désactivés)",
|
||||
"clearCollider": "Effacer l'objet de collision {name}",
|
||||
"addCollider": "Ajouter des objets de collision de scène",
|
||||
"noAvailableColliders": "Aucun objet de collision à ajouter",
|
||||
"noCollidersSelected": "Aucun objet de collision n'est sélectionné et les particules actuelles n'entreront pas en collision.",
|
||||
"available": "Disponible",
|
||||
"disabled": "Désactivé",
|
||||
"collisionHint": "Seuls les objets de collision de scène ajoutés et activés participeront à la collision du système de particules actuel.",
|
||||
"enableSubEmitter": "Activer les sous-émetteurs",
|
||||
"triggerTiming": "Choisissez l'heure de déclenchement",
|
||||
"birth": "né",
|
||||
"death": "mourir",
|
||||
"collision": "collision",
|
||||
"chooseTarget": "Sélectionnez le système de particules cible",
|
||||
"noTarget": "Aucun (système de particules)",
|
||||
"deleteSubEmitter": "Supprimer ce sous-émetteur",
|
||||
"probability": "probabilité d'émission",
|
||||
"collisionLimit": "Limite de collision",
|
||||
"inherit": "hériter",
|
||||
"colorInheritMode": "Méthode d'héritage des couleurs",
|
||||
"add": "Ajouter",
|
||||
"replace": "couverture",
|
||||
"addSubEmitter": "+ Ajout d'un nouveau sous-émetteur",
|
||||
"inheritNone": "Aucun (par défaut)",
|
||||
"inheritAll": "Toutes les propriétés",
|
||||
"inheritColor": "couleur",
|
||||
"inheritScale": "taille",
|
||||
"inheritRotation": "tourner",
|
||||
"inheritLife": "cycle de vie"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Propriétés Spine",
|
||||
"name": "Nom Spine",
|
||||
"xPosition": "Position X",
|
||||
"yPosition": "Position Y",
|
||||
"rotation": "Rotation",
|
||||
"scaleX": "Échelle X",
|
||||
"scaleY": "Échelle Y",
|
||||
"startTime": "Heure de début",
|
||||
"resources": "Ressources Spine",
|
||||
"chooseFolder": "Sélectionnez le dossier et chargez",
|
||||
"folderHint": "Lisez JSON / SKEL, Atlas et toutes les textures d'un dossier en même temps ; les ressources peuvent toujours être remplacées individuellement ci-dessous.",
|
||||
"choose": "choisir",
|
||||
"chooseMultiple": "Sélectionner (choix multiples)",
|
||||
"loading": "chargement…",
|
||||
"load": "↧ Charger",
|
||||
"clear": "Clair",
|
||||
"supportNote": "Prise en charge de Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Chargement à la demande lorsque la version correspondante est en cours d'exécution · Local hors ligne",
|
||||
"currentResource": "Ressource actuelle {version}",
|
||||
"animations": "Animations Spine",
|
||||
"noAnimations": "Aucune animation disponible",
|
||||
"timelineAnimation": "Lire l'animation sur la chronologie",
|
||||
"no": "aucun",
|
||||
"hierarchy": "Hiérarchie",
|
||||
"clearBoneTitle": "Cliquez pour effacer la sélection d'os",
|
||||
"noBoneTitle": "Aucun os n'est actuellement sélectionné",
|
||||
"clearBone": "Effacer les os sélectionnés : {name}",
|
||||
"currentBone": "Squelette actuel :",
|
||||
"clearSlotTitle": "Cliquez pour effacer la sélection d'emplacement",
|
||||
"noSlotTitle": "Aucun emplacement n'est actuellement sélectionné",
|
||||
"clearSlot": "Effacer l'emplacement sélectionné : {name}",
|
||||
"currentSlot": "Emplacement actuel :",
|
||||
"notSelected": "Non sélectionné",
|
||||
"expandAll": "Tout développer",
|
||||
"collapseAll": "Tout réduire",
|
||||
"bones": "squelette",
|
||||
"slots": "fente",
|
||||
"notLoaded": "Non chargé Spine",
|
||||
"searchBones": "Rechercher des os",
|
||||
"searchBonesPlaceholder": "Rechercher le nom de l'os…",
|
||||
"clearSearch": "Effacer la recherche",
|
||||
"clearBoneSearch": "Recherche osseuse claire",
|
||||
"noMatchingBones": "Aucun os correspondant trouvé",
|
||||
"expandChildren": "Développer les os enfants",
|
||||
"collapseChildren": "Réduire les os de l'enfant",
|
||||
"notLoadedSlots": "Emplacement Spine non chargé",
|
||||
"searchSlots": "Rechercher des créneaux",
|
||||
"searchSlotsPlaceholder": "Rechercher le nom de l'emplacement ou de l'accessoire…",
|
||||
"clearSlotSearch": "Effacer la recherche de créneau",
|
||||
"noMatchingSlots": "Aucun emplacement correspondant trouvé",
|
||||
"slotTitle": "{name} (squelette : {bone}, accessoire : {attachment})",
|
||||
"empty": "nul",
|
||||
"textureSummary": "{count} Zhang : {names}",
|
||||
"textureImages": "Images de textures",
|
||||
"missingFolderAssets": "Le dossier sélectionné est manquant : {missing}",
|
||||
"chooseAssets": "Veuillez sélectionner les données Spine, Atlas et toutes les images de texture dans l'ordre"
|
||||
},
|
||||
"help": {
|
||||
"title": "Aide",
|
||||
"subtitle": "Démarrage rapide de la création de particules à l'enregistrement et à l'exportation",
|
||||
"close": "Fermer les instructions",
|
||||
"closeShort": "Fermer (Échap)",
|
||||
"quickStart": "démarrage rapide",
|
||||
"stepCreate": "Créer un objet : utilisez +Particles / +Collision / +Path / +Spine dans « Objet de scène » à gauche pour ajouter un objet de scène.",
|
||||
"stepEdit": "Modifier les particules : sélectionnez le système de particules et ajustez \"Mode d'émission → Forme de l'émetteur → Propriétés des particules → Apparence et ressources → Modificateur\".",
|
||||
"stepPreview": "Vérifiez l'effet : la chronologie inférieure peut être lue, mise en pause, image par image ou glissée ; il sera automatiquement recalculé après modification des paramètres.",
|
||||
"stepExport": "Enregistrer et exporter : utilisez « Enregistrer la configuration » pour conserver le projet ; \"Exporter le package Spine Json / images / .spine\" pour sortir le produit fini.",
|
||||
"quickNote": "« Réinitialiser » sur le côté droit du titre de chaque groupe de modules peut restaurer les paramètres par défaut du groupe ; les paramètres système seront automatiquement enregistrés dans le navigateur actuel.",
|
||||
"commonOps": "Actions courantes",
|
||||
"eye": "petits yeux",
|
||||
"eyeDesc": "Afficher/masquer les objets individuellement ; les systèmes de particules cachées ne sont pas exportés.",
|
||||
"copyDesc": "Copie entièrement l'objet actuellement sélectionné pour faciliter la comparaison des différents paramètres.",
|
||||
"backgroundDesc": "Téléchargez l'image de référence et ajustez la position et la transparence pour l'aperçu du canevas uniquement.",
|
||||
"settingsDesc": "La disposition de l'interface de gestion, l'affichage auxiliaire, la balance, etc. sont automatiquement enregistrés dans le navigateur.",
|
||||
"undoDesc": "Ctrl+Z se rétracte d'un pas ; le nombre maximum d'étapes peut être ajusté dans les paramètres du système.",
|
||||
"spineBoneDesc": "Recherchez et sélectionnez un os dans l'arborescence hiérarchique, qui peut être utilisé par l'émetteur de particules à suivre.",
|
||||
"shortcuts": "Raccourcis",
|
||||
"undoShortcut": "Annuler l'étape précédente",
|
||||
"saveShortcut": "Enregistrer la configuration",
|
||||
"panShortcut": "Faites glisser la toile",
|
||||
"translateShortcut": "Outil de déplacement",
|
||||
"rotateShortcut": "Outil rotatif",
|
||||
"scaleShortcut": "Outil Zoom",
|
||||
"playShortcut": "lecture/pause",
|
||||
"startShortcut": "Revenir à la première image",
|
||||
"shortcutNote": "Q / W / E / R devez d'abord cliquer sur la toile ; lorsque le curseur est dans la zone de saisie, la touche de raccourci à touche unique ne sera pas déclenchée.",
|
||||
"modules": "Guide des modules",
|
||||
"configTitle": "Gestion des configurations",
|
||||
"saveConfigDesc": "Enregistrez tous les objets et paramètres de scène actuels en tant que fichiers de projet JSON (Ctrl+S est également pris en charge).",
|
||||
"loadConfigDesc": "Sélectionnez le fichier de configuration local pour restaurer le projet complet.",
|
||||
"presetDesc": "Sélectionnez une application rapide par défaut dans la liste déroulante ; cliquez sur la liste déroulante pour actualiser la liste.",
|
||||
"configScope": "portée",
|
||||
"configScopeDesc": "La configuration contient des objets et des paramètres ; les paramètres de l'interface et du système sont stockés séparément dans le navigateur.",
|
||||
"sceneTitle": "objet de scène",
|
||||
"particleDesc": "objet de base. La position, le décalage, la rotation, la mise à l'échelle et la graine aléatoire peuvent être définis ; la même graine peut reproduire le même effet.",
|
||||
"colliderDesc": "Cercle/ellipse/rectangle/polygone/personnalisé, prend en charge le rebond physique, la pause, la destruction et le mouvement le long du chemin.",
|
||||
"pathDesc": "Chemin de Bézier avec prise en charge des points d'ancrage, poignées de contrôle, fermeture, couleur et formes prédéfinies.",
|
||||
"spineDesc": "Chargez les données Spine, Atlas et les textures, parcourez les os et les emplacements et suivez les émetteurs.",
|
||||
"sceneCommonDesc": "Les objets peuvent être révélés et copiés indépendamment ; les systèmes de particules cachées ne sont pas exportés.",
|
||||
"emissionDesc": "Tir continu, rafale, retard et durée de boucle en trois étapes de démarrage/boucle/fin.",
|
||||
"burstDesc": "Émet un nombre spécifié de particules à la fois.",
|
||||
"delayDesc": "Le temps d'attente avant le début de l'émission, correspondant à l'extrémité gauche de la barre de particules.",
|
||||
"loopNote": "La persistance de la boucle ne prend pas en charge le suivi des os et des chemins, et les paramètres suivants seront restaurés lors du changement.",
|
||||
"shapeDesc": "Zone d'apparition d'un point, d'un cercle, d'un rectangle, d'un cône ou d'un chemin. Les cercles/cônes prennent en charge les rayons internes et externes, et les rectangles prennent en charge la largeur et la hauteur internes et externes.",
|
||||
"angleDesc": "Fixe, aléatoire, radial, trajectoire normale ou tangente à la trajectoire.",
|
||||
"initialDesc": "Le cycle de vie, la vitesse, la mise à l'échelle et la rotation supportent la direction fixe, aléatoire, la courbe et la rotation peuvent suivre la direction de lancement.",
|
||||
"overLifeDesc": "Le grossissement de la vitesse, le grossissement du zoom et la vitesse de rotation peuvent être contrôlés par la courbe du cycle de vie.",
|
||||
"alphaDesc": "Supports de transparence fixes ou courbes ; Le mode courbe peut suivre dérivé, linéaire ou Bézier.",
|
||||
"imageDesc": "Image unique ou image de séquence, randomisation du poids de plusieurs images, point pivot, couleur, mode de fusion et transparence indépendante.",
|
||||
"sequenceDesc": "Les méthodes de lecture incluent le masquage ponctuel, le gel ponctuel, la boucle avant et la boucle inverse.",
|
||||
"noiseDesc": "Générez des traces de gigue et contrôlez l’intensité, la portée et la vitesse.",
|
||||
"gravityDesc": "Courbes d'intensité de gravité, de vent et de cycle de vie.",
|
||||
"forceDesc": "Champs de force globaux, vortex, adsorption et collisions.",
|
||||
"trailDesc": "Actifs de fin indépendants, nombre d’os, courbes de longueur, largeur, forme, couleur et transparence.",
|
||||
"followDesc": "L'émetteur peut suivre un chemin ou un os Spine.",
|
||||
"collisionDesc": "Sélectionnez les objets de collision de scène et les réponses aux collisions de particules.",
|
||||
"exportDesc": "Définissez le chemin de l'image, la version Spine, la courbe d'images clés, FPS, les images entières, le pool d'os et l'animation vide.",
|
||||
"exportButtonsDesc": "Vous pouvez exporter Spine JSON, des images ZIP ou générer des projets .spine via le connecteur.",
|
||||
"connectorTitle": "Mode d'emploi du connecteur Spine",
|
||||
"connectorIntro": "Le connecteur transmet le JSON et les images générées par la page Web au Spine qui a été installé et activé sur la machine locale, et les convertit en projets .spine modifiables.",
|
||||
"prerequisite": "chargement initial",
|
||||
"prerequisiteDesc": "L'ordinateur a Spine installé et activé, et le connecteur de bureau a été lancé.",
|
||||
"download": "télécharger",
|
||||
"webSide": "page web",
|
||||
"webSideDesc": "Une fois que « Connecteur disponible · Spine est prêt » s'affiche, cliquez sur « Exporter le package .spine ».",
|
||||
"authorization": "première autorisation",
|
||||
"authorizationDesc": "La première connexion doit vérifier la source du site Web et l'autoriser une fois ; cette machine enregistre la liste blanche d'autorisation.",
|
||||
"pathSetup": "Paramètres du chemin",
|
||||
"pathSetupDesc": "Le connecteur détectera automatiquement Spine ; s'il est introuvable, vous pouvez spécifier manuellement le chemin de l'application.",
|
||||
"downloadResult": "Télécharger les résultats",
|
||||
"downloadResultDesc": "Obtenez le package ZIP, qui contient le projet .spine et le répertoire d'images.",
|
||||
"version": "Version",
|
||||
"versionDesc": "Le connecteur correspond automatiquement à Spine 3.8~4.3 selon la version JSON.",
|
||||
"security": "Sécurité",
|
||||
"securityDesc": "Écoutez uniquement l'adresse locale, l'autorisation est enregistrée dans le connecteur et les fichiers temporaires sont nettoyés après conversion.",
|
||||
"differenceTitle": "Quelle est la différence entre configurer et exporter ?",
|
||||
"differenceDesc": "« Enregistrer la configuration » enregistre tous les objets et paramètres pouvant être modifiés ; \"Exporter Spine Json\" exporte uniquement le système de particules affiché et intègre les résultats de collision, de suivi, de fuite et de sous-émetteur dans des données d'animation indépendantes."
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "Après être entré en mode continu de boucle, les paramètres de suivi des particules seront invalides et restaurés à leur valeur par défaut. Continuer?",
|
||||
"confirmLoopFollowExit": "Après avoir quitté le mode de persistance de boucle, les paramètres de suivi des particules seront invalides et restaurés à leurs valeurs par défaut. Continuer?",
|
||||
"invalidJson": "Le fichier de configuration n'est pas valide JSON",
|
||||
"invalidConfigFormat": "Pas le profil de l'éditeur SpineParticle",
|
||||
"unsupportedConfigVersion": "Version de configuration non encore prise en charge : {version}",
|
||||
"missingScene": "Le fichier de configuration ne contient pas de données complètes sur la scène",
|
||||
"missingEmbeddedSpine": "La configuration ne contient pas de ressources originales Spine réutilisables",
|
||||
"chooseJsonConfig": "Veuillez sélectionner un fichier de configuration .json",
|
||||
"settingsInvalidJson": "Le cache des paramètres système n'est pas valide JSON",
|
||||
"settingsFormat": "Pas le cache des paramètres système de l'éditeur SpineParticle",
|
||||
"settingsVersion": "La version de la configuration du système n'est pas encore prise en charge : {version}",
|
||||
"settingsMissing": "Le cache des paramètres système ne contient pas de paramètres",
|
||||
"noExportableImages": "Il n'y a pas d'images exportables pour le système de particules actuellement visible",
|
||||
"invalidZipPath": "ZIP Chemin de fichier invalide",
|
||||
"spineFileType": "Les données Spine ne prennent en charge que .json ou .skel",
|
||||
"atlasFileType": "Les fichiers Atlas ne prennent en charge que .atlas",
|
||||
"chooseTexture": "Veuillez sélectionner au moins une image de texture",
|
||||
"binaryParseFailed": "Échec de l'analyse binaire Spine (4.3 : {v43} ; ancienne version : {v42})",
|
||||
"invalidSpineJson": "Spine JSON Format de fichier invalide",
|
||||
"unsupportedSpineJsonVersion": "La version Spine JSON n'est pas prise en charge, seul {versions} est pris en charge",
|
||||
"unsupportedSpineDataVersion": "La version des données Spine n'est pas prise en charge, seul {versions} est pris en charge",
|
||||
"embeddedReadFailed": "Impossible de lire le fichier Spine intégré : {name}",
|
||||
"missingImageWarning": "L'image \"{file}\" est manquante ou présente des dimensions illisibles, chemin conservé.",
|
||||
"missingTrailImageWarning": "L'image de fin \"{file}\" est manquante et le chemin a été conservé.",
|
||||
"emptyCacheWarning": "Aucun framebuffer disponible pour '{name}'.",
|
||||
"readExportImageFailed": "Impossible de lire l'image exportée : {name}",
|
||||
"connectorOffline": "Connecteur local Spine non détecté, veuillez d'abord activer le connecteur",
|
||||
"connectorHttpError": "Le connecteur Spine renvoie l'erreur : HTTP {status}",
|
||||
"invalidTrailUV": "Données UV non valides pour le maillage final '{name}'",
|
||||
"missingTrailVertices": "Le maillage final '{name}' ne contient pas de données de sommet",
|
||||
"trailIndexOutOfRange": "Indice triangulaire du maillage final '{name}' hors limites",
|
||||
"invalidTrailHull": "Le numéro de contour extérieur du maillage final \"{name}\" n'est pas valide",
|
||||
"trailHullIndexOutOfRange": "L'index du bord du contour extérieur du maillage final \"{name}\" est hors limites",
|
||||
"invalidInfluenceCount": "Le maillage final « {name} » contient un nombre non valide de poids d'os.",
|
||||
"missingBoneReference": "Le maillage final '{name}' fait référence à un os inexistant",
|
||||
"invalidWeight": "La grille finale \"{name}\" contient des données de poids non valides",
|
||||
"weightSum": "Les poids des sommets du maillage final '{name}' ne totalisent pas 1",
|
||||
"vertexCountMismatch": "Le maillage final '{name}' a un nombre incohérent de sommets et d'UV",
|
||||
"invalidInherit": "La valeur héritée « {inherit} » pour l'os « {name} » n'est pas conforme au format Spine {version} JSON.",
|
||||
"trailBoneParent": "L'os arrière \"{name}\" doit être directement suspendu sous l'os du système de particules et ne peut pas former de chaîne osseuse.",
|
||||
"trailSlotEmpty": "L'emplacement de queue pondéré \"{name}\" ne peut pas utiliser de pièces jointes vides. La mise à l'échelle osseuse correspondante doit être fixée à 0 en phase de non-apparition ou de mort.",
|
||||
"spine38Version": "Spine 3.8 L'ID de version exporté doit être 3.8",
|
||||
"spine38Inherit": "Spine 3.8 Bone \"{name}\" doit utiliser la transformation et ne peut pas utiliser l'héritage",
|
||||
"spine38SlotColor": "La chronologie des couleurs de l'emplacement Spine 3.8 doit utiliser color / twoColor",
|
||||
"spine38AttachmentName": "Spine 3.8 L'image cachée de la chronologie de la pièce jointe doit être explicitement écrite en nom : null",
|
||||
"spine38RotationAngle": "Spine 3.8 Vous devez utiliser l'angle pour faire pivoter l'axe du temps",
|
||||
"spine38Curve": "Spine 3.8 ne prend pas en charge le format de courbe de tableau 4.x",
|
||||
"unsupportedExportVersion": "La version exportée n'est pas prise en charge, seul Spine {versions} est pris en charge",
|
||||
"exportVersionMismatch": "Version d'exportation incohérente : définie sur Spine {expected}, JSON marquée comme Spine {actual}",
|
||||
"exportMissingBones": "Le résultat de l'exportation ne contient pas d'os",
|
||||
"missingAtlasTexture": "La texture référencée par Atlas n'est pas sélectionnée : {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "Langue",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "ドラッグしてタイムラインの高さを調整します",
|
||||
"systems": "システム",
|
||||
"particlesBones": "粒子(骨)",
|
||||
"rootBone": "根の骨",
|
||||
"hudTip": "ホイールズーム・左クリックでキャンバスをドラッグ",
|
||||
"title": "Spineパーティクルエディター-Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "閉じる",
|
||||
"reset": "リセット",
|
||||
"add": "追加",
|
||||
"remove": "削除",
|
||||
"delete": "削除",
|
||||
"clear": "クリア",
|
||||
"cancel": "キャンセル",
|
||||
"confirm": "確定",
|
||||
"none": "なし",
|
||||
"enabled": "有効",
|
||||
"disabled": "無効",
|
||||
"fixed": "固定",
|
||||
"random": "ランダム",
|
||||
"curve": "カーブ",
|
||||
"followExport": "エクスポート設定に従う",
|
||||
"linear": "リニア",
|
||||
"bezier": "ベジェ",
|
||||
"above": "上",
|
||||
"below": "下",
|
||||
"left": "左",
|
||||
"right": "右",
|
||||
"seconds": "秒",
|
||||
"frames": "フレーム"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "設定",
|
||||
"undo": "元に戻す (Ctrl+Z)",
|
||||
"pan": "キャンバス移動 (Q)",
|
||||
"translate": "移動 (W)",
|
||||
"rotate": "回転 (E)",
|
||||
"scale": "拡大縮小 (R)",
|
||||
"zoomIn": "拡大",
|
||||
"zoomOut": "縮小",
|
||||
"fitView": "キャンバスに合わせる",
|
||||
"toggleGrid": "グリッド切替",
|
||||
"resetView": "ビューをリセット",
|
||||
"background": "背景",
|
||||
"backgroundSettings": "背景画像設定",
|
||||
"changeBackground": "画像を変更",
|
||||
"uploadBackground": "画像をアップロード",
|
||||
"clearBackground": "背景をクリア",
|
||||
"noBackground": "画像なし",
|
||||
"backgroundX": "背景画像のXオフセット",
|
||||
"backgroundY": "背景画像のYオフセット",
|
||||
"backgroundOpacity": "背景画像の透明度",
|
||||
"opacity": "不透明度",
|
||||
"help": "ヘルプ",
|
||||
"openHelp": "ヘルプを開く"
|
||||
},
|
||||
"settings": {
|
||||
"title": "システム設定",
|
||||
"layout": "インターフェースのレイアウト",
|
||||
"parameterPanelPosition": "パラメータパネルの位置",
|
||||
"panelOnRight": "パラメータパネルは右側に表示されます",
|
||||
"history": "動作履歴",
|
||||
"maxUndo": "戻る最大ステップ数",
|
||||
"canvasGuides": "キャンバス補助ディスプレイ",
|
||||
"emitter": "発射点",
|
||||
"bones": "骨の接続",
|
||||
"bonePointSize": "骨点描画サイズ",
|
||||
"boneAxisSize": "軸描画サイズ",
|
||||
"skinMesh": "スキンメッシュ",
|
||||
"enableTicks": "ティックを有効にする",
|
||||
"tickFontSize": "文字サイズの拡大縮小",
|
||||
"tickWidth": "目盛りの太さ",
|
||||
"axisColor": "軸の色",
|
||||
"showAxisLabels": "表示スケール値",
|
||||
"cacheNote": "システム設定全体が現在のブラウザに自動的に保存されます"
|
||||
},
|
||||
"config": {
|
||||
"title": "設定管理",
|
||||
"save": "設定を保存",
|
||||
"saveTitle": "すべてのエディタ設定を保存する (Ctrl+S)",
|
||||
"load": "設定を読み込む",
|
||||
"loadTitle": "ローカルエディタ設定をロードする",
|
||||
"presets": "プリセットリスト",
|
||||
"selectPreset": "プリセットを選択",
|
||||
"noPresets": "プリセットなし",
|
||||
"saved": "設定はローカルに保存されました",
|
||||
"loading": "設定を読み込み中…",
|
||||
"loaded": "ロード済み: {name}",
|
||||
"presetLoading": "プリセットをロード中…",
|
||||
"presetLoaded": "ロードされたプリセット: {name}",
|
||||
"presetNamingError": "{message}、デフォルトのファイル名を確認してください",
|
||||
"presetTransferTitle": "プリセットをロードする",
|
||||
"presetDownloading": "{file}をダウンロード中…",
|
||||
"presetParsing": "デフォルト設定を解析しています...",
|
||||
"presetRestoring": "デフォルトのリソースを解析して復元しています...",
|
||||
"presetComplete": "プリセットのロードが完了しました",
|
||||
"presetListError": "プリセットリストを読み取れません",
|
||||
"presetReadError": "プリセットを読み取れません: {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.パーティクルスイープ",
|
||||
"barBlocks": "2.バーブロック",
|
||||
"forceTrail": "3.フォースフィールドトレイル",
|
||||
"lightningSequence": "4.雷シーケンス",
|
||||
"texturePivot": "5.テクスチャピボット",
|
||||
"subEmitter": "6.サブエミッター"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "四角いハンドルをドラッグして円弧を調整します。 · 空白スペースをダブルクリックして新しいスペースを作成します。 · ノードをダブルクリックして削除します。",
|
||||
"linearHint": "空白スペースをダブルクリックして、新しいスペースを作成します。ノードをダブルクリックして削除します。ノードをドラッグして調整します。",
|
||||
"resetTitle": "デフォルトのカーブを復元する"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "リボンをダブルクリックしてカラーマークを追加します",
|
||||
"color": "カラーコード",
|
||||
"colorValue": "カラースケールのカラー値",
|
||||
"position": "カラーマーク位置",
|
||||
"addMiddle": "真ん中に色を入れる",
|
||||
"delete": "現在のカラーパッチを削除します",
|
||||
"hint": "カラーバンドをダブルクリックして新規追加・カラーマークをドラッグして位置を調整・カラーマークをダブルクリックして削除"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "角度オフセット",
|
||||
"value": "数値",
|
||||
"lower": "下限",
|
||||
"upper": "上限",
|
||||
"rangeLower": "範囲の下限",
|
||||
"rangeUpper": "上限範囲",
|
||||
"curveInput": "曲線入力→",
|
||||
"direction": "発射方向"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "マップのピボットポイント",
|
||||
"zoomOut": "ズームアウト",
|
||||
"zoomIn": "拡大する",
|
||||
"expand": "全画面へのズーム操作",
|
||||
"interaction": "左クリック/ドラッグしてピボット ポイントを設定します。 · 右クリックしてキャンバスをドラッグします。 · スクロール ホイールでズームします。",
|
||||
"previewAlt": "ピボットポイントのプレビュー",
|
||||
"noImage": "画像が選択されていません",
|
||||
"resetCenter": "中央に再配置 (50%、50%)",
|
||||
"coordinates": "軸点座標(%)",
|
||||
"rotationTest": "軸回転試験",
|
||||
"static": "まだ",
|
||||
"spin": "回転",
|
||||
"swing": "スイング",
|
||||
"rotationAlt": "回転試験",
|
||||
"topLeft": "左上",
|
||||
"top": "すぐ上",
|
||||
"topRight": "右上",
|
||||
"left": "右左",
|
||||
"center": "真ん中",
|
||||
"right": "右",
|
||||
"bottomLeft": "左下",
|
||||
"bottom": "真下・底",
|
||||
"bottomRight": "右下"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "連番フレーム画像を選択",
|
||||
"chooseLocal": "ローカル画像を選択",
|
||||
"subfolder": "サブフォルダー",
|
||||
"name": "名前",
|
||||
"restore": "{name}を復元する",
|
||||
"deleteResource": "画像リソースを削除する",
|
||||
"imageMode": "ピクチャーモード",
|
||||
"fixed": "固定",
|
||||
"sequence": "シーケンス",
|
||||
"playbackMode": "プレイモード",
|
||||
"onceHide": "1回・最終フレームで非表示",
|
||||
"onceHold": "1回・最終フレームを保持",
|
||||
"loopForward": "正方向ループ",
|
||||
"loopReverse": "逆方向ループ",
|
||||
"playbackFps": "再生フレームレート",
|
||||
"chooseSequenceMulti": "シーケンスフレームの選択(複数選択)",
|
||||
"weight": "重み %",
|
||||
"unlockWeight": "プロポーションロックを解除する",
|
||||
"lockWeight": "現在の比率をロックする",
|
||||
"pivot": "テクスチャピボット",
|
||||
"collapsePivot": "折り畳むピボットポイントの調整",
|
||||
"expandPivot": "ピボットポイントの調整を拡張する",
|
||||
"pivotModal": "テクスチャ回転軸ポイント大画面リファインメント",
|
||||
"pivotModalDesc": "下のマップ上の任意の場所をクリックまたはドラッグして、パーティクルの回転/スイング中心を正確に設定します。",
|
||||
"pivotZoomHint": "100% ~ 400% の倍率をサポートし、先端または根元を正確に狙うことができます。",
|
||||
"confirmPivot": "ピボットポイントを決定して保存する",
|
||||
"noSequence": "シーケンスフレームが選択されていません",
|
||||
"firstFrame": "フレーム 1",
|
||||
"firstImage": "最初の写真",
|
||||
"lastImage": "最後の写真",
|
||||
"pivotOn": "オープン済み: X {x}% | Y {y}%",
|
||||
"pivotOff": "オンになっていません。デフォルトは画像の中心付近 (50%、50%)",
|
||||
"pivotCustom": "ピボット ポイントがカスタマイズされました: X {x}% | Y {y}%",
|
||||
"frameCountOne": "1フレーム・{name}",
|
||||
"frameCountMany": "{count}フレーム・{first}→{last}",
|
||||
"sequenceSelected": "{count} フレームが選択され、{first}-{last} の順序で再生されます"
|
||||
},
|
||||
"timeline": {
|
||||
"play": "プレイ(D)",
|
||||
"pause": "一時停止(D)",
|
||||
"toStart": "最初のフレームに戻る(S)",
|
||||
"previous": "前のフレーム",
|
||||
"next": "次のフレーム",
|
||||
"toEnd": "最後のフレームに移動",
|
||||
"continuousLoop": "連続ループ再生",
|
||||
"abLoop": "独立した A/B 区間ループ",
|
||||
"abLoopShort": "AB ループ",
|
||||
"abRange": "AB サイクル間隔",
|
||||
"playbackStart": "カスタム再生開始フレーム",
|
||||
"playbackEnd": "カスタム再生終了フレーム",
|
||||
"startFrame": "再生開始フレーム",
|
||||
"endFrame": "再生終了フレーム",
|
||||
"frame": "フレーム",
|
||||
"emission": "放出中",
|
||||
"particleLife": "パーティクル存在",
|
||||
"spineAnimation": "Spine アニメーション",
|
||||
"ownerAnimation": "所属アニメーション",
|
||||
"setOwnerAnimation": "現在のパーティクル システムが属するアニメーションを設定します",
|
||||
"chooseOwnerAnimation": "アニメーションを選択してください",
|
||||
"animationName": "アニメ名",
|
||||
"renameAnimation": "現在のアニメーションの名前を変更する",
|
||||
"rename": "名前の変更",
|
||||
"newAnimation": "+ 新しい",
|
||||
"keepOneAnimation": "少なくとも 1 つのアニメーションを保持する必要があります",
|
||||
"spinePreview": "Spine プレビュー アニメーション",
|
||||
"noSpineAnimation": "利用できる Spine アニメーションはありません",
|
||||
"none": "なし",
|
||||
"systemName": "システム {index}",
|
||||
"dragLoopDuration": "ドラッグループセグメントの継続時間",
|
||||
"dragEmissionDuration": "ドラッグ時間",
|
||||
"dragSpineStart": "ドラッグしてアニメーションの開始時間を調整します",
|
||||
"noAnimationData": "現在、表示するアニメーション データがありません。",
|
||||
"animationNameEmpty": "アニメーション名を空にすることはできません",
|
||||
"animationNameDuplicate": "アニメーション名を繰り返すことはできません",
|
||||
"animationRenameFailed": "アニメーション名は変更できません",
|
||||
"zoomIn": "拡大する",
|
||||
"zoomOut": "ズームアウト",
|
||||
"zoomFit": "適度",
|
||||
"frameStatus": "フレーム {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "エミッションモード",
|
||||
"reset": "送信モードパラメータをリセット",
|
||||
"stream": "ストリーム",
|
||||
"burst": "バースト",
|
||||
"normalStream": "通常ストリーム",
|
||||
"loopStream": "ループストリーム",
|
||||
"rate": "放出レート",
|
||||
"duration": "放出時間",
|
||||
"loopDuration": "発射持続時間 (f)",
|
||||
"generateStart": "開始ループアニメーションを生成する",
|
||||
"generateEnd": "ループ終了アニメーションを生成する",
|
||||
"customDuration": "期間を指定する",
|
||||
"auto": "自動{frames}f",
|
||||
"startLoopDuration": "ループセグメントの開始時間",
|
||||
"endLoopDuration": "ループセグメントの終了時間",
|
||||
"loopWarning": "ループ永続モードは、ボーン追跡とパス追跡をサポートしていません。パーティクルの次の設定は、開始または終了時にデフォルト値に復元されます。",
|
||||
"burstCount": "一度の放出数",
|
||||
"delay": "遅延時間",
|
||||
"shapeTitle": "エミッター形状",
|
||||
"shapeReset": "エミッタ形状パラメータをリセット",
|
||||
"shape": "形",
|
||||
"point": "点",
|
||||
"circle": "円",
|
||||
"rect": "矩形",
|
||||
"cone": "円錐",
|
||||
"path": "パス",
|
||||
"innerDiameter": "内径",
|
||||
"outerDiameter": "外径",
|
||||
"innerRadius": "内半径",
|
||||
"outerRadius": "外半径",
|
||||
"coneDirection": "テーパ方向",
|
||||
"coneAngle": "テーパー開き角度",
|
||||
"innerWidth": "内幅",
|
||||
"innerHeight": "高い内側",
|
||||
"outerWidth": "外幅",
|
||||
"outerHeight": "エクストラハイ",
|
||||
"selectPath": "パスの選択",
|
||||
"noPath": "パスなし (ポイント放出)",
|
||||
"birthDistribution": "出生分布",
|
||||
"evenDistribution": "等間隔固定分布",
|
||||
"randomDistribution": "ランダムな分布",
|
||||
"emissionAngle": "打ち出し角",
|
||||
"radial": "ラジアル(中心外側)",
|
||||
"pathNormal": "パスに対して垂直",
|
||||
"pathTangent": "パス方向に沿って",
|
||||
"fixedAngle": "固定角度",
|
||||
"baseAngle": "底角",
|
||||
"randomRange": "ランダムな範囲",
|
||||
"showShape": "形状を表示"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "パーティクル属性",
|
||||
"reset": "パーティクル属性パラメータをリセット",
|
||||
"initialParams": "パーティクル初期値",
|
||||
"initialLife": "初期ライフサイクル",
|
||||
"randomSample": "ランダムサンプリング →",
|
||||
"initialSpeed": "初速",
|
||||
"initialScale": "初期スケーリング",
|
||||
"uniform": "統一された",
|
||||
"separateXY": "XY分離",
|
||||
"scaleX": "ズームX",
|
||||
"scaleY": "ズームY",
|
||||
"initialRotation": "初期回転",
|
||||
"lifecycleTitle": "ライフタイム中の変化",
|
||||
"speedOverLife": "ライフサイクル速度",
|
||||
"speedMultiplier": "スピードマルチプライヤー",
|
||||
"lifeTo": "ライフサイクル →",
|
||||
"scaleOverLife": "ライフサイクル中のスケーリング",
|
||||
"scaleMultiplier": "ズーム倍率",
|
||||
"multiplierX": "倍率",
|
||||
"multiplierY": "倍率Y",
|
||||
"rotationOverLife": "ライフサイクル中に回転する",
|
||||
"rotationSpeed": "回転速度"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "外観とリソース",
|
||||
"reset": "外観とリソースのパラメータをリセットする",
|
||||
"opacity": "不透明度",
|
||||
"curveMode": "カーブモード",
|
||||
"transparent": "0(透明)",
|
||||
"opaque": "1(不透明)",
|
||||
"renderLayer": "レンダー階層(Spine スロット)",
|
||||
"top": "トップレベル",
|
||||
"spineSlot": "Spineスロット",
|
||||
"selectSpine": "Spineを選択してください",
|
||||
"noSpine": "利用可能なものはありません",
|
||||
"noSlot": "スロットがまだ選択されていません",
|
||||
"reselect": "再選択",
|
||||
"selectSlot": "スロットを選択",
|
||||
"searchSlots": "スロット名またはアクセサリ名を検索してください…",
|
||||
"searchSlotsAria": "スロットを検索する",
|
||||
"emptySlot": "空のスロット",
|
||||
"noMatchingSlots": "一致するスロットがありません",
|
||||
"above": "このスロットの絵の上に",
|
||||
"below": "このスロットの絵の下に",
|
||||
"followAttachment": "スロットアクセサリの表示と非表示を切り替える",
|
||||
"previewOnly": "表示レベルの調整はエディターのプレビューにのみ影響し、エクスポートされたデータには影響しません。",
|
||||
"imageResources": "画像リソース",
|
||||
"addImage": "画像リソースを追加する",
|
||||
"scale": "ズーム",
|
||||
"color": "色",
|
||||
"fixedColor": "固定色",
|
||||
"randomColor": "ランダムな色",
|
||||
"lifetime": "ライフサイクル",
|
||||
"normal": "通常",
|
||||
"add": "加算",
|
||||
"multiply": "乗算",
|
||||
"screen": "スクリーン",
|
||||
"fixedColorValue": "固定色の値",
|
||||
"randomColorHint": "各パーティクルは、生成時にリボンからランダムに色を選択し、ライフ サイクルを通じて変更されません。",
|
||||
"independentAlpha": "独立した不透明度",
|
||||
"off": "オフ"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · 上の写真",
|
||||
"slotLabelBelow": "{spine} / {slot} · 写真の下",
|
||||
"resolvedAbove": "{slot} イメージの上とそのスロットの下にレンダリングされます",
|
||||
"resolvedBetween": "{previous} と {slot} の間でレンダリング",
|
||||
"warningNoSpine": "Spine はロードされておらず、パーティクルが一時的に上部に表示されます。",
|
||||
"warningNoSelection": "Spine はまだ選択されておらず、パーティクルが一時的に上部に表示されます。",
|
||||
"warningMissingSpine": "ターゲットの Spine が存在しないため、パーティクルが一時的に上に表示されます。",
|
||||
"warningNotReady": "ターゲット Spine の準備ができていないため、パーティクルが一時的に上部に表示されます。",
|
||||
"warningMissingSlot": "ターゲット スロットが存在せず (リソースが置き換えられた可能性があります)、パーティクルが一時的に上部に表示されます。",
|
||||
"warningFirstSlot": "これは最初のスロットであり、その下に表示することはできません。パーティクルは一時的に上に表示されます。"
|
||||
},
|
||||
"export": {
|
||||
"title": "エクスポート設定",
|
||||
"reset": "エクスポート設定をリセットする",
|
||||
"imagesPath": "画像パス (Spine 画像パス)",
|
||||
"spineVersion": "Spine バージョン",
|
||||
"keyframeCurve": "キーフレーム補間カーブ",
|
||||
"linear": "リニア",
|
||||
"smoothBezier": "スムーズ ベジェ (スムーズ Bézier)",
|
||||
"bezierHelp": "スムーズ ベジェは連続モーションを誤差許容範囲内に適合させます。誕生、死亡、アタッチメントの切り替え、突然変異では引き続きステップ キーフレームが使用されます。",
|
||||
"spine38Help": "Spine 3.8 は 4.x のチャネルごとの配列ベジェをサポートしておらず、エクスポート時に許容差が低減された区分的線形キーフレームに変換されます。",
|
||||
"fps": "エクスポート FPS",
|
||||
"omitFps": "fpsは書かないでください",
|
||||
"fpsHelp": "FPS を変更するときは、アニメーションの実際の秒数を変更しないでください。 「fps を書かない」は、Spine の fps メタデータのみを省略します。",
|
||||
"integerFrames": "整数フレームの位置合わせ",
|
||||
"bonePool": "ボーン オブジェクト プール",
|
||||
"excludeEmpty": "内容のないアニメーションを除外する",
|
||||
"baking": "アニメーションが再計算されてベイクされています",
|
||||
"exportJsonTitle": "エクスポート Spine {version} JSON",
|
||||
"preparing": "エクスポートの準備中...",
|
||||
"exportJson": "Spine JSON を書き出す",
|
||||
"exportImagesTitle": "現在のパーティクル システム ZIP で使用されているイメージを別途ダウンロードします。",
|
||||
"organizingImages": "写真を並べ替えています...",
|
||||
"exportImages": "画像 ZIP を書き出す",
|
||||
"generatingProject": "プロジェクトを生成中...",
|
||||
"exportSpine": ".spine パッケージをエクスポートする",
|
||||
"authorize": "現在の Web サイトを認証する",
|
||||
"authorizeTitle": "ネイティブ コネクタで現在の Web サイトを承認する",
|
||||
"refreshConnector": "コネクタを再確認してください",
|
||||
"refresh": "リフレッシュする",
|
||||
"recalculating": "パーティクル アニメーションを再計算しています...",
|
||||
"exported": "エクスポートされた Spine {version}: {systems} パーティクル システム、{animations} アニメーション、{bones} ルート ボーン {warning}",
|
||||
"resourceWarning": ";{count} リソースのヒント (不足している画像もエクスポートされます)",
|
||||
"timeout": "アニメーションのタイムアウトを再計算します。ページがまだ実行中であることを確認して、再試行してください。",
|
||||
"preparingProject": "写真を並べ替えて、このマシンを Spine と呼び出します…",
|
||||
"projectExported": "{fileName} が生成されました: .spine プロジェクトと {images} 画像、Spine {version} を含む",
|
||||
"collectingImages": "現在パーティクル システムで使用されている画像を照合しています...",
|
||||
"imagesExported": "{fileName} が生成されました: {folder}/ {images} 画像が含まれています",
|
||||
"connectorChecking": "ローカルの Spine コネクタを検出しています...",
|
||||
"connectorOffline": "ローカル Spine コネクタが起動していません",
|
||||
"spineNotFound": "コネクタは起動していますが Spine が見つかりません",
|
||||
"notAuthorized": "コネクタは起動していますが、このサイトは未認証です",
|
||||
"connectorReady": "コネクタ使用可能 · Spine 準備完了",
|
||||
"connectorBusy": "Spine プロジェクトを再計算して生成中",
|
||||
"connectorGenerate": "ローカル Spine で Spine {version} プロジェクトを生成",
|
||||
"unknown": "未知",
|
||||
"checking": "確認中",
|
||||
"offline": "未起動",
|
||||
"notFound": "Spine が見つかりません",
|
||||
"unauthorized": "未認証",
|
||||
"projectTransferTitle": "Spine パッケージをエクスポートする",
|
||||
"projectTransferDetail": "パーティクル アニメーションを再計算しています...",
|
||||
"projectTransferDownload": "Spine プロジェクト パッケージがダウンロードされました",
|
||||
"generatingJson": "Spine JSON を生成中…",
|
||||
"preparingProjectFiles": "プロジェクトの写真を照合中...",
|
||||
"uploading": "Spine コネクタにデータをアップロードしています...",
|
||||
"spineProcessing": "Spine がプロジェクトを変換中です。お待ちください...",
|
||||
"downloadingProject": "生成された Spine プロジェクト パッケージをダウンロードしています...",
|
||||
"handingToBrowser": "ダウンロードのためにブラウザに引き渡しています..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "完了",
|
||||
"failed": "操作が失敗しました"
|
||||
},
|
||||
"scene": {
|
||||
"title": "シーンオブジェクト",
|
||||
"addParticle": "パーティクルシステムを追加",
|
||||
"addParticleShort": "+粒子",
|
||||
"addCollider": "コライダーの追加",
|
||||
"addColliderShort": "+衝突",
|
||||
"addPath": "パスを追加",
|
||||
"addPathShort": "+ パス",
|
||||
"addSpine": "Spineを追加",
|
||||
"copyTitle": "現在選択されているシーン オブジェクトをコピーします",
|
||||
"showParticle": "パーティクル システムを表示する",
|
||||
"hideParticle": "パーティクル システムを非表示にする",
|
||||
"showCollider": "コライダーを表示",
|
||||
"hideCollider": "コライダーを非表示にする",
|
||||
"showPath": "パスを表示",
|
||||
"hidePath": "パスを非表示にする",
|
||||
"showSpine": "表示 Spine",
|
||||
"hideSpine": "隠す",
|
||||
"particle": "パーティクル",
|
||||
"subEmitter": "サブエミッター",
|
||||
"collision": "コリジョン",
|
||||
"path": "パス",
|
||||
"deleteParticle": "パーティクル システムの削除",
|
||||
"deleteCollider": "コライダーの削除",
|
||||
"deletePath": "パスを削除する",
|
||||
"deleteSpine": "Spineを削除",
|
||||
"empty": "シーンにはまだオブジェクトがありません",
|
||||
"name": "名前",
|
||||
"positionX": "X 位置",
|
||||
"positionY": "Y 位置",
|
||||
"offsetX": "X オフセット",
|
||||
"offsetY": "Y オフセット",
|
||||
"rotation": "回転",
|
||||
"scaleX": "X スケール",
|
||||
"scaleY": "Y スケール",
|
||||
"seed": "ランダムシード",
|
||||
"seedTitle": "パーティクル システム内のすべてのランダム アトリビュート、リソースの選択、モディファイアのランダム サンプリングを制御します。",
|
||||
"randomizeSeed": "新しいグローバルランダムシードを生成する",
|
||||
"seedHint": "初期ランダムパラメータ、リソース選択、および修飾子のランダムサンプリングを制御します。同じ種で同じ効果が再現できる",
|
||||
"colliderTitle": "コライダーのプロパティ",
|
||||
"colliderName": "コライダー名",
|
||||
"type": "タイプ",
|
||||
"circle": "ラウンド",
|
||||
"ellipse": "楕円形",
|
||||
"rect": "矩形",
|
||||
"polygon": "ポリゴン",
|
||||
"custom": "カスタマイズ",
|
||||
"enabled": "有効にする",
|
||||
"xPosition": "X 位置",
|
||||
"yPosition": "Y 位置",
|
||||
"scaleXShort": "X スケール",
|
||||
"scaleYShort": "Y スケール",
|
||||
"radius": "半径",
|
||||
"radiusX": "X半径",
|
||||
"radiusY": "Y半径",
|
||||
"width": "幅",
|
||||
"height": "高い",
|
||||
"sides": "辺の数",
|
||||
"collisionResponse": "クラッシュレスポンス",
|
||||
"physics": "物理学 (バウンス/摩擦)",
|
||||
"pause": "一時停止(停止)",
|
||||
"destroy": "消えます(すぐに破壊します)",
|
||||
"elasticity": "弾力性 (0-1)",
|
||||
"friction": "摩擦 (0-1)",
|
||||
"followPath": "道をたどってください",
|
||||
"targetPath": "ターゲットパス",
|
||||
"notSelected": "(選択されていません)",
|
||||
"moveDuration": "移動時間(秒)",
|
||||
"followDirection": "パスに沿った方向",
|
||||
"moveProgressCurve": "進行曲線の移動",
|
||||
"moveProgressHelp": "横軸: リアルタイム/移動時間。縦軸: パスの進行状況 (0=開始点 → 1=終了点)",
|
||||
"pathTitle": "パス属性",
|
||||
"pathName": "パス名",
|
||||
"closedPath": "閉じたパス",
|
||||
"pathColor": "パスの色",
|
||||
"pathHelp": "操作説明:",
|
||||
"pathHelpItems": "空白スペース/曲線をダブルクリック: 新しいアンカーポイントを作成、アンカーポイントをダブルクリック: ノードを削除、2 回目のダブルクリックしてドラッグ: 新しいノードを作成してハンドルを引き出し、アンカーポイントをドラッグして位置を移動、ハンドルをドラッグして曲線を調整、Shift + ハンドルをドラッグ: 両側で完全に対称、Alt+ ハンドルをドラッグ: 片側を独立して制御、Ctrl+クリック/フレーム選択: 選択したノードを追加、Alt+クリック/フレーム選択:選択したノードを減算し、Alt キーを押しながら空白スペースをクリックします。すべての選択をクリアし、複数のノードを選択して全体としてドラッグします。",
|
||||
"applyPresetShape": "プリセット形状を適用する",
|
||||
"choosePreset": "プリセットを選択...",
|
||||
"square": "四角",
|
||||
"star": "星形",
|
||||
"applyPreset": "プリセットを適用する",
|
||||
"clearAnchors": "明確なアンカーポイント",
|
||||
"panelHint": "右上隅のボタンを使用してシーン オブジェクトを作成します"
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "モディファイア",
|
||||
"reset": "モディファイアパラメータをリセット",
|
||||
"damping": "減衰",
|
||||
"enableNoise": "移動ノイズを有効化",
|
||||
"strength": "強さ",
|
||||
"noiseRange": "変動幅",
|
||||
"noiseSpeed": "時間流量",
|
||||
"noiseHint": "強度制御は比率に影響を与える ・変動範囲は最大偏差を制御する ・時間の流れは変化速度を制御する",
|
||||
"enableGravity": "重力を有効化",
|
||||
"gravityStrength": "重力の強さ",
|
||||
"strengthMin": "最小強度",
|
||||
"strengthMax": "強度最大値",
|
||||
"direction": "方向",
|
||||
"gravityOverLife": "ライフサイクル中の重力",
|
||||
"windOverLife": "ライフサイクルの風",
|
||||
"axisStrength": "縦軸:強度0~1",
|
||||
"directionHint": "右 0°、下 -90°、負の強度で方向を反転",
|
||||
"enableWind": "風を有効化",
|
||||
"windStrength": "風の強さ",
|
||||
"enableForceField": "フォースフィールドを有効化",
|
||||
"centerX": "センターX",
|
||||
"centerY": "センターY",
|
||||
"forceStrength": "力場の強さ",
|
||||
"forceRadius": "力場の半径",
|
||||
"falloffMode": "ディケイモード",
|
||||
"constant": "一定(範囲内で速度が変化しない)",
|
||||
"linearFalloff": "リニアフォールオフ(エッジは0)",
|
||||
"inverseFalloff": "距離に反比例(中心が最も強くなる)",
|
||||
"forceHint": "正の数は中心に向かって引き寄せられ、負の数は外側に反発し、力場の円をキャンバス内でドラッグできます。",
|
||||
"showShape": "形状を表示",
|
||||
"enableVortex": "渦を有効化",
|
||||
"vortexHint": "正の数は反時計回り、負の数は時計回り",
|
||||
"enableAttraction": "吸着を有効化",
|
||||
"attractionX": "吸着点X",
|
||||
"attractionY": "吸着点Y",
|
||||
"attractionRadius": "吸着半径",
|
||||
"attractionDuration": "吸着時間",
|
||||
"delay": "遅延時間",
|
||||
"delayMode": "ディレイモード",
|
||||
"globalTime": "統一時間",
|
||||
"particleLife": "単一粒子の寿命",
|
||||
"attractionPath": "吸着法",
|
||||
"straight": "直線",
|
||||
"attractionHint": "遅延後、現在位置から吸着を開始します。赤い範囲に到達すると死亡します。吸着円はキャンバス内でドラッグすることができます。",
|
||||
"enableTrail": "トレイルを有効化",
|
||||
"trailImages": "独立した画像を後続する",
|
||||
"addTrailImage": "末尾の画像リソースを追加する",
|
||||
"trailRotation": "回転させる",
|
||||
"trailBones": "後続ボーンの数",
|
||||
"trailRatio": "トレーリング率(%)",
|
||||
"trailLength": "トレーリングの長さ",
|
||||
"randomRange": "ランダムな範囲",
|
||||
"lengthRatio": "長さ比率(%)",
|
||||
"lengthMin": "最小長さ (%)",
|
||||
"lengthMax": "最大長さ(%)",
|
||||
"trailWidth": "トレーリング幅",
|
||||
"widthRatio": "幅比(%)",
|
||||
"widthMin": "幅の最小値 (%)",
|
||||
"widthMax": "最大幅(%)",
|
||||
"widthScale": "幅のスケーリング",
|
||||
"followParticle": "粒子を追跡する",
|
||||
"lifeLengthCurve": "ライフサイクル長曲線",
|
||||
"shapeCurve": "形状カーブ(ヘッド→テール幅)",
|
||||
"colorMode": "カラーモード",
|
||||
"blendMode": "ブレンドモード",
|
||||
"fixedColor": "固定色",
|
||||
"alphaMode": "透明度モード",
|
||||
"opacity": "透明性",
|
||||
"gridRows": "グリッド行数",
|
||||
"gridCols": "グリッド列の数",
|
||||
"trailHint": "各パーティクルは、リソースに応じて一連の兄弟末尾ボーンを生成します。パーティクル誕生時にランダムな長さと幅が決まり、同じ種を安定して再現できる",
|
||||
"enableFollow": "エミッター追従を有効化",
|
||||
"followMode": "フォローモード",
|
||||
"noFollow": "なし",
|
||||
"followPath": "道をたどってください",
|
||||
"selectedBone": "選択されたボーン",
|
||||
"emitterAngleMode": "送信機角度モード",
|
||||
"fixedAngle": "固定角度",
|
||||
"followMoveDirection": "進行方向に従ってください",
|
||||
"moveProgressCurve": "動作進行曲線(0→1)",
|
||||
"moveDuration": "移動時間(秒)",
|
||||
"followSpace": "スペースに従ってください",
|
||||
"localSpace": "ローカル空間(GEN動作)",
|
||||
"worldSpace": "ワールド空間(パーティクル生成点の移動)",
|
||||
"moveDirection": "進行方向",
|
||||
"forward": "前進(始点→終点)",
|
||||
"reverse": "リバース(終点→始点)",
|
||||
"followOffset": "オフセット開始点(0-1)",
|
||||
"followSpaceHint": "ローカル空間はエミッタ全体を移動します。ワールド空間は新しいパーティクルのスポーン ポイントを移動するだけで、生成されたパーティクルはワールド位置に留まります。",
|
||||
"followTarget": "目標に従ってください:",
|
||||
"noValidBone": "有効なボーンがまだバインドされていません。最初に Spine 階層ツリーでボーンを選択してください。",
|
||||
"rebind": "再バインド",
|
||||
"bind": "バインディング",
|
||||
"selectedBoneLabel": "現在選択されているボーン:",
|
||||
"boneLocalSpace": "ローカル空間(ボーンと一緒に動きます)",
|
||||
"boneWorldSpace": "ワールド空間 (パーティクルは生成後に位置を維持します)",
|
||||
"offsetX": "変位オフセットX",
|
||||
"offsetY": "変位オフセットY",
|
||||
"rotationOffset": "回転オフセット",
|
||||
"scaleOffsetX": "スケールオフセットX",
|
||||
"scaleOffsetY": "スケールオフセットY",
|
||||
"boneFollowHint": "エミッタは、選択した Spine ボーンの位置のみに従い、Spine の回転やスケーリングを継承しません。パーティクル変換では、パーティクル システム独自のパラメータと上限オフセットが使用されます。",
|
||||
"enableCollision": "コリジョンを有効化",
|
||||
"collisionObjects": "参加している衝突オブジェクト",
|
||||
"colliderDisabled": "{name} (コライダー無効)",
|
||||
"clearCollider": "衝突オブジェクトをクリア {name}",
|
||||
"addCollider": "シーン衝突オブジェクトを追加する",
|
||||
"noAvailableColliders": "追加する衝突オブジェクトはありません",
|
||||
"noCollidersSelected": "衝突オブジェクトが選択されていないため、現在のパーティクルは衝突しません。",
|
||||
"available": "利用可能",
|
||||
"disabled": "無効",
|
||||
"collisionHint": "追加および有効化されたシーン衝突オブジェクトのみが、現在のパーティクル システムの衝突に参加します。",
|
||||
"enableSubEmitter": "サブエミッターを有効化",
|
||||
"triggerTiming": "トリガー時間を選択してください",
|
||||
"birth": "生まれる",
|
||||
"death": "死ぬ",
|
||||
"collision": "衝突",
|
||||
"chooseTarget": "ターゲットパーティクルシステムを選択してください",
|
||||
"noTarget": "なし (パーティクル システム)",
|
||||
"deleteSubEmitter": "このサブエミッタを削除します",
|
||||
"probability": "放出確率",
|
||||
"collisionLimit": "衝突限界",
|
||||
"inherit": "継承する",
|
||||
"colorInheritMode": "色の継承方法",
|
||||
"add": "追加",
|
||||
"replace": "カバー",
|
||||
"addSubEmitter": "+ 新しいサブエミッターを追加",
|
||||
"inheritNone": "なし (デフォルト)",
|
||||
"inheritAll": "すべてのプロパティ",
|
||||
"inheritColor": "色",
|
||||
"inheritScale": "サイズ",
|
||||
"inheritRotation": "回転させる",
|
||||
"inheritLife": "ライフサイクル"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Spine プロパティ",
|
||||
"name": "Spine 名前",
|
||||
"xPosition": "X 位置",
|
||||
"yPosition": "Y 位置",
|
||||
"rotation": "回転",
|
||||
"scaleX": "X スケール",
|
||||
"scaleY": "Y スケール",
|
||||
"startTime": "開始時間",
|
||||
"resources": "Spine リソース",
|
||||
"chooseFolder": "フォルダを選択してロードする",
|
||||
"folderHint": "JSON / SKEL、Atlas、およびフォルダー内のすべてのテクスチャを一度に読み取ります。リソースは引き続き以下で個別に置き換えることができます。",
|
||||
"choose": "選ぶ",
|
||||
"chooseMultiple": "選択(複数の選択肢)",
|
||||
"loading": "読み込み中…",
|
||||
"load": "↧ ロード",
|
||||
"clear": "クリア",
|
||||
"supportNote": "Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSONをサポート · 対応するバージョンの実行時にオンデマンドでロード · ローカルオフライン",
|
||||
"currentResource": "現在のリソース {version}",
|
||||
"animations": "Spine アニメーション",
|
||||
"noAnimations": "利用できるアニメーションはありません",
|
||||
"timelineAnimation": "タイムライン上でアニメーションを再生する",
|
||||
"no": "なし",
|
||||
"hierarchy": "階層ツリー",
|
||||
"clearBoneTitle": "クリックしてボーンの選択をクリアします",
|
||||
"noBoneTitle": "現在ボーンが選択されていません",
|
||||
"clearBone": "選択したボーンをクリア: {name}",
|
||||
"currentBone": "現在のスケルトン:",
|
||||
"clearSlotTitle": "クリックしてスロットの選択をクリアします",
|
||||
"noSlotTitle": "現在スロットが選択されていません",
|
||||
"clearSlot": "選択したスロットをクリア: {name}",
|
||||
"currentSlot": "現在のスロット:",
|
||||
"notSelected": "未選択",
|
||||
"expandAll": "すべて展開",
|
||||
"collapseAll": "すべて折りたたむ",
|
||||
"bones": "スケルトン",
|
||||
"slots": "スロット",
|
||||
"notLoaded": "ロードされていません Spine",
|
||||
"searchBones": "骨を探す",
|
||||
"searchBonesPlaceholder": "ボーン名を検索…",
|
||||
"clearSearch": "検索をクリア",
|
||||
"clearBoneSearch": "クリアボーン検索",
|
||||
"noMatchingBones": "一致するボーンが見つかりません",
|
||||
"expandChildren": "子ボーンを展開する",
|
||||
"collapseChildren": "子ボーンを折りたたむ",
|
||||
"notLoadedSlots": "Spine スロットがロードされていません",
|
||||
"searchSlots": "スロットを検索する",
|
||||
"searchSlotsPlaceholder": "スロット名またはアクセサリ名を検索してください…",
|
||||
"clearSlotSearch": "スロット検索をクリアする",
|
||||
"noMatchingSlots": "一致するスロットが見つかりません",
|
||||
"slotTitle": "{name}(スケルトン:{bone}、アタッチメント:{attachment})",
|
||||
"empty": "ヌル",
|
||||
"textureSummary": "{count} 張: {names}",
|
||||
"textureImages": "テクスチャ画像",
|
||||
"missingFolderAssets": "選択したフォルダーが見つかりません: {missing}",
|
||||
"chooseAssets": "Spine データ、Atlas、およびすべてのテクスチャ画像を順番に選択してください"
|
||||
},
|
||||
"help": {
|
||||
"title": "ヘルプ",
|
||||
"subtitle": "パーティクルの作成から保存、エクスポートまでクイックスタート",
|
||||
"close": "指示を閉じる",
|
||||
"closeShort": "閉じる (Esc)",
|
||||
"quickStart": "クイックスタート",
|
||||
"stepCreate": "オブジェクトの作成: 左側の「シーン オブジェクト」で +Particles / +Collision / +Path / +Spine を使用して、シーン オブジェクトを追加します。",
|
||||
"stepEdit": "パーティクルの編集: パーティクル システムを選択し、「放出モード → エミッタ形状 → パーティクル プロパティ → 外観とリソース → モディファイア」を調整します。",
|
||||
"stepPreview": "効果を確認します: 下部のタイムラインは再生、一時停止、フレームごと、またはドラッグできます。パラメータを変更すると、自動的に再計算されます。",
|
||||
"stepExport": "保存とエクスポート: 「設定の保存」を使用してプロジェクトを保持します。 「Spine Json/images package/.spine packageをエクスポート」で完成品を出力します。",
|
||||
"quickNote": "各モジュールグループのタイトルの右側にある「リセット」をクリックすると、グループのデフォルトパラメータを復元できます。システム設定は現在のブラウザに自動的に保存されます。",
|
||||
"commonOps": "よく使う操作",
|
||||
"eye": "小さな目",
|
||||
"eyeDesc": "オブジェクトを個別に表示/非表示にします。非表示のパーティクル システムはエクスポートされません。",
|
||||
"copyDesc": "現在選択されているオブジェクトを完全にコピーして、さまざまなパラメータの比較を容易にします。",
|
||||
"backgroundDesc": "参照画像をアップロードし、キャンバスプレビューのみ位置と透明度を調整します。",
|
||||
"settingsDesc": "管理インターフェイスのレイアウト、補助表示、スケールなどはブラウザに自動的に保存されます。",
|
||||
"undoDesc": "Ctrl+Z は 1 ステップ後退します。最大ステップ数はシステム設定で調整できます。",
|
||||
"spineBoneDesc": "階層ツリーでボーンを検索して選択します。これは、追跡するパーティクル エミッタで使用できます。",
|
||||
"shortcuts": "ショートカット",
|
||||
"undoShortcut": "前のステップを元に戻す",
|
||||
"saveShortcut": "設定の保存",
|
||||
"panShortcut": "キャンバスをドラッグする",
|
||||
"translateShortcut": "変位ツール",
|
||||
"rotateShortcut": "回転工具",
|
||||
"scaleShortcut": "ズームツール",
|
||||
"playShortcut": "再生/一時停止",
|
||||
"startShortcut": "最初のフレームに戻る",
|
||||
"shortcutNote": "Q / W / E / R は最初にキャンバスをクリックする必要があります。カーソルが入力ボックス内にある場合、単一キーのショートカット キーはトリガーされません。",
|
||||
"modules": "機能モジュール",
|
||||
"configTitle": "構成管理",
|
||||
"saveConfigDesc": "現在のシーン オブジェクトとパラメータをすべてプロジェクト JSON ファイルとして保存します (Ctrl+S もサポートされています)。",
|
||||
"loadConfigDesc": "ローカル構成ファイルを選択して、完全なプロジェクトを復元します。",
|
||||
"presetDesc": "ドロップダウンからデフォルトのクイック適用を選択します。ドロップダウンをクリックしてリストを更新します。",
|
||||
"configScope": "範囲",
|
||||
"configScopeDesc": "設定にはオブジェクトとパラメータが含まれます。インターフェースとシステム設定はブラウザーに別々に保存されます。",
|
||||
"sceneTitle": "シーンオブジェクト",
|
||||
"particleDesc": "コアオブジェクト。位置、オフセット、回転、スケーリング、ランダム シードを設定できます。同じ種は同じ効果を再現できます。",
|
||||
"colliderDesc": "円/楕円/長方形/多角形/カスタム、物理的なバウンス、一時停止、破壊、パスに沿った移動をサポートします。",
|
||||
"pathDesc": "アンカー ポイント、コントロール ハンドル、クロージャー、カラー、プリセット形状をサポートするベジェ パス。",
|
||||
"spineDesc": "Spine データ、Atlas およびテクスチャをロードし、ボーンとスロットを参照し、エミッタを追跡します。",
|
||||
"sceneCommonDesc": "オブジェクトは個別に公開およびコピーできます。非表示のパーティクル システムはエクスポートされません。",
|
||||
"emissionDesc": "連射、バースト、ディレイ、開始/ループ/終了の3段階ループ持続時間。",
|
||||
"burstDesc": "指定した数のパーティクルを一度に放出します。",
|
||||
"delayDesc": "パーティクル バーの左端に対応する、放出が開始されるまでの待ち時間。",
|
||||
"loopNote": "ループ永続性はボーンとパスのフォローをサポートしていません。切り替え時に次の設定が復元されます。",
|
||||
"shapeDesc": "点、円、長方形、円錐、またはパスの生成エリア。円/円錐は内部半径と外部半径をサポートし、長方形は内部と外部の幅と高さをサポートします。",
|
||||
"angleDesc": "固定、ランダム、放射状、パス法線、またはパス接線。",
|
||||
"initialDesc": "ライフサイクル、速度、スケーリング、回転は、固定、ランダム、カーブ、および回転をサポートしており、起動方向に従うことができます。",
|
||||
"overLifeDesc": "ライフサイクルカーブにより速度倍率、ズーム倍率、回転速度を制御できます。",
|
||||
"alphaDesc": "透明度は固定または曲線をサポートします。曲線モードは、派生、線形、またはベジェに従うことができます。",
|
||||
"imageDesc": "単一の画像またはシーケンス フレーム、複数画像のウェイトのランダム化、ピボット ポイント、カラー、ブレンド モード、および独立した透明度。",
|
||||
"sequenceDesc": "再生方法には、1 回の非表示、1 回のフリーズ、順方向ループ、および逆方向ループが含まれます。",
|
||||
"noiseDesc": "ジッター トレースを生成し、強度、範囲、速度を制御します。",
|
||||
"gravityDesc": "重力、風、ライフサイクルの強度曲線。",
|
||||
"forceDesc": "グローバルな力場、渦、吸着、衝突。",
|
||||
"trailDesc": "独立したトレーリング アセット、ボーン数、長さ、幅、形状、色、透明度のカーブ。",
|
||||
"followDesc": "エミッタはパスまたは Spine ボーンをたどることができます。",
|
||||
"collisionDesc": "シーン衝突オブジェクトとパーティクル衝突応答を選択します。",
|
||||
"exportDesc": "画像パス、Spine バージョン、キーフレーム カーブ、FPS、整数フレーム、ボーン プール、空のアニメーションを設定します。",
|
||||
"exportButtonsDesc": "コネクタを介して、Spine JSON、画像 ZIP をエクスポートしたり、.spine プロジェクトを生成したりできます。",
|
||||
"connectorTitle": "Spine コネクタの使用説明書",
|
||||
"connectorIntro": "コネクタは、JSON と Web ページによって生成されたイメージを、ローカル マシンにインストールされアクティブ化されている Spine に配信し、編集可能な .spine プロジェクトに変換します。",
|
||||
"prerequisite": "フロントロード",
|
||||
"prerequisiteDesc": "コンピューターには Spine がインストールされてアクティブ化されており、デスクトップ コネクタが起動されています。",
|
||||
"download": "ダウンロード",
|
||||
"webSide": "ウェブページ",
|
||||
"webSideDesc": "「コネクタが利用可能・Spineの準備ができました」と表示されたら、「.spineパッケージをエクスポート」をクリックします。",
|
||||
"authorization": "最初の認可",
|
||||
"authorizationDesc": "最初の接続では、Web サイトのソースを確認し、一度許可する必要があります。このマシンは認証ホワイトリストを保存します。",
|
||||
"pathSetup": "パスの設定",
|
||||
"pathSetupDesc": "コネクタは Spine を自動的に検出します。見つからない場合は、アプリケーション パスを手動で指定できます。",
|
||||
"downloadResult": "ダウンロード結果",
|
||||
"downloadResultDesc": ".spine プロジェクトとイメージ ディレクトリが含まれる ZIP パッケージを取得します。",
|
||||
"version": "バージョン",
|
||||
"versionDesc": "コネクタは、JSON バージョンに応じて、Spine 3.8 ~ 4.3 に自動的に一致します。",
|
||||
"security": "安全性",
|
||||
"securityDesc": "ローカル アドレスのみをリッスンし、認証はコネクタに保存され、一時ファイルは変換後にクリーンアップされます。",
|
||||
"differenceTitle": "構成とエクスポートの違いは何ですか?",
|
||||
"differenceDesc": "「設定の保存」では、編集可能なすべてのオブジェクトとパラメータが保存されます。 「Spine Json のエクスポート」は、表示されているパーティクル システムのみをエクスポートし、コリジョン、フォロー、トレーリング、サブエミッターの結果を独立したアニメーション データにベイクします。"
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "ループ連続モードに入ると、パーティクル追従設定は無効になり、デフォルト値に戻ります。続く?",
|
||||
"confirmLoopFollowExit": "ループ永続モードを終了すると、パーティクル追従設定は無効になり、デフォルト値に戻ります。続く?",
|
||||
"invalidJson": "構成ファイルが有効ではありません JSON",
|
||||
"invalidConfigFormat": "SpineParticle 編集者プロフィールではありません",
|
||||
"unsupportedConfigVersion": "構成バージョンはまだサポートされていません: {version}",
|
||||
"missingScene": "設定ファイルに完全なシーン データがありません",
|
||||
"missingEmbeddedSpine": "構成には再利用可能な Spine の元のリソースが含まれていません",
|
||||
"chooseJsonConfig": ".json 構成ファイルを選択してください",
|
||||
"settingsInvalidJson": "システム設定キャッシュが有効ではありません JSON",
|
||||
"settingsFormat": "SpineParticle エディターのシステム設定キャッシュではありません",
|
||||
"settingsVersion": "システム構成バージョンはまだサポートされていません: {version}",
|
||||
"settingsMissing": "システム設定キャッシュに設定がありません",
|
||||
"noExportableImages": "現在表示されているパーティクル システムにはエクスポート可能なイメージがありません",
|
||||
"invalidZipPath": "ZIP 無効なファイル パス",
|
||||
"spineFileType": "Spine データは .json または .skel のみをサポートします",
|
||||
"atlasFileType": "アトラス ファイルは .atlas のみをサポートします",
|
||||
"chooseTexture": "少なくとも 1 つのテクスチャ画像を選択してください",
|
||||
"binaryParseFailed": "Spine バイナリ解析に失敗しました (4.3: {v43}、旧バージョン: {v42})",
|
||||
"invalidSpineJson": "Spine JSON 無効なファイル形式です",
|
||||
"unsupportedSpineJsonVersion": "Spine JSON バージョンはサポートされていません。{versions} のみがサポートされています",
|
||||
"unsupportedSpineDataVersion": "Spine データ バージョンはサポートされていません。{versions} のみがサポートされています",
|
||||
"embeddedReadFailed": "埋め込み Spine ファイルを読み取れません: {name}",
|
||||
"missingImageWarning": "画像「{file}」が見つからないか、読み取り不能な寸法があり、パスは保存されています。",
|
||||
"missingTrailImageWarning": "末尾のイメージ「{file}」がありませんが、パスは保存されています。",
|
||||
"emptyCacheWarning": "「{name}」に使用できるフレームバッファがありません。",
|
||||
"readExportImageFailed": "エクスポートされた画像を読み取れません: {name}",
|
||||
"connectorOffline": "ローカルの Spine コネクタが検出されません。最初にコネクタを有効にしてください",
|
||||
"connectorHttpError": "Spine コネクタがエラーを返します: HTTP {status}",
|
||||
"invalidTrailUV": "後続メッシュ「{name}」の UV データが無効です",
|
||||
"missingTrailVertices": "後続メッシュ '{name}' に頂点データがありません",
|
||||
"trailIndexOutOfRange": "後続メッシュ「{name}」の三角形インデックスが範囲外です",
|
||||
"invalidTrailHull": "後続メッシュ「{name}」の外側輪郭番号が無効です",
|
||||
"trailHullIndexOutOfRange": "トレーリングメッシュ「{name}」の外側輪郭エッジインデックスが範囲外です",
|
||||
"invalidInfluenceCount": "後続メッシュ '{name}' に無効な数のボーン ウェイトが含まれています",
|
||||
"missingBoneReference": "後続メッシュ「{name}」が存在しないボーンを参照しています",
|
||||
"invalidWeight": "後続グリッド「{name}」に無効な重量データが含まれています",
|
||||
"weightSum": "後続メッシュ「{name}」の頂点の重みの合計が 1 になりません",
|
||||
"vertexCountMismatch": "後続メッシュ「{name}」の頂点と UV の数が一貫していません",
|
||||
"invalidInherit": "ボーン「{name}」の継承値「{inherit}」は、Spine {version} JSON 形式に準拠していません",
|
||||
"trailBoneParent": "後続のボーン「{name}」はパーティクル システム ボーンの下に直接ぶら下げる必要があり、ボーン チェーンを形成することはできません。",
|
||||
"trailSlotEmpty": "加重末尾スロット「{name}」では空のアタッチメントを使用できません。対応するボーン スケーリングは、非出現フェーズまたは死亡フェーズでは 0 に設定する必要があります。",
|
||||
"spine38Version": "Spine 3.8 エクスポートされるバージョン ID は 3.8 である必要があります",
|
||||
"spine38Inherit": "Spine 3.8 ボーン「{name}」は変換を使用する必要があり、継承は使用できません",
|
||||
"spine38SlotColor": "Spine 3.8 スロット カラー タイムラインはカラー / twoColor を使用する必要があります",
|
||||
"spine38AttachmentName": "Spine 3.8 添付ファイルのタイムラインの非表示フレームは明示的に記述する必要があります name: null",
|
||||
"spine38RotationAngle": "Spine 3.8 時間軸を回転するには角度を使用する必要があります",
|
||||
"spine38Curve": "Spine 3.8 は 4.x 配列曲線形式をサポートしていません",
|
||||
"unsupportedExportVersion": "エクスポートされたバージョンはサポートされていません。Spine {versions} のみがサポートされています",
|
||||
"exportVersionMismatch": "一貫性のないエクスポート バージョン: Spine {expected}、JSON に設定され、Spine {actual} としてマークされます",
|
||||
"exportMissingBones": "エクスポート結果にボーンがありません",
|
||||
"missingAtlasTexture": "Atlas によって参照されるテクスチャが選択されていません: {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "言語",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "드래그하여 타임라인 높이 조정",
|
||||
"systems": "체계",
|
||||
"particlesBones": "입자(뼈)",
|
||||
"rootBone": "뿌리뼈",
|
||||
"hudTip": "휠 확대/축소 · 캔버스를 드래그하려면 왼쪽 클릭",
|
||||
"title": "Spine 파티클 에디터-Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "닫기",
|
||||
"reset": "초기화",
|
||||
"add": "추가",
|
||||
"remove": "제거",
|
||||
"delete": "삭제",
|
||||
"clear": "지우기",
|
||||
"cancel": "취소",
|
||||
"confirm": "확인",
|
||||
"none": "없음",
|
||||
"enabled": "사용",
|
||||
"disabled": "사용 안 함",
|
||||
"fixed": "고정",
|
||||
"random": "랜덤",
|
||||
"curve": "곡선",
|
||||
"followExport": "내보내기 설정 따르기",
|
||||
"linear": "선형",
|
||||
"bezier": "베지어",
|
||||
"above": "위",
|
||||
"below": "아래",
|
||||
"left": "왼쪽",
|
||||
"right": "오른쪽",
|
||||
"seconds": "초",
|
||||
"frames": "프레임"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "설정",
|
||||
"undo": "실행 취소 (Ctrl+Z)",
|
||||
"pan": "캔버스 이동 (Q)",
|
||||
"translate": "이동 (W)",
|
||||
"rotate": "회전 (E)",
|
||||
"scale": "크기 조절 (R)",
|
||||
"zoomIn": "확대",
|
||||
"zoomOut": "축소",
|
||||
"fitView": "캔버스에 맞추기",
|
||||
"toggleGrid": "그리드 전환",
|
||||
"resetView": "보기 초기화",
|
||||
"background": "배경",
|
||||
"backgroundSettings": "배경 이미지 설정",
|
||||
"changeBackground": "이미지 교체",
|
||||
"uploadBackground": "이미지 업로드",
|
||||
"clearBackground": "배경 지우기",
|
||||
"noBackground": "이미지 없음",
|
||||
"backgroundX": "배경 이미지 X 오프셋",
|
||||
"backgroundY": "배경 이미지 Y 오프셋",
|
||||
"backgroundOpacity": "배경 이미지 투명도",
|
||||
"opacity": "불투명도",
|
||||
"help": "도움말",
|
||||
"openHelp": "도움말 열기"
|
||||
},
|
||||
"settings": {
|
||||
"title": "시스템 설정",
|
||||
"layout": "인터페이스 레이아웃",
|
||||
"parameterPanelPosition": "매개변수 패널 위치",
|
||||
"panelOnRight": "매개변수 패널이 오른쪽에 표시됩니다.",
|
||||
"history": "운영 이력",
|
||||
"maxUndo": "뒤로 최대 단계 수",
|
||||
"canvasGuides": "캔버스 보조 디스플레이",
|
||||
"emitter": "발사 지점",
|
||||
"bones": "뼈 연결",
|
||||
"bonePointSize": "뼈점 도면 크기",
|
||||
"boneAxisSize": "축 도면 크기",
|
||||
"skinMesh": "스킨드 메쉬",
|
||||
"enableTicks": "진드기 활성화",
|
||||
"tickFontSize": "텍스트 크기 조정",
|
||||
"tickWidth": "눈금 표시 두께",
|
||||
"axisColor": "축 색상",
|
||||
"showAxisLabels": "표시 스케일 값",
|
||||
"cacheNote": "전체 시스템 설정이 현재 브라우저에 자동으로 저장됩니다."
|
||||
},
|
||||
"config": {
|
||||
"title": "설정 관리",
|
||||
"save": "설정 저장",
|
||||
"saveTitle": "모든 편집기 구성 저장(Ctrl+S)",
|
||||
"load": "설정 불러오기",
|
||||
"loadTitle": "로컬 편집기 구성 로드",
|
||||
"presets": "프리셋 목록",
|
||||
"selectPreset": "프리셋 선택",
|
||||
"noPresets": "프리셋 없음",
|
||||
"saved": "구성이 로컬에 저장되었습니다.",
|
||||
"loading": "구성 로드 중…",
|
||||
"loaded": "로드됨: {name}",
|
||||
"presetLoading": "사전 설정 로드 중…",
|
||||
"presetLoaded": "프리셋 로드됨: {name}",
|
||||
"presetNamingError": "{message}, 기본 파일 이름을 확인하세요",
|
||||
"presetTransferTitle": "사전 설정 로드",
|
||||
"presetDownloading": "{file} 다운로드 중…",
|
||||
"presetParsing": "기본 구성을 구문 분석하는 중...",
|
||||
"presetRestoring": "기본 리소스를 구문 분석하고 복원하는 중...",
|
||||
"presetComplete": "프리셋 로딩 완료",
|
||||
"presetListError": "사전 설정 목록을 읽을 수 없습니다.",
|
||||
"presetReadError": "사전 설정을 읽을 수 없습니다: {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.파티클 스윕",
|
||||
"barBlocks": "2.바 블록",
|
||||
"forceTrail": "3.힘장 트레일",
|
||||
"lightningSequence": "4.번개 시퀀스",
|
||||
"texturePivot": "5.텍스처 피벗",
|
||||
"subEmitter": "6.하위 이미터"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "원호를 조정하려면 사각형 핸들을 드래그하세요. · 새 공간을 만들려면 빈 공간을 두 번 클릭하세요. · 삭제하려면 노드를 두 번 클릭하세요.",
|
||||
"linearHint": "빈 공간을 더블클릭하면 새로운 공간이 생성됩니다. 삭제하려면 노드를 두 번 클릭하세요. 노드를 드래그하여 조정하세요.",
|
||||
"resetTitle": "기본 곡선 복원"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "색상 표시를 추가하려면 리본을 두 번 클릭하세요.",
|
||||
"color": "색상 코드",
|
||||
"colorValue": "색상 스케일 색상 값",
|
||||
"position": "컬러마크 위치",
|
||||
"addMiddle": "중간에 색을 넣어주세요",
|
||||
"delete": "현재 색상 패치 삭제",
|
||||
"hint": "색상 밴드를 두 번 클릭하여 새 색상 추가 · 색상 표시를 드래그하여 위치 조정 · 색상 표시를 두 번 클릭하여 삭제"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "각도 오프셋",
|
||||
"value": "수치",
|
||||
"lower": "하한",
|
||||
"upper": "상한",
|
||||
"rangeLower": "범위의 하한",
|
||||
"rangeUpper": "상위 범위",
|
||||
"curveInput": "곡선 입력 →",
|
||||
"direction": "발사방향"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "지도 피벗 포인트",
|
||||
"zoomOut": "축소",
|
||||
"zoomIn": "크게 하다",
|
||||
"expand": "전체 화면으로 확대 작업",
|
||||
"interaction": "피벗 포인트를 설정하려면 왼쪽 클릭/드래그 · 캔버스를 드래그하려면 마우스 오른쪽 버튼을 클릭 · 확대/축소하려면 휠 스크롤",
|
||||
"previewAlt": "피벗 포인트 미리보기",
|
||||
"noImage": "선택한 사진이 없습니다.",
|
||||
"resetCenter": "중간에 재배치 (50%, 50%)",
|
||||
"coordinates": "축점 좌표(%)",
|
||||
"rotationTest": "축 회전 테스트",
|
||||
"static": "아직",
|
||||
"spin": "회전",
|
||||
"swing": "그네",
|
||||
"rotationAlt": "회전 테스트",
|
||||
"topLeft": "왼쪽 위",
|
||||
"top": "바로",
|
||||
"topRight": "오른쪽 위",
|
||||
"left": "오른쪽 왼쪽",
|
||||
"center": "가운데",
|
||||
"right": "오른쪽",
|
||||
"bottomLeft": "왼쪽 아래",
|
||||
"bottom": "바로 아래·아래",
|
||||
"bottomRight": "오른쪽 아래"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "시퀀스 프레임 사진 선택",
|
||||
"chooseLocal": "로컬 이미지 선택",
|
||||
"subfolder": "하위 폴더",
|
||||
"name": "이름",
|
||||
"restore": "{name} 복원",
|
||||
"deleteResource": "이미지 리소스 삭제",
|
||||
"imageMode": "영상 모드",
|
||||
"fixed": "고정",
|
||||
"sequence": "시퀀스",
|
||||
"playbackMode": "플레이 모드",
|
||||
"onceHide": "1회·마지막 프레임에서 숨김",
|
||||
"onceHold": "1회·마지막 프레임 유지",
|
||||
"loopForward": "정방향 루프",
|
||||
"loopReverse": "역방향 루프",
|
||||
"playbackFps": "재생 프레임 속도",
|
||||
"chooseSequenceMulti": "시퀀스 프레임 선택(다중 선택)",
|
||||
"weight": "가중치 %",
|
||||
"unlockWeight": "비율 잠금 해제",
|
||||
"lockWeight": "현재 비율 잠금",
|
||||
"pivot": "텍스처 피벗",
|
||||
"collapsePivot": "피봇 포인트 조정 축소",
|
||||
"expandPivot": "피봇 포인트 조정 확장",
|
||||
"pivotModal": "텍스처 회전축 포인트 대형 화면 미세 조정",
|
||||
"pivotModalDesc": "입자의 회전/스윙 중심을 정확하게 설정하려면 아래 지도의 아무 곳이나 클릭하거나 드래그하세요.",
|
||||
"pivotZoomHint": "100% ~ 400% 배율 지원, 끝이나 뿌리를 정확하게 조준:",
|
||||
"confirmPivot": "피봇 포인트 결정 및 저장",
|
||||
"noSequence": "선택한 시퀀스 프레임이 없습니다.",
|
||||
"firstFrame": "프레임 1",
|
||||
"firstImage": "첫 번째 사진",
|
||||
"lastImage": "마지막 사진",
|
||||
"pivotOn": "열림: X {x}% | 와 {y}%",
|
||||
"pivotOff": "켜지지 않음, 기본값은 이미지 중앙 주위(50%, 50%)입니다.",
|
||||
"pivotCustom": "피벗 포인트가 사용자 정의되었습니다: X {x}% | 와 {y}%",
|
||||
"frameCountOne": "1 프레임 · {name}",
|
||||
"frameCountMany": "{count} 프레임 · {first} → {last}",
|
||||
"sequenceSelected": "{count} 프레임을 선택하여 {first}~{last} 순서대로 재생하였습니다."
|
||||
},
|
||||
"timeline": {
|
||||
"play": "플레이(D)",
|
||||
"pause": "일시정지(D)",
|
||||
"toStart": "첫 번째 프레임으로 돌아가기(S)",
|
||||
"previous": "이전 프레임",
|
||||
"next": "다음 프레임",
|
||||
"toEnd": "마지막 프레임으로 이동",
|
||||
"continuousLoop": "연속 루프 재생",
|
||||
"abLoop": "독립 A/B 구간 루프",
|
||||
"abLoopShort": "AB 루프",
|
||||
"abRange": "AB 사이클 간격",
|
||||
"playbackStart": "사용자 정의 재생 시작 프레임",
|
||||
"playbackEnd": "사용자 정의 재생 종료 프레임",
|
||||
"startFrame": "재생 시작 프레임",
|
||||
"endFrame": "종료 프레임 재생",
|
||||
"frame": "액자",
|
||||
"emission": "이미션 중",
|
||||
"particleLife": "파티클 존재",
|
||||
"spineAnimation": "Spine 애니메이션",
|
||||
"ownerAnimation": "소속 애니메이션",
|
||||
"setOwnerAnimation": "현재 입자 시스템이 속한 애니메이션을 설정합니다.",
|
||||
"chooseOwnerAnimation": "애니메이션을 선택하세요",
|
||||
"animationName": "애니메이션 이름",
|
||||
"renameAnimation": "현재 애니메이션 이름 바꾸기",
|
||||
"rename": "이름 바꾸기",
|
||||
"newAnimation": "+ 신규",
|
||||
"keepOneAnimation": "하나 이상의 애니메이션을 유지해야 합니다.",
|
||||
"spinePreview": "Spine 미리보기 애니메이션",
|
||||
"noSpineAnimation": "사용 가능한 Spine 애니메이션이 없습니다.",
|
||||
"none": "없음",
|
||||
"systemName": "시스템 {index}",
|
||||
"dragLoopDuration": "드래그 루프 세그먼트 지속 시간",
|
||||
"dragEmissionDuration": "드래그 시간",
|
||||
"dragSpineStart": "드래그하여 애니메이션 시작 시간 조정",
|
||||
"noAnimationData": "현재 표시할 애니메이션 데이터가 없습니다.",
|
||||
"animationNameEmpty": "애니메이션 이름은 비워둘 수 없습니다.",
|
||||
"animationNameDuplicate": "애니메이션 이름은 반복할 수 없습니다.",
|
||||
"animationRenameFailed": "애니메이션 이름을 수정할 수 없습니다",
|
||||
"zoomIn": "크게 하다",
|
||||
"zoomOut": "축소",
|
||||
"zoomFit": "보통의",
|
||||
"frameStatus": "프레임 {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "이미션 모드",
|
||||
"reset": "전송 모드 매개변수 재설정",
|
||||
"stream": "스트림",
|
||||
"burst": "버스트",
|
||||
"normalStream": "일반 스트림",
|
||||
"loopStream": "루프 스트림",
|
||||
"rate": "이미션 속도",
|
||||
"duration": "이미션 시간",
|
||||
"loopDuration": "발사 기간(f)",
|
||||
"generateStart": "시작 루프 애니메이션 생성",
|
||||
"generateEnd": "끝 루프 애니메이션 생성",
|
||||
"customDuration": "기간 지정",
|
||||
"auto": "자동 {frames}f",
|
||||
"startLoopDuration": "루프 세그먼트 지속 시간 시작",
|
||||
"endLoopDuration": "종료 루프 세그먼트 기간",
|
||||
"loopWarning": "루프 지속성 모드는 뼈대 따르기 및 경로 따르기를 지원하지 않습니다. 입자 추적 설정은 들어가거나 나갈 때 기본값으로 복원됩니다.",
|
||||
"burstCount": "1회 생성 수",
|
||||
"delay": "지연 시간",
|
||||
"shapeTitle": "이미터 모양",
|
||||
"shapeReset": "이미터 모양 매개변수 재설정",
|
||||
"shape": "모양",
|
||||
"point": "점",
|
||||
"circle": "원",
|
||||
"rect": "사각형",
|
||||
"cone": "원뿔",
|
||||
"path": "경로",
|
||||
"innerDiameter": "내경",
|
||||
"outerDiameter": "외경",
|
||||
"innerRadius": "내부 반경",
|
||||
"outerRadius": "외부 반경",
|
||||
"coneDirection": "테이퍼 방향",
|
||||
"coneAngle": "테이퍼 개방 각도",
|
||||
"innerWidth": "내부 폭",
|
||||
"innerHeight": "높은 내부",
|
||||
"outerWidth": "외부 폭",
|
||||
"outerHeight": "매우 높음",
|
||||
"selectPath": "경로 선택",
|
||||
"noPath": "경로 없음(점 방출)",
|
||||
"birthDistribution": "출생 분포",
|
||||
"evenDistribution": "등간격 고정 분포",
|
||||
"randomDistribution": "무작위 분포",
|
||||
"emissionAngle": "발사 각도",
|
||||
"radial": "방사형(중심 바깥쪽)",
|
||||
"pathNormal": "경로에 수직",
|
||||
"pathTangent": "경로 방향을 따라",
|
||||
"fixedAngle": "고정 각도",
|
||||
"baseAngle": "기본 각도",
|
||||
"randomRange": "무작위 범위",
|
||||
"showShape": "모양을 보여주다"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "파티클 속성",
|
||||
"reset": "입자 속성 매개변수 재설정",
|
||||
"initialParams": "파티클 초기값",
|
||||
"initialLife": "초기 수명주기",
|
||||
"randomSample": "무작위 샘플링 →",
|
||||
"initialSpeed": "초기 속도",
|
||||
"initialScale": "초기 스케일링",
|
||||
"uniform": "통일된",
|
||||
"separateXY": "XY 분리",
|
||||
"scaleX": "줌 X",
|
||||
"scaleY": "줌 Y",
|
||||
"initialRotation": "초기 회전",
|
||||
"lifecycleTitle": "수명에 따른 변화",
|
||||
"speedOverLife": "수명 주기 속도",
|
||||
"speedMultiplier": "속도 승수",
|
||||
"lifeTo": "수명주기 →",
|
||||
"scaleOverLife": "수명 주기 동안 확장",
|
||||
"scaleMultiplier": "줌 비율",
|
||||
"multiplierX": "확대",
|
||||
"multiplierY": "배율 Y",
|
||||
"rotationOverLife": "수명주기 동안 회전",
|
||||
"rotationSpeed": "회전 속도"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "외형과 리소스",
|
||||
"reset": "모양 및 자원 매개변수 재설정",
|
||||
"opacity": "불투명도",
|
||||
"curveMode": "곡선 모드",
|
||||
"transparent": "0(투명)",
|
||||
"opaque": "1(불투명)",
|
||||
"renderLayer": "렌더링 레이어(Spine 슬롯)",
|
||||
"top": "최상위 수준",
|
||||
"spineSlot": "Spine 슬롯",
|
||||
"selectSpine": "Spine를 선택하세요",
|
||||
"noSpine": "사용 가능한 항목 없음",
|
||||
"noSlot": "아직 선택한 슬롯이 없습니다.",
|
||||
"reselect": "재선택",
|
||||
"selectSlot": "슬롯 선택",
|
||||
"searchSlots": "슬롯 또는 액세서리 이름을 검색하세요…",
|
||||
"searchSlotsAria": "슬롯 검색",
|
||||
"emptySlot": "빈 슬롯",
|
||||
"noMatchingSlots": "일치하는 슬롯 없음",
|
||||
"above": "이 슬롯 사진 위에",
|
||||
"below": "이 슬롯 사진 아래",
|
||||
"followAttachment": "슬롯 액세서리로 표시 및 숨기기",
|
||||
"previewOnly": "표시 수준을 조정하면 편집기 미리보기에만 영향을 미치고 내보낸 데이터에는 영향을 주지 않습니다.",
|
||||
"imageResources": "이미지 리소스",
|
||||
"addImage": "이미지 리소스 추가",
|
||||
"scale": "줌",
|
||||
"color": "색상",
|
||||
"fixedColor": "고정된 색상",
|
||||
"randomColor": "임의의 색상",
|
||||
"lifetime": "수명주기",
|
||||
"normal": "일반",
|
||||
"add": "더하기",
|
||||
"multiply": "곱하기",
|
||||
"screen": "스크린",
|
||||
"fixedColorValue": "고정된 색상 값",
|
||||
"randomColorHint": "각 입자는 생성될 때 리본에서 무작위로 색상을 선택하고 수명 주기 동안 변경되지 않습니다.",
|
||||
"independentAlpha": "독립 불투명도",
|
||||
"off": "끄기"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · 위 사진",
|
||||
"slotLabelBelow": "{spine} / {slot} · 사진 아래",
|
||||
"resolvedAbove": "{slot} 이미지 위와 해당 슬롯 아래에 렌더링됨",
|
||||
"resolvedBetween": "{previous}와 {slot} 사이에서 렌더링됨",
|
||||
"warningNoSpine": "로드된 Spine가 없으며 입자가 일시적으로 상단에 표시됩니다.",
|
||||
"warningNoSelection": "Spine는 아직 선택되지 않았으며 입자가 일시적으로 상단에 표시됩니다.",
|
||||
"warningMissingSpine": "대상 Spine가 존재하지 않으며 입자가 일시적으로 상단에 표시됩니다.",
|
||||
"warningNotReady": "대상 Spine가 준비되지 않았으며 입자가 일시적으로 상단에 표시됩니다.",
|
||||
"warningMissingSlot": "대상 슬롯이 존재하지 않으며(리소스가 교체되었을 수 있음) 파티클이 일시적으로 상단에 표시됩니다.",
|
||||
"warningFirstSlot": "이것은 첫 번째 슬롯으로 그 아래에 표시될 수 없으며 파티클은 일시적으로 위에 표시됩니다."
|
||||
},
|
||||
"export": {
|
||||
"title": "내보내기 설정",
|
||||
"reset": "내보내기 설정 재설정",
|
||||
"imagesPath": "이미지 경로(Spine 이미지 경로)",
|
||||
"spineVersion": "Spine 버전",
|
||||
"keyframeCurve": "키프레임 보간 곡선",
|
||||
"linear": "선의",
|
||||
"smoothBezier": "부드러운 베지어(부드러운 Bézier)",
|
||||
"bezierHelp": "Smooth Bezier는 오류 허용 범위 내에서 연속 동작을 맞춥니다. 탄생, 사망, 첨부 파일 전환 및 돌연변이는 여전히 단계 키프레임을 사용합니다.",
|
||||
"spine38Help": "Spine 3.8은 4.x의 채널별 배열 베지어를 지원하지 않으며 내보낼 때 허용 오차가 감소된 조각별 선형 키프레임으로 변환됩니다.",
|
||||
"fps": "내보내기 FPS",
|
||||
"omitFps": "fps를 쓰지 마세요",
|
||||
"fpsHelp": "FPS를 수정할 때 애니메이션의 실제 시간(초)을 변경하지 않고 유지하세요. \"fps를 쓰지 마십시오\"는 Spine의 fps 메타데이터만 생략합니다.",
|
||||
"integerFrames": "정수 프레임 정렬",
|
||||
"bonePool": "뼈 개체 풀",
|
||||
"excludeEmpty": "콘텐츠가 없는 애니메이션 제외",
|
||||
"baking": "애니메이션이 다시 계산되고 구워지고 있습니다.",
|
||||
"exportJsonTitle": "Spine {version} JSON 내보내기",
|
||||
"preparing": "수출 준비 중...",
|
||||
"exportJson": "Spine JSON 내보내기",
|
||||
"exportImagesTitle": "현재 파티클 시스템 ZIP에서 사용하는 이미지를 별도로 다운로드합니다.",
|
||||
"organizingImages": "사진 정렬 중...",
|
||||
"exportImages": "이미지 ZIP 내보내기",
|
||||
"generatingProject": "프로젝트 생성 중...",
|
||||
"exportSpine": ".spine 패키지 내보내기",
|
||||
"authorize": "현재 웹사이트 승인",
|
||||
"authorizeTitle": "기본 커넥터에서 현재 웹사이트 승인",
|
||||
"refreshConnector": "커넥터를 다시 확인하세요",
|
||||
"refresh": "새로 고치다",
|
||||
"recalculating": "입자 애니메이션을 다시 계산하는 중...",
|
||||
"exported": "내보낸 Spine {version}: {systems} 입자 시스템, {animations} 애니메이션, {bones} 루트 뼈대 {warning}",
|
||||
"resourceWarning": ";{count} 리소스 팁(누락된 이미지는 계속 내보내집니다.)",
|
||||
"timeout": "애니메이션 시간 초과를 다시 계산합니다. 페이지가 아직 실행 중인지 확인한 후 다시 시도하세요.",
|
||||
"preparingProject": "사진을 정렬하고 이 기계를 Spine라고 부르는 중…",
|
||||
"projectExported": "{fileName}가 생성되었습니다: .spine 프로젝트 및 {images} 사진, Spine {version} 포함",
|
||||
"collectingImages": "현재 파티클 시스템에서 사용되는 사진을 조합하는 중...",
|
||||
"imagesExported": "{fileName}가 생성되었습니다: {folder}/에는 {images} 사진이 포함되어 있습니다.",
|
||||
"connectorChecking": "로컬 Spine 커넥터 감지 중...",
|
||||
"connectorOffline": "로컬 Spine 커넥터가 실행 중이 아닙니다",
|
||||
"spineNotFound": "커넥터는 실행 중이지만 Spine을 찾을 수 없습니다",
|
||||
"notAuthorized": "커넥터는 실행 중이지만 이 사이트는 승인되지 않았습니다",
|
||||
"connectorReady": "커넥터 사용 가능 · Spine 준비됨",
|
||||
"connectorBusy": "Spine 프로젝트를 다시 계산하고 생성 중",
|
||||
"connectorGenerate": "로컬 Spine으로 Spine {version} 프로젝트 생성",
|
||||
"unknown": "알려지지 않은",
|
||||
"checking": "확인 중",
|
||||
"offline": "오프라인",
|
||||
"notFound": "Spine 없음",
|
||||
"unauthorized": "승인되지 않음",
|
||||
"projectTransferTitle": "Spine 패키지 내보내기",
|
||||
"projectTransferDetail": "입자 애니메이션을 다시 계산하는 중...",
|
||||
"projectTransferDownload": "Spine 프로젝트 패키지가 다운로드되었습니다.",
|
||||
"generatingJson": "Spine JSON 생성 중…",
|
||||
"preparingProjectFiles": "프로젝트 사진을 대조하는 중...",
|
||||
"uploading": "Spine 커넥터에 데이터 업로드 중...",
|
||||
"spineProcessing": "Spine가 프로젝트를 변환하는 중입니다. 잠시 기다려 주세요...",
|
||||
"downloadingProject": "생성된 Spine 프로젝트 패키지를 다운로드하는 중...",
|
||||
"handingToBrowser": "다운로드를 위해 브라우저로 넘기는 중..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "완전한",
|
||||
"failed": "작업 실패"
|
||||
},
|
||||
"scene": {
|
||||
"title": "장면 오브젝트",
|
||||
"addParticle": "파티클 시스템 추가",
|
||||
"addParticleShort": "+입자",
|
||||
"addCollider": "충돌기 추가",
|
||||
"addColliderShort": "+충돌",
|
||||
"addPath": "경로 추가",
|
||||
"addPathShort": "+ 경로",
|
||||
"addSpine": "Spine 추가",
|
||||
"copyTitle": "현재 선택된 장면 객체를 복사합니다.",
|
||||
"showParticle": "입자 시스템 표시",
|
||||
"hideParticle": "입자 시스템 숨기기",
|
||||
"showCollider": "충돌체 표시",
|
||||
"hideCollider": "충돌체 숨기기",
|
||||
"showPath": "경로 표시",
|
||||
"hidePath": "경로 숨기기",
|
||||
"showSpine": "Spine 표시",
|
||||
"hideSpine": "Spine 숨기기",
|
||||
"particle": "파티클",
|
||||
"subEmitter": "하위 이미터",
|
||||
"collision": "충돌",
|
||||
"path": "경로",
|
||||
"deleteParticle": "입자 시스템 삭제",
|
||||
"deleteCollider": "충돌체 삭제",
|
||||
"deletePath": "경로 삭제",
|
||||
"deleteSpine": "Spine 삭제",
|
||||
"empty": "아직 장면에 객체가 없습니다.",
|
||||
"name": "이름",
|
||||
"positionX": "X 위치",
|
||||
"positionY": "Y 위치",
|
||||
"offsetX": "X 오프셋",
|
||||
"offsetY": "Y 오프셋",
|
||||
"rotation": "회전",
|
||||
"scaleX": "X 크기",
|
||||
"scaleY": "Y 크기",
|
||||
"seed": "랜덤 시드",
|
||||
"seedTitle": "입자 시스템의 모든 무작위 속성, 리소스 선택 및 수정자 무작위 샘플링을 제어합니다.",
|
||||
"randomizeSeed": "새로운 전역 무작위 시드 생성",
|
||||
"seedHint": "초기 무작위 매개변수, 자원 선택 및 수정자 무작위 샘플링을 제어합니다. 같은 씨앗은 같은 효과를 재현할 수 있습니다",
|
||||
"colliderTitle": "충돌기 속성",
|
||||
"colliderName": "충돌기 이름",
|
||||
"type": "유형",
|
||||
"circle": "둥근",
|
||||
"ellipse": "타원형",
|
||||
"rect": "구형",
|
||||
"polygon": "다각형",
|
||||
"custom": "사용자 정의",
|
||||
"enabled": "~할 수 있게 하다",
|
||||
"xPosition": "X 위치",
|
||||
"yPosition": "Y 위치",
|
||||
"scaleXShort": "X 크기",
|
||||
"scaleYShort": "Y 크기",
|
||||
"radius": "반지름",
|
||||
"radiusX": "X 반경",
|
||||
"radiusY": "Y 반경",
|
||||
"width": "너비",
|
||||
"height": "높은",
|
||||
"sides": "면의 수",
|
||||
"collisionResponse": "충돌 대응",
|
||||
"physics": "물리학(바운스/마찰)",
|
||||
"pause": "일시정지(중지)",
|
||||
"destroy": "사라지다(즉시 파기)",
|
||||
"elasticity": "탄력성 (0-1)",
|
||||
"friction": "마찰(0-1)",
|
||||
"followPath": "길을 따라가세요",
|
||||
"targetPath": "대상 경로",
|
||||
"notSelected": "(선택되지 않음)",
|
||||
"moveDuration": "이동 시간(초)",
|
||||
"followDirection": "경로를 따라 방향",
|
||||
"moveProgressCurve": "이동 진행 곡선",
|
||||
"moveProgressHelp": "가로축: 실시간/이동 기간; 세로축: 경로 진행(0=시작점 → 1=종료점)",
|
||||
"pathTitle": "경로 속성",
|
||||
"pathName": "경로 이름",
|
||||
"closedPath": "닫힌 경로",
|
||||
"pathColor": "경로 색상",
|
||||
"pathHelp": "운영 지침:",
|
||||
"pathHelpItems": "빈 공간/곡선 두 번 클릭: 새 앵커 포인트 만들기, 앵커 포인트 두 번 클릭: 노드 삭제, 두 번째로 두 번 클릭하고 드래그: 새 노드를 만들고 핸들을 당기고 앵커 포인트를 드래그하여 위치를 이동하고 핸들을 드래그하여 곡선을 조정합니다. Shift + 핸들 드래그: 양쪽에서 완전히 대칭, A lt+ 드래그 핸들: 한쪽을 독립적으로 제어, Ctrl+클릭/프레임 선택: 선택한 노드 추가, Alt+클릭/프레임 선택: 선택 항목 빼기 노드, 빈 공간에서 Alt+클릭: 모든 선택을 취소하고 여러 노드를 선택한 후 전체적으로 드래그합니다.",
|
||||
"applyPresetShape": "사전 설정된 모양 적용",
|
||||
"choosePreset": "사전 설정 선택...",
|
||||
"square": "정사각형",
|
||||
"star": "별 모양",
|
||||
"applyPreset": "사전 설정 적용",
|
||||
"clearAnchors": "앵커 포인트 지우기",
|
||||
"panelHint": "오른쪽 상단에 있는 버튼을 사용하여 장면 개체를 만듭니다."
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "모디파이어",
|
||||
"reset": "수정자 매개변수 재설정",
|
||||
"damping": "감쇠",
|
||||
"enableNoise": "이동 노이즈 사용",
|
||||
"strength": "힘",
|
||||
"noiseRange": "변동 범위",
|
||||
"noiseSpeed": "시간 흐름율",
|
||||
"noiseHint": "강도 제어는 비율에 영향을 미칩니다. · 변동 범위는 최대 편차를 제어합니다. · 시간 흐름은 변화 속도를 제어합니다.",
|
||||
"enableGravity": "중력 사용",
|
||||
"gravityStrength": "중력 강도",
|
||||
"strengthMin": "강도 최소",
|
||||
"strengthMax": "최대 강도",
|
||||
"direction": "방향",
|
||||
"gravityOverLife": "수명주기 동안의 중력",
|
||||
"windOverLife": "라이프 사이클 바람",
|
||||
"axisStrength": "수직축: 강도 0~1",
|
||||
"directionHint": "오른쪽 0° · 아래쪽 -90° · 음의 강도는 방향을 바꿉니다.",
|
||||
"enableWind": "바람 사용",
|
||||
"windStrength": "바람의 세기",
|
||||
"enableForceField": "힘장 사용",
|
||||
"centerX": "센터 X",
|
||||
"centerY": "센터 Y",
|
||||
"forceStrength": "역장 강도",
|
||||
"forceRadius": "역장 반경",
|
||||
"falloffMode": "붕괴 모드",
|
||||
"constant": "일정(속도는 범위 내에서 변하지 않습니다)",
|
||||
"linearFalloff": "선형 폴오프(가장자리는 0)",
|
||||
"inverseFalloff": "거리에 반비례(중앙에서 가장 강함)",
|
||||
"forceHint": "양수는 중앙쪽으로 끌어당기고, 음수는 바깥쪽으로 밀어내며, 역장 원은 캔버스 내에서 드래그될 수 있습니다.",
|
||||
"showShape": "모양을 보여주다",
|
||||
"enableVortex": "소용돌이 사용",
|
||||
"vortexHint": "양수는 시계 반대 방향 · 음수는 시계 방향",
|
||||
"enableAttraction": "흡인 사용",
|
||||
"attractionX": "흡착점 X",
|
||||
"attractionY": "흡착점 Y",
|
||||
"attractionRadius": "흡착반경",
|
||||
"attractionDuration": "흡착시간",
|
||||
"delay": "지연시간",
|
||||
"delayMode": "지연 모드",
|
||||
"globalTime": "통일된 시간",
|
||||
"particleLife": "단일 입자 수명",
|
||||
"attractionPath": "흡착방식",
|
||||
"straight": "일직선",
|
||||
"attractionHint": "지연 후 현재 위치부터 흡착이 시작됩니다. 빨간색 범위에 도달하면 죽습니다. 흡착 원은 캔버스 내에서 드래그할 수 있습니다.",
|
||||
"enableTrail": "트레일 사용",
|
||||
"trailImages": "후행 독립 사진",
|
||||
"addTrailImage": "후행 이미지 리소스 추가",
|
||||
"trailRotation": "회전하다",
|
||||
"trailBones": "후행 뼈 수",
|
||||
"trailRatio": "후행비율(%)",
|
||||
"trailLength": "후행 길이",
|
||||
"randomRange": "무작위 범위",
|
||||
"lengthRatio": "길이 비율(%)",
|
||||
"lengthMin": "최소 길이(%)",
|
||||
"lengthMax": "최대 길이(%)",
|
||||
"trailWidth": "후행 너비",
|
||||
"widthRatio": "폭 비율(%)",
|
||||
"widthMin": "최소 너비(%)",
|
||||
"widthMax": "최대 너비(%)",
|
||||
"widthScale": "너비 스케일링",
|
||||
"followParticle": "입자를 따라가다",
|
||||
"lifeLengthCurve": "수명주기 길이 곡선",
|
||||
"shapeCurve": "형상 곡선(머리 → 꼬리 폭)",
|
||||
"colorMode": "색상 모드",
|
||||
"blendMode": "블렌드 모드",
|
||||
"fixedColor": "고정된 색상",
|
||||
"alphaMode": "투명도 모드",
|
||||
"opacity": "투명도",
|
||||
"gridRows": "그리드 행 수",
|
||||
"gridCols": "그리드 열 수",
|
||||
"trailHint": "각 입자는 리소스에 비례하여 형제 후행 뼈 세트를 생성합니다. 입자가 생성될 때 임의의 길이와 너비가 결정되어 동일한 시드를 안정적으로 재현할 수 있음",
|
||||
"enableFollow": "이미터 추적 사용",
|
||||
"followMode": "팔로우 모드",
|
||||
"noFollow": "없음",
|
||||
"followPath": "길을 따라가다",
|
||||
"selectedBone": "선택된 뼈",
|
||||
"emitterAngleMode": "송신기 각도 모드",
|
||||
"fixedAngle": "고정 각도",
|
||||
"followMoveDirection": "움직이는 방향을 따라가세요",
|
||||
"moveProgressCurve": "이동 진행 곡선(0→1)",
|
||||
"moveDuration": "이동 기간(초)",
|
||||
"followSpace": "공간을 따라가다",
|
||||
"localSpace": "로컬 공간(GEN 운동)",
|
||||
"worldSpace": "월드 공간(입자 생성점 이동)",
|
||||
"moveDirection": "움직이는 방향",
|
||||
"forward": "앞으로(시작점 → 끝점)",
|
||||
"reverse": "역방향(종료점 → 시작점)",
|
||||
"followOffset": "오프셋 시작점(0-1)",
|
||||
"followSpaceHint": "로컬 공간은 전체 방사체를 이동합니다. 월드 공간은 새 입자의 생성 지점만 이동하고 생성된 입자는 월드 위치에 유지됩니다.",
|
||||
"followTarget": "목표를 따르십시오:",
|
||||
"noValidBone": "유효한 뼈가 아직 바인딩되지 않았습니다. 먼저 Spine 계층 구조 트리에서 뼈를 선택하십시오.",
|
||||
"rebind": "리바인드",
|
||||
"bind": "제본",
|
||||
"selectedBoneLabel": "현재 선택된 뼈대:",
|
||||
"boneLocalSpace": "로컬 공간(뼈와 함께 이동)",
|
||||
"boneWorldSpace": "월드 공간(파티클이 생성된 후 위치를 유지함)",
|
||||
"offsetX": "변위 오프셋 X",
|
||||
"offsetY": "변위 오프셋 Y",
|
||||
"rotationOffset": "회전 오프셋",
|
||||
"scaleOffsetX": "스케일 오프셋 X",
|
||||
"scaleOffsetY": "스케일 오프셋 Y",
|
||||
"boneFollowHint": "이미터는 선택한 Spine 뼈대의 위치만 따르며 Spine의 회전이나 크기 조정은 상속하지 않습니다. 입자 변환은 입자 시스템의 자체 매개변수와 상위 오프셋을 사용합니다.",
|
||||
"enableCollision": "충돌 사용",
|
||||
"collisionObjects": "참여 충돌 객체",
|
||||
"colliderDisabled": "{name}(충돌기 비활성화)",
|
||||
"clearCollider": "충돌 객체 지우기 {name}",
|
||||
"addCollider": "장면 충돌 개체 추가",
|
||||
"noAvailableColliders": "추가할 충돌 개체가 없습니다.",
|
||||
"noCollidersSelected": "충돌 개체가 선택되지 않았으며 현재 입자는 충돌하지 않습니다.",
|
||||
"available": "사용 가능",
|
||||
"disabled": "장애가 있는",
|
||||
"collisionHint": "추가되고 활성화된 장면 충돌 객체만 현재 입자 시스템의 충돌에 참여합니다.",
|
||||
"enableSubEmitter": "하위 이미터 사용",
|
||||
"triggerTiming": "트리거 시간 선택",
|
||||
"birth": "태어나다",
|
||||
"death": "주사위",
|
||||
"collision": "충돌",
|
||||
"chooseTarget": "대상 입자 시스템 선택",
|
||||
"noTarget": "없음(입자 시스템)",
|
||||
"deleteSubEmitter": "이 하위 이미터 삭제",
|
||||
"probability": "방출 확률",
|
||||
"collisionLimit": "충돌 한계",
|
||||
"inherit": "상속하다",
|
||||
"colorInheritMode": "색상 상속 방법",
|
||||
"add": "추가하다",
|
||||
"replace": "씌우다",
|
||||
"addSubEmitter": "+ 새로운 하위 이미 터 추가",
|
||||
"inheritNone": "없음(기본값)",
|
||||
"inheritAll": "모든 속성",
|
||||
"inheritColor": "색상",
|
||||
"inheritScale": "크기",
|
||||
"inheritRotation": "회전하다",
|
||||
"inheritLife": "수명주기"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Spine 속성",
|
||||
"name": "Spine 이름",
|
||||
"xPosition": "X 위치",
|
||||
"yPosition": "Y 위치",
|
||||
"rotation": "회전",
|
||||
"scaleX": "X 크기",
|
||||
"scaleY": "Y 크기",
|
||||
"startTime": "시작 시간",
|
||||
"resources": "Spine 리소스",
|
||||
"chooseFolder": "폴더를 선택하고 로드하세요.",
|
||||
"folderHint": "JSON / SKEL, Atlas 및 폴더의 모든 텍스처를 한 번에 읽습니다. 아래에서 리소스를 개별적으로 교체할 수 있습니다.",
|
||||
"choose": "선택하다",
|
||||
"chooseMultiple": "선택(복수 선택)",
|
||||
"loading": "로드 중…",
|
||||
"load": "↧ 로드",
|
||||
"clear": "분명한",
|
||||
"supportNote": "Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON 지원 · 해당 버전이 실행 중일 때 요청 시 로드 · 로컬 오프라인",
|
||||
"currentResource": "현재 자원 {version}",
|
||||
"animations": "Spine 애니메이션",
|
||||
"noAnimations": "사용할 수 있는 애니메이션이 없습니다.",
|
||||
"timelineAnimation": "타임라인에서 애니메이션 재생",
|
||||
"no": "없음",
|
||||
"hierarchy": "계층 트리",
|
||||
"clearBoneTitle": "뼈대 선택을 지우려면 클릭하세요.",
|
||||
"noBoneTitle": "현재 선택된 뼈가 없습니다.",
|
||||
"clearBone": "선택한 뼈 지우기: {name}",
|
||||
"currentBone": "현재 스켈레톤:",
|
||||
"clearSlotTitle": "슬롯 선택을 지우려면 클릭하세요.",
|
||||
"noSlotTitle": "현재 선택된 슬롯이 없습니다.",
|
||||
"clearSlot": "선택한 슬롯 지우기: {name}",
|
||||
"currentSlot": "현재 슬롯:",
|
||||
"notSelected": "선택되지 않음",
|
||||
"expandAll": "모두 펼치기",
|
||||
"collapseAll": "모두 접기",
|
||||
"bones": "해골",
|
||||
"slots": "슬롯",
|
||||
"notLoaded": "로드되지 않음 Spine",
|
||||
"searchBones": "뼈 검색",
|
||||
"searchBonesPlaceholder": "뼈 이름 검색…",
|
||||
"clearSearch": "검색 지우기",
|
||||
"clearBoneSearch": "뼈 검색 지우기",
|
||||
"noMatchingBones": "일치하는 뼈가 발견되지 않았습니다.",
|
||||
"expandChildren": "자식 뼈 확장",
|
||||
"collapseChildren": "자식 뼈 접기",
|
||||
"notLoadedSlots": "Spine 슬롯이 로드되지 않았습니다.",
|
||||
"searchSlots": "슬롯 검색",
|
||||
"searchSlotsPlaceholder": "슬롯 또는 액세서리 이름을 검색하세요…",
|
||||
"clearSlotSearch": "슬롯 검색 지우기",
|
||||
"noMatchingSlots": "일치하는 슬롯을 찾을 수 없습니다.",
|
||||
"slotTitle": "{name}(스켈레톤: {bone}, 부착물: {attachment})",
|
||||
"empty": "null",
|
||||
"textureSummary": "{count} 장: {names}",
|
||||
"textureImages": "질감 사진",
|
||||
"missingFolderAssets": "선택한 폴더가 없습니다: {missing}",
|
||||
"chooseAssets": "Spine 데이터, Atlas 및 모든 텍스처 이미지를 순서대로 선택하십시오."
|
||||
},
|
||||
"help": {
|
||||
"title": "도움말",
|
||||
"subtitle": "입자 생성부터 저장 및 내보내기까지 빠른 시작",
|
||||
"close": "지침 닫기",
|
||||
"closeShort": "닫기(Esc)",
|
||||
"quickStart": "빠른 시작",
|
||||
"stepCreate": "객체 생성: 왼쪽의 \"Scene Object\"에서 +Particles / +Collision / +Path / +Spine를 사용하여 장면 객체를 추가합니다.",
|
||||
"stepEdit": "입자 편집: 입자 시스템을 선택하고 \"방출 모드 → 방사체 모양 → 입자 속성 → 모양 및 리소스 → 수정자\"를 조정합니다.",
|
||||
"stepPreview": "효과 확인: 하단 타임라인은 프레임별로 재생, 일시 중지, 드래그할 수 있습니다. 매개변수를 수정하면 자동으로 다시 계산됩니다.",
|
||||
"stepExport": "저장 및 내보내기: 프로젝트를 유지하려면 \"구성 저장\"을 사용하십시오. 완성된 제품을 출력하려면 \"Spine Json / 이미지 패키지 / .spine 패키지를 내보내세요.\"",
|
||||
"quickNote": "각 모듈 그룹 제목 오른쪽에 있는 \"재설정\"은 그룹의 기본 매개변수를 복원할 수 있습니다. 시스템 설정은 현재 브라우저에 자동으로 저장됩니다.",
|
||||
"commonOps": "자주 쓰는 작업",
|
||||
"eye": "작은 눈",
|
||||
"eyeDesc": "개체를 개별적으로 표시하거나 숨깁니다. 숨겨진 입자 시스템은 내보내지지 않습니다.",
|
||||
"copyDesc": "다양한 매개변수의 비교를 용이하게 하기 위해 현재 선택된 개체를 완전히 복사합니다.",
|
||||
"backgroundDesc": "참조 이미지를 업로드하고 캔버스 미리보기 전용 위치와 투명도를 조정하세요.",
|
||||
"settingsDesc": "관리 인터페이스 레이아웃, 보조 디스플레이, 규모 등은 브라우저에 자동으로 저장됩니다.",
|
||||
"undoDesc": "Ctrl+Z는 한 단계 후퇴합니다. 최대 단계 수는 시스템 설정에서 조정할 수 있습니다.",
|
||||
"spineBoneDesc": "파티클 이미터가 따라갈 수 있는 계층 구조 트리에서 뼈대를 검색하고 선택합니다.",
|
||||
"shortcuts": "단축키",
|
||||
"undoShortcut": "이전 단계 실행 취소",
|
||||
"saveShortcut": "구성 저장",
|
||||
"panShortcut": "캔버스 드래그",
|
||||
"translateShortcut": "변위 도구",
|
||||
"rotateShortcut": "회전 도구",
|
||||
"scaleShortcut": "확대/축소 도구",
|
||||
"playShortcut": "재생/일시 정지",
|
||||
"startShortcut": "첫 번째 프레임으로 돌아가기",
|
||||
"shortcutNote": "Q / W / E / R은 먼저 캔버스를 클릭해야 합니다. 커서가 입력 상자에 있으면 단일 키 단축키가 실행되지 않습니다.",
|
||||
"modules": "기능 모듈",
|
||||
"configTitle": "구성 관리",
|
||||
"saveConfigDesc": "모든 현재 장면 객체와 매개변수를 프로젝트 JSON 파일로 저장합니다(Ctrl+S도 지원됨).",
|
||||
"loadConfigDesc": "전체 프로젝트를 복원하려면 로컬 구성 파일을 선택하세요.",
|
||||
"presetDesc": "드롭다운에서 기본 빠른 적용을 선택합니다. 목록을 새로 고치려면 드롭다운을 클릭하세요.",
|
||||
"configScope": "범위",
|
||||
"configScopeDesc": "구성에는 개체와 매개변수가 포함됩니다. 인터페이스와 시스템 설정은 브라우저에 별도로 저장됩니다.",
|
||||
"sceneTitle": "장면 객체",
|
||||
"particleDesc": "핵심 개체. 위치, 오프셋, 회전, 크기 조정 및 임의 시드를 설정할 수 있습니다. 동일한 씨앗은 동일한 효과를 재현할 수 있습니다.",
|
||||
"colliderDesc": "원/타원/직사각형/다각형/사용자 정의는 경로를 따라 물리적 바운스, 일시 중지, 파괴 및 이동을 지원합니다.",
|
||||
"pathDesc": "앵커 포인트, 제어 핸들, 클로저, 색상 및 사전 설정 모양을 지원하는 베지어 경로입니다.",
|
||||
"spineDesc": "Spine 데이터, Atlas 및 텍스처를 로드하고, 뼈대와 슬롯을 찾아보고, 이미터를 따라갑니다.",
|
||||
"sceneCommonDesc": "개체는 독립적으로 표시되고 복사될 수 있습니다. 숨겨진 입자 시스템은 내보내지지 않습니다.",
|
||||
"emissionDesc": "연속 발사, 폭발, 지연 및 시작/루프/종료 3단계 루프 지속 시간.",
|
||||
"burstDesc": "한 번에 지정된 수의 입자를 방출합니다.",
|
||||
"delayDesc": "방출이 시작되기 전 대기 시간으로, 입자 막대의 왼쪽 끝에 해당합니다.",
|
||||
"loopNote": "루프 지속성은 뼈대 및 경로 추적을 지원하지 않으며 전환 시 다음 설정이 복원됩니다.",
|
||||
"shapeDesc": "점, 원, 직사각형, 원뿔 또는 경로 생성 영역. 원/원추는 내부 및 외부 반경을 지원하고 직사각형은 내부 및 외부 너비와 높이를 지원합니다.",
|
||||
"angleDesc": "고정, 무작위, 방사형, 법선 경로 또는 경로 접선.",
|
||||
"initialDesc": "수명 주기, 속도, 크기 조정 및 회전 지원은 고정, 무작위, 곡선 및 회전을 지원하여 출시 방향을 따를 수 있습니다.",
|
||||
"overLifeDesc": "속도배율, 줌배율, 회전속도는 수명곡선에 따라 조절 가능합니다.",
|
||||
"alphaDesc": "투명도는 고정 또는 곡선을 지원합니다. 곡선 모드는 파생, 선형 또는 베지어를 따를 수 있습니다.",
|
||||
"imageDesc": "단일 이미지 또는 시퀀스 프레임, 다중 이미지 가중치 무작위화, 피벗 포인트, 색상, 혼합 모드 및 독립적인 투명도.",
|
||||
"sequenceDesc": "재생 방법에는 단일 시간 숨기기, 단일 시간 고정, 정방향 루프 및 역방향 루프가 포함됩니다.",
|
||||
"noiseDesc": "지터 추적을 생성하고 강도, 범위 및 속도를 제어합니다.",
|
||||
"gravityDesc": "중력, 바람 및 수명주기 강도 곡선.",
|
||||
"forceDesc": "전역 역장, 소용돌이, 흡착 및 충돌.",
|
||||
"trailDesc": "독립적인 후행 자산, 뼈 수, 길이, 너비, 모양, 색상 및 투명도 곡선.",
|
||||
"followDesc": "이미터는 경로 또는 Spine 뼈를 따를 수 있습니다.",
|
||||
"collisionDesc": "장면 충돌 개체와 입자 충돌 반응을 선택합니다.",
|
||||
"exportDesc": "이미지 경로, Spine 버전, 키프레임 곡선, FPS, 정수 프레임, 뼈 풀 및 빈 애니메이션을 설정합니다.",
|
||||
"exportButtonsDesc": "커넥터를 통해 Spine JSON, 이미지 ZIP를 내보내거나 .spine 프로젝트를 생성할 수 있습니다.",
|
||||
"connectorTitle": "Spine 커넥터 사용 지침",
|
||||
"connectorIntro": "커넥터는 웹 페이지에서 생성된 JSON 및 이미지를 로컬 시스템에 설치 및 활성화된 Spine에 전달하고 이를 편집 가능한 .spine 프로젝트로 변환합니다.",
|
||||
"prerequisite": "프론트로드",
|
||||
"prerequisiteDesc": "컴퓨터에 Spine가 설치 및 활성화되었으며 데스크탑 커넥터가 실행되었습니다.",
|
||||
"download": "다운로드",
|
||||
"webSide": "웹페이지",
|
||||
"webSideDesc": "\"커넥터 사용 가능 · Spine가 준비되었습니다\"가 표시되면 \".spine 패키지 내보내기\"를 클릭합니다.",
|
||||
"authorization": "첫 번째 승인",
|
||||
"authorizationDesc": "첫 번째 연결에서는 웹사이트의 소스를 확인하고 한 번만 허용해야 합니다. 이 기계는 인증 화이트리스트를 저장합니다.",
|
||||
"pathSetup": "경로 설정",
|
||||
"pathSetupDesc": "커넥터는 Spine를 자동으로 감지합니다. 찾을 수 없는 경우 애플리케이션 경로를 수동으로 지정할 수 있습니다.",
|
||||
"downloadResult": "결과 다운로드",
|
||||
"downloadResultDesc": ".spine 프로젝트 및 이미지 디렉터리가 포함된 ZIP 패키지를 가져옵니다.",
|
||||
"version": "버전",
|
||||
"versionDesc": "커넥터는 JSON 버전에 따라 Spine 3.8~4.3을 자동으로 일치시킵니다.",
|
||||
"security": "안전",
|
||||
"securityDesc": "로컬 주소만 듣고 인증은 커넥터에 저장되며 변환 후 임시 파일은 정리됩니다.",
|
||||
"differenceTitle": "구성과 내보내기의 차이점은 무엇입니까?",
|
||||
"differenceDesc": "\"구성 저장\"은 편집할 수 있는 모든 개체와 매개변수를 저장합니다. \"Spine Json 내보내기\"는 표시된 입자 시스템만 내보내고 충돌, 추적, 추적 및 하위 방사체 결과를 독립적인 애니메이션 데이터로 굽습니다."
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "루프 연속 모드에 들어가면 입자 추적 설정이 무효화되고 기본값으로 복원됩니다. 계속하다?",
|
||||
"confirmLoopFollowExit": "루프 지속 모드를 종료한 후 입자 추적 설정이 무효화되고 기본값으로 복원됩니다. 계속하다?",
|
||||
"invalidJson": "구성 파일이 유효하지 않습니다. JSON",
|
||||
"invalidConfigFormat": "SpineParticle 편집자 프로필이 아닙니다.",
|
||||
"unsupportedConfigVersion": "아직 지원되지 않는 구성 버전: {version}",
|
||||
"missingScene": "구성 파일에 전체 장면 데이터가 누락되었습니다.",
|
||||
"missingEmbeddedSpine": "구성에 재사용 가능한 Spine 원본 리소스가 포함되어 있지 않습니다.",
|
||||
"chooseJsonConfig": ".json 구성 파일을 선택하세요.",
|
||||
"settingsInvalidJson": "시스템 설정 캐시가 유효하지 않습니다. JSON",
|
||||
"settingsFormat": "SpineParticle 편집기 시스템 설정 캐시가 아님",
|
||||
"settingsVersion": "시스템 구성 버전은 아직 지원되지 않습니다: {version}",
|
||||
"settingsMissing": "시스템 설정 캐시에 설정이 없습니다.",
|
||||
"noExportableImages": "현재 표시되는 입자 시스템에 대해 내보낼 수 있는 이미지가 없습니다.",
|
||||
"invalidZipPath": "ZIP 잘못된 파일 경로",
|
||||
"spineFileType": "Spine 데이터는 .json 또는 .skel만 지원합니다.",
|
||||
"atlasFileType": "Atlas 파일은 .atlas만 지원합니다.",
|
||||
"chooseTexture": "텍스처 이미지를 하나 이상 선택하세요.",
|
||||
"binaryParseFailed": "Spine 바이너리 구문 분석 실패(4.3: {v43}, 이전 버전: {v42})",
|
||||
"invalidSpineJson": "Spine JSON 잘못된 파일 형식",
|
||||
"unsupportedSpineJsonVersion": "Spine JSON 버전은 지원되지 않으며 {versions}만 지원됩니다.",
|
||||
"unsupportedSpineDataVersion": "Spine 데이터 버전은 지원되지 않으며 {versions}만 지원됩니다.",
|
||||
"embeddedReadFailed": "내장된 Spine 파일을 읽을 수 없습니다: {name}",
|
||||
"missingImageWarning": "이미지 \"{file}\"가 누락되었거나 크기를 읽을 수 없으며 경로가 유지됩니다.",
|
||||
"missingTrailImageWarning": "후행 이미지 \"{file}\"가 누락되어 경로가 보존되었습니다.",
|
||||
"emptyCacheWarning": "'{name}'에 사용할 수 있는 프레임 버퍼가 없습니다.",
|
||||
"readExportImageFailed": "내보낸 이미지를 읽을 수 없습니다: {name}",
|
||||
"connectorOffline": "로컬 Spine 커넥터가 감지되지 않습니다. 먼저 커넥터를 활성화하십시오.",
|
||||
"connectorHttpError": "Spine 커넥터가 오류를 반환합니다: HTTP {status}",
|
||||
"invalidTrailUV": "후행 메시 '{name}'에 대한 잘못된 UV 데이터",
|
||||
"missingTrailVertices": "후행 메시 '{name}'에 정점 데이터가 누락되었습니다.",
|
||||
"trailIndexOutOfRange": "후행 메시 '{name}'의 삼각형 인덱스가 범위를 벗어났습니다.",
|
||||
"invalidTrailHull": "후행 메쉬 \"{name}\"의 외부 윤곽 번호가 잘못되었습니다.",
|
||||
"trailHullIndexOutOfRange": "후행 메시 \"{name}\"의 외부 윤곽선 가장자리 인덱스가 범위를 벗어났습니다.",
|
||||
"invalidInfluenceCount": "후행 메시 '{name}'에 잘못된 수의 뼈 가중치가 포함되어 있습니다.",
|
||||
"missingBoneReference": "후행 메시 '{name}'는 존재하지 않는 뼈대를 참조합니다.",
|
||||
"invalidWeight": "후행 그리드 \"{name}\"에 잘못된 중량 데이터가 포함되어 있습니다.",
|
||||
"weightSum": "후행 메시 '{name}'의 정점 가중치의 합이 1이 아닙니다.",
|
||||
"vertexCountMismatch": "후행 메시 '{name}'의 정점 수와 UV 수가 일치하지 않습니다.",
|
||||
"invalidInherit": "뼈대 '{name}'의 상속 값 '{inherit}'가 Spine {version} JSON 형식을 따르지 않습니다.",
|
||||
"trailBoneParent": "후행 뼈대 \"{name}\"는 입자 시스템 뼈 아래에 직접 매달려야 하며 뼈대 체인을 형성할 수 없습니다.",
|
||||
"trailSlotEmpty": "가중 테일링 슬롯 \"{name}\"는 빈 부착물을 사용할 수 없습니다. 해당 뼈대 스케일링은 나타나지 않거나 사망하는 단계에서 0으로 설정되어야 합니다.",
|
||||
"spine38Version": "Spine 3.8 내보낸 버전 ID는 3.8이어야 합니다.",
|
||||
"spine38Inherit": "Spine 3.8 뼈 \"{name}\"는 변환을 사용해야 하며 상속을 사용할 수 없습니다.",
|
||||
"spine38SlotColor": "Spine 3.8 슬롯 색상 타임라인은 color / twoColor를 사용해야 합니다.",
|
||||
"spine38AttachmentName": "Spine 3.8 첨부 타임라인의 숨겨진 프레임에는 이름을 명시적으로 작성해야 합니다: null",
|
||||
"spine38RotationAngle": "Spine 3.8 시간축을 회전하려면 각도를 사용해야 합니다.",
|
||||
"spine38Curve": "Spine 3.8은 4.x 배열 곡선 형식을 지원하지 않습니다.",
|
||||
"unsupportedExportVersion": "내보낸 버전은 지원되지 않으며 Spine {versions}만 지원됩니다.",
|
||||
"exportVersionMismatch": "일관성 없는 내보내기 버전: Spine {expected}로 설정, JSON는 Spine {actual}로 표시됨",
|
||||
"exportMissingBones": "내보내기 결과 뼈가 누락되었습니다.",
|
||||
"missingAtlasTexture": "Atlas에서 참조하는 텍스처가 선택되지 않았습니다: {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "언어",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "Arraste para ajustar a altura da linha do tempo",
|
||||
"systems": "sistema",
|
||||
"particlesBones": "Partículas (ossos)",
|
||||
"rootBone": "osso da raiz",
|
||||
"hudTip": "Zoom da roda · Clique com o botão esquerdo para arrastar a tela",
|
||||
"title": "Editor de Partículas Spine - Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "Fechar",
|
||||
"reset": "Redefinir",
|
||||
"add": "Adicionar",
|
||||
"remove": "Remover",
|
||||
"delete": "Excluir",
|
||||
"clear": "Limpar",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirmar",
|
||||
"none": "Nenhum",
|
||||
"enabled": "Ativado",
|
||||
"disabled": "Desativado",
|
||||
"fixed": "Fixo",
|
||||
"random": "Aleatório",
|
||||
"curve": "Curva",
|
||||
"followExport": "Seguir exportação",
|
||||
"linear": "Linear",
|
||||
"bezier": "Bézier",
|
||||
"above": "Acima",
|
||||
"below": "Abaixo",
|
||||
"left": "Esquerda",
|
||||
"right": "Direita",
|
||||
"seconds": "s",
|
||||
"frames": "quadros"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "Configurações",
|
||||
"undo": "Desfazer (Ctrl+Z)",
|
||||
"pan": "Mover tela (Q)",
|
||||
"translate": "Mover (W)",
|
||||
"rotate": "Girar (E)",
|
||||
"scale": "Escalar (R)",
|
||||
"zoomIn": "Ampliar",
|
||||
"zoomOut": "Reduzir",
|
||||
"fitView": "Ajustar à tela",
|
||||
"toggleGrid": "Alternar grade",
|
||||
"resetView": "Redefinir visualização",
|
||||
"background": "Fundo",
|
||||
"backgroundSettings": "Configurações do fundo",
|
||||
"changeBackground": "Trocar imagem",
|
||||
"uploadBackground": "Enviar imagem",
|
||||
"clearBackground": "Limpar fundo",
|
||||
"noBackground": "Nenhuma imagem",
|
||||
"backgroundX": "Deslocamento X da imagem de fundo",
|
||||
"backgroundY": "Deslocamento Y da imagem de fundo",
|
||||
"backgroundOpacity": "Transparência da imagem de fundo",
|
||||
"opacity": "Opacidade",
|
||||
"help": "Ajuda",
|
||||
"openHelp": "Abrir ajuda"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configurações do sistema",
|
||||
"layout": "Layout da interface",
|
||||
"parameterPanelPosition": "Localização do painel de parâmetros",
|
||||
"panelOnRight": "O painel de parâmetros é mostrado à direita",
|
||||
"history": "Histórico de operação",
|
||||
"maxUndo": "Número máximo de passos para trás",
|
||||
"canvasGuides": "Display auxiliar de tela",
|
||||
"emitter": "ponto de lançamento",
|
||||
"bones": "Conexão óssea",
|
||||
"bonePointSize": "Tamanho do desenho do ponto ósseo",
|
||||
"boneAxisSize": "Tamanho do desenho do eixo",
|
||||
"skinMesh": "malha esfolada",
|
||||
"enableTicks": "Habilitar ticks",
|
||||
"tickFontSize": "Dimensionar o tamanho do texto",
|
||||
"tickWidth": "espessura da marca",
|
||||
"axisColor": "cor do eixo",
|
||||
"showAxisLabels": "Exibir valor da escala",
|
||||
"cacheNote": "Todas as configurações do sistema são salvas automaticamente no navegador atual"
|
||||
},
|
||||
"config": {
|
||||
"title": "Gerenciamento de configuração",
|
||||
"save": "Salvar configuração",
|
||||
"saveTitle": "Salve todas as configurações do editor (Ctrl+S)",
|
||||
"load": "Carregar configuração",
|
||||
"loadTitle": "Carregar configuração do editor local",
|
||||
"presets": "Lista predefinida",
|
||||
"selectPreset": "Selecionar predefinição",
|
||||
"noPresets": "Nenhuma predefinição",
|
||||
"saved": "A configuração foi salva localmente",
|
||||
"loading": "Carregando configuração…",
|
||||
"loaded": "Carregado: {name}",
|
||||
"presetLoading": "Carregando predefinições…",
|
||||
"presetLoaded": "Predefinição carregada: {name}",
|
||||
"presetNamingError": "{message}, verifique a nomenclatura de arquivo padrão",
|
||||
"presetTransferTitle": "Carregar predefinição",
|
||||
"presetDownloading": "Baixando {file}…",
|
||||
"presetParsing": "Analisando a configuração padrão...",
|
||||
"presetRestoring": "Analisando e restaurando recursos padrão...",
|
||||
"presetComplete": "Carregamento predefinido concluído",
|
||||
"presetListError": "Não é possível ler a lista predefinida",
|
||||
"presetReadError": "Não é possível ler a predefinição: {file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.Varredura de partículas",
|
||||
"barBlocks": "2.Blocos retangulares",
|
||||
"forceTrail": "3.Rastro de campo de força",
|
||||
"lightningSequence": "4.Sequência de raios",
|
||||
"texturePivot": "5.Pivô da textura",
|
||||
"subEmitter": "6.Subemissor"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "Arraste a alça quadrada para ajustar o arco · Clique duas vezes em um espaço em branco para criar um novo · Clique duas vezes em um nó para excluí-lo",
|
||||
"linearHint": "Clique duas vezes em um espaço em branco para criar um novo. Clique duas vezes em um nó para excluí-lo. Arraste um nó para ajustá-lo.",
|
||||
"resetTitle": "Restaurar curva padrão"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "Clique duas vezes na faixa de opções para adicionar uma marca colorida",
|
||||
"color": "Código de cores",
|
||||
"colorValue": "Valor de cor da escala de cores",
|
||||
"position": "Posição da marca colorida",
|
||||
"addMiddle": "Adicione cor no meio",
|
||||
"delete": "Excluir patch de cor atual",
|
||||
"hint": "Clique duas vezes na faixa colorida para adicionar uma nova · Arraste a marca colorida para ajustar sua posição · Clique duas vezes na marca colorida para excluí-la"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "Deslocamento de ângulo",
|
||||
"value": "valor numérico",
|
||||
"lower": "limite inferior",
|
||||
"upper": "limite superior",
|
||||
"rangeLower": "Limite inferior do intervalo",
|
||||
"rangeUpper": "Faixa superior",
|
||||
"curveInput": "Entrada de curva →",
|
||||
"direction": "Direção de lançamento"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "ponto de articulação do mapa",
|
||||
"zoomOut": "diminuir o zoom",
|
||||
"zoomIn": "ampliar",
|
||||
"expand": "Zoom para operação em tela cheia",
|
||||
"interaction": "Clique com o botão esquerdo/arraste para definir o ponto de giro · Clique com o botão direito para arrastar a tela · Roda de rolagem para ampliar",
|
||||
"previewAlt": "Visualização do ponto dinâmico",
|
||||
"noImage": "Nenhuma imagem selecionada",
|
||||
"resetCenter": "Reposicionar no meio (50%, 50%)",
|
||||
"coordinates": "Coordenadas do ponto do eixo (%)",
|
||||
"rotationTest": "Teste de rotação do eixo",
|
||||
"static": "ainda",
|
||||
"spin": "rotação",
|
||||
"swing": "balanço",
|
||||
"rotationAlt": "Teste de rotação",
|
||||
"topLeft": "canto superior esquerdo",
|
||||
"top": "Bem acima",
|
||||
"topRight": "canto superior direito",
|
||||
"left": "Direita esquerda",
|
||||
"center": "meio",
|
||||
"right": "Certo",
|
||||
"bottomLeft": "canto inferior esquerdo",
|
||||
"bottom": "Diretamente abaixo·inferior",
|
||||
"bottomRight": "canto inferior direito"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "Selecione imagens de quadros de sequência",
|
||||
"chooseLocal": "Selecione a imagem local",
|
||||
"subfolder": "subpasta",
|
||||
"name": "nome",
|
||||
"restore": "Restaurar {name}",
|
||||
"deleteResource": "Excluir recursos de imagem",
|
||||
"imageMode": "Modo de imagem",
|
||||
"fixed": "Imagem única",
|
||||
"sequence": "Sequência",
|
||||
"playbackMode": "modo de jogo",
|
||||
"onceHide": "Uma vez, ocultar no final",
|
||||
"onceHold": "Uma vez, manter último quadro",
|
||||
"loopForward": "Loop para frente",
|
||||
"loopReverse": "Loop reverso",
|
||||
"playbackFps": "Taxa de quadros de reprodução",
|
||||
"chooseSequenceMulti": "Selecione quadros de sequência (múltiplas seleções)",
|
||||
"weight": "Peso %",
|
||||
"unlockWeight": "Desbloquear bloqueio de proporção",
|
||||
"lockWeight": "Bloquear a proporção atual",
|
||||
"pivot": "Pivô da textura",
|
||||
"collapsePivot": "Recolher ajuste do ponto de articulação",
|
||||
"expandPivot": "Expandir o ajuste do ponto de articulação",
|
||||
"pivotModal": "Eixo de rotação de textura ponto grande refinamento de imagem",
|
||||
"pivotModalDesc": "Clique ou arraste em qualquer lugar no mapa abaixo para definir com precisão o centro de rotação/oscilação das partículas.",
|
||||
"pivotZoomHint": "Suporta ampliação de 100% ~ 400%, mira precisa na ponta ou raiz:",
|
||||
"confirmPivot": "Determinar e salvar o ponto de articulação",
|
||||
"noSequence": "Nenhum quadro de sequência selecionado",
|
||||
"firstFrame": "Quadro 1",
|
||||
"firstImage": "primeira foto",
|
||||
"lastImage": "última foto",
|
||||
"pivotOn": "Aberto: X {x}% | Y {y}%",
|
||||
"pivotOff": "Não ativado, o padrão é próximo ao centro da imagem (50%, 50%)",
|
||||
"pivotCustom": "O ponto de articulação foi personalizado: X {x}% | Y {y}%",
|
||||
"frameCountOne": "1 quadro · {name}",
|
||||
"frameCountMany": "Quadro {count} · {first} → {last}",
|
||||
"sequenceSelected": "O quadro {count} foi selecionado e reproduzido na ordem {first}-{last}"
|
||||
},
|
||||
"timeline": {
|
||||
"play": "Jogar(D)",
|
||||
"pause": "Pausa (D)",
|
||||
"toStart": "Volte para o primeiro quadro (S)",
|
||||
"previous": "quadro anterior",
|
||||
"next": "próximo quadro",
|
||||
"toEnd": "Mover para o último quadro",
|
||||
"continuousLoop": "Reprodução em loop contínuo",
|
||||
"abLoop": "Loop independente do intervalo A/B",
|
||||
"abLoopShort": "Loop AB",
|
||||
"abRange": "Intervalo do ciclo AB",
|
||||
"playbackStart": "Quadro inicial de reprodução personalizado",
|
||||
"playbackEnd": "Quadro final de reprodução personalizado",
|
||||
"startFrame": "Reproduzir quadro inicial",
|
||||
"endFrame": "Reproduzir quadro final",
|
||||
"frame": "quadro",
|
||||
"emission": "Emissão",
|
||||
"particleLife": "Partículas ativas",
|
||||
"spineAnimation": "Animação Spine",
|
||||
"ownerAnimation": "Animação associada",
|
||||
"setOwnerAnimation": "Defina a animação à qual pertence o sistema de partículas atual",
|
||||
"chooseOwnerAnimation": "Selecione a animação",
|
||||
"animationName": "Nome da animação",
|
||||
"renameAnimation": "Renomear a animação atual",
|
||||
"rename": "Renomear",
|
||||
"newAnimation": "+ Novo",
|
||||
"keepOneAnimation": "Pelo menos uma animação precisa ser mantida",
|
||||
"spinePreview": "Animação de visualização Spine",
|
||||
"noSpineAnimation": "Nenhuma animação Spine disponível",
|
||||
"none": "nenhum",
|
||||
"systemName": "Sistema {index}",
|
||||
"dragLoopDuration": "Duração do segmento do loop de arrastar",
|
||||
"dragEmissionDuration": "Duração do arrasto",
|
||||
"dragSpineStart": "Arraste para ajustar o horário de início da animação",
|
||||
"noAnimationData": "Atualmente não há dados de animação para exibir.",
|
||||
"animationNameEmpty": "O nome da animação não pode ficar vazio",
|
||||
"animationNameDuplicate": "Os nomes das animações não podem ser repetidos",
|
||||
"animationRenameFailed": "Não é possível modificar o nome da animação",
|
||||
"zoomIn": "ampliar",
|
||||
"zoomOut": "diminuir o zoom",
|
||||
"zoomFit": "Moderado",
|
||||
"frameStatus": "Quadro {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "Modo de emissão",
|
||||
"reset": "Redefinir parâmetros do modo de transmissão",
|
||||
"stream": "Contínuo",
|
||||
"burst": "Explosão",
|
||||
"normalStream": "Contínuo normal",
|
||||
"loopStream": "Loop contínuo",
|
||||
"rate": "Taxa de emissão",
|
||||
"duration": "Duração da emissão",
|
||||
"loopDuration": "Duração do lançamento (f)",
|
||||
"generateStart": "Gerar animação de loop inicial",
|
||||
"generateEnd": "Gerar animação de loop final",
|
||||
"customDuration": "Especifique a duração",
|
||||
"auto": "{frames}f automático",
|
||||
"startLoopDuration": "Duração do segmento do loop inicial",
|
||||
"endLoopDuration": "Duração do segmento do loop final",
|
||||
"loopWarning": "O modo de persistência de loop não suporta seguimento de osso e seguimento de caminho; as configurações a seguir das partículas serão restauradas aos valores padrão ao entrar ou sair.",
|
||||
"burstCount": "Quantidade por explosão",
|
||||
"delay": "Atraso",
|
||||
"shapeTitle": "Forma do emissor",
|
||||
"shapeReset": "Redefinir parâmetros de formato do emissor",
|
||||
"shape": "forma",
|
||||
"point": "Ponto",
|
||||
"circle": "Círculo",
|
||||
"rect": "Retângulo",
|
||||
"cone": "Cone",
|
||||
"path": "Caminho",
|
||||
"innerDiameter": "diâmetro interno",
|
||||
"outerDiameter": "diâmetro externo",
|
||||
"innerRadius": "raio interno",
|
||||
"outerRadius": "raio externo",
|
||||
"coneDirection": "Orientação cônica",
|
||||
"coneAngle": "Ângulo de abertura cônico",
|
||||
"innerWidth": "largura interna",
|
||||
"innerHeight": "Alto por dentro",
|
||||
"outerWidth": "Largura externa",
|
||||
"outerHeight": "Extra alto",
|
||||
"selectPath": "Selecione o caminho",
|
||||
"noPath": "Sem caminho (emissão pontual)",
|
||||
"birthDistribution": "distribuição de nascimentos",
|
||||
"evenDistribution": "Distribuição fixa igualmente espaçada",
|
||||
"randomDistribution": "distribuição aleatória",
|
||||
"emissionAngle": "ângulo de lançamento",
|
||||
"radial": "Radial (centro para fora)",
|
||||
"pathNormal": "perpendicular ao caminho",
|
||||
"pathTangent": "ao longo da direção do caminho",
|
||||
"fixedAngle": "ângulo fixo",
|
||||
"baseAngle": "ângulo base",
|
||||
"randomRange": "intervalo aleatório",
|
||||
"showShape": "mostrar forma"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "Atributos das partículas",
|
||||
"reset": "Redefinir parâmetros de atributos de partículas",
|
||||
"initialParams": "Valores iniciais",
|
||||
"initialLife": "ciclo de vida inicial",
|
||||
"randomSample": "Amostragem aleatória →",
|
||||
"initialSpeed": "velocidade inicial",
|
||||
"initialScale": "dimensionamento inicial",
|
||||
"uniform": "unificado",
|
||||
"separateXY": "Separação XY",
|
||||
"scaleX": "Ampliar X",
|
||||
"scaleY": "Ampliar Y",
|
||||
"initialRotation": "rotação inicial",
|
||||
"lifecycleTitle": "Alterações durante o tempo de vida",
|
||||
"speedOverLife": "velocidade do ciclo de vida",
|
||||
"speedMultiplier": "multiplicador de velocidade",
|
||||
"lifeTo": "ciclo de vida →",
|
||||
"scaleOverLife": "Escala durante o ciclo de vida",
|
||||
"scaleMultiplier": "Proporção de zoom",
|
||||
"multiplierX": "Ampliação",
|
||||
"multiplierY": "Ampliação Y",
|
||||
"rotationOverLife": "Girar durante o ciclo de vida",
|
||||
"rotationSpeed": "Velocidade de rotação"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Aparência e recursos",
|
||||
"reset": "Redefinir parâmetros de aparência e recursos",
|
||||
"opacity": "Opacidade",
|
||||
"curveMode": "Modo curva",
|
||||
"transparent": "0 (transparente)",
|
||||
"opaque": "1 (opaco)",
|
||||
"renderLayer": "Camada de renderização (slot Spine)",
|
||||
"top": "nível superior",
|
||||
"spineSlot": "Slot Spine",
|
||||
"selectSpine": "Selecione Spine",
|
||||
"noSpine": "Nenhum disponível Spine",
|
||||
"noSlot": "Nenhum slot selecionado ainda",
|
||||
"reselect": "Selecionar novamente",
|
||||
"selectSlot": "Selecione o slot",
|
||||
"searchSlots": "Pesquise o nome do slot ou acessório…",
|
||||
"searchSlotsAria": "Espaços de pesquisa",
|
||||
"emptySlot": "Espaço vazio",
|
||||
"noMatchingSlots": "Nenhum slot correspondente",
|
||||
"above": "no topo desta imagem do slot",
|
||||
"below": "abaixo desta imagem do slot",
|
||||
"followAttachment": "Mostre e oculte com acessórios de slot",
|
||||
"previewOnly": "O ajuste do nível de exibição afeta apenas a visualização do editor e não afeta os dados exportados.",
|
||||
"imageResources": "Recursos de imagem",
|
||||
"addImage": "Adicione recursos de imagem",
|
||||
"scale": "Zoom",
|
||||
"color": "cor",
|
||||
"fixedColor": "cor fixa",
|
||||
"randomColor": "cor aleatória",
|
||||
"lifetime": "vida útil",
|
||||
"normal": "Normal",
|
||||
"add": "Adição",
|
||||
"multiply": "Multiplicação",
|
||||
"screen": "Tela",
|
||||
"fixedColorValue": "valor de cor fixo",
|
||||
"randomColorHint": "Cada partícula escolhe aleatoriamente uma cor da fita quando nasce e permanece inalterada durante seu ciclo de vida.",
|
||||
"independentAlpha": "Opacidade independente",
|
||||
"off": "Desligado"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · Imagem acima",
|
||||
"slotLabelBelow": "{spine} / {slot} · Abaixo da foto",
|
||||
"resolvedAbove": "Renderizado acima da imagem {slot} e abaixo de seu slot",
|
||||
"resolvedBetween": "Renderizado entre {previous} e {slot}",
|
||||
"warningNoSpine": "Não há nenhum Spine carregado e as partículas são exibidas temporariamente no topo.",
|
||||
"warningNoSelection": "Spine ainda não foi selecionado e as partículas são exibidas temporariamente no topo.",
|
||||
"warningMissingSpine": "O alvo Spine não existe e as partículas são exibidas temporariamente no topo.",
|
||||
"warningNotReady": "O alvo Spine não está pronto e as partículas são temporariamente exibidas no topo.",
|
||||
"warningMissingSlot": "O slot alvo não existe (o recurso pode ter sido substituído) e as partículas são exibidas temporariamente no topo.",
|
||||
"warningFirstSlot": "Este é o primeiro slot e não pode ser exibido abaixo dele; as partículas são exibidas temporariamente no topo."
|
||||
},
|
||||
"export": {
|
||||
"title": "Configurações de exportação",
|
||||
"reset": "Redefinir configurações de exportação",
|
||||
"imagesPath": "Caminho da imagem (caminho das imagens Spine)",
|
||||
"spineVersion": "Versão do Spine",
|
||||
"keyframeCurve": "Curva de interpolação de quadro-chave",
|
||||
"linear": "Linear",
|
||||
"smoothBezier": "Bézier Suave (Bézier Suave)",
|
||||
"bezierHelp": "Smooth Bezier ajusta o movimento contínuo dentro da tolerância de erro; nascimento, morte, troca de apegos e mutações ainda usam quadros-chave de etapas.",
|
||||
"spine38Help": "Spine 3.8 não oferece suporte à matriz Bezier por canal 4.x e é convertido em quadros-chave lineares por partes com tolerância reduzida na exportação.",
|
||||
"fps": "FPS de exportação",
|
||||
"omitFps": "Não escreva fps",
|
||||
"fpsHelp": "Mantenha os segundos reais da animação inalterados ao modificar FPS; \"Não escreva fps\" omite apenas os metadados fps de Spine.",
|
||||
"integerFrames": "Alinhamento de quadro inteiro",
|
||||
"bonePool": "Conjunto de objetos ósseos",
|
||||
"excludeEmpty": "Exclua animações sem conteúdo",
|
||||
"baking": "A animação está sendo recalculada e preparada",
|
||||
"exportJsonTitle": "Exportar Spine {version} JSON",
|
||||
"preparing": "Preparando para exportar...",
|
||||
"exportJson": "Exportar Spine JSON",
|
||||
"exportImagesTitle": "Baixe separadamente a imagem usada pelo sistema de partículas atual ZIP",
|
||||
"organizingImages": "Classificando fotos...",
|
||||
"exportImages": "Exportar imagens ZIP",
|
||||
"generatingProject": "Gerando projeto...",
|
||||
"exportSpine": "Exportar pacote .spine",
|
||||
"authorize": "Autorizar o site atual",
|
||||
"authorizeTitle": "Autorize o site atual no conector nativo",
|
||||
"refreshConnector": "Verifique novamente o conector",
|
||||
"refresh": "atualizar",
|
||||
"recalculating": "Recálculo da animação de partículas...",
|
||||
"exported": "Spine {version} exportado: sistemas de partículas {systems}, animações {animations}, ossos de raiz {bones} {warning}",
|
||||
"resourceWarning": ";dicas de recursos {count} (as imagens ausentes ainda são exportadas)",
|
||||
"timeout": "Recálculo do tempo limite da animação. Confirme se a página ainda está em execução e tente novamente",
|
||||
"preparingProject": "Classificando fotos e chamando esta máquina de Spine…",
|
||||
"projectExported": "{fileName} foi gerado: incluindo projeto .spine e imagens {images}, Spine {version}",
|
||||
"collectingImages": "Comparando imagens atualmente usadas pelo sistema de partículas...",
|
||||
"imagesExported": "{fileName} foi gerado: {folder}/ contém imagens {images}",
|
||||
"connectorChecking": "Detectando conector Spine local...",
|
||||
"connectorOffline": "O conector local do Spine não está em execução",
|
||||
"spineNotFound": "O conector está ativo, mas o Spine não foi encontrado",
|
||||
"notAuthorized": "O conector está ativo, mas este site não está autorizado",
|
||||
"connectorReady": "Conector disponível · Spine pronto",
|
||||
"connectorBusy": "Recalculando e gerando o projeto Spine",
|
||||
"connectorGenerate": "Gerar projeto Spine {version} com o Spine local",
|
||||
"unknown": "desconhecido",
|
||||
"checking": "Verificando",
|
||||
"offline": "Offline",
|
||||
"notFound": "Spine não encontrado",
|
||||
"unauthorized": "Não autorizado",
|
||||
"projectTransferTitle": "Exportar pacote Spine",
|
||||
"projectTransferDetail": "Recálculo da animação de partículas...",
|
||||
"projectTransferDownload": "O pacote do projeto Spine foi baixado",
|
||||
"generatingJson": "Gerando Spine JSON…",
|
||||
"preparingProjectFiles": "Coletando fotos do projeto...",
|
||||
"uploading": "Fazendo upload de dados para o conector Spine...",
|
||||
"spineProcessing": "Spine está convertendo o projeto, aguarde...",
|
||||
"downloadingProject": "Baixando o pacote do projeto Spine gerado...",
|
||||
"handingToBrowser": "Passando para o navegador para download..."
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "Concluído",
|
||||
"failed": "Falha na operação"
|
||||
},
|
||||
"scene": {
|
||||
"title": "Objetos da cena",
|
||||
"addParticle": "Adicionar sistema de partículas",
|
||||
"addParticleShort": "+partícula",
|
||||
"addCollider": "Adicionar colisor",
|
||||
"addColliderShort": "+colisão",
|
||||
"addPath": "adicionar caminho",
|
||||
"addPathShort": "+ caminho",
|
||||
"addSpine": "Adicionar Spine",
|
||||
"copyTitle": "Copie o objeto de cena atualmente selecionado",
|
||||
"showParticle": "Mostrar sistema de partículas",
|
||||
"hideParticle": "Ocultar sistema de partículas",
|
||||
"showCollider": "mostrar colisores",
|
||||
"hideCollider": "Ocultar colisor",
|
||||
"showPath": "mostrar caminho",
|
||||
"hidePath": "Ocultar caminho",
|
||||
"showSpine": "Exibir Spine",
|
||||
"hideSpine": "Ocultar Spine",
|
||||
"particle": "Partículas",
|
||||
"subEmitter": "Subemissor",
|
||||
"collision": "Colisão",
|
||||
"path": "Caminho",
|
||||
"deleteParticle": "Excluir sistema de partículas",
|
||||
"deleteCollider": "Excluir colisores",
|
||||
"deletePath": "excluir caminho",
|
||||
"deleteSpine": "Excluir Spine",
|
||||
"empty": "Ainda não há objetos na cena",
|
||||
"name": "nome",
|
||||
"positionX": "Posição X",
|
||||
"positionY": "Posição Y",
|
||||
"offsetX": "Deslocamento X",
|
||||
"offsetY": "Deslocamento Y",
|
||||
"rotation": "Rotação",
|
||||
"scaleX": "Escala X",
|
||||
"scaleY": "Escala Y",
|
||||
"seed": "Semente aleatória",
|
||||
"seedTitle": "Controle todos os atributos aleatórios, seleção de recursos e modificador de amostragem aleatória no sistema de partículas",
|
||||
"randomizeSeed": "Gere uma nova semente aleatória global",
|
||||
"seedHint": "Controlar parâmetros aleatórios iniciais, seleção de recursos e amostragem aleatória modificadora; a mesma semente pode reproduzir o mesmo efeito",
|
||||
"colliderTitle": "Propriedades do colisor",
|
||||
"colliderName": "Nome do colisor",
|
||||
"type": "tipo",
|
||||
"circle": "redondo",
|
||||
"ellipse": "oval",
|
||||
"rect": "retângulo",
|
||||
"polygon": "polígono",
|
||||
"custom": "Personalizar",
|
||||
"enabled": "habilitar",
|
||||
"xPosition": "Posição X",
|
||||
"yPosition": "Posição Y",
|
||||
"scaleXShort": "Escala X",
|
||||
"scaleYShort": "Escala Y",
|
||||
"radius": "raio",
|
||||
"radiusX": "Raio X",
|
||||
"radiusY": "Raio Y",
|
||||
"width": "largura",
|
||||
"height": "alto",
|
||||
"sides": "Número de lados",
|
||||
"collisionResponse": "Resposta a falhas",
|
||||
"physics": "Física (salto/fricção)",
|
||||
"pause": "Pausa (parar)",
|
||||
"destroy": "Desaparecer (destruir imediatamente)",
|
||||
"elasticity": "Elasticidade (0-1)",
|
||||
"friction": "Fricção (0-1)",
|
||||
"followPath": "Siga o caminho",
|
||||
"targetPath": "caminho de destino",
|
||||
"notSelected": "(não selecionado)",
|
||||
"moveDuration": "Duração do movimento (segundos)",
|
||||
"followDirection": "direção ao longo do caminho",
|
||||
"moveProgressCurve": "Curva de progresso móvel",
|
||||
"moveProgressHelp": "Eixo horizontal: tempo real/duração do movimento; eixo vertical: progresso do caminho (0=ponto inicial → 1=ponto final)",
|
||||
"pathTitle": "atributo de caminho",
|
||||
"pathName": "nome do caminho",
|
||||
"closedPath": "caminho fechado",
|
||||
"pathColor": "cor do caminho",
|
||||
"pathHelp": "Instruções de operação:",
|
||||
"pathHelpItems": "Clique duas vezes no espaço/curva em branco: crie um novo ponto de ancoragem, clique duas vezes no ponto de ancoragem: exclua o nó, clique duas vezes na segunda vez e arraste: crie um novo e puxe a alça, arraste o ponto de ancoragem para mover a posição, arraste a alça para ajustar a curva, Shift + alça de arrastar: completamente simétrico em ambos os lados, A lt + alça de arrastar: controlar independentemente um lado, Ctrl + clicar/seleção de quadro: adicionar nós selecionados, Alt+clique/seleção de quadro: subtrair nós selecionados, Alt+clique no espaço em branco: limpe todas as seleções, selecione vários nós e arraste-os como um todo",
|
||||
"applyPresetShape": "Aplicar uma forma predefinida",
|
||||
"choosePreset": "Selecione uma predefinição...",
|
||||
"square": "Quadrado",
|
||||
"star": "forma de estrela",
|
||||
"applyPreset": "Aplicar predefinição",
|
||||
"clearAnchors": "ponto de ancoragem claro",
|
||||
"panelHint": "Use o botão no canto superior direito para criar um objeto de cena"
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "Modificadores",
|
||||
"reset": "Redefinir parâmetros modificadores",
|
||||
"damping": "Amortecimento",
|
||||
"enableNoise": "Ativar ruído de movimento",
|
||||
"strength": "força",
|
||||
"noiseRange": "Faixa de flutuação",
|
||||
"noiseSpeed": "Taxa de fluxo de tempo",
|
||||
"noiseHint": "O controle de intensidade afeta a proporção · A faixa de flutuação controla o desvio máximo · O fluxo de tempo controla a velocidade de mudança",
|
||||
"enableGravity": "Ativar gravidade",
|
||||
"gravityStrength": "Força da gravidade",
|
||||
"strengthMin": "Força mínima",
|
||||
"strengthMax": "Força máxima",
|
||||
"direction": "direção",
|
||||
"gravityOverLife": "Gravidade durante o ciclo de vida",
|
||||
"windOverLife": "Vento do ciclo de vida",
|
||||
"axisStrength": "Eixo vertical: intensidade 0 ~ 1",
|
||||
"directionHint": "0° para a direita · -90° para baixo · Intensidade negativa inverte a direção",
|
||||
"enableWind": "Ativar vento",
|
||||
"windStrength": "força do vento",
|
||||
"enableForceField": "Ativar campo de força",
|
||||
"centerX": "Centro X",
|
||||
"centerY": "Centro Y",
|
||||
"forceStrength": "Força do campo de força",
|
||||
"forceRadius": "raio do campo de força",
|
||||
"falloffMode": "modo de decaimento",
|
||||
"constant": "Constante (a velocidade não muda dentro da faixa)",
|
||||
"linearFalloff": "Queda linear (a borda é 0)",
|
||||
"inverseFalloff": "Inversamente proporcional à distância (mais forte no centro)",
|
||||
"forceHint": "Os números positivos se atraem para o centro, os números negativos se repelem para fora e o círculo do campo de força pode ser arrastado dentro da tela.",
|
||||
"showShape": "mostrar forma",
|
||||
"enableVortex": "Ativar vórtice",
|
||||
"vortexHint": "Números positivos no sentido anti-horário · Números negativos no sentido horário",
|
||||
"enableAttraction": "Ativar atração",
|
||||
"attractionX": "Ponto de adsorção X",
|
||||
"attractionY": "Ponto de adsorção Y",
|
||||
"attractionRadius": "raio de adsorção",
|
||||
"attractionDuration": "Tempo de adsorção",
|
||||
"delay": "Tempo de atraso",
|
||||
"delayMode": "Modo de atraso",
|
||||
"globalTime": "tempo unificado",
|
||||
"particleLife": "vida de partícula única",
|
||||
"attractionPath": "Método de adsorção",
|
||||
"straight": "linha reta",
|
||||
"attractionHint": "Após o atraso, a adsorção começa a partir da posição atual. Quando atingir a faixa vermelha, ele morrerá. O círculo de adsorção pode ser arrastado dentro da tela.",
|
||||
"enableTrail": "Ativar rastro",
|
||||
"trailImages": "Trailing de fotos independentes",
|
||||
"addTrailImage": "Adicionar recursos de imagem finais",
|
||||
"trailRotation": "girar",
|
||||
"trailBones": "Número de ossos à direita",
|
||||
"trailRatio": "Proporção final (%)",
|
||||
"trailLength": "Comprimento final",
|
||||
"randomRange": "intervalo aleatório",
|
||||
"lengthRatio": "Proporção de comprimento (%)",
|
||||
"lengthMin": "Comprimento mínimo (%)",
|
||||
"lengthMax": "Comprimento máximo (%)",
|
||||
"trailWidth": "Largura final",
|
||||
"widthRatio": "proporção de largura (%)",
|
||||
"widthMin": "Largura mínima (%)",
|
||||
"widthMax": "Largura máxima (%)",
|
||||
"widthScale": "escala de largura",
|
||||
"followParticle": "siga partículas",
|
||||
"lifeLengthCurve": "curva de comprimento do ciclo de vida",
|
||||
"shapeCurve": "Curva de forma (cabeça → largura da cauda)",
|
||||
"colorMode": "modo de cor",
|
||||
"blendMode": "modo de mesclagem",
|
||||
"fixedColor": "cor fixa",
|
||||
"alphaMode": "modo de transparência",
|
||||
"opacity": "transparência",
|
||||
"gridRows": "Número de linhas da grade",
|
||||
"gridCols": "Número de colunas da grade",
|
||||
"trailHint": "Cada partícula gera um conjunto de ossos irmãos em proporção aos recursos; o comprimento e a largura aleatórios são determinados quando a partícula nasce, e a mesma semente pode ser reproduzida de forma estável",
|
||||
"enableFollow": "Ativar seguimento do emissor",
|
||||
"followMode": "modo de acompanhamento",
|
||||
"noFollow": "nenhum",
|
||||
"followPath": "siga o caminho",
|
||||
"selectedBone": "ossos selecionados",
|
||||
"emitterAngleMode": "Modo de ângulo do transmissor",
|
||||
"fixedAngle": "ângulo fixo",
|
||||
"followMoveDirection": "Siga a direção do movimento",
|
||||
"moveProgressCurve": "Curva de progresso do movimento (0→1)",
|
||||
"moveDuration": "Duração(ões) do movimento",
|
||||
"followSpace": "siga o espaço",
|
||||
"localSpace": "Espaço local (movimento GEN)",
|
||||
"worldSpace": "Espaço mundial (movimento do ponto de geração de partículas)",
|
||||
"moveDirection": "direção em movimento",
|
||||
"forward": "Avançar (ponto inicial → ponto final)",
|
||||
"reverse": "Reverso (ponto final → ponto inicial)",
|
||||
"followOffset": "Ponto inicial do deslocamento (0-1)",
|
||||
"followSpaceHint": "O espaço local move todo o emissor; o espaço mundial apenas move o ponto de geração de novas partículas, e as partículas nascidas permanecem na posição mundial.",
|
||||
"followTarget": "Siga o alvo:",
|
||||
"noValidBone": "Nenhum osso válido foi vinculado ainda. Selecione primeiro o osso na árvore hierárquica Spine.",
|
||||
"rebind": "religar",
|
||||
"bind": "vinculativo",
|
||||
"selectedBoneLabel": "Osso atualmente selecionado:",
|
||||
"boneLocalSpace": "Espaço local (move-se com ossos)",
|
||||
"boneWorldSpace": "Espaço mundial (as partículas mantêm a posição após serem geradas)",
|
||||
"offsetX": "Deslocamento de deslocamento X",
|
||||
"offsetY": "Deslocamento de deslocamento Y",
|
||||
"rotationOffset": "Deslocamento de rotação",
|
||||
"scaleOffsetX": "Deslocamento de escala X",
|
||||
"scaleOffsetY": "Deslocamento de escala Y",
|
||||
"boneFollowHint": "O emissor segue apenas a posição do osso Spine selecionado e não herda a rotação ou escala de Spine; a transformação de partículas usa os próprios parâmetros e deslocamento superior do sistema de partículas.",
|
||||
"enableCollision": "Ativar colisão",
|
||||
"collisionObjects": "Objetos de colisão participantes",
|
||||
"colliderDisabled": "{name} (colisores desativados)",
|
||||
"clearCollider": "Limpar objeto de colisão {name}",
|
||||
"addCollider": "Adicionar objetos de colisão de cena",
|
||||
"noAvailableColliders": "Nenhum objeto de colisão para adicionar",
|
||||
"noCollidersSelected": "Nenhum objeto de colisão é selecionado e as partículas atuais não colidirão.",
|
||||
"available": "Disponível",
|
||||
"disabled": "Desabilitado",
|
||||
"collisionHint": "Somente objetos de colisão de cena adicionados e habilitados participarão da colisão do sistema de partículas atual.",
|
||||
"enableSubEmitter": "Ativar subemissores",
|
||||
"triggerTiming": "Escolha o tempo de disparo",
|
||||
"birth": "nascer",
|
||||
"death": "morrer",
|
||||
"collision": "colisão",
|
||||
"chooseTarget": "Selecione o sistema de partículas alvo",
|
||||
"noTarget": "Nenhum (sistema de partículas)",
|
||||
"deleteSubEmitter": "Exclua este subemissor",
|
||||
"probability": "probabilidade de emissão",
|
||||
"collisionLimit": "Limite de colisão",
|
||||
"inherit": "herdar",
|
||||
"colorInheritMode": "Método de herança de cores",
|
||||
"add": "Adicionar",
|
||||
"replace": "cobrir",
|
||||
"addSubEmitter": "+ Adicionado novo subemissor",
|
||||
"inheritNone": "Nenhum (padrão)",
|
||||
"inheritAll": "Todas as propriedades",
|
||||
"inheritColor": "cor",
|
||||
"inheritScale": "tamanho",
|
||||
"inheritRotation": "girar",
|
||||
"inheritLife": "vida útil"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Propriedades do Spine",
|
||||
"name": "Nome Spine",
|
||||
"xPosition": "Posição X",
|
||||
"yPosition": "Posição Y",
|
||||
"rotation": "Rotação",
|
||||
"scaleX": "Escala X",
|
||||
"scaleY": "Escala Y",
|
||||
"startTime": "Tempo inicial",
|
||||
"resources": "Recursos Spine",
|
||||
"chooseFolder": "Selecione a pasta e carregue",
|
||||
"folderHint": "Leia JSON/SKEL, Atlas e todas as texturas em uma pasta de uma só vez; os recursos ainda podem ser substituídos individualmente abaixo.",
|
||||
"choose": "escolher",
|
||||
"chooseMultiple": "Selecione (múltiplas escolhas)",
|
||||
"loading": "carregando…",
|
||||
"load": "↧ Carregar",
|
||||
"clear": "Claro",
|
||||
"supportNote": "Suporte Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Carregar sob demanda quando a versão correspondente estiver em execução · Offline local",
|
||||
"currentResource": "Recurso atual {version}",
|
||||
"animations": "Animações Spine",
|
||||
"noAnimations": "Nenhuma animação disponível",
|
||||
"timelineAnimation": "Reproduzir animação na linha do tempo",
|
||||
"no": "nenhum",
|
||||
"hierarchy": "Hierarquia",
|
||||
"clearBoneTitle": "Clique para limpar a seleção de osso",
|
||||
"noBoneTitle": "Nenhum osso está selecionado no momento",
|
||||
"clearBone": "Limpar ossos selecionados: {name}",
|
||||
"currentBone": "Esqueleto atual:",
|
||||
"clearSlotTitle": "Clique para limpar a seleção de slot",
|
||||
"noSlotTitle": "Nenhum slot está selecionado no momento",
|
||||
"clearSlot": "Limpar slot selecionado: {name}",
|
||||
"currentSlot": "Slot atual:",
|
||||
"notSelected": "Não selecionado",
|
||||
"expandAll": "Expandir tudo",
|
||||
"collapseAll": "Recolher tudo",
|
||||
"bones": "esqueleto",
|
||||
"slots": "slot",
|
||||
"notLoaded": "Não carregado Spine",
|
||||
"searchBones": "Procure por ossos",
|
||||
"searchBonesPlaceholder": "Pesquisar nome do osso…",
|
||||
"clearSearch": "Limpar pesquisa",
|
||||
"clearBoneSearch": "Limpar pesquisa óssea",
|
||||
"noMatchingBones": "Nenhum osso correspondente encontrado",
|
||||
"expandChildren": "Expandir ossos infantis",
|
||||
"collapseChildren": "Recolher ossos infantis",
|
||||
"notLoadedSlots": "Slot Spine não carregado",
|
||||
"searchSlots": "Espaços de pesquisa",
|
||||
"searchSlotsPlaceholder": "Pesquise o nome do slot ou acessório…",
|
||||
"clearSlotSearch": "Limpar pesquisa de slots",
|
||||
"noMatchingSlots": "Nenhum slot correspondente encontrado",
|
||||
"slotTitle": "{name} (esqueleto: {bone}, anexo: {attachment})",
|
||||
"empty": "nulo",
|
||||
"textureSummary": "{count} Zhang: {names}",
|
||||
"textureImages": "Imagens de textura",
|
||||
"missingFolderAssets": "A pasta selecionada está faltando: {missing}",
|
||||
"chooseAssets": "Selecione os dados Spine, Atlas e todas as imagens de textura em sequência"
|
||||
},
|
||||
"help": {
|
||||
"title": "Ajuda",
|
||||
"subtitle": "Início rápido, desde a criação de partículas até o salvamento e exportação",
|
||||
"close": "Fechar instruções",
|
||||
"closeShort": "Fechar (Esc)",
|
||||
"quickStart": "início rápido",
|
||||
"stepCreate": "Crie um objeto: Use +Particles / +Collision / +Path / +Spine em \"Scene Object\" à esquerda para adicionar um objeto de cena.",
|
||||
"stepEdit": "Editar partículas: Selecione o sistema de partículas e ajuste \"Modo de emissão → Forma do emissor → Propriedades da partícula → Aparência e recursos → Modificador\".",
|
||||
"stepPreview": "Confira o efeito: A linha do tempo inferior pode ser reproduzida, pausada, quadro a quadro ou arrastada; será recalculado automaticamente após a modificação dos parâmetros.",
|
||||
"stepExport": "Salvar e exportar: Use “Salvar configuração” para reter o projeto; \"Exportar Spine Json/pacote de imagens/pacote .spine\" para gerar o produto acabado.",
|
||||
"quickNote": "\"Reset\" no lado direito do título de cada grupo de módulos pode restaurar os parâmetros padrão do grupo; as configurações do sistema serão salvas automaticamente no navegador atual.",
|
||||
"commonOps": "Ações comuns",
|
||||
"eye": "olhos pequenos",
|
||||
"eyeDesc": "Mostrar/ocultar objetos individualmente; sistemas de partículas ocultas não são exportados.",
|
||||
"copyDesc": "Copia completamente o objeto atualmente selecionado para facilitar a comparação de diferentes parâmetros.",
|
||||
"backgroundDesc": "Carregue a imagem de referência e ajuste a posição e a transparência apenas para visualização da tela.",
|
||||
"settingsDesc": "Layout da interface de gerenciamento, display auxiliar, balança, etc. são salvos automaticamente no navegador.",
|
||||
"undoDesc": "Ctrl+Z retrai um passo; o número máximo de etapas pode ser ajustado nas configurações do sistema.",
|
||||
"spineBoneDesc": "Pesquise e selecione um osso na árvore hierárquica, que pode ser usado pelo emissor de partículas a seguir.",
|
||||
"shortcuts": "Atalhos",
|
||||
"undoShortcut": "Desfazer a etapa anterior",
|
||||
"saveShortcut": "Salvar configuração",
|
||||
"panShortcut": "Arrastar tela",
|
||||
"translateShortcut": "Ferramenta de deslocamento",
|
||||
"rotateShortcut": "Ferramenta rotativa",
|
||||
"scaleShortcut": "Ferramenta Zoom",
|
||||
"playShortcut": "reproduzir/pausar",
|
||||
"startShortcut": "Volte para o primeiro quadro",
|
||||
"shortcutNote": "Q/W/E/R precisa clicar primeiro na tela; quando o cursor estiver na caixa de entrada, a tecla de atalho de tecla única não será acionada.",
|
||||
"modules": "Guia dos módulos",
|
||||
"configTitle": "Gerenciamento de configuração",
|
||||
"saveConfigDesc": "Salve todos os objetos e parâmetros da cena atual como arquivos de projeto JSON (Ctrl+S também é suportado).",
|
||||
"loadConfigDesc": "Selecione o arquivo de configuração local para restaurar o projeto completo.",
|
||||
"presetDesc": "Selecione uma aplicação rápida padrão no menu suspenso; clique no menu suspenso para atualizar a lista.",
|
||||
"configScope": "escopo",
|
||||
"configScopeDesc": "A configuração contém objetos e parâmetros; as configurações da interface e do sistema são armazenadas separadamente no navegador.",
|
||||
"sceneTitle": "objeto de cena",
|
||||
"particleDesc": "objeto central. Posição, deslocamento, rotação, escala e semente aleatória podem ser definidos; a mesma semente pode reproduzir o mesmo efeito.",
|
||||
"colliderDesc": "Círculo/elipse/retângulo/polígono/personalizado, suporta salto físico, pausa, destruição e movimento ao longo do caminho.",
|
||||
"pathDesc": "Caminho Bézier com suporte para pontos de ancoragem, alças de controle, fechamento, cor e formas predefinidas.",
|
||||
"spineDesc": "Carregue dados Spine, Atlas e texturas, navegue em ossos e slots e siga os emissores.",
|
||||
"sceneCommonDesc": "Os objetos podem ser revelados e copiados de forma independente; sistemas de partículas ocultas não são exportados.",
|
||||
"emissionDesc": "Disparo contínuo, explosão, atraso e duração de loop de três estágios de início/loop/fim.",
|
||||
"burstDesc": "Emite um número especificado de partículas de uma só vez.",
|
||||
"delayDesc": "O tempo de espera antes do início da emissão, correspondente à extremidade esquerda da barra de partículas.",
|
||||
"loopNote": "A persistência de loop não oferece suporte ao seguimento de ossos e caminhos, e as configurações a seguir serão restauradas ao alternar.",
|
||||
"shapeDesc": "Área de geração de ponto, círculo, retângulo, cone ou caminho. Círculos/cones suportam raios internos e externos, e retângulos suportam largura e altura internas e externas.",
|
||||
"angleDesc": "Fixo, aleatório, radial, caminho normal ou caminho tangente.",
|
||||
"initialDesc": "Ciclo de vida, velocidade, escala e suporte de rotação fixo, aleatório, curva e rotação podem seguir a direção de lançamento.",
|
||||
"overLifeDesc": "A ampliação da velocidade, a ampliação do zoom e a velocidade de rotação podem ser controladas pela curva do ciclo de vida.",
|
||||
"alphaDesc": "Suportes de transparência fixos ou curvos; o modo de curva pode seguir derivado, linear ou Bezier.",
|
||||
"imageDesc": "Imagem única ou quadro de sequência, randomização de peso de várias imagens, ponto de articulação, cor, modo de mesclagem e transparência independente.",
|
||||
"sequenceDesc": "Os métodos de reprodução incluem ocultação única, congelamento único, loop direto e loop reverso.",
|
||||
"noiseDesc": "Gere traços de jitter e controle a intensidade, o alcance e a velocidade.",
|
||||
"gravityDesc": "Curvas de gravidade, vento e intensidade do ciclo de vida.",
|
||||
"forceDesc": "Campos de força globais, vórtices, adsorção e colisões.",
|
||||
"trailDesc": "Ativos independentes, contagem de ossos, curvas de comprimento, largura, forma, cor e transparência.",
|
||||
"followDesc": "O emissor pode seguir um caminho ou osso Spine.",
|
||||
"collisionDesc": "Selecione objetos de colisão de cena e respostas de colisão de partículas.",
|
||||
"exportDesc": "Defina o caminho da imagem, versão Spine, curva de quadro-chave, FPS, quadros inteiros, conjunto de ossos e animação vazia.",
|
||||
"exportButtonsDesc": "Você pode exportar Spine JSON, imagens ZIP ou gerar projetos .spine por meio do conector.",
|
||||
"connectorTitle": "Instruções de uso do conector Spine",
|
||||
"connectorIntro": "O conector entrega o JSON e as imagens geradas pela página da web ao Spine que foi instalado e ativado na máquina local e os converte em projetos .spine editáveis.",
|
||||
"prerequisite": "carregamento antecipado",
|
||||
"prerequisiteDesc": "O computador tem Spine instalado e ativado e o conector de desktop foi iniciado.",
|
||||
"download": "download",
|
||||
"webSide": "página da Internet",
|
||||
"webSideDesc": "Depois que \"Conector disponível · Spine está pronto\" for exibido, clique em \"Exportar pacote .spine\".",
|
||||
"authorization": "primeira autorização",
|
||||
"authorizationDesc": "A primeira conexão precisa verificar a origem do site e permitir uma vez; esta máquina salva a lista branca de autorização.",
|
||||
"pathSetup": "Configurações de caminho",
|
||||
"pathSetupDesc": "O conector detectará automaticamente Spine; se não puder ser encontrado, você poderá especificar manualmente o caminho do aplicativo.",
|
||||
"downloadResult": "Baixar resultados",
|
||||
"downloadResultDesc": "Obtenha o pacote ZIP, que contém o projeto .spine e o diretório de imagem.",
|
||||
"version": "Versão",
|
||||
"versionDesc": "O conector corresponde automaticamente a Spine 3.8~4.3 de acordo com a versão JSON.",
|
||||
"security": "Segurança",
|
||||
"securityDesc": "Ouça apenas o endereço local, a autorização é salva no conector e os arquivos temporários são limpos após a conversão.",
|
||||
"differenceTitle": "Qual é a diferença entre configurar e exportar?",
|
||||
"differenceDesc": "“Salvar configuração” salva todos os objetos e parâmetros que podem ser editados; \"Exportar Spine Json\" exporta apenas o sistema de partículas exibido e transforma os resultados de colisão, seguimento, rastreamento e subemissor em dados de animação independentes."
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "Depois de entrar no modo de loop contínuo, as configurações seguintes de partículas serão inválidas e restauradas para o valor padrão. Continuar?",
|
||||
"confirmLoopFollowExit": "Depois de sair do modo de persistência de loop, as configurações a seguir serão inválidas e restauradas para seus valores padrão. Continuar?",
|
||||
"invalidJson": "O arquivo de configuração não é válido JSON",
|
||||
"invalidConfigFormat": "Não é o perfil do editor SpineParticle",
|
||||
"unsupportedConfigVersion": "Versão de configuração ainda não suportada: {version}",
|
||||
"missingScene": "O arquivo de configuração não contém dados completos da cena",
|
||||
"missingEmbeddedSpine": "A configuração não contém recursos originais Spine reutilizáveis",
|
||||
"chooseJsonConfig": "Selecione um arquivo de configuração .json",
|
||||
"settingsInvalidJson": "O cache de configurações do sistema não é válido JSON",
|
||||
"settingsFormat": "Não cache de configurações do sistema do Editor SpineParticle",
|
||||
"settingsVersion": "A versão de configuração do sistema ainda não é suportada: {version}",
|
||||
"settingsMissing": "Faltam configurações no cache de configurações do sistema",
|
||||
"noExportableImages": "Não há imagens exportáveis para o sistema de partículas atualmente visível",
|
||||
"invalidZipPath": "ZIP Caminho de arquivo inválido",
|
||||
"spineFileType": "Os dados Spine suportam apenas .json ou .skel",
|
||||
"atlasFileType": "Arquivos Atlas suportam apenas .atlas",
|
||||
"chooseTexture": "Selecione pelo menos uma imagem de textura",
|
||||
"binaryParseFailed": "Falha na análise binária Spine (4.3: {v43}; versão antiga: {v42})",
|
||||
"invalidSpineJson": "Spine JSON Formato de arquivo inválido",
|
||||
"unsupportedSpineJsonVersion": "A versão Spine JSON não é suportada, apenas {versions} é compatível",
|
||||
"unsupportedSpineDataVersion": "A versão de dados Spine não é suportada, apenas {versions} é compatível",
|
||||
"embeddedReadFailed": "Não é possível ler o arquivo Spine incorporado: {name}",
|
||||
"missingImageWarning": "A imagem \"{file}\" está ausente ou possui dimensões ilegíveis, caminho preservado.",
|
||||
"missingTrailImageWarning": "A imagem final \"{file}\" está faltando e o caminho foi preservado.",
|
||||
"emptyCacheWarning": "Nenhum framebuffer disponível para '{name}'.",
|
||||
"readExportImageFailed": "Não é possível ler a imagem exportada: {name}",
|
||||
"connectorOffline": "Conector Spine local não detectado, ative o conector primeiro",
|
||||
"connectorHttpError": "O conector Spine retorna erro: HTTP {status}",
|
||||
"invalidTrailUV": "Dados UV inválidos para malha final '{name}'",
|
||||
"missingTrailVertices": "A malha final '{name}' está sem dados de vértice",
|
||||
"trailIndexOutOfRange": "Índice triangular da malha final '{name}' fora dos limites",
|
||||
"invalidTrailHull": "O número do contorno externo da malha final \"{name}\" é inválido",
|
||||
"trailHullIndexOutOfRange": "O índice da borda do contorno externo da malha final \"{name}\" está fora dos limites",
|
||||
"invalidInfluenceCount": "A malha final '{name}' contém um número inválido de pesos ósseos",
|
||||
"missingBoneReference": "A malha final '{name}' faz referência a um osso inexistente",
|
||||
"invalidWeight": "A grade final \"{name}\" contém dados de peso inválidos",
|
||||
"weightSum": "Os pesos dos vértices da malha final '{name}' não somam 1",
|
||||
"vertexCountMismatch": "A malha final '{name}' tem um número inconsistente de vértices e UVs",
|
||||
"invalidInherit": "O valor herdado '{inherit}' para o osso '{name}' não está em conformidade com o formato Spine {version} JSON",
|
||||
"trailBoneParent": "O osso final \"{name}\" deve ser pendurado diretamente sob o osso do sistema de partículas e não pode formar uma cadeia óssea.",
|
||||
"trailSlotEmpty": "O slot de cauda ponderado \"{name}\" não pode usar anexos vazios. A escala óssea correspondente deve ser definida como 0 na fase de não aparecimento ou morte.",
|
||||
"spine38Version": "Spine 3.8 O ID da versão exportada deve ser 3.8",
|
||||
"spine38Inherit": "Spine 3.8 Bone \"{name}\" deve usar transformação e não pode usar herança",
|
||||
"spine38SlotColor": "A linha do tempo de cores do slot Spine 3.8 deve usar color/twoColor",
|
||||
"spine38AttachmentName": "Spine 3.8 O quadro oculto da linha do tempo do anexo deve ter um nome escrito explicitamente: null",
|
||||
"spine38RotationAngle": "Spine 3.8 Você deve usar o ângulo para girar o eixo do tempo",
|
||||
"spine38Curve": "Spine 3.8 não suporta formato de curva de matriz 4.x",
|
||||
"unsupportedExportVersion": "A versão exportada não é suportada, apenas Spine {versions} é compatível",
|
||||
"exportVersionMismatch": "Versão de exportação inconsistente: definida como Spine {expected}, JSON marcada como Spine {actual}",
|
||||
"exportMissingBones": "O resultado da exportação está faltando ossos",
|
||||
"missingAtlasTexture": "A textura referenciada por Atlas não está selecionada: {name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "Idioma",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,14 @@
|
||||
"language": {
|
||||
"label": "语言",
|
||||
"zhCN": "中文",
|
||||
"en": "English"
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
},
|
||||
"common": {
|
||||
"close": "关闭",
|
||||
|
||||
@@ -0,0 +1,853 @@
|
||||
{
|
||||
"app": {
|
||||
"resizeTimeline": "拖曳調整時間軸高度",
|
||||
"systems": "系統",
|
||||
"particlesBones": "粒子(骨骼)",
|
||||
"rootBone": "根骨骼",
|
||||
"hudTip": "滾輪縮放 · 左鍵拖動畫布",
|
||||
"title": "Spine粒子編輯器-Yeomai"
|
||||
},
|
||||
"common": {
|
||||
"close": "關閉",
|
||||
"reset": "重設",
|
||||
"add": "新增",
|
||||
"remove": "移除",
|
||||
"delete": "刪除",
|
||||
"clear": "清除",
|
||||
"cancel": "取消",
|
||||
"confirm": "確定",
|
||||
"none": "無",
|
||||
"enabled": "啟用",
|
||||
"disabled": "停用",
|
||||
"fixed": "固定",
|
||||
"random": "隨機",
|
||||
"curve": "曲線",
|
||||
"followExport": "跟隨匯出",
|
||||
"linear": "線性",
|
||||
"bezier": "貝茲",
|
||||
"above": "上方",
|
||||
"below": "下方",
|
||||
"left": "左側",
|
||||
"right": "右側",
|
||||
"seconds": "秒",
|
||||
"frames": "幀"
|
||||
},
|
||||
"toolbar": {
|
||||
"settings": "系統設定",
|
||||
"undo": "復原上一步 (Ctrl+Z)",
|
||||
"pan": "拖曳畫布 (Q)",
|
||||
"translate": "位移 (W)",
|
||||
"rotate": "旋轉 (E)",
|
||||
"scale": "縮放 (R)",
|
||||
"zoomIn": "放大",
|
||||
"zoomOut": "縮小",
|
||||
"fitView": "適合畫布",
|
||||
"toggleGrid": "切換網格",
|
||||
"resetView": "重設視圖",
|
||||
"background": "背景圖",
|
||||
"backgroundSettings": "背景圖顯示設定",
|
||||
"changeBackground": "更換圖像",
|
||||
"uploadBackground": "上傳圖像",
|
||||
"clearBackground": "清除背景",
|
||||
"noBackground": "未上傳圖像",
|
||||
"backgroundX": "背景圖 X 偏移",
|
||||
"backgroundY": "背景圖 Y 偏移",
|
||||
"backgroundOpacity": "背景圖透明度",
|
||||
"opacity": "透明度",
|
||||
"help": "使用說明",
|
||||
"openHelp": "查看使用說明"
|
||||
},
|
||||
"settings": {
|
||||
"title": "系統設定",
|
||||
"layout": "介面佈局",
|
||||
"parameterPanelPosition": "參數面板位置",
|
||||
"panelOnRight": "參數面板顯示在右側",
|
||||
"history": "操作歷史",
|
||||
"maxUndo": "最大撤回步數",
|
||||
"canvasGuides": "畫布輔助顯示",
|
||||
"emitter": "發射點",
|
||||
"bones": "骨骼連線",
|
||||
"bonePointSize": "骨骼點繪製大小",
|
||||
"boneAxisSize": "座標軸繪製大小",
|
||||
"skinMesh": "蒙皮網格",
|
||||
"enableTicks": "啟用刻度",
|
||||
"tickFontSize": "刻度文字大小",
|
||||
"tickWidth": "刻度線粗細",
|
||||
"axisColor": "座標軸顏色",
|
||||
"showAxisLabels": "顯示刻度數值",
|
||||
"cacheNote": "整個系統設定會自動儲存到目前瀏覽器"
|
||||
},
|
||||
"config": {
|
||||
"title": "設定管理",
|
||||
"save": "儲存設定",
|
||||
"saveTitle": "儲存全部編輯器配置 (Ctrl+S)",
|
||||
"load": "載入設定",
|
||||
"loadTitle": "載入本機編輯器配置",
|
||||
"presets": "預設列表",
|
||||
"selectPreset": "選擇預設",
|
||||
"noPresets": "無預設檔案",
|
||||
"saved": "配置已儲存至本機",
|
||||
"loading": "正在加載配置…",
|
||||
"loaded": "已載入:{name}",
|
||||
"presetLoading": "正在載入預設…",
|
||||
"presetLoaded": "已載入預設:{name}",
|
||||
"presetNamingError": "{message},請檢查預設檔命名",
|
||||
"presetTransferTitle": "載入預設",
|
||||
"presetDownloading": "正在下載 {file}…",
|
||||
"presetParsing": "正在解析預設配置…",
|
||||
"presetRestoring": "正在解析並恢復預設資源…",
|
||||
"presetComplete": "預設載入完成",
|
||||
"presetListError": "無法讀取預設列表",
|
||||
"presetReadError": "無法讀取預設:{file}"
|
||||
},
|
||||
"presets": {
|
||||
"particleSweep": "1.粒子掃過",
|
||||
"barBlocks": "2.長條方塊",
|
||||
"forceTrail": "3.力場拖尾",
|
||||
"lightningSequence": "4.雷電序列幀",
|
||||
"texturePivot": "5.貼圖軸點",
|
||||
"subEmitter": "6.子發射器"
|
||||
},
|
||||
"curve": {
|
||||
"bezierHint": "拖曳方形手把調整弧度 · 雙擊空白新建 · 雙擊節點刪除",
|
||||
"linearHint": "雙擊空白新建 · 雙擊節點刪除 · 拖曳節點調整",
|
||||
"resetTitle": "恢復預設曲線"
|
||||
},
|
||||
"gradient": {
|
||||
"addTitle": "雙擊色帶添加色標",
|
||||
"color": "色標顏色",
|
||||
"colorValue": "色標顏色值",
|
||||
"position": "色標位置",
|
||||
"addMiddle": "在中間新增顏色",
|
||||
"delete": "刪除目前色標",
|
||||
"hint": "雙擊色帶新增 · 拖曳色標調整位置 · 雙擊色標刪除"
|
||||
},
|
||||
"attributeControl": {
|
||||
"angleOffset": "角度偏移",
|
||||
"value": "數值",
|
||||
"lower": "下限",
|
||||
"upper": "上限",
|
||||
"rangeLower": "範圍下限",
|
||||
"rangeUpper": "範圍上限",
|
||||
"curveInput": "曲線輸入 →",
|
||||
"direction": "發射方向"
|
||||
},
|
||||
"pivot": {
|
||||
"title": "貼圖軸點",
|
||||
"zoomOut": "縮小",
|
||||
"zoomIn": "放大",
|
||||
"expand": "放大到全螢幕操作",
|
||||
"interaction": "左鍵點選/拖曳設定軸點 · 右鍵拖曳動畫布 · 滾輪縮放",
|
||||
"previewAlt": "軸點預覽",
|
||||
"noImage": "未選擇圖片",
|
||||
"resetCenter": "復位中 (50%, 50%)",
|
||||
"coordinates": "軸點座標(%)",
|
||||
"rotationTest": "軸心旋轉測試",
|
||||
"static": "靜止",
|
||||
"spin": "自轉",
|
||||
"swing": "擺動",
|
||||
"rotationAlt": "旋轉測試",
|
||||
"topLeft": "左上",
|
||||
"top": "正上",
|
||||
"topRight": "右上",
|
||||
"left": "正左",
|
||||
"center": "正中",
|
||||
"right": "正右",
|
||||
"bottomLeft": "左下",
|
||||
"bottom": "正下·底部",
|
||||
"bottomRight": "右下"
|
||||
},
|
||||
"image": {
|
||||
"chooseSequence": "選擇序列影格圖片",
|
||||
"chooseLocal": "選擇本地圖片",
|
||||
"subfolder": "子資料夾",
|
||||
"name": "名稱",
|
||||
"restore": "恢復 {name}",
|
||||
"deleteResource": "刪除圖片資源",
|
||||
"imageMode": "圖片模式",
|
||||
"fixed": "固定",
|
||||
"sequence": "序列幀",
|
||||
"playbackMode": "播放模式",
|
||||
"onceHide": "單次-尾幀消失",
|
||||
"onceHold": "單次-尾幀固定",
|
||||
"loopForward": "正向循環",
|
||||
"loopReverse": "反向循環",
|
||||
"playbackFps": "播放影格率",
|
||||
"chooseSequenceMulti": "選擇序列幀(多選)",
|
||||
"weight": "權重 %",
|
||||
"unlockWeight": "解除佔比鎖定",
|
||||
"lockWeight": "鎖定目前佔比",
|
||||
"pivot": "貼圖軸點",
|
||||
"collapsePivot": "收起軸點調整",
|
||||
"expandPivot": "展開軸點調整",
|
||||
"pivotModal": "貼圖旋轉軸點大圖精修",
|
||||
"pivotModalDesc": "在下方貼圖上任意點擊或拖拽,精確設定粒子的旋轉/擺動中心",
|
||||
"pivotZoomHint": "支援 100% ~ 400% 放大,精確對準尖端或根部:",
|
||||
"confirmPivot": "確定並保存軸點",
|
||||
"noSequence": "未選擇序列幀",
|
||||
"firstFrame": "第 1 幀",
|
||||
"firstImage": "第一張圖片",
|
||||
"lastImage": "最後一張圖片",
|
||||
"pivotOn": "已開啟:X {x}% | Y {y}%",
|
||||
"pivotOff": "未開啟,預設圍繞圖片正中心 (50%, 50%)",
|
||||
"pivotCustom": "軸點已自訂:X {x}% | Y {y}%",
|
||||
"frameCountOne": "1 幀 · {name}",
|
||||
"frameCountMany": "{count} 幀 · {first} → {last}",
|
||||
"sequenceSelected": "已選擇 {count} 幀,按 {first}-{last} 順序播放"
|
||||
},
|
||||
"timeline": {
|
||||
"play": "播放 (D)",
|
||||
"pause": "暫停 (D)",
|
||||
"toStart": "回到第一幀 (S)",
|
||||
"previous": "前一幀",
|
||||
"next": "後一幀",
|
||||
"toEnd": "移動到最後一幀",
|
||||
"continuousLoop": "持續循環播放",
|
||||
"abLoop": "獨立 A/B 區間循環",
|
||||
"abLoopShort": "AB 循環",
|
||||
"abRange": "AB 循環區間",
|
||||
"playbackStart": "自訂播放起始幀",
|
||||
"playbackEnd": "自訂播放結束幀",
|
||||
"startFrame": "播放起始影格",
|
||||
"endFrame": "播放結束影格",
|
||||
"frame": "影格",
|
||||
"emission": "持續發射",
|
||||
"particleLife": "粒子存在",
|
||||
"spineAnimation": "Spine 動畫",
|
||||
"ownerAnimation": "所屬動畫",
|
||||
"setOwnerAnimation": "設定目前粒子系統所屬的動畫",
|
||||
"chooseOwnerAnimation": "選擇所屬動畫",
|
||||
"animationName": "動畫名稱",
|
||||
"renameAnimation": "重新命名當前動畫",
|
||||
"rename": "重新命名",
|
||||
"newAnimation": "+ 新增",
|
||||
"keepOneAnimation": "至少需要保留一個動畫",
|
||||
"spinePreview": "Spine 預覽動畫",
|
||||
"noSpineAnimation": "無可用 Spine 動畫",
|
||||
"none": "無",
|
||||
"systemName": "系統 {index}",
|
||||
"dragLoopDuration": "拖曳循環段時長",
|
||||
"dragEmissionDuration": "拖曳持續發射時長",
|
||||
"dragSpineStart": "拖曳調整動畫開始時間",
|
||||
"noAnimationData": "暫無可顯示的動畫數據",
|
||||
"animationNameEmpty": "動畫名稱不能為空",
|
||||
"animationNameDuplicate": "動畫名稱不能重複",
|
||||
"animationRenameFailed": "無法修改動畫名稱",
|
||||
"zoomIn": "放大",
|
||||
"zoomOut": "縮小",
|
||||
"zoomFit": "適中",
|
||||
"frameStatus": "幀 {current} / {total}"
|
||||
},
|
||||
"emission": {
|
||||
"title": "發射模式",
|
||||
"reset": "重置發射模式參數",
|
||||
"stream": "持續",
|
||||
"burst": "爆發",
|
||||
"normalStream": "一般持續",
|
||||
"loopStream": "循環持續",
|
||||
"rate": "發射速率",
|
||||
"duration": "發射時長",
|
||||
"loopDuration": "發射時長 (f)",
|
||||
"generateStart": "生成開始循環動畫",
|
||||
"generateEnd": "生成結束循環動畫",
|
||||
"customDuration": "指定時長",
|
||||
"auto": "自動 {frames}f",
|
||||
"startLoopDuration": "開始循環段時長",
|
||||
"endLoopDuration": "結束循環段時長",
|
||||
"loopWarning": "循環持續模式不支援骨骼跟隨和路徑跟隨;進入或退出時會將粒子跟隨設定恢復預設值。",
|
||||
"burstCount": "單次數量",
|
||||
"delay": "延遲時間",
|
||||
"shapeTitle": "發射器形狀",
|
||||
"shapeReset": "重置發射器形狀參數",
|
||||
"shape": "形狀",
|
||||
"point": "點",
|
||||
"circle": "圓形",
|
||||
"rect": "矩形",
|
||||
"cone": "錐形",
|
||||
"path": "路徑",
|
||||
"innerDiameter": "內徑",
|
||||
"outerDiameter": "外徑",
|
||||
"innerRadius": "內半徑",
|
||||
"outerRadius": "外半徑",
|
||||
"coneDirection": "錐形朝向",
|
||||
"coneAngle": "錐形開口角度",
|
||||
"innerWidth": "內寬",
|
||||
"innerHeight": "內高",
|
||||
"outerWidth": "外寬",
|
||||
"outerHeight": "外高",
|
||||
"selectPath": "選擇路徑",
|
||||
"noPath": "無路徑(點發射)",
|
||||
"birthDistribution": "出生分佈",
|
||||
"evenDistribution": "等間距固定分佈",
|
||||
"randomDistribution": "隨機分佈",
|
||||
"emissionAngle": "發射角度",
|
||||
"radial": "徑向(中心向外)",
|
||||
"pathNormal": "垂直於路徑",
|
||||
"pathTangent": "沿路徑方向",
|
||||
"fixedAngle": "固定角度",
|
||||
"baseAngle": "基準角度",
|
||||
"randomRange": "隨機範圍",
|
||||
"showShape": "顯示形狀"
|
||||
},
|
||||
"attributes": {
|
||||
"title": "粒子屬性",
|
||||
"reset": "重置粒子屬性參數",
|
||||
"initialParams": "粒子初始參數",
|
||||
"initialLife": "初始生命週期",
|
||||
"randomSample": "隨機取樣 →",
|
||||
"initialSpeed": "初始速度",
|
||||
"initialScale": "初始縮放",
|
||||
"uniform": "統一",
|
||||
"separateXY": "XY分離",
|
||||
"scaleX": "縮放 X",
|
||||
"scaleY": "縮放 Y",
|
||||
"initialRotation": "初始旋轉",
|
||||
"lifecycleTitle": "粒子生命週期變化參數",
|
||||
"speedOverLife": "生命週期內速度",
|
||||
"speedMultiplier": "速度倍率",
|
||||
"lifeTo": "生命週期 →",
|
||||
"scaleOverLife": "生命週期內縮放",
|
||||
"scaleMultiplier": "縮放倍率",
|
||||
"multiplierX": "倍率 X",
|
||||
"multiplierY": "倍率 Y",
|
||||
"rotationOverLife": "生命週期內旋轉",
|
||||
"rotationSpeed": "旋轉速度"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "外觀與資源",
|
||||
"reset": "重置外觀與資源參數",
|
||||
"opacity": "透明度",
|
||||
"curveMode": "曲線模式",
|
||||
"transparent": "0(透明)",
|
||||
"opaque": "1(不透明)",
|
||||
"renderLayer": "渲染層級(Spine 插槽)",
|
||||
"top": "最上層",
|
||||
"spineSlot": "Spine 插槽",
|
||||
"selectSpine": "請選擇 Spine",
|
||||
"noSpine": "無可用 Spine",
|
||||
"noSlot": "尚未選擇插槽",
|
||||
"reselect": "重新選擇",
|
||||
"selectSlot": "選擇插槽",
|
||||
"searchSlots": "搜尋插槽或附件名稱…",
|
||||
"searchSlotsAria": "搜尋插槽",
|
||||
"emptySlot": "空插槽",
|
||||
"noMatchingSlots": "沒有符合的插槽",
|
||||
"above": "在此插槽圖片之上",
|
||||
"below": "在此插槽圖片之下",
|
||||
"followAttachment": "隨插槽附件顯隱",
|
||||
"previewOnly": "調整顯示層級只會影響編輯器預覽,不影響匯出資料。",
|
||||
"imageResources": "圖片資源",
|
||||
"addImage": "新增圖片資源",
|
||||
"scale": "縮放",
|
||||
"color": "顏色",
|
||||
"fixedColor": "固定色",
|
||||
"randomColor": "隨機顏色",
|
||||
"lifetime": "生命週期",
|
||||
"normal": "正常",
|
||||
"add": "相加",
|
||||
"multiply": "相乘",
|
||||
"screen": "濾色",
|
||||
"fixedColorValue": "固定顏色值",
|
||||
"randomColorHint": "每個粒子出生時從色帶隨機取色,生命週期內保持不變",
|
||||
"independentAlpha": "獨立透明度",
|
||||
"off": "關閉"
|
||||
},
|
||||
"renderLayer": {
|
||||
"slotLabelAbove": "{spine} / {slot} · 圖片之上",
|
||||
"slotLabelBelow": "{spine} / {slot} · 圖片之下",
|
||||
"resolvedAbove": "渲染在 {slot} 圖片之上、其後插槽之下",
|
||||
"resolvedBetween": "渲染在 {previous} 與 {slot} 之間",
|
||||
"warningNoSpine": "沒有已載入的 Spine,粒子暫時顯示在最上層。",
|
||||
"warningNoSelection": "尚未選擇 Spine,粒子暫時顯示在最上層。",
|
||||
"warningMissingSpine": "目標 Spine 不存在,粒子暫時顯示在最上層。",
|
||||
"warningNotReady": "目標 Spine 未就緒,粒子暫時顯示在最上層。",
|
||||
"warningMissingSlot": "目標插槽不存在(資源可能已更換),粒子暫時顯示在最上層。",
|
||||
"warningFirstSlot": "這是第一個插槽,無法顯示在其下方,粒子暫時顯示在最上層。"
|
||||
},
|
||||
"export": {
|
||||
"title": "匯出設定",
|
||||
"reset": "重置導出設定",
|
||||
"imagesPath": "圖片路徑 (Spine Images Path)",
|
||||
"spineVersion": "Spine 版本",
|
||||
"keyframeCurve": "關鍵幀插值曲線",
|
||||
"linear": "線性 (Linear)",
|
||||
"smoothBezier": "平滑貝塞爾 (Smooth Bézier)",
|
||||
"bezierHelp": "平滑貝塞爾會在誤差允許範圍內擬合連續運動;出生、死亡、附件切換和突變仍使用階躍關鍵幀。",
|
||||
"spine38Help": "Spine 3.8 不支援 4.x 的逐通道數組貝塞爾,導出時會轉換為經過容差精簡的分段線性關鍵影格。",
|
||||
"fps": "匯出 FPS",
|
||||
"omitFps": "不寫 fps",
|
||||
"fpsHelp": "修改 FPS 時保持動畫實際秒數不變;「不寫 fps」只省略 Spine 的 fps 元資料。",
|
||||
"integerFrames": "整數幀對齊",
|
||||
"bonePool": "骨骼物件池",
|
||||
"excludeEmpty": "排除無內容動畫",
|
||||
"baking": "正在重新計算並烘焙動畫",
|
||||
"exportJsonTitle": "導出 Spine {version} JSON",
|
||||
"preparing": "正在準備匯出…",
|
||||
"exportJson": "匯出 Spine JSON",
|
||||
"exportImagesTitle": "單獨下載目前粒子系統使用的圖片 ZIP",
|
||||
"organizingImages": "正在整理圖片…",
|
||||
"exportImages": "匯出圖片 ZIP",
|
||||
"generatingProject": "正在生成工程…",
|
||||
"exportSpine": "匯出 .spine 包",
|
||||
"authorize": "授權目前網站",
|
||||
"authorizeTitle": "在本機連接器中授權目前網站",
|
||||
"refreshConnector": "重新偵測連接器",
|
||||
"refresh": "重新整理",
|
||||
"recalculating": "正在重新計算粒子動畫…",
|
||||
"exported": "已匯出 Spine {version}:{systems} 個粒子系統、{animations} 個動畫、{bones} 根骨骼{warning}",
|
||||
"resourceWarning": ";{count} 條資源提示(缺圖仍已匯出)",
|
||||
"timeout": "重新計算動畫超時,請確認頁面仍在運行後重試",
|
||||
"preparingProject": "正在整理圖片並調用本機 Spine…",
|
||||
"projectExported": "已產生 {fileName}:包含 .spine 工程和 {images} 張圖片,Spine {version}",
|
||||
"collectingImages": "正在整理目前粒子系統使用的圖片…",
|
||||
"imagesExported": "已產生 {fileName}:{folder}/ 內包含 {images} 張圖片",
|
||||
"connectorChecking": "正在偵測本地 Spine 連接器…",
|
||||
"connectorOffline": "本機 Spine 連接器未啟動",
|
||||
"spineNotFound": "連接器已啟動,但找不到 Spine",
|
||||
"notAuthorized": "連接器已啟動,但目前網站尚未授權",
|
||||
"connectorReady": "連接器可用 · Spine 已就緒",
|
||||
"connectorBusy": "正在重新計算並產生 Spine 專案",
|
||||
"connectorGenerate": "使用本機 Spine 自動產生 {version} 專案",
|
||||
"unknown": "未知",
|
||||
"checking": "偵測中",
|
||||
"offline": "未啟動",
|
||||
"notFound": "找不到 Spine",
|
||||
"unauthorized": "未授權",
|
||||
"projectTransferTitle": "匯出 Spine 包",
|
||||
"projectTransferDetail": "正在重新計算粒子動畫…",
|
||||
"projectTransferDownload": "Spine 工程包已開始下載",
|
||||
"generatingJson": "正在生成 Spine JSON…",
|
||||
"preparingProjectFiles": "正在整理工程圖片…",
|
||||
"uploading": "正在上傳資料到 Spine 連接器…",
|
||||
"spineProcessing": "Spine 正在轉換工程,請稍候…",
|
||||
"downloadingProject": "正在下載產生的 Spine 工程包…",
|
||||
"handingToBrowser": "正在交給瀏覽器下載…"
|
||||
},
|
||||
"transfer": {
|
||||
"completed": "已完成",
|
||||
"failed": "操作失敗"
|
||||
},
|
||||
"scene": {
|
||||
"title": "場景物件",
|
||||
"addParticle": "加入粒子系統",
|
||||
"addParticleShort": "+粒子",
|
||||
"addCollider": "添加碰撞體",
|
||||
"addColliderShort": "+碰撞",
|
||||
"addPath": "新增路徑",
|
||||
"addPathShort": "+路徑",
|
||||
"addSpine": "加入 Spine",
|
||||
"copyTitle": "複製目前選取的場景對象",
|
||||
"showParticle": "顯示粒子系統",
|
||||
"hideParticle": "隱藏粒子系統",
|
||||
"showCollider": "顯示碰撞體",
|
||||
"hideCollider": "隱藏碰撞體",
|
||||
"showPath": "顯示路徑",
|
||||
"hidePath": "隱藏路徑",
|
||||
"showSpine": "顯示 Spine",
|
||||
"hideSpine": "隱藏 Spine",
|
||||
"particle": "粒子",
|
||||
"subEmitter": "子發射器",
|
||||
"collision": "碰撞",
|
||||
"path": "路徑",
|
||||
"deleteParticle": "刪除粒子系統",
|
||||
"deleteCollider": "刪除碰撞體",
|
||||
"deletePath": "刪除路徑",
|
||||
"deleteSpine": "刪除 Spine",
|
||||
"empty": "場景中暫無對象",
|
||||
"name": "名稱",
|
||||
"positionX": "X 位置",
|
||||
"positionY": "Y 位置",
|
||||
"offsetX": "X 偏移",
|
||||
"offsetY": "Y 偏移",
|
||||
"rotation": "旋轉",
|
||||
"scaleX": "X 縮放",
|
||||
"scaleY": "Y 縮放",
|
||||
"seed": "隨機種子",
|
||||
"seedTitle": "控製粒子系統內全部隨機屬性、資源選擇與修改器隨機取樣",
|
||||
"randomizeSeed": "產生新的全域隨機種子",
|
||||
"seedHint": "控制初始隨機參數、資源選擇和修改器隨機取樣;相同種子可重現相同效果",
|
||||
"colliderTitle": "碰撞體屬性",
|
||||
"colliderName": "碰撞體名稱",
|
||||
"type": "類型",
|
||||
"circle": "圓形",
|
||||
"ellipse": "橢圓",
|
||||
"rect": "長方形",
|
||||
"polygon": "多邊形",
|
||||
"custom": "自訂",
|
||||
"enabled": "啟用",
|
||||
"xPosition": "X 位置",
|
||||
"yPosition": "Y 位置",
|
||||
"scaleXShort": "X 縮放",
|
||||
"scaleYShort": "Y 縮放",
|
||||
"radius": "半徑",
|
||||
"radiusX": "X 半徑",
|
||||
"radiusY": "Y 半徑",
|
||||
"width": "寬度",
|
||||
"height": "高度",
|
||||
"sides": "邊數",
|
||||
"collisionResponse": "碰撞響應",
|
||||
"physics": "物理(彈跳/摩擦)",
|
||||
"pause": "暫停(停止不動)",
|
||||
"destroy": "消失(立即銷毀)",
|
||||
"elasticity": "彈性 (0-1)",
|
||||
"friction": "摩擦 (0-1)",
|
||||
"followPath": "跟隨路徑移動",
|
||||
"targetPath": "目標路徑",
|
||||
"notSelected": "(未選擇)",
|
||||
"moveDuration": "移動時長(秒)",
|
||||
"followDirection": "方向沿路徑",
|
||||
"moveProgressCurve": "移動進度曲線",
|
||||
"moveProgressHelp": "橫軸:即時/移動時長 縱軸:路徑進度(0=起點 → 1=終點)",
|
||||
"pathTitle": "路徑屬性",
|
||||
"pathName": "路徑名稱",
|
||||
"closedPath": "閉合路徑",
|
||||
"pathColor": "路徑顏色",
|
||||
"pathHelp": "操作說明:",
|
||||
"pathHelpItems": "雙擊空白處/曲線:新錨點,雙擊錨點:刪除節點,雙擊第二下按住拖曳:新建並拉出手柄,拖曳錨點移動位置,拖曳手柄調整曲線,Shift+拖曳手柄:兩側完全對稱,A lt+拖曳手把:獨立控制單側,Ctrl+點選/框選:加選節點,Alt+點選/框選:減選節點,Alt+點選空白處:清除全部選取,選取多個節點後可整體拖曳",
|
||||
"applyPresetShape": "應用預設形狀",
|
||||
"choosePreset": "選擇預設...",
|
||||
"square": "方形",
|
||||
"star": "星形",
|
||||
"applyPreset": "應用預設",
|
||||
"clearAnchors": "清空錨點",
|
||||
"panelHint": "使用右上角按鈕建立場景對象"
|
||||
},
|
||||
"modifiers": {
|
||||
"title": "修改器",
|
||||
"reset": "重置修改器參數",
|
||||
"damping": "阻尼",
|
||||
"enableNoise": "開啟移動雜訊",
|
||||
"strength": "強度",
|
||||
"noiseRange": "波動範圍",
|
||||
"noiseSpeed": "時間流速",
|
||||
"noiseHint": "強度控制影響比例 · 波動範圍控制最大偏移 · 時間流速控制變化速度",
|
||||
"enableGravity": "開啟重力",
|
||||
"gravityStrength": "重力強度",
|
||||
"strengthMin": "強度 min",
|
||||
"strengthMax": "強度 max",
|
||||
"direction": "方向",
|
||||
"gravityOverLife": "生命週期內重力",
|
||||
"windOverLife": "生命週期內風力",
|
||||
"axisStrength": "縱軸:強度 0~1",
|
||||
"directionHint": "0° 向右 · -90° 向下 · 負強度會反轉方向",
|
||||
"enableWind": "開啟風力",
|
||||
"windStrength": "風力強度",
|
||||
"enableForceField": "開啟力場",
|
||||
"centerX": "中心 X",
|
||||
"centerY": "中心 Y",
|
||||
"forceStrength": "力場強度",
|
||||
"forceRadius": "力場半徑",
|
||||
"falloffMode": "衰減模式",
|
||||
"constant": "恆定(範圍內力道不變)",
|
||||
"linearFalloff": "線性衰減(邊緣為 0)",
|
||||
"inverseFalloff": "距離反比(中心最強)",
|
||||
"forceHint": "正數吸向中心 · 負數向外排斥 · 可在畫布內拖動力場圓",
|
||||
"showShape": "顯示形狀",
|
||||
"enableVortex": "開啟漩渦",
|
||||
"vortexHint": "正數逆時針 · 負數順時針",
|
||||
"enableAttraction": "開啟吸附",
|
||||
"attractionX": "吸附點 X",
|
||||
"attractionY": "吸附點 Y",
|
||||
"attractionRadius": "吸附半徑",
|
||||
"attractionDuration": "吸附時長",
|
||||
"delay": "延遲時間",
|
||||
"delayMode": "延遲方式",
|
||||
"globalTime": "統一時間",
|
||||
"particleLife": "單粒子生命",
|
||||
"attractionPath": "吸附方式",
|
||||
"straight": "直線",
|
||||
"attractionHint": "延遲後從當前位置開始吸附 · 到達紅色範圍即死亡 · 可在畫布內拖動吸附圓",
|
||||
"enableTrail": "開啟拖尾",
|
||||
"trailImages": "拖尾獨立圖片",
|
||||
"addTrailImage": "增加拖尾圖片資源",
|
||||
"trailRotation": "旋轉",
|
||||
"trailBones": "拖尾骨骼數",
|
||||
"trailRatio": "拖尾比例 (%)",
|
||||
"trailLength": "拖尾長度",
|
||||
"randomRange": "隨機範圍",
|
||||
"lengthRatio": "長度比例 (%)",
|
||||
"lengthMin": "長度最小 (%)",
|
||||
"lengthMax": "長度最大 (%)",
|
||||
"trailWidth": "拖尾寬度",
|
||||
"widthRatio": "寬度比例 (%)",
|
||||
"widthMin": "寬度最小 (%)",
|
||||
"widthMax": "寬度最大 (%)",
|
||||
"widthScale": "寬度縮放",
|
||||
"followParticle": "跟隨粒子",
|
||||
"lifeLengthCurve": "生命週期長度曲線",
|
||||
"shapeCurve": "形狀曲線(首端 → 尾端寬度)",
|
||||
"colorMode": "色彩模式",
|
||||
"blendMode": "混合模式",
|
||||
"fixedColor": "固定顏色",
|
||||
"alphaMode": "透明度模式",
|
||||
"opacity": "透明度",
|
||||
"gridRows": "網格行數",
|
||||
"gridCols": "網格列數",
|
||||
"trailHint": "每個粒子依資源比例產生一組同級拖尾骨骼;隨機長度與寬度在粒子出生時確定,相同種子可穩定復現",
|
||||
"enableFollow": "開啟發射器跟隨",
|
||||
"followMode": "跟隨模式",
|
||||
"noFollow": "無",
|
||||
"followPath": "跟隨路徑",
|
||||
"selectedBone": "選取的骨骼",
|
||||
"emitterAngleMode": "發射器角度模式",
|
||||
"fixedAngle": "固定角度",
|
||||
"followMoveDirection": "跟著移動方向",
|
||||
"moveProgressCurve": "移動進度曲線 (0→1)",
|
||||
"moveDuration": "移動時長 (s)",
|
||||
"followSpace": "跟隨空間",
|
||||
"localSpace": "局部空間(GEN 移動)",
|
||||
"worldSpace": "世界空間(粒子生成點移動)",
|
||||
"moveDirection": "移動方向",
|
||||
"forward": "正向(起點 → 終點)",
|
||||
"reverse": "反向(終點 → 起點)",
|
||||
"followOffset": "偏移起始點 (0-1)",
|
||||
"followSpaceHint": "局部空間會移動整個發射器;世界空間只移動新粒子的生成點,已出生粒子留在世界位置。",
|
||||
"followTarget": "跟隨目標:",
|
||||
"noValidBone": "尚未綁定有效骨骼,請先在 Spine 層級樹中選擇骨骼。",
|
||||
"rebind": "重新綁定",
|
||||
"bind": "綁定",
|
||||
"selectedBoneLabel": "目前選取骨骼:",
|
||||
"boneLocalSpace": "本地空間(隨骨骼移動)",
|
||||
"boneWorldSpace": "世界空間(粒子生成後保持位置)",
|
||||
"offsetX": "位移偏移 X",
|
||||
"offsetY": "位移偏移 Y",
|
||||
"rotationOffset": "旋轉偏移",
|
||||
"scaleOffsetX": "縮放偏移 X",
|
||||
"scaleOffsetY": "縮放偏移 Y",
|
||||
"boneFollowHint": "發射器只跟隨所選 Spine 骨骼的位置,不繼承 Spine 的旋轉或縮放;粒子變換使用粒子系統本身參數和上方偏移。",
|
||||
"enableCollision": "開啟碰撞",
|
||||
"collisionObjects": "參與的碰撞對象",
|
||||
"colliderDisabled": "{name}(碰撞體已停用)",
|
||||
"clearCollider": "清除碰撞物件 {name}",
|
||||
"addCollider": "加入場景碰撞對象",
|
||||
"noAvailableColliders": "沒有可加入的碰撞對象",
|
||||
"noCollidersSelected": "未選擇碰撞對象,目前粒子不會發生碰撞",
|
||||
"available": "可用",
|
||||
"disabled": "已停用",
|
||||
"collisionHint": "只有已加入且啟用的場景碰撞物件會參與目前粒子系統的碰撞",
|
||||
"enableSubEmitter": "開啟子發射器",
|
||||
"triggerTiming": "選擇觸發時機",
|
||||
"birth": "出生",
|
||||
"death": "死亡",
|
||||
"collision": "碰撞",
|
||||
"chooseTarget": "選擇目標粒子系統",
|
||||
"noTarget": "無(粒子系統)",
|
||||
"deleteSubEmitter": "刪除該子發射器",
|
||||
"probability": "發射機率",
|
||||
"collisionLimit": "碰撞次數限制",
|
||||
"inherit": "繼承",
|
||||
"colorInheritMode": "顏色繼承方式",
|
||||
"add": "相加",
|
||||
"replace": "覆蓋",
|
||||
"addSubEmitter": "+ 新增子發射器",
|
||||
"inheritNone": "無(預設值)",
|
||||
"inheritAll": "所有屬性",
|
||||
"inheritColor": "顏色",
|
||||
"inheritScale": "大小",
|
||||
"inheritRotation": "旋轉",
|
||||
"inheritLife": "生命週期"
|
||||
},
|
||||
"spine": {
|
||||
"title": "Spine 屬性",
|
||||
"name": "Spine 名稱",
|
||||
"xPosition": "X 位置",
|
||||
"yPosition": "Y 位置",
|
||||
"rotation": "旋轉",
|
||||
"scaleX": "X 縮放",
|
||||
"scaleY": "Y 縮放",
|
||||
"startTime": "開始時間",
|
||||
"resources": "Spine 資源",
|
||||
"chooseFolder": "選擇資料夾並加載",
|
||||
"folderHint": "一次讀取資料夾中的 JSON / SKEL、Atlas 和全部紋理;仍可在下方單獨取代資源。",
|
||||
"choose": "選擇",
|
||||
"chooseMultiple": "選擇(多選)",
|
||||
"loading": "載入中…",
|
||||
"load": "↧ 加載",
|
||||
"clear": "清除",
|
||||
"supportNote": "支援 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 對應版本運行時按需載入 · 本地離線",
|
||||
"currentResource": "目前資源 {version}",
|
||||
"animations": "Spine 動畫",
|
||||
"noAnimations": "無可用動畫",
|
||||
"timelineAnimation": "時間軸播放動畫",
|
||||
"no": "無",
|
||||
"hierarchy": "階層樹",
|
||||
"clearBoneTitle": "點擊清除骨骼選擇",
|
||||
"noBoneTitle": "目前未選擇骨骼",
|
||||
"clearBone": "清除選取骨骼:{name}",
|
||||
"currentBone": "當前骨骼:",
|
||||
"clearSlotTitle": "點選清除插槽選擇",
|
||||
"noSlotTitle": "目前未選擇插槽",
|
||||
"clearSlot": "清除選取插槽:{name}",
|
||||
"currentSlot": "目前插槽:",
|
||||
"notSelected": "未選擇",
|
||||
"expandAll": "全部展開",
|
||||
"collapseAll": "全部折疊",
|
||||
"bones": "骨骼",
|
||||
"slots": "插槽",
|
||||
"notLoaded": "未載入 Spine",
|
||||
"searchBones": "搜尋骨骼",
|
||||
"searchBonesPlaceholder": "搜尋骨骼名稱…",
|
||||
"clearSearch": "清空搜尋",
|
||||
"clearBoneSearch": "清空骨骼搜索",
|
||||
"noMatchingBones": "未找到匹配的骨骼",
|
||||
"expandChildren": "展開子骨骼",
|
||||
"collapseChildren": "折疊子骨骼",
|
||||
"notLoadedSlots": "未載入 Spine 插槽",
|
||||
"searchSlots": "搜尋插槽",
|
||||
"searchSlotsPlaceholder": "搜尋插槽或附件名稱…",
|
||||
"clearSlotSearch": "清空插槽搜尋",
|
||||
"noMatchingSlots": "未找到符合的插槽",
|
||||
"slotTitle": "{name}(骨骼:{bone},配件:{attachment})",
|
||||
"empty": "空",
|
||||
"textureSummary": "{count} 張:{names}",
|
||||
"textureImages": "紋理圖片",
|
||||
"missingFolderAssets": "所選資料夾缺少:{missing}",
|
||||
"chooseAssets": "請依序選擇 Spine 資料、Atlas 和全部紋理圖片"
|
||||
},
|
||||
"help": {
|
||||
"title": "使用說明",
|
||||
"subtitle": "從創建粒子到保存、導出的快速入門",
|
||||
"close": "關閉使用說明",
|
||||
"closeShort": "關閉 (Esc)",
|
||||
"quickStart": "快速開始",
|
||||
"stepCreate": "建立物件:在左側「場景物件」中以 +粒子 / +碰撞 / +路徑 / +Spine 新增場景物件。",
|
||||
"stepEdit": "編輯粒子:選取粒子系統,依序調整「發射模式 → 發射器形狀 → 粒子屬性 → 外觀與資源 → 修改器」。",
|
||||
"stepPreview": "查看效果:底部時間軸可播放、暫停、逐幀或拖曳;修改參數後會自動重新計算。",
|
||||
"stepExport": "儲存與匯出:以「儲存設定」保留工程;「匯出 Spine Json / images 套件 / .spine 套件」輸出完成品。",
|
||||
"quickNote": "每個模組組標題右側的「重設」可恢復此組預設參數;系統設定會自動儲存在目前瀏覽器。",
|
||||
"commonOps": "常用操作",
|
||||
"eye": "小眼睛",
|
||||
"eyeDesc": "單獨顯示/隱藏物件;隱藏的粒子系統不會被匯出。",
|
||||
"copyDesc": "完整複製目前選取對象,方便比較不同參數。",
|
||||
"backgroundDesc": "上傳參考圖並調整位置和透明度,只用於畫布預覽。",
|
||||
"settingsDesc": "管理介面佈局、輔助顯示、刻度等,自動存入瀏覽器。",
|
||||
"undoDesc": "Ctrl+Z 撤回一步;最大步數可在系統設定中調整。",
|
||||
"spineBoneDesc": "在層級樹搜尋並選擇骨骼,可用於粒子發射器跟隨。",
|
||||
"shortcuts": "快速鍵",
|
||||
"undoShortcut": "撤銷上一步",
|
||||
"saveShortcut": "儲存配置",
|
||||
"panShortcut": "拖曳動畫布",
|
||||
"translateShortcut": "位移工具",
|
||||
"rotateShortcut": "旋轉工具",
|
||||
"scaleShortcut": "縮放工具",
|
||||
"playShortcut": "播放 / 暫停",
|
||||
"startShortcut": "回到第一幀",
|
||||
"shortcutNote": "Q / W / E / R 需先點選畫布;遊標位於輸入框時,單鍵快速鍵不會觸發。",
|
||||
"modules": "功能模組詳解",
|
||||
"configTitle": "配置管理",
|
||||
"saveConfigDesc": "把目前全部場景物件和參數儲存為工程 JSON 檔案(也支援 Ctrl+S)。",
|
||||
"loadConfigDesc": "選擇本地設定文件,恢復完整工程。",
|
||||
"presetDesc": "從下拉選擇預設快速套用;點選下拉刷新清單。",
|
||||
"configScope": "範圍",
|
||||
"configScopeDesc": "配置包含物件與參數;介面和系統設定單獨存於瀏覽器。",
|
||||
"sceneTitle": "場景對象",
|
||||
"particleDesc": "核心對象。可設定位置、偏移、旋轉、縮放和隨機種子;相同種子可重複相同效果。",
|
||||
"colliderDesc": "圓形/橢圓/矩形/多邊形/自訂,支援實體彈跳、暫停、銷毀,以及沿路徑移動。",
|
||||
"pathDesc": "貝塞爾路徑,支援錨點、控製手柄、閉合、顏色和預設形狀。",
|
||||
"spineDesc": "載入 Spine 資料、Atlas 和紋理,瀏覽骨骼與插槽,並用於發射器跟隨。",
|
||||
"sceneCommonDesc": "物件可獨立顯隱和複製;隱藏的粒子系統不會導出。",
|
||||
"emissionDesc": "持續發射、爆發、延遲,以及開始/循環/結束三段式循環持續。",
|
||||
"burstDesc": "一次性發射指定數量的粒子。",
|
||||
"delayDesc": "發射開始前的等待時間,對應粒子條左端。",
|
||||
"loopNote": "循環持續不支援骨骼和路徑跟隨,切換時會恢復跟隨設定。",
|
||||
"shapeDesc": "點、圓形、長方形、錐形或路徑出生區域。圓/錐支持內外半徑,矩形支持內外寬高。",
|
||||
"angleDesc": "固定、隨機、徑向、路徑法線或路徑切線。",
|
||||
"initialDesc": "生命週期、速度、縮放和旋轉支援固定、隨機、曲線,旋轉可跟隨發射方向。",
|
||||
"overLifeDesc": "速度倍率、縮放倍率、旋轉速度可用生命週期曲線控制。",
|
||||
"alphaDesc": "透明度支援固定或曲線;曲線模式可跟隨導出、線性或貝塞爾。",
|
||||
"imageDesc": "單圖或序列幀、多圖權重隨機、軸點、顏色、混合模式和獨立透明度。",
|
||||
"sequenceDesc": "播放方式有單次隱藏、單次定格、正向循環、反向循環。",
|
||||
"noiseDesc": "產生抖動軌跡,並控制強度、範圍和速度。",
|
||||
"gravityDesc": "重力、風力和生命週期強度曲線。",
|
||||
"forceDesc": "全局力場、漩渦、吸附和碰撞。",
|
||||
"trailDesc": "獨立拖尾資源、骨骼數、長度、寬度、形狀、顏色與透明度曲線。",
|
||||
"followDesc": "發射器可跟隨路徑或 Spine 骨骼。",
|
||||
"collisionDesc": "選擇場景碰撞物件和粒子碰撞響應。",
|
||||
"exportDesc": "設定圖片路徑、Spine 版本、關鍵影格曲線、FPS、整數影格、骨骼池和空白動畫。",
|
||||
"exportButtonsDesc": "可導出 Spine JSON、images ZIP,或透過連接器產生 .spine 工程。",
|
||||
"connectorTitle": "Spine 連接器使用說明",
|
||||
"connectorIntro": "連接器把網頁產生的 JSON 和圖片交給本機已安裝並啟動的 Spine,轉換成可編輯的 .spine 工程。",
|
||||
"prerequisite": "前置",
|
||||
"prerequisiteDesc": "電腦已安裝並啟動 Spine,並已啟動桌面版連接器。",
|
||||
"download": "下載",
|
||||
"webSide": "網頁端",
|
||||
"webSideDesc": "顯示「連接器可用 · Spine 已就緒」後,點選「匯出 .spine 套件」。",
|
||||
"authorization": "首次授權",
|
||||
"authorizationDesc": "首次連接需核對網站來源並允許一次;本機會保存授權白名單。",
|
||||
"pathSetup": "路徑設定",
|
||||
"pathSetupDesc": "連接器會自動偵測 Spine;找不到時可手動指定應用路徑。",
|
||||
"downloadResult": "下載結果",
|
||||
"downloadResultDesc": "得到 ZIP 包,內含 .spine 工程和圖片目錄。",
|
||||
"version": "版本",
|
||||
"versionDesc": "連接器按 JSON 版本自動匹配 Spine 3.8~4.3。",
|
||||
"security": "安全",
|
||||
"securityDesc": "僅監聽本機位址,授權保存在連接器,臨時檔案轉換後清理。",
|
||||
"differenceTitle": "配置與匯出有什麼差別?",
|
||||
"differenceDesc": "「儲存配置」儲存全部可繼續編輯的物件和參數;「匯出 Spine Json」只匯出顯示中的粒子系統,並把碰撞、跟隨、拖尾和子發射器結果烘焙為獨立動畫資料。"
|
||||
},
|
||||
"errors": {
|
||||
"confirmLoopFollowEnter": "進入循環持續模式後,粒子跟隨設定會失效並恢復預設值。是否繼續?",
|
||||
"confirmLoopFollowExit": "退出循環持續模式後,粒子跟隨設定會失效並恢復預設值。是否繼續?",
|
||||
"invalidJson": "設定檔不是有效的 JSON",
|
||||
"invalidConfigFormat": "不是 SpineParticle 編輯器設定檔",
|
||||
"unsupportedConfigVersion": "暫不支援配置版本:{version}",
|
||||
"missingScene": "設定檔缺少完整場景數據",
|
||||
"missingEmbeddedSpine": "配置未包含可重複使用的 Spine 原始資源",
|
||||
"chooseJsonConfig": "請選擇 .json 設定文件",
|
||||
"settingsInvalidJson": "系統設定快取不是有效的 JSON",
|
||||
"settingsFormat": "不是 SpineParticle 編輯器系統設定緩存",
|
||||
"settingsVersion": "暫不支援系統配置版本:{version}",
|
||||
"settingsMissing": "系統設定緩存缺少 settings",
|
||||
"noExportableImages": "目前可見粒子系統沒有可匯出的圖片",
|
||||
"invalidZipPath": "ZIP 檔案路徑無效",
|
||||
"spineFileType": "Spine 資料僅支援 .json 或 .skel",
|
||||
"atlasFileType": "圖集檔案僅支援 .atlas",
|
||||
"chooseTexture": "請至少選擇一張紋理圖片",
|
||||
"binaryParseFailed": "Spine 二進位解析失敗(4.3:{v43};舊版:{v42})",
|
||||
"invalidSpineJson": "Spine JSON 檔案格式無效",
|
||||
"unsupportedSpineJsonVersion": "Spine JSON 版本不受支持,僅支援 {versions}",
|
||||
"unsupportedSpineDataVersion": "Spine 資料版本不受支持,僅支援 {versions}",
|
||||
"embeddedReadFailed": "無法讀取內嵌 Spine 檔案:{name}",
|
||||
"missingImageWarning": "圖片「{file}」缺失或尺寸不可讀,已保留路徑。",
|
||||
"missingTrailImageWarning": "拖尾圖片「{file}」缺失,已保留路徑。",
|
||||
"emptyCacheWarning": "“{name}”沒有可用幀快取。",
|
||||
"readExportImageFailed": "無法讀取匯出圖:{name}",
|
||||
"connectorOffline": "未偵測到本機 Spine 連接器,請先啟動連接器",
|
||||
"connectorHttpError": "Spine 連接器回傳錯誤:HTTP {status}",
|
||||
"invalidTrailUV": "拖尾網格「{name}」的 UV 資料無效",
|
||||
"missingTrailVertices": "拖尾網格“{name}”缺少頂點數據",
|
||||
"trailIndexOutOfRange": "拖尾網格「{name}」的三角形索引越界",
|
||||
"invalidTrailHull": "拖尾網格「{name}」的外輪廓數量無效",
|
||||
"trailHullIndexOutOfRange": "拖尾網格「{name}」的外輪廓邊索引越界",
|
||||
"invalidInfluenceCount": "拖尾網格“{name}”包含無效骨骼權重數量",
|
||||
"missingBoneReference": "拖尾網格“{name}”引用了不存在的骨骼",
|
||||
"invalidWeight": "拖尾網格“{name}”包含無效權重數據",
|
||||
"weightSum": "拖尾網格「{name}」的頂點權重總和不為 1",
|
||||
"vertexCountMismatch": "拖尾網格「{name}」的頂點數量與 UV 不一致",
|
||||
"invalidInherit": "骨骼「{name}」的 inherit 值「{inherit}」不符合 Spine {version} JSON 格式",
|
||||
"trailBoneParent": "拖尾骨骼「{name}」必須直接掛在粒子系統骨骼下,無法組成骨骼鏈",
|
||||
"trailSlotEmpty": "加權拖尾插槽「{name}」不能使用空白附件,未出現或死亡階段應將對應骨骼縮放設為 0",
|
||||
"spine38Version": "Spine 3.8 導出的版本標識必須為 3.8",
|
||||
"spine38Inherit": "Spine 3.8 骨骼「{name}」應使用 transform,不能使用 inherit",
|
||||
"spine38SlotColor": "Spine 3.8 插槽顏色時間軸必須使用 color / twoColor",
|
||||
"spine38AttachmentName": "Spine 3.8 附件時間軸的隱藏訊框必須明確寫入 name: null",
|
||||
"spine38RotationAngle": "Spine 3.8 旋轉時間軸必須使用 angle",
|
||||
"spine38Curve": "Spine 3.8 不支援 4.x 陣列曲線格式",
|
||||
"unsupportedExportVersion": "匯出版本不受支持,僅支援 Spine {versions}",
|
||||
"exportVersionMismatch": "匯出版本不一致:設定為 Spine {expected},JSON 標記為 Spine {actual}",
|
||||
"exportMissingBones": "匯出結果缺少骨骼",
|
||||
"missingAtlasTexture": "Atlas 引用的紋理未選擇:{name}"
|
||||
},
|
||||
"language": {
|
||||
"label": "語言",
|
||||
"zhCN": "中文",
|
||||
"zhTW": "繁體中文",
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어",
|
||||
"fr": "Français",
|
||||
"de": "Deutsch",
|
||||
"ptBR": "Português",
|
||||
"es": "Español"
|
||||
}
|
||||
}
|
||||
@@ -22,3 +22,13 @@ input, textarea, select, [contenteditable='true'] { -webkit-user-select: text; u
|
||||
input[type='number'] { appearance: textfield; -moz-appearance: textfield; }
|
||||
input[type='number']::-webkit-inner-spin-button,
|
||||
input[type='number']::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; appearance: none; }
|
||||
|
||||
/* 拉丁语系的长单词允许在固定标签宽度内换行,避免撑出参数面板。 */
|
||||
.ns-label,
|
||||
.row > span:first-child,
|
||||
.field-block > span,
|
||||
.compact-field > span,
|
||||
.event-probability > span {
|
||||
line-height: 1.25;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
Reference in new issue
Block a user