中英双语

This commit is contained in:
tianmo committed 2026-10-22 18:13:43 +08:00
1 parent ea26af26ee
commit b98c0333e6
50 files changed
+4082 -2049

No files matched your search

+857
View File
@@ -0,0 +1,857 @@
{
"app": {
"title": "Spine Particle Editor - Yeomai",
"resizeTimeline": "Drag to resize the timeline",
"systems": "Systems",
"particlesBones": "Particles (bones)",
"rootBone": "Root bone",
"hudTip": "Scroll to zoom · Drag with left mouse to pan"
},
"language": {
"label": "Language",
"zhCN": "中文",
"en": "English"
},
"common": {
"close": "Close",
"reset": "Reset",
"add": "Add",
"remove": "Remove",
"delete": "Delete",
"clear": "Clear",
"cancel": "Cancel",
"confirm": "Confirm",
"none": "None",
"enabled": "Enabled",
"disabled": "Disabled",
"fixed": "Fixed",
"random": "Random",
"curve": "Curve",
"followExport": "Follow export",
"linear": "Linear",
"bezier": "Bézier",
"above": "Above",
"below": "Below",
"left": "Left",
"right": "Right",
"seconds": "s",
"frames": "f"
},
"toolbar": {
"settings": "Settings",
"undo": "Undo (Ctrl+Z)",
"pan": "Pan canvas (Q)",
"translate": "Move (W)",
"rotate": "Rotate (E)",
"scale": "Scale (R)",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"fitView": "Fit canvas",
"toggleGrid": "Toggle grid",
"resetView": "Reset view",
"background": "Background",
"backgroundSettings": "Background settings",
"changeBackground": "Replace image",
"uploadBackground": "Upload image",
"clearBackground": "Clear background",
"noBackground": "No image",
"backgroundX": "Background X offset",
"backgroundY": "Background Y offset",
"backgroundOpacity": "Background opacity",
"opacity": "Opacity",
"help": "Help",
"openHelp": "Open help"
},
"settings": {
"title": "Settings",
"layout": "Layout",
"parameterPanelPosition": "Parameter panel position",
"panelOnRight": "Show parameter panel on the right",
"history": "History",
"maxUndo": "Maximum undo steps",
"canvasGuides": "Canvas guides",
"emitter": "Emitter point",
"bones": "Bone links",
"bonePointSize": "Bone point size",
"boneAxisSize": "Axis size",
"skinMesh": "Skin mesh",
"enableTicks": "Show ticks",
"tickFontSize": "Tick text size",
"tickWidth": "Tick line width",
"axisColor": "Axis color",
"showAxisLabels": "Show tick values",
"cacheNote": "Settings are saved automatically in this browser"
},
"config": {
"title": "Configuration",
"save": "Save Config",
"saveTitle": "Save the complete editor configuration (Ctrl+S)",
"load": "Load Config",
"loadTitle": "Load an editor configuration file",
"presets": "Preset list",
"selectPreset": "Select preset",
"noPresets": "No presets",
"saved": "Configuration saved locally",
"loading": "Loading configuration…",
"loaded": "Loaded: {name}",
"presetLoading": "Loading preset…",
"presetLoaded": "Preset loaded: {name}",
"presetNamingError": "{message}. Check the preset file name.",
"presetTransferTitle": "Load Preset",
"presetDownloading": "Downloading {file}…",
"presetParsing": "Parsing preset configuration…",
"presetRestoring": "Parsing and restoring preset resources…",
"presetComplete": "Preset loaded",
"presetListError": "Unable to read preset list",
"presetReadError": "Unable to read preset: {file}"
},
"presets": {
"particleSweep": "1. Particle Sweep",
"barBlocks": "2. Bar Blocks",
"forceTrail": "3. Force Field Trail",
"lightningSequence": "4. Lightning Sequence",
"texturePivot": "5. Texture Pivot",
"subEmitter": "6. Sub-emitter"
},
"curve": {
"bezierHint": "Drag square handles · Double-click empty space to add · Double-click a node to delete",
"linearHint": "Double-click empty space to add · Double-click a node to delete · Drag nodes to adjust",
"resetTitle": "Restore default curve"
},
"gradient": {
"addTitle": "Double-click the color bar to add a stop",
"color": "Stop color",
"colorValue": "Stop color value",
"position": "Stop position",
"addMiddle": "Add color in the middle",
"delete": "Delete selected stop",
"hint": "Double-click to add · Drag a stop to move · Double-click a stop to delete"
},
"attributeControl": {
"angleOffset": "Angle offset",
"value": "Value",
"lower": "Min",
"upper": "Max",
"rangeLower": "Range min",
"rangeUpper": "Range max",
"curveInput": "Curve input →",
"direction": "Emission direction"
},
"pivot": {
"title": "Texture Pivot",
"zoomOut": "Zoom out",
"zoomIn": "Zoom in",
"expand": "Open full-screen pivot editor",
"interaction": "Click/drag to set pivot · Right-drag to pan · Scroll to zoom",
"previewAlt": "Pivot preview",
"noImage": "No image selected",
"resetCenter": "Center (50%, 50%)",
"coordinates": "Pivot coordinates (%)",
"rotationTest": "Pivot rotation test",
"static": "Static",
"spin": "Spin",
"swing": "Swing",
"rotationAlt": "Rotation test",
"topLeft": "Top left",
"top": "Top",
"topRight": "Top right",
"left": "Left",
"center": "Center",
"right": "Right",
"bottomLeft": "Bottom left",
"bottom": "Bottom",
"bottomRight": "Bottom right"
},
"image": {
"chooseSequence": "Choose sequence images",
"chooseLocal": "Choose local image",
"subfolder": "Subfolder",
"name": "Name",
"restore": "Restore {name}",
"deleteResource": "Delete image resource",
"imageMode": "Image mode",
"fixed": "Single image",
"sequence": "Sequence",
"playbackMode": "Playback",
"onceHide": "Once, hide at end",
"onceHold": "Once, hold last frame",
"loopForward": "Loop forward",
"loopReverse": "Loop reverse",
"playbackFps": "Playback FPS",
"chooseSequenceMulti": "Choose sequence images (multiple)",
"weight": "Weight %",
"unlockWeight": "Unlock weight",
"lockWeight": "Lock current weight",
"pivot": "Texture Pivot",
"collapsePivot": "Collapse pivot editor",
"expandPivot": "Expand pivot editor",
"pivotModal": "Full-screen texture pivot editor",
"pivotModalDesc": "Click or drag on the texture to set the exact particle rotation center",
"pivotZoomHint": "Zoom from 100% to 400% to align tips or roots precisely:",
"confirmPivot": "Apply and save pivot",
"noSequence": "No sequence selected",
"firstFrame": "Frame 1",
"firstImage": "first image",
"lastImage": "last image",
"pivotOn": "Enabled: X {x}% | Y {y}%",
"pivotOff": "Disabled, using image center (50%, 50%)",
"pivotCustom": "Custom pivot: X {x}% | Y {y}%",
"frameCountOne": "1 frame · {name}",
"frameCountMany": "{count} frames · {first} → {last}",
"sequenceSelected": "{count} frames selected, playing {first} to {last}"
},
"timeline": {
"play": "Play (D)",
"pause": "Pause (D)",
"toStart": "Go to first frame (S)",
"previous": "Previous frame",
"next": "Next frame",
"toEnd": "Go to last frame",
"continuousLoop": "Continuous loop playback",
"abLoop": "Independent A/B range loop",
"abLoopShort": "AB Loop",
"abRange": "A/B loop range",
"playbackStart": "Custom playback start frame",
"playbackEnd": "Custom playback end frame",
"startFrame": "Playback start frame",
"endFrame": "Playback end frame",
"frame": "Frame",
"emission": "Emitting",
"particleLife": "Particles alive",
"spineAnimation": "Spine animation",
"ownerAnimation": "Owner animation",
"setOwnerAnimation": "Set the animation that owns this particle system",
"chooseOwnerAnimation": "Choose owner animation",
"animationName": "Animation name",
"renameAnimation": "Rename current animation",
"rename": "Rename",
"newAnimation": "+ New",
"keepOneAnimation": "At least one animation is required",
"spinePreview": "Spine preview animation",
"noSpineAnimation": "No Spine animation available",
"none": "None",
"systemName": "System {index}",
"dragLoopDuration": "Drag to change loop duration",
"dragEmissionDuration": "Drag to change emission duration",
"dragSpineStart": "Drag to change animation start time",
"noAnimationData": "No animation data",
"animationNameEmpty": "Animation name cannot be empty",
"animationNameDuplicate": "Animation name already exists",
"animationRenameFailed": "Unable to rename animation",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"zoomFit": "Fit",
"frameStatus": "Frame {current} / {total}"
},
"emission": {
"title": "Emission",
"reset": "Reset emission settings",
"stream": "Stream",
"burst": "Burst",
"normalStream": "Standard stream",
"loopStream": "Loop stream",
"rate": "Emission rate",
"duration": "Emission duration",
"loopDuration": "Emission duration (f)",
"generateStart": "Generate loop start animation",
"generateEnd": "Generate loop end animation",
"customDuration": "Custom duration",
"auto": "Auto {frames}f",
"startLoopDuration": "Loop start duration",
"endLoopDuration": "Loop end duration",
"loopWarning": "Bone and path following are unavailable in loop stream mode and will be reset when entering or leaving it.",
"burstCount": "Burst count",
"delay": "Delay",
"shapeTitle": "Emitter Shape",
"shapeReset": "Reset emitter shape settings",
"shape": "Shape",
"point": "Point",
"circle": "Circle",
"rect": "Rectangle",
"cone": "Cone",
"path": "Path",
"innerDiameter": "Inner diameter",
"outerDiameter": "Outer diameter",
"innerRadius": "Inner radius",
"outerRadius": "Outer radius",
"coneDirection": "Cone direction",
"coneAngle": "Cone opening angle",
"innerWidth": "Inner width",
"innerHeight": "Inner height",
"outerWidth": "Outer width",
"outerHeight": "Outer height",
"selectPath": "Spawn path",
"noPath": "No path (point emission)",
"birthDistribution": "Birth distribution",
"evenDistribution": "Even spacing",
"randomDistribution": "Random",
"emissionAngle": "Emission angle",
"radial": "Radial (outward)",
"pathNormal": "Path normal",
"pathTangent": "Path tangent",
"fixedAngle": "Fixed angle",
"baseAngle": "Base angle",
"randomRange": "Random range",
"showShape": "Show shape"
},
"attributes": {
"title": "Particle Attributes",
"reset": "Reset particle attribute settings",
"initialParams": "Initial particle values",
"initialLife": "Initial life",
"randomSample": "Random sample →",
"initialSpeed": "Initial speed",
"initialScale": "Initial scale",
"uniform": "Uniform",
"separateXY": "Separate XY",
"scaleX": "Scale X",
"scaleY": "Scale Y",
"initialRotation": "Initial rotation",
"lifecycleTitle": "Values over particle life",
"speedOverLife": "Speed over life",
"speedMultiplier": "Speed multiplier",
"lifeTo": "Lifetime →",
"scaleOverLife": "Scale over life",
"scaleMultiplier": "Scale multiplier",
"multiplierX": "Multiplier X",
"multiplierY": "Multiplier Y",
"rotationOverLife": "Rotation over life",
"rotationSpeed": "Rotation speed"
},
"appearance": {
"title": "Appearance & Resources",
"reset": "Reset appearance and resource settings",
"opacity": "Opacity",
"curveMode": "Curve mode",
"transparent": "0 (transparent)",
"opaque": "1 (opaque)",
"renderLayer": "Render layer (Spine slot)",
"top": "Topmost",
"spineSlot": "Spine slot",
"selectSpine": "Select Spine",
"noSpine": "No Spine available",
"noSlot": "No slot selected",
"reselect": "Reselect",
"selectSlot": "Select slot",
"searchSlots": "Search slots or attachments…",
"searchSlotsAria": "Search slots",
"emptySlot": "Empty slot",
"noMatchingSlots": "No matching slots",
"above": "Above slot image",
"below": "Below slot image",
"followAttachment": "Follow attachment visibility",
"previewOnly": "Render layer changes only affect the editor preview and are not exported.",
"imageResources": "Image Resources",
"addImage": "Add image resource",
"scale": "Scale",
"color": "Color",
"fixedColor": "Fixed color",
"randomColor": "Random color",
"lifetime": "Over lifetime",
"normal": "Normal",
"add": "Add",
"multiply": "Multiply",
"screen": "Screen",
"fixedColorValue": "Fixed color value",
"randomColorHint": "Each particle samples a color from the gradient at birth and keeps it for its lifetime",
"independentAlpha": "Independent opacity",
"off": "Off"
},
"renderLayer": {
"slotLabelAbove": "{spine} / {slot} · above image",
"slotLabelBelow": "{spine} / {slot} · below image",
"resolvedAbove": "Render above {slot} and below the following slot",
"resolvedBetween": "Render between {previous} and {slot}",
"warningNoSpine": "No loaded Spine resource. Particles are temporarily rendered on top.",
"warningNoSelection": "No Spine selected. Particles are temporarily rendered on top.",
"warningMissingSpine": "The target Spine no longer exists. Particles are temporarily rendered on top.",
"warningNotReady": "The target Spine is not ready. Particles are temporarily rendered on top.",
"warningMissingSlot": "The target slot no longer exists. Particles are temporarily rendered on top.",
"warningFirstSlot": "This is the first slot, so particles cannot render below it and are temporarily shown on top."
},
"export": {
"title": "Export Settings",
"reset": "Reset export settings",
"imagesPath": "Image path (Spine Images Path)",
"spineVersion": "Spine version",
"keyframeCurve": "Keyframe interpolation",
"linear": "Linear",
"smoothBezier": "Smooth Bézier",
"bezierHelp": "Smooth Bézier fits continuous motion within the error tolerance; birth, death, attachment changes, and jumps still use stepped keys.",
"spine38Help": "Spine 3.8 does not support per-channel array Bézier curves. Export converts them to tolerance-reduced piecewise linear keys.",
"fps": "Export FPS",
"omitFps": "Omit fps",
"fpsHelp": "Changing FPS preserves real animation duration. “Omit fps” only removes the Spine fps metadata.",
"integerFrames": "Integer frame alignment",
"bonePool": "Bone object pool",
"excludeEmpty": "Exclude empty animations",
"baking": "Recalculating and baking animation",
"exportJsonTitle": "Export Spine {version} JSON",
"preparing": "Preparing export…",
"exportJson": "Export Spine JSON",
"exportImagesTitle": "Download the images used by the current particle systems as a ZIP",
"organizingImages": "Collecting images…",
"exportImages": "Export images ZIP",
"generatingProject": "Generating project…",
"exportSpine": "Export .spine package",
"authorize": "Authorize this site",
"authorizeTitle": "Authorize this site in the local connector",
"refreshConnector": "Check connector again",
"refresh": "Refresh",
"recalculating": "Recalculating particle animation…",
"exported": "Exported Spine {version}: {systems} particle systems, {animations} animations, {bones} bones{warning}",
"resourceWarning": "; {count} resource warnings (export continued without missing images)",
"timeout": "Baking timed out. Ensure the page is still running and try again.",
"preparingProject": "Collecting images and calling local Spine…",
"projectExported": "Generated {fileName}: .spine project with {images} images, Spine {version}",
"collectingImages": "Collecting images used by the current particle systems…",
"imagesExported": "Generated {fileName}: {images} images in {folder}/",
"connectorChecking": "Checking the local Spine connector…",
"connectorOffline": "Local Spine connector is not running",
"spineNotFound": "Connector is running, but Spine was not found",
"notAuthorized": "Connector is running, but this site is not authorized",
"connectorReady": "Connector available · Spine ready",
"connectorBusy": "Recalculating and generating the Spine project",
"connectorGenerate": "Generate a Spine {version} project with the local Spine",
"unknown": "Unknown",
"checking": "Checking",
"offline": "Offline",
"notFound": "Spine not found",
"unauthorized": "Not authorized",
"projectTransferTitle": "Export Spine Package",
"projectTransferDetail": "Recalculating particle animation…",
"projectTransferDownload": "Spine project download started",
"generatingJson": "Generating Spine JSON…",
"preparingProjectFiles": "Preparing project images…",
"uploading": "Uploading data to the Spine connector…",
"spineProcessing": "Spine is converting the project…",
"downloadingProject": "Downloading the generated Spine project…",
"handingToBrowser": "Starting browser download…"
},
"transfer": {
"completed": "Completed",
"failed": "Operation failed"
},
"scene": {
"title": "Scene Objects",
"addParticle": "Add particle system",
"addParticleShort": "+ Particle",
"addCollider": "Add collider",
"addColliderShort": "+ Collider",
"addPath": "Add path",
"addPathShort": "+ Path",
"addSpine": "Add Spine",
"copyTitle": "Duplicate selected scene object",
"showParticle": "Show particle system",
"hideParticle": "Hide particle system",
"showCollider": "Show collider",
"hideCollider": "Hide collider",
"showPath": "Show path",
"hidePath": "Hide path",
"showSpine": "Show Spine",
"hideSpine": "Hide Spine",
"particle": "Particle",
"subEmitter": "Sub-emitter",
"collision": "Collision",
"path": "Path",
"deleteParticle": "Delete particle system",
"deleteCollider": "Delete collider",
"deletePath": "Delete path",
"deleteSpine": "Delete Spine",
"empty": "No scene objects",
"name": "Name",
"positionX": "Position X",
"positionY": "Position Y",
"offsetX": "Offset X",
"offsetY": "Offset Y",
"rotation": "Rotation",
"scaleX": "Scale X",
"scaleY": "Scale Y",
"seed": "Random seed",
"seedTitle": "Controls random attributes, resource selection, and modifier sampling",
"randomizeSeed": "Generate a new global random seed",
"seedHint": "Controls initial random values, resource selection, and modifier sampling. The same seed reproduces the same result.",
"colliderTitle": "Collider Properties",
"colliderName": "Collider name",
"type": "Type",
"circle": "Circle",
"ellipse": "Ellipse",
"rect": "Rectangle",
"polygon": "Polygon",
"custom": "Custom",
"enabled": "Enabled",
"xPosition": "X position",
"yPosition": "Y position",
"scaleXShort": "Scale X",
"scaleYShort": "Scale Y",
"radius": "Radius",
"radiusX": "X radius",
"radiusY": "Y radius",
"width": "Width",
"height": "Height",
"sides": "Sides",
"collisionResponse": "Collision response",
"physics": "Physics (bounce / friction)",
"pause": "Pause in place",
"destroy": "Destroy immediately",
"elasticity": "Elasticity (0-1)",
"friction": "Friction (0-1)",
"followPath": "Follow a path",
"targetPath": "Target path",
"notSelected": "(Not selected)",
"moveDuration": "Move duration (s)",
"followDirection": "Orient along path",
"moveProgressCurve": "Movement progress curve",
"moveProgressHelp": "X: elapsed / duration · Y: path progress (0 = start, 1 = end)",
"pathTitle": "Path Properties",
"pathName": "Path name",
"closedPath": "Closed path",
"pathColor": "Path color",
"pathHelp": "Controls:",
"pathHelpItems": [
"Double-click empty space or a curve to add an anchor",
"Double-click an anchor to delete it",
"Double-click, hold on the second click, and drag to create handles",
"Drag anchors to move them and handles to reshape the curve",
"Shift + handle drag: symmetric handles",
"Alt + handle drag: independent handles",
"Ctrl + click / box select: add nodes",
"Alt + click / box select: remove nodes",
"Alt + click empty space: clear selection",
"Move multiple selected anchors together"
],
"applyPresetShape": "Apply preset shape",
"choosePreset": "Choose preset…",
"square": "Square",
"star": "Star",
"applyPreset": "Apply preset",
"clearAnchors": "Clear anchors",
"panelHint": "Use the buttons above to create a scene object"
},
"modifiers": {
"title": "Modifiers",
"reset": "Reset modifiers",
"damping": "Damping",
"enableNoise": "Enable movement noise",
"strength": "Strength",
"noiseRange": "Wander range",
"noiseSpeed": "Time speed",
"noiseHint": "Strength controls influence · Wander range controls maximum offset · Time speed controls variation rate",
"enableGravity": "Enable gravity",
"gravityStrength": "Gravity strength",
"strengthMin": "Strength min",
"strengthMax": "Strength max",
"direction": "Direction",
"gravityOverLife": "Gravity over lifetime",
"windOverLife": "Wind over lifetime",
"axisStrength": "Y: strength 0–1",
"directionHint": "0° right · -90° down · Negative strength reverses direction",
"enableWind": "Enable wind",
"windStrength": "Wind strength",
"enableForceField": "Enable force field",
"centerX": "Center X",
"centerY": "Center Y",
"forceStrength": "Force strength",
"forceRadius": "Force radius",
"falloffMode": "Falloff",
"constant": "Constant",
"linearFalloff": "Linear (zero at edge)",
"inverseFalloff": "Inverse distance (strongest at center)",
"forceHint": "Positive attracts · Negative repels · Drag the force circle on the canvas",
"showShape": "Show shape",
"enableVortex": "Enable vortex",
"vortexHint": "Positive counter-clockwise · Negative clockwise",
"enableAttraction": "Enable attraction",
"attractionX": "Attraction point X",
"attractionY": "Attraction point Y",
"attractionRadius": "Arrival radius",
"attractionDuration": "Attraction duration",
"delay": "Delay",
"delayMode": "Delay mode",
"globalTime": "Global time",
"particleLife": "Per particle life",
"attractionPath": "Attraction path",
"straight": "Straight",
"attractionHint": "Starts attraction after the delay · Dies on reaching the red radius · Drag the attraction circle on the canvas",
"enableTrail": "Enable trail",
"trailImages": "Trail Images",
"addTrailImage": "Add trail image resource",
"trailRotation": "Rotation",
"trailBones": "Trail bones",
"trailRatio": "Trail ratio (%)",
"trailLength": "Trail length",
"randomRange": "Random range",
"lengthRatio": "Length ratio (%)",
"lengthMin": "Length min (%)",
"lengthMax": "Length max (%)",
"trailWidth": "Trail width",
"widthRatio": "Width ratio (%)",
"widthMin": "Width min (%)",
"widthMax": "Width max (%)",
"widthScale": "Width scale",
"followParticle": "Follow particle",
"lifeLengthCurve": "Length over lifetime",
"shapeCurve": "Shape curve (head to tail width)",
"colorMode": "Color mode",
"blendMode": "Blend mode",
"fixedColor": "Fixed color",
"alphaMode": "Opacity mode",
"opacity": "Opacity",
"gridRows": "Grid rows",
"gridCols": "Grid columns",
"trailHint": "Each particle creates a sibling trail bone group according to the resource ratio. Random length and width are fixed at birth and reproducible with the same seed.",
"enableFollow": "Enable emitter following",
"followMode": "Follow mode",
"noFollow": "None",
"followPath": "Follow path",
"selectedBone": "Selected bone",
"emitterAngleMode": "Emitter angle mode",
"fixedAngle": "Fixed angle",
"followMoveDirection": "Follow movement direction",
"moveProgressCurve": "Movement progress curve (0→1)",
"moveDuration": "Move duration (s)",
"followSpace": "Follow space",
"localSpace": "Local space (move emitter)",
"worldSpace": "World space (move spawn point)",
"moveDirection": "Movement direction",
"forward": "Forward (start → end)",
"reverse": "Reverse (end → start)",
"followOffset": "Start offset (0-1)",
"followSpaceHint": "Local space moves the entire emitter. World space moves only the spawn point; existing particles stay in world position.",
"followTarget": "Follow target: ",
"noValidBone": "No valid bone is bound. Select a bone in the Spine hierarchy first.",
"rebind": "Rebind",
"bind": "Bind",
"selectedBoneLabel": "Selected bone: ",
"boneLocalSpace": "Local space (follow bone)",
"boneWorldSpace": "World space (keep particle position)",
"offsetX": "Position offset X",
"offsetY": "Position offset Y",
"rotationOffset": "Rotation offset",
"scaleOffsetX": "Scale offset X",
"scaleOffsetY": "Scale offset Y",
"boneFollowHint": "The emitter follows only the selected Spine bone position. Particle transforms use the particle system settings and offsets above.",
"enableCollision": "Enable collision",
"collisionObjects": "Collision objects",
"colliderDisabled": "{name} (disabled)",
"clearCollider": "Remove collider {name}",
"addCollider": "Add a scene collider",
"noAvailableColliders": "No colliders available",
"noCollidersSelected": "No collider selected. Current particles will not collide.",
"available": "Available",
"disabled": "Disabled",
"collisionHint": "Only enabled scene colliders added here participate in this particle system's collisions.",
"enableSubEmitter": "Enable sub-emitters",
"triggerTiming": "Choose trigger event",
"birth": "Birth",
"death": "Death",
"collision": "Collision",
"chooseTarget": "Choose target particle system",
"noTarget": "None (particle system)",
"deleteSubEmitter": "Delete this sub-emitter",
"probability": "Trigger probability",
"collisionLimit": "Collision trigger limit",
"inherit": "Inherit",
"colorInheritMode": "Color inheritance",
"add": "Add",
"replace": "Replace",
"addSubEmitter": "+ Add sub-emitter",
"inheritNone": "None (default)",
"inheritAll": "All attributes",
"inheritColor": "Color",
"inheritScale": "Size",
"inheritRotation": "Rotation",
"inheritLife": "Lifetime"
},
"spine": {
"title": "Spine Properties",
"name": "Spine name",
"xPosition": "X position",
"yPosition": "Y position",
"rotation": "Rotation",
"scaleX": "Scale X",
"scaleY": "Scale Y",
"startTime": "Start time",
"resources": "Spine Resources",
"chooseFolder": "Choose folder and load",
"folderHint": "Reads JSON / SKEL, Atlas, and all textures from the folder. Assets can still be replaced individually below.",
"choose": "Choose",
"chooseMultiple": "Choose multiple",
"loading": "Loading…",
"load": "↧ Load",
"clear": "Clear",
"supportNote": "Supports Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Runtime loaded on demand · Fully local",
"currentResource": "Current asset {version}",
"animations": "Spine Animations",
"noAnimations": "No animations available",
"timelineAnimation": "Timeline animation",
"no": "None",
"hierarchy": "Hierarchy",
"clearBoneTitle": "Click to clear bone selection",
"noBoneTitle": "No bone selected",
"clearBone": "Clear selected bone: {name}",
"currentBone": "Current bone: ",
"clearSlotTitle": "Click to clear slot selection",
"noSlotTitle": "No slot selected",
"clearSlot": "Clear selected slot: {name}",
"currentSlot": "Current slot: ",
"notSelected": "Not selected",
"expandAll": "Expand all",
"collapseAll": "Collapse all",
"bones": "Bones",
"slots": "Slots",
"notLoaded": "Spine not loaded",
"searchBones": "Search bones",
"searchBonesPlaceholder": "Search bone names…",
"clearSearch": "Clear search",
"clearBoneSearch": "Clear bone search",
"noMatchingBones": "No matching bones",
"expandChildren": "Expand child bones",
"collapseChildren": "Collapse child bones",
"notLoadedSlots": "Spine slots not loaded",
"searchSlots": "Search slots",
"searchSlotsPlaceholder": "Search slots or attachments…",
"clearSlotSearch": "Clear slot search",
"noMatchingSlots": "No matching slots",
"slotTitle": "{name} (bone: {bone}, attachment: {attachment})",
"empty": "Empty",
"textureSummary": "{count} textures: {names}",
"textureImages": "texture images",
"missingFolderAssets": "The selected folder is missing: {missing}",
"chooseAssets": "Select Spine data, Atlas, and all texture images"
},
"help": {
"title": "Help",
"subtitle": "Quick start from creating particles to saving and exporting",
"close": "Close help",
"closeShort": "Close (Esc)",
"quickStart": "Quick Start",
"stepCreate": "Create objects: use + Particle / + Collider / + Path / + Spine in Scene Objects.",
"stepEdit": "Edit particles: select a particle system, then adjust Emission → Emitter Shape → Particle Attributes → Appearance & Resources → Modifiers.",
"stepPreview": "Preview: play, pause, step, or scrub on the timeline. Parameter changes are recalculated automatically.",
"stepExport": "Save and export: Save Config keeps the project; Export Spine JSON / images ZIP / .spine package produces the deliverable.",
"quickNote": "Reset beside each section restores that section's defaults. Settings are saved automatically in this browser.",
"commonOps": "Common Actions",
"eye": "Visibility",
"eyeDesc": "Show or hide an object independently. Hidden particle systems are not exported.",
"copyDesc": "Duplicate the selected object for parameter comparisons.",
"backgroundDesc": "Upload a reference image and adjust its position and opacity for canvas preview only.",
"settingsDesc": "Manage layout, canvas guides, tick display, and other editor settings.",
"undoDesc": "Ctrl+Z undoes one step. The maximum history size is configurable.",
"spineBoneDesc": "Search and select bones in the hierarchy for emitter following.",
"shortcuts": "Shortcuts",
"undoShortcut": "Undo",
"saveShortcut": "Save config",
"panShortcut": "Pan canvas",
"translateShortcut": "Move tool",
"rotateShortcut": "Rotate tool",
"scaleShortcut": "Scale tool",
"playShortcut": "Play / pause",
"startShortcut": "Go to first frame",
"shortcutNote": "Click the canvas before using Q / W / E / R. Single-key shortcuts are disabled while typing in inputs.",
"modules": "Module Guide",
"configTitle": "Configuration",
"saveConfigDesc": "Save all scene objects and parameters to a project JSON file. Ctrl+S is supported.",
"loadConfigDesc": "Load a local configuration and restore the complete project.",
"presetDesc": "Choose a preset from the dropdown. Open the dropdown to refresh the list.",
"configScope": "Scope",
"configScopeDesc": "The project includes objects and parameters. Interface settings are stored separately in the browser.",
"sceneTitle": "Scene Objects",
"particleDesc": "The core object. Set position, offset, rotation, scale, and random seed. The same seed reproduces the same result.",
"colliderDesc": "Circle, ellipse, rectangle, polygon, or custom shape with physics, pause, destroy, and path-following responses.",
"pathDesc": "Bézier path with anchors, handles, closing, color, and preset shapes.",
"spineDesc": "Load Spine data, Atlas, and textures; browse bones and slots, and use them for emitter following.",
"sceneCommonDesc": "Objects can be hidden and duplicated independently. Hidden particle systems are not exported.",
"emissionDesc": "Streaming, burst, delay, and three-part loop streaming with start, loop, and end sections.",
"burstDesc": "Emit a fixed number of particles once.",
"delayDesc": "Wait time before emission starts, shown at the left edge of the particle bar.",
"loopNote": "Loop streaming does not support bone or path following and resets those settings when enabled.",
"shapeDesc": "Point, circle, rectangle, cone, or path spawn areas. Circle/cone use inner and outer radii; rectangles use inner and outer dimensions.",
"angleDesc": "Fixed, random, radial, path normal, or path tangent.",
"initialDesc": "Life, speed, scale, and rotation support fixed, random, and curve modes. Rotation can follow emission direction.",
"overLifeDesc": "Speed, scale, and rotation can be controlled by lifetime curves.",
"alphaDesc": "Opacity can be fixed or curved. Curve mode can follow export, linear, or Bézier.",
"imageDesc": "Single images or sequence frames, weighted image selection, pivots, colors, blend modes, and independent opacity.",
"sequenceDesc": "Playback can hide after one pass, hold the last frame, loop forward, or loop in reverse.",
"noiseDesc": "Adds movement noise with strength, range, and speed controls.",
"gravityDesc": "Gravity, wind, and lifetime strength curves.",
"forceDesc": "Global force field, vortex, attraction, and collision.",
"trailDesc": "Independent trail resources with bones, length, width, shape, color, and opacity curves.",
"followDesc": "The emitter can follow a path or a Spine bone.",
"collisionDesc": "Choose scene colliders and particle collision response.",
"exportDesc": "Configure image path, Spine version, keyframe curves, FPS, frame alignment, bone pool, and empty animations.",
"exportButtonsDesc": "Export Spine JSON, an images ZIP, or a complete .spine project through the connector.",
"connectorTitle": "Spine Connector",
"connectorIntro": "The connector sends generated JSON and images to a locally installed and activated Spine editor and converts them into an editable .spine project.",
"prerequisite": "Requirements",
"prerequisiteDesc": "Install and activate Spine, then start the desktop connector.",
"download": "Download",
"webSide": "Website",
"webSideDesc": "When the connector reports ready, click Export .spine package.",
"authorization": "First authorization",
"authorizationDesc": "Approve the website origin once. The connector stores the local allowlist.",
"pathSetup": "Application path",
"pathSetupDesc": "The connector detects Spine automatically. Set the application path manually if detection fails.",
"downloadResult": "Output",
"downloadResultDesc": "The downloaded ZIP contains the .spine project and image folder.",
"version": "Version",
"versionDesc": "The connector matches Spine 3.8–4.3 from the JSON version.",
"security": "Security",
"securityDesc": "The connector listens only on the local machine and deletes temporary conversion files.",
"differenceTitle": "Config vs. export",
"differenceDesc": "Save Config preserves editable objects and parameters. Export Spine JSON includes only visible particle systems and bakes collisions, following, trails, and sub-emitters into editable animation data."
},
"errors": {
"confirmLoopFollowEnter": "Enabling loop stream disables particle following and resets its settings. Continue?",
"confirmLoopFollowExit": "Leaving loop stream disables particle following and resets its settings. Continue?",
"invalidJson": "The configuration file is not valid JSON",
"invalidConfigFormat": "This is not a SpineParticle editor configuration",
"unsupportedConfigVersion": "Unsupported configuration version: {version}",
"missingScene": "The configuration is missing complete scene data",
"missingEmbeddedSpine": "The configuration does not contain reusable Spine source assets",
"chooseJsonConfig": "Choose a .json configuration file",
"settingsInvalidJson": "The cached settings are not valid JSON",
"settingsFormat": "This is not a SpineParticle settings cache",
"settingsVersion": "Unsupported settings version: {version}",
"settingsMissing": "The settings cache is missing settings",
"noExportableImages": "The visible particle systems have no exportable images",
"invalidZipPath": "Invalid ZIP file path",
"spineFileType": "Spine data must be .json or .skel",
"atlasFileType": "Atlas files must use .atlas",
"chooseTexture": "Choose at least one texture image",
"binaryParseFailed": "Spine binary parsing failed (4.3: {v43}; legacy: {v42})",
"invalidSpineJson": "Invalid Spine JSON format",
"unsupportedSpineJsonVersion": "Unsupported Spine JSON version. Supported versions: {versions}",
"unsupportedSpineDataVersion": "Unsupported Spine data version. Supported versions: {versions}",
"embeddedReadFailed": "Unable to read embedded Spine file: {name}",
"missingImageWarning": "Image “{file}” is missing or has unreadable dimensions. Its path was kept.",
"missingTrailImageWarning": "Trail image “{file}” is missing. Its path was kept.",
"emptyCacheWarning": "“{name}” has no baked frame cache.",
"readExportImageFailed": "Unable to read export image: {name}",
"connectorOffline": "Local Spine connector was not detected. Start the connector first.",
"connectorHttpError": "Spine connector returned HTTP {status}",
"invalidTrailUV": "Trail mesh “{name}” has invalid UV data",
"missingTrailVertices": "Trail mesh “{name}” has no vertex data",
"trailIndexOutOfRange": "Trail mesh “{name}” has an out-of-range triangle index",
"invalidTrailHull": "Trail mesh “{name}” has an invalid hull size",
"trailHullIndexOutOfRange": "Trail mesh “{name}” has an out-of-range hull edge index",
"invalidInfluenceCount": "Trail mesh “{name}” has an invalid bone influence count",
"missingBoneReference": "Trail mesh “{name}” references a missing bone",
"invalidWeight": "Trail mesh “{name}” contains invalid weights",
"weightSum": "Trail mesh “{name}” vertex weights do not sum to 1",
"vertexCountMismatch": "Trail mesh “{name}” vertex count does not match its UV count",
"invalidInherit": "Bone “{name}” has inherit value “{inherit}” incompatible with Spine {version} JSON",
"trailBoneParent": "Trail bone “{name}” must be a direct child of the particle system bone, not a bone chain",
"trailSlotEmpty": "Weighted trail slot “{name}” cannot use an empty attachment. Hide the bones with zero scale instead.",
"spine38Version": "Spine 3.8 export must identify its version as 3.8",
"spine38Inherit": "Spine 3.8 bone “{name}” must use transform instead of inherit",
"spine38SlotColor": "Spine 3.8 slot color timelines must use color / twoColor",
"spine38AttachmentName": "Spine 3.8 hidden attachment frames must explicitly write name: null",
"spine38RotationAngle": "Spine 3.8 rotation timelines must use angle",
"spine38Curve": "Spine 3.8 does not support Spine 4.x array curves",
"unsupportedExportVersion": "Unsupported export version. Supported Spine versions: {versions}",
"exportVersionMismatch": "Export version mismatch: expected Spine {expected}, JSON reports Spine {actual}",
"exportMissingBones": "Export result contains no bones",
"missingAtlasTexture": "Atlas texture was not selected: {name}"
}
}
+857
View File
@@ -0,0 +1,857 @@
{
"app": {
"title": "Spine粒子编辑器-Yeomai",
"resizeTimeline": "拖动调整时间轴高度",
"systems": "系统",
"particlesBones": "粒子(骨骼)",
"rootBone": "根骨骼",
"hudTip": "滚轮缩放 · 左键拖动画布"
},
"language": {
"label": "语言",
"zhCN": "中文",
"en": "English"
},
"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": "导出 images 包",
"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+拖动手柄:两侧完全对称",
"Alt+拖动手柄:独立控制单侧",
"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": "Scale X",
"scaleY": "Scale 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}"
}
}