将合图处理从服务端迁移到浏览器端,使用 Web Worker 实现高性能打包算法,新增三栏布局界面和精灵动画预览功能 - 新增 atlasStore 状态管理,实现文件、配置、结果的统一管理 - 新增 atlas-packer 打包算法库(MaxRects/Shelf),支持浏览器端快速合图 - 新增 atlas-worker Web Worker,实现异步打包处理避免阻塞 UI - 新增三栏布局组件:FileListPanel、CanvasPreview、AtlasConfigPanel - 新增 AnimationPreviewDialog 支持精灵动画帧预览和帧率控制 - 优化所有工具页面的响应式布局和交互体验 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
373 lines
13 KiB
JSON
373 lines
13 KiB
JSON
{
|
|
"common": {
|
|
"appName": "KYMR",
|
|
"loading": "Loading...",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"close": "Close",
|
|
"confirm": "Confirm",
|
|
"back": "Back",
|
|
"next": "Next",
|
|
"download": "Download",
|
|
"share": "Share",
|
|
"reset": "Reset",
|
|
"submit": "Submit",
|
|
"tryNow": "Try it now",
|
|
"learnMore": "Learn More",
|
|
"getStarted": "Get Started",
|
|
"startBuilding": "Start Building",
|
|
"signIn": "Sign In",
|
|
"register": "Register",
|
|
"features": "Features",
|
|
"settings": "Settings",
|
|
"toggleMenu": "Toggle menu",
|
|
"processing": "Processing...",
|
|
"uploading": "Uploading...",
|
|
"completed": "Completed!",
|
|
"failed": "Failed",
|
|
"ready": "Ready to process",
|
|
"file": "File",
|
|
"files": "files",
|
|
"yes": "Yes",
|
|
"no": "No"
|
|
},
|
|
"nav": {
|
|
"tools": "Tools",
|
|
"docs": "Docs",
|
|
"about": "About",
|
|
"dashboard": "Dashboard",
|
|
"overview": "Overview"
|
|
},
|
|
"home": {
|
|
"hero": {
|
|
"kicker": "Built for asset prep",
|
|
"title": "Empowering Game Development",
|
|
"description": "Video to frames, image compression, audio optimization. Everything you need to prepare game assets, in one place.",
|
|
"startBuilding": "Start Building",
|
|
"secondaryCta": "Explore tools",
|
|
"note": "No plugins. No setup. Just ship assets faster.",
|
|
"previewTitle": "Asset Processing Workbench",
|
|
"stats": {
|
|
"developers": "Developers",
|
|
"filesProcessed": "Files Processed",
|
|
"uptime": "Uptime"
|
|
}
|
|
},
|
|
"featuresSection": {
|
|
"title": "Everything You Need",
|
|
"description": "Powerful tools designed specifically for game developers"
|
|
},
|
|
"showcase": {
|
|
"kicker": "Three tools. Zero clutter.",
|
|
"title": "A smoother pipeline for everyday assets",
|
|
"description": "Minimal controls. Predictable results. Designed to keep you in flow.",
|
|
"cta": "Open tool"
|
|
},
|
|
"workflow": {
|
|
"title": "Treat assets like a build step",
|
|
"description": "Clear inputs, clear outputs. Repeatable settings. Less trial-and-error.",
|
|
"steps": {
|
|
"step1": {
|
|
"title": "Drop files",
|
|
"description": "Batch-friendly. Drag files in and keep moving."
|
|
},
|
|
"step2": {
|
|
"title": "Tune the essentials",
|
|
"description": "Only the knobs you actually need: quality, FPS, formats."
|
|
},
|
|
"step3": {
|
|
"title": "Export clean outputs",
|
|
"description": "Structured results that fit right into art and engineering workflows."
|
|
}
|
|
}
|
|
},
|
|
"quality": {
|
|
"title": "Fast, stable, intentional",
|
|
"description": "Not feature bloat—just a better interaction loop.",
|
|
"items": {
|
|
"fast": {
|
|
"title": "Lightning fast",
|
|
"description": "Spend less time waiting and more time building."
|
|
},
|
|
"private": {
|
|
"title": "Secure by default",
|
|
"description": "Minimize exposure and keep processing straightforward."
|
|
},
|
|
"designed": {
|
|
"title": "Designed for devs",
|
|
"description": "Clear information hierarchy and repeatable rhythm across tools."
|
|
}
|
|
}
|
|
},
|
|
"final": {
|
|
"title": "Start now. Keep your time for the game.",
|
|
"description": "Pick a tool and build a faster workflow from the first asset.",
|
|
"primaryCta": "Get started",
|
|
"secondaryCta": "Try Video to Frames"
|
|
},
|
|
"tools": {
|
|
"videoToFrames": {
|
|
"title": "Video to Frames",
|
|
"description": "Extract frames from videos with customizable frame rates. Perfect for sprite animations."
|
|
},
|
|
"imageCompression": {
|
|
"title": "Image Compression",
|
|
"description": "Optimize images for web and mobile without quality loss. Support for batch processing."
|
|
},
|
|
"audioCompression": {
|
|
"title": "Audio Compression",
|
|
"description": "Compress and convert audio files to various formats. Adjust bitrate and sample rate."
|
|
},
|
|
"aiTools": {
|
|
"title": "More Tools",
|
|
"description": "Additional utilities for game development. Coming soon."
|
|
}
|
|
},
|
|
"benefits": {
|
|
"title": "Why Choose KYMR?",
|
|
"description": "We understand the unique challenges of game development. Our tools are built to help you work faster and smarter.",
|
|
"lightningFast": {
|
|
"title": "Lightning Fast",
|
|
"description": "Process files in seconds with our optimized infrastructure."
|
|
},
|
|
"secure": {
|
|
"title": "Secure & Private",
|
|
"description": "Your files are encrypted and automatically deleted after processing."
|
|
},
|
|
"forDevelopers": {
|
|
"title": "Built for Developers",
|
|
"description": "API access, batch processing, and tools designed for game development workflows."
|
|
}
|
|
},
|
|
"cta": {
|
|
"title": "Ready to Level Up?",
|
|
"description": "Join thousands of game developers building amazing games with our tools.",
|
|
"getStarted": "Start Creating"
|
|
}
|
|
},
|
|
"sidebar": {
|
|
"tools": "Tools",
|
|
"aiTools": "More Tools",
|
|
"videoToFrames": "Video to Frames",
|
|
"imageCompression": "Image Compression",
|
|
"audioCompression": "Audio Compression",
|
|
"textureAtlas": "Texture Atlas",
|
|
"aiImage": "AI Image",
|
|
"aiAudio": "AI Audio"
|
|
},
|
|
"uploader": {
|
|
"dropFiles": "Drag & drop files here",
|
|
"dropActive": "Drop your files here",
|
|
"fileRejected": "File type not accepted",
|
|
"browseFiles": "or click to browse • Max {{maxSize}} • Up to {{maxFiles}} {{file}}",
|
|
"file_one": "file",
|
|
"file_other": "files"
|
|
},
|
|
"progress": {
|
|
"status": {
|
|
"idle": "Ready to process",
|
|
"uploading": "Uploading...",
|
|
"processing": "Processing...",
|
|
"completed": "Completed!",
|
|
"failed": "Failed"
|
|
}
|
|
},
|
|
"config": {
|
|
"imageCompression": {
|
|
"title": "Compression Settings",
|
|
"description": "Configure compression options",
|
|
"quality": "Compression Quality",
|
|
"qualityDescription": "Lower quality = smaller file size",
|
|
"format": "Output Format",
|
|
"formatDescription": "Convert to a different format (optional)",
|
|
"formatOriginal": "Original",
|
|
"formatAuto": "Auto (Best)",
|
|
"formatJpeg": "JPEG",
|
|
"formatPng": "PNG",
|
|
"formatWebp": "WebP",
|
|
"formatAvif": "AVIF"
|
|
},
|
|
"videoFrames": {
|
|
"title": "Export Settings",
|
|
"description": "Configure how frames are extracted",
|
|
"fps": "Frame Rate",
|
|
"fpsDescription": "Number of frames to extract per second",
|
|
"format": "Output Format",
|
|
"formatDescription": "Image format for the extracted frames",
|
|
"quality": "Quality",
|
|
"qualityDescription": "Image quality (for JPEG and WebP)"
|
|
},
|
|
"audioCompression": {
|
|
"title": "Audio Settings",
|
|
"description": "Configure compression parameters",
|
|
"bitrate": "Bitrate",
|
|
"bitrateDescription": "Higher bitrate = better quality, larger file",
|
|
"format": "Output Format",
|
|
"formatDescription": "Target audio format",
|
|
"sampleRate": "Sample Rate",
|
|
"sampleRateDescription": "Audio sample rate in Hz",
|
|
"channels": "Channels",
|
|
"channelsDescription": "Audio channels",
|
|
"stereo": "Stereo (2 channels)",
|
|
"mono": "Mono (1 channel)"
|
|
},
|
|
"textureAtlas": {
|
|
"title": "Atlas Settings",
|
|
"description": "Configure texture atlas generation",
|
|
"maxWidth": "Max Width",
|
|
"maxWidthDescription": "Maximum atlas width in pixels",
|
|
"maxHeight": "Max Height",
|
|
"maxHeightDescription": "Maximum atlas height in pixels",
|
|
"padding": "Padding",
|
|
"paddingDescription": "Space between sprites (prevents bleeding)",
|
|
"allowRotation": "Allow Rotation",
|
|
"allowRotationDescription": "Rotate sprites for better packing efficiency",
|
|
"pot": "Power of Two",
|
|
"potDescription": "Use power-of-two dimensions (512, 1024, 2048, etc.)",
|
|
"format": "Image Format",
|
|
"formatDescription": "Output image format",
|
|
"quality": "Quality",
|
|
"qualityDescription": "Compression quality for WebP format",
|
|
"outputFormat": "Data Format",
|
|
"outputFormatDescription": "Format for sprite metadata",
|
|
"algorithm": "Packing Algorithm",
|
|
"algorithmDescription": "Algorithm for arranging sprites",
|
|
"formatPng": "PNG (Lossless)",
|
|
"formatWebp": "WebP (Compressed)",
|
|
"outputCocos2d": "Cocos2d plist",
|
|
"outputCocosCreator": "Cocos Creator JSON",
|
|
"outputGeneric": "Generic JSON",
|
|
"algorithmMaxRects": "MaxRects (Best)",
|
|
"algorithmShelf": "Shelf (Fast)"
|
|
}
|
|
},
|
|
"tools": {
|
|
"imageCompression": {
|
|
"title": "Image Compression",
|
|
"description": "World-class image compression with smart optimization",
|
|
"compressImages": "Compress Images",
|
|
"features": "Features",
|
|
"featureList": [
|
|
"Smart compression - guaranteed smaller output or return original",
|
|
"Multi-strategy optimization - tries multiple algorithms to find the best result",
|
|
"Auto format selection - intelligently picks the best format for your image",
|
|
"MozJPEG & WebP - industry-leading compression algorithms",
|
|
"Metadata stripping - automatic removal of EXIF and unnecessary data",
|
|
"Batch processing - compress multiple images at once"
|
|
]
|
|
},
|
|
"videoFrames": {
|
|
"title": "Video to Frames",
|
|
"description": "Extract frames from videos with customizable settings",
|
|
"processVideo": "Process Video",
|
|
"howItWorks": "How it works",
|
|
"steps": [
|
|
"Upload your video file (MP4, MOV, AVI, etc.)",
|
|
"Configure frame rate, format, and quality",
|
|
"Click \"Process Video\" to start extraction",
|
|
"Download the ZIP file with all frames"
|
|
]
|
|
},
|
|
"audioCompression": {
|
|
"title": "Audio Compression",
|
|
"description": "Compress and convert audio files with quality control",
|
|
"compressAudio": "Compress Audio",
|
|
"supportedFormats": "Supported Formats",
|
|
"input": "Input",
|
|
"output": "Output",
|
|
"inputFormats": "MP3, WAV, OGG, AAC, FLAC, M4A",
|
|
"outputFormats": "MP3, AAC, OGG, FLAC"
|
|
},
|
|
"textureAtlas": {
|
|
"title": "Texture Atlas",
|
|
"description": "Combine multiple images into a single texture atlas for game development",
|
|
"createAtlas": "Create Texture Atlas",
|
|
"features": "Features",
|
|
"featureList": [
|
|
"Smart packing - MaxRects algorithm for optimal space usage",
|
|
"Cocos Creator compatible - export in plist/JSON format",
|
|
"Rotation support - can rotate sprites for better packing",
|
|
"Power of Two - automatic POT sizing for better compatibility"
|
|
],
|
|
"downloadAll": "Download All",
|
|
"downloadImage": "Download Image",
|
|
"downloadData": "Download Data",
|
|
"dimensions": "Dimensions",
|
|
"sprites": "Sprites",
|
|
"imageFormat": "Image Format",
|
|
"dataFormat": "Data Format"
|
|
}
|
|
},
|
|
"processing": {
|
|
"uploadingImages": "Uploading images...",
|
|
"compressingImages": "Compressing images...",
|
|
"uploadingVideo": "Uploading video...",
|
|
"extractingFrames": "Extracting frames...",
|
|
"uploadingAudio": "Uploading audio...",
|
|
"compressingAudio": "Compressing audio...",
|
|
"uploadingSprites": "Uploading sprites...",
|
|
"creatingAtlas": "Creating texture atlas...",
|
|
"compressionComplete": "Compression complete!",
|
|
"processingComplete": "Processing complete!",
|
|
"atlasComplete": "Texture atlas created successfully!",
|
|
"compressionFailed": "Compression failed",
|
|
"processingFailed": "Processing failed",
|
|
"unknownError": "Unknown error",
|
|
"uploadProgress": "Uploading... {{progress}}%",
|
|
"compressProgress": "Compressing... {{progress}}%",
|
|
"processProgress": "Processing... {{progress}}%"
|
|
},
|
|
"results": {
|
|
"processingComplete": "Processing Complete",
|
|
"filesReady": "{{count}} {{file}} ready for download",
|
|
"file_one": "file",
|
|
"file_other": "files",
|
|
"saved": "Saved {{ratio}}%"
|
|
},
|
|
"preview": {
|
|
"title": "Image Comparison",
|
|
"original": "Original",
|
|
"compressed": "Compressed",
|
|
"dragHint": "Drag slider or click to compare",
|
|
"filename": "Filename"
|
|
},
|
|
"atlas": {
|
|
"dropSprites": "Drop sprites here",
|
|
"supportFolder": "Supports folder drag and drop",
|
|
"selectFiles": "Select Files",
|
|
"selectFolder": "Select Folder",
|
|
"preview": "Preview",
|
|
"emptyPreview": "Upload sprites to preview atlas",
|
|
"dragHint": "Drag files or folder to left panel",
|
|
"panHint": "Drag to pan, scroll to zoom",
|
|
"packing": "Packing...",
|
|
"rendering": "Rendering...",
|
|
"previewAnimation": "Preview Animation",
|
|
"sizeSettings": "Size Settings",
|
|
"layoutSettings": "Layout Settings",
|
|
"outputSettings": "Output Settings",
|
|
"resultInfo": "Atlas Info",
|
|
"animationPreview": "Animation Preview",
|
|
"animationDescription": "Preview sprite sequence animation",
|
|
"frame": "Frame",
|
|
"fps": "FPS",
|
|
"spriteSize": "Sprite Size",
|
|
"totalFrames": "Total Frames",
|
|
"duration": "Duration"
|
|
},
|
|
"footer": {
|
|
"tagline": "Media processing tools for game developers. Extract frames, compress images, optimize audio.",
|
|
"note": "Inspired by modern product storytelling—centered on your workflow, not UI noise.",
|
|
"sections": {
|
|
"tools": "Tools",
|
|
"company": "Product"
|
|
},
|
|
"links": {
|
|
"home": "Home"
|
|
},
|
|
"copyright": "All rights reserved"
|
|
}
|
|
}
|