Files
esengine/packages/editor/plugins/particle-editor/src/locales/es.ts
YHH 155411e743 refactor: reorganize package structure and decouple framework packages (#338)
* refactor: reorganize package structure and decouple framework packages

## Package Structure Reorganization
- Reorganized 55 packages into categorized subdirectories:
  - packages/framework/ - Generic framework (Laya/Cocos compatible)
  - packages/engine/ - ESEngine core modules
  - packages/rendering/ - Rendering modules (WASM dependent)
  - packages/physics/ - Physics modules
  - packages/streaming/ - World streaming
  - packages/network-ext/ - Network extensions
  - packages/editor/ - Editor framework and plugins
  - packages/rust/ - Rust WASM engine
  - packages/tools/ - Build tools and SDK

## Framework Package Decoupling
- Decoupled behavior-tree and blueprint packages from ESEngine dependencies
- Created abstracted interfaces (IBTAssetManager, IBehaviorTreeAssetContent)
- ESEngine-specific code moved to esengine/ subpath exports
- Framework packages now usable with Cocos/Laya without ESEngine

## CI Configuration
- Updated CI to only type-check and lint framework packages
- Added type-check:framework and lint:framework scripts

## Breaking Changes
- Package import paths changed due to directory reorganization
- ESEngine integrations now use subpath imports (e.g., '@esengine/behavior-tree/esengine')

* fix: update es-engine file path after directory reorganization

* docs: update README to focus on framework over engine

* ci: only build framework packages, remove Rust/WASM dependencies

* fix: remove esengine subpath from behavior-tree and blueprint builds

ESEngine integration code will only be available in full engine builds.
Framework packages are now purely engine-agnostic.

* fix: move network-protocols to framework, build both in CI

* fix: update workflow paths from packages/core to packages/framework/core

* fix: exclude esengine folder from type-check in behavior-tree and blueprint

* fix: update network tsconfig references to new paths

* fix: add test:ci:framework to only test framework packages in CI

* fix: only build core and math npm packages in CI

* fix: exclude test files from CodeQL and fix string escaping security issue
2025-12-26 14:50:35 +08:00

268 lines
7.2 KiB
TypeScript

/**
* Spanish translations for Particle Editor
* Traducciones en español del editor de partículas
*/
export const es = {
// ========================================
// Panel
// ========================================
panel: {
title: 'Editor de Partículas',
noFileOpen: 'No hay archivo de partículas abierto',
dropToOpen: 'Arrastre un archivo .particle aquí o use el botón Abrir'
},
// ========================================
// Toolbar
// ========================================
toolbar: {
play: 'Reproducir',
pause: 'Pausar',
restart: 'Reiniciar',
save: 'Guardar',
open: 'Abrir',
maximize: 'Maximizar vista previa',
minimize: 'Minimizar vista previa',
followMouse: 'Seguir ratón',
resetPosition: 'Restablecer posición'
},
// ========================================
// Sections
// ========================================
sections: {
basic: 'Básico',
emission: 'Emisión',
particle: 'Partícula',
color: 'Color',
modules: 'Módulos',
presets: 'Preajustes'
},
// ========================================
// Basic Properties
// ========================================
basic: {
name: 'Nombre',
texture: 'Textura',
maxParticles: 'Máx. Partículas',
looping: 'Bucle',
duration: 'Duración',
prewarm: 'Precalentamiento',
playSpeed: 'Velocidad',
blendMode: 'Modo mezcla',
space: 'Espacio',
particleSize: 'Tamaño partícula',
sortOrder: 'Orden'
},
// ========================================
// Blend Modes
// ========================================
blendMode: {
normal: 'Normal',
additive: 'Aditivo',
multiply: 'Multiplicar'
},
// ========================================
// Simulation Space
// ========================================
space: {
world: 'Mundo',
local: 'Local'
},
// ========================================
// Emission Properties
// ========================================
emission: {
rate: 'Tasa',
shape: 'Forma',
radius: 'Radio',
width: 'Ancho',
height: 'Alto',
coneAngle: 'Ángulo cono'
},
// ========================================
// Emission Shapes
// ========================================
shapes: {
point: 'Punto',
circle: 'Círculo',
ring: 'Anillo',
rectangle: 'Rectángulo',
edge: 'Borde',
line: 'Línea',
cone: 'Cono'
},
// ========================================
// Particle Properties
// ========================================
particle: {
lifetime: 'Vida',
speed: 'Velocidad',
direction: 'Dirección',
spread: 'Dispersión',
scale: 'Escala',
gravity: 'Gravedad'
},
// ========================================
// Color Properties
// ========================================
color: {
startColor: 'Color inicial',
startAlpha: 'Alfa inicial',
endAlpha: 'Alfa final',
endScale: 'Escala final'
},
// ========================================
// Module Names
// ========================================
modules: {
colorOverLifetime: 'Color durante vida',
sizeOverLifetime: 'Tamaño durante vida',
velocityOverLifetime: 'Velocidad durante vida',
rotationOverLifetime: 'Rotación durante vida',
noise: 'Ruido',
collision: 'Colisión',
forceField: 'Campo de fuerza'
},
// ========================================
// Velocity Over Lifetime
// ========================================
velocity: {
drag: 'Arrastre',
orbital: 'Orbital',
radial: 'Radial'
},
// ========================================
// Rotation Over Lifetime
// ========================================
rotation: {
startMult: 'Mult. inicial',
endMult: 'Mult. final',
additional: 'Adicional'
},
// ========================================
// Noise Module
// ========================================
noise: {
position: 'Posición',
velocity: 'Velocidad',
rotation: 'Rotación',
frequency: 'Frecuencia',
scroll: 'Desplazamiento'
},
// ========================================
// Collision Module
// ========================================
collision: {
boundary: 'Límite',
behavior: 'Comportamiento',
left: 'Izquierda',
right: 'Derecha',
top: 'Arriba',
bottom: 'Abajo',
radius: 'Radio',
bounce: 'Rebote',
lifeLoss: 'Pérdida de vida'
},
// ========================================
// Boundary Types
// ========================================
boundaryType: {
none: 'Ninguno',
rectangle: 'Rectángulo',
circle: 'Círculo'
},
// ========================================
// Collision Behaviors
// ========================================
collisionBehavior: {
kill: 'Eliminar',
bounce: 'Rebotar',
wrap: 'Envolver'
},
// ========================================
// Force Field Module
// ========================================
forceField: {
type: 'Tipo',
strength: 'Fuerza',
directionX: 'Dirección X',
directionY: 'Dirección Y',
centerX: 'Centro X',
centerY: 'Centro Y',
range: 'Rango',
falloff: 'Caída'
},
// ========================================
// Force Field Types
// ========================================
forceFieldType: {
wind: 'Viento',
point: 'Punto',
vortex: 'Vórtice',
turbulence: 'Turbulencia'
},
// ========================================
// Curve Editor
// ========================================
curve: {
deletePoint: 'Eliminar punto',
constant: 'Valor constante',
fadeIn: 'Aparecer',
fadeOut: 'Desvanecer',
bellCurve: 'Curva campana',
uCurve: 'Curva U'
},
// ========================================
// Gradient Editor
// ========================================
gradient: {
deleteStop: 'Eliminar parada'
},
// ========================================
// Texture Picker
// ========================================
texturePicker: {
browse: 'Examinar...',
clear: 'Limpiar'
},
// ========================================
// Notifications
// ========================================
notifications: {
fileSaved: 'Archivo guardado: {{path}}',
fileSaveFailed: 'Error al guardar archivo',
fileOpened: 'Archivo abierto: {{path}}',
fileOpenFailed: 'Error al abrir archivo'
},
// ========================================
// Dialogs
// ========================================
dialogs: {
selectTexture: 'Seleccionar imagen de textura',
selectParticleFile: 'Seleccionar archivo de partículas',
saveParticleFile: 'Guardar archivo de partículas'
}
};