Files
mini-game-ai/src/locales/en.json
richarjiang 140608845a refactor: 重构纹理图集工具,实现浏览器端实时处理
将合图处理从服务端迁移到浏览器端,使用 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>
2026-01-26 22:05:25 +08:00

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"
}
}