565faacb7b
- Migrate backend from REST API to Gradio @gradio/client for generation - Fix Gradio parameter alignment (positions 36-49) for reference/cover audio - Add LoRA training pipeline with dataset upload, preprocessing, and export - Add News page with dismiss/restore and GitHub star button - Add localization info icon in Settings language section - Fix upload audio URL prefix, add missing MIME types - Add training API routes and Python preprocess script - Update i18n with news keys for all languages
2382 lines
87 KiB
TypeScript
2382 lines
87 KiB
TypeScript
export type Language = 'en' | 'zh' | 'ja' | 'ko';
|
||
|
||
export const translations = {
|
||
en: {
|
||
// Navigation
|
||
create: 'Create',
|
||
library: 'Library',
|
||
search: 'Search',
|
||
training: 'Training',
|
||
news: 'News',
|
||
|
||
// Theme
|
||
lightMode: 'Light Mode',
|
||
darkMode: 'Dark Mode',
|
||
|
||
// Auth
|
||
signIn: 'Sign In',
|
||
signOut: 'Sign Out',
|
||
settings: 'Settings',
|
||
|
||
// Username Modal
|
||
welcomeTitle: 'Welcome to ACE-Step UI',
|
||
welcomeSubtitle: 'Enter your name to get started creating AI music',
|
||
yourName: 'Your Name',
|
||
enterYourName: 'Enter your name',
|
||
getStarted: 'Get Started',
|
||
gettingStarted: 'Getting Started...',
|
||
yourMusicYourWay: 'Your music, your way. Create unlimited AI music for free.',
|
||
usernameMinLength: 'Username must be at least 2 characters',
|
||
usernameInvalidChars: 'Username can only contain letters, numbers, underscores, and dashes',
|
||
failedToSetUsername: 'Failed to set username',
|
||
|
||
// Toasts
|
||
songNotAvailable: 'This song is no longer available.',
|
||
unableToPlay: 'Unable to play this song.',
|
||
generationTimedOut: 'Generation timed out',
|
||
generationFailed: 'Generation failed. Please try again.',
|
||
playlistCreated: 'Playlist created successfully!',
|
||
failedToCreatePlaylist: 'Failed to create playlist',
|
||
songAddedToPlaylist: 'Song added to playlist',
|
||
failedToAddSong: 'Failed to add song to playlist',
|
||
songDeleted: 'Song deleted successfully',
|
||
failedToDeleteSong: 'Failed to delete song',
|
||
|
||
// Sidebar
|
||
aceStepUI: 'ACE-Step UI',
|
||
collapseSidebar: 'Collapse Sidebar',
|
||
expandSidebar: 'Expand Sidebar',
|
||
|
||
// Common
|
||
cancel: 'Cancel',
|
||
save: 'Save',
|
||
delete: 'Delete',
|
||
edit: 'Edit',
|
||
share: 'Share',
|
||
download: 'Download',
|
||
play: 'Play',
|
||
pause: 'Pause',
|
||
normalSpeed: 'Normal',
|
||
next: 'Next',
|
||
previous: 'Previous',
|
||
|
||
// Placeholders
|
||
searchPlaceholder: 'Search...',
|
||
|
||
// Settings
|
||
language: 'Language',
|
||
english: 'English',
|
||
chinese: 'Chinese',
|
||
japaneseLanguage: 'Japanese',
|
||
koreanLanguage: 'Korean',
|
||
appearance: 'Appearance',
|
||
profile: 'Profile',
|
||
viewProfile: 'View Profile',
|
||
editProfile: 'Edit Profile',
|
||
account: 'Account',
|
||
username: 'Username',
|
||
memberSince: 'Member since',
|
||
about: 'About',
|
||
version: 'Version',
|
||
localAIMusicGenerator: 'Local AI Music Generator',
|
||
poweredBy: 'Powered by ACE-Step 1.5. Open source and free to use.',
|
||
createdBy: 'Created by Ambsd',
|
||
localizedBy: 'Localization & Training by bdsqlsz',
|
||
follow: 'Follow',
|
||
done: 'Done',
|
||
light: 'Light',
|
||
dark: 'Dark',
|
||
|
||
// Mobile
|
||
createSong: 'Create Song',
|
||
viewList: 'View List',
|
||
|
||
// CreatePanel - Modes
|
||
simple: 'Simple',
|
||
custom: 'Custom',
|
||
|
||
// CreatePanel - Sections
|
||
audio: 'AUDIO',
|
||
lyrics: 'LYRICS',
|
||
styleOfMusic: 'STYLE OF MUSIC',
|
||
title: 'Title',
|
||
musicParameters: 'Music Parameters',
|
||
advancedSettings: 'Advanced Settings',
|
||
|
||
// CreatePanel - LoRA
|
||
loraPath: 'LoRA Path',
|
||
loraPathPlaceholder: 'Enter LoRA model path...',
|
||
browseFiles: 'Browse files',
|
||
loraLoaded: 'LoRA Loaded',
|
||
loraUnloaded: 'LoRA Unloaded',
|
||
loraLoad: 'Load',
|
||
loraUnload: 'Unload',
|
||
loraScale: 'LoRA Scale',
|
||
loraScaleDescription: 'Adjust the influence strength of the LoRA model',
|
||
|
||
// CreatePanel - Audio
|
||
reference: 'Reference',
|
||
cover: 'Cover',
|
||
fromLibrary: 'From library',
|
||
upload: 'Upload',
|
||
|
||
// CreatePanel - Lyrics
|
||
lyricsPlaceholder: 'Your lyrics here...',
|
||
leaveLyricsEmpty: 'Leave empty for instrumental or toggle below',
|
||
vocal: 'Vocal',
|
||
instrumental: 'Instrumental',
|
||
vocalLanguage: 'Vocal Language',
|
||
autoInstrumental: 'Auto / Instrumental',
|
||
vocalArabic: 'Arabic',
|
||
vocalAzerbaijani: 'Azerbaijani',
|
||
vocalBulgarian: 'Bulgarian',
|
||
vocalBengali: 'Bengali',
|
||
vocalCatalan: 'Catalan',
|
||
vocalCzech: 'Czech',
|
||
vocalDanish: 'Danish',
|
||
vocalGerman: 'German',
|
||
vocalGreek: 'Greek',
|
||
vocalEnglish: 'English',
|
||
vocalSpanish: 'Spanish',
|
||
vocalPersian: 'Persian',
|
||
vocalFinnish: 'Finnish',
|
||
vocalFrench: 'French',
|
||
vocalHebrew: 'Hebrew',
|
||
vocalHindi: 'Hindi',
|
||
vocalCroatian: 'Croatian',
|
||
vocalHaitianCreole: 'Haitian Creole',
|
||
vocalHungarian: 'Hungarian',
|
||
vocalIndonesian: 'Indonesian',
|
||
vocalIcelandic: 'Icelandic',
|
||
vocalItalian: 'Italian',
|
||
vocalJapanese: 'Japanese',
|
||
vocalKorean: 'Korean',
|
||
vocalLatin: 'Latin',
|
||
vocalLithuanian: 'Lithuanian',
|
||
vocalMalay: 'Malay',
|
||
vocalNepali: 'Nepali',
|
||
vocalDutch: 'Dutch',
|
||
vocalNorwegian: 'Norwegian',
|
||
vocalPunjabi: 'Punjabi',
|
||
vocalPolish: 'Polish',
|
||
vocalPortuguese: 'Portuguese',
|
||
vocalRomanian: 'Romanian',
|
||
vocalRussian: 'Russian',
|
||
vocalSanskrit: 'Sanskrit',
|
||
vocalSlovak: 'Slovak',
|
||
vocalSerbian: 'Serbian',
|
||
vocalSwedish: 'Swedish',
|
||
vocalSwahili: 'Swahili',
|
||
vocalTamil: 'Tamil',
|
||
vocalTelugu: 'Telugu',
|
||
vocalThai: 'Thai',
|
||
vocalTagalog: 'Tagalog',
|
||
vocalTurkish: 'Turkish',
|
||
vocalUkrainian: 'Ukrainian',
|
||
vocalUrdu: 'Urdu',
|
||
vocalVietnamese: 'Vietnamese',
|
||
vocalCantonese: 'Cantonese',
|
||
vocalChineseMandarin: 'Chinese (Mandarin)',
|
||
|
||
// CreatePanel - Style
|
||
stylePlaceholder: 'e.g. upbeat pop rock, emotional ballad, 90s hip hop',
|
||
genreMoodInstruments: 'Genre, mood, instruments, vibe',
|
||
refreshGenres: 'Refresh genre suggestions',
|
||
mainGenre: 'Main Genre',
|
||
subGenre: 'Sub Genre',
|
||
nameSong: 'Name your song',
|
||
|
||
// CreatePanel - Parameters
|
||
bpm: 'BPM',
|
||
auto: 'Auto',
|
||
duration: 'Duration',
|
||
seconds: 's',
|
||
keyScale: 'Key & Scale',
|
||
timeSignature: 'Time Signature',
|
||
|
||
// CreatePanel - Advanced
|
||
randomSeed: 'Random Seed',
|
||
thinking: 'Thinking',
|
||
audioFormat: 'Audio Format',
|
||
inferenceSteps: 'Inference Steps',
|
||
guidanceScale: 'Guidance Scale',
|
||
inferMethod: 'Inference Method',
|
||
shift: 'Shift',
|
||
timestepShiftForBase: 'Timestep shift for base models (not effective for turbo)',
|
||
expertControls: 'EXPERT CONTROLS',
|
||
lmParameters: 'LM Parameters',
|
||
controlLyricGeneration: 'Control lyric generation + creativity',
|
||
transform: 'TRANSFORM',
|
||
controlSourceAudio: 'Control how much the model follows the source audio',
|
||
audioCodes: 'Audio Codes',
|
||
optionalAudioCodes: 'Optional audio codes payload',
|
||
taskType: 'Task Type',
|
||
textToMusic: 'Text → Music',
|
||
audioCoverStrength: 'Audio Cover Strength',
|
||
repaintingStart: 'Repainting Start',
|
||
repaintingEnd: 'Repainting End',
|
||
instruction: 'Instruction',
|
||
lmTemperature: 'LM Temperature',
|
||
higherMoreRandom: 'Higher = more random (0-2)',
|
||
lmCfgScale: 'LM CFG Scale',
|
||
noCfgScale: '1.0 = no CFG (1-3)',
|
||
topK: 'Top-K',
|
||
topP: 'Top-P',
|
||
lmNegativePrompt: 'LM Negative Prompt',
|
||
noUserInput: 'NO USER INPUT',
|
||
thingsToAvoid: 'Things to avoid...',
|
||
useWhenCfgScaleGreater: 'Use when LM CFG Scale > 1.0',
|
||
lmTopK: 'LM Top-K',
|
||
lmTopP: 'LM Top-P',
|
||
|
||
// Guidance section
|
||
guidance: 'GUIDANCE',
|
||
advancedCfgScheduling: 'Advanced CFG scheduling controls.',
|
||
cfgIntervalStart: 'CFG Interval Start',
|
||
cfgIntervalEnd: 'CFG Interval End',
|
||
customTimesteps: 'Custom Timesteps',
|
||
timestepsPlaceholder: 'e.g. 1,3,5,7',
|
||
scoreScale: 'Score Scale',
|
||
lmBatchChunkSize: 'LM Batch Chunk Size',
|
||
trackName: 'Track Name',
|
||
optionalTrackName: 'Optional track name',
|
||
completeTrackClasses: 'Complete Track Classes',
|
||
trackClassesPlaceholder: 'class-a, class-b',
|
||
useAdg: 'Use ADG',
|
||
allowLmBatch: 'Allow LM Batch',
|
||
useCotMetas: 'Use CoT Metas',
|
||
useCotCaption: 'Use CoT Caption',
|
||
useCotLanguage: 'Use CoT Language',
|
||
autogen: 'Autogen',
|
||
constrainedDecodingDebug: 'Constrained Decoding Debug',
|
||
formatCaption: 'Format Caption',
|
||
getScores: 'Get Scores',
|
||
getLrcLyrics: 'Get LRC (Lyrics)',
|
||
batchSize: 'Batch Size (Variations)',
|
||
variations: 'Variations',
|
||
bulkGenerate: 'Bulk Generate',
|
||
job: 'job',
|
||
jobs: 'jobs',
|
||
queueMultipleJobs: 'Queue multiple independent generation jobs with same settings',
|
||
numberOfVariations: 'Number of song variations to generate',
|
||
moreStepsBetterQuality: 'More steps = better quality, slower (8 recommended for turbo)',
|
||
howCloselyFollowPrompt: 'How closely to follow the prompt',
|
||
seed: 'Seed',
|
||
randomSeedRecommended: 'Randomized every run (recommended)',
|
||
fixedSeedReproducible: 'Fixed seed for reproducible results',
|
||
enterFixedSeed: 'Enter fixed seed',
|
||
thinkingCot: 'Thinking (CoT)',
|
||
mp3Smaller: 'MP3 (smaller)',
|
||
flacLossless: 'FLAC (lossless)',
|
||
odeDeterministic: 'ODE (deterministic)',
|
||
sdeStochastic: 'SDE (stochastic)',
|
||
min: 'min',
|
||
|
||
// CreatePanel - Drag & Drop
|
||
dropToUseAudio: 'Drop to use audio',
|
||
dropToUpload: 'Drop to upload',
|
||
usingAsReference: 'Using as Reference',
|
||
usingAsCover: 'Using as Cover',
|
||
uploadingAsReference: 'Uploading as Reference',
|
||
uploadingAsCover: 'Uploading as Cover',
|
||
|
||
// CreatePanel - Vocal Gender
|
||
vocalGender: 'Vocal Gender',
|
||
male: 'Male',
|
||
female: 'Female',
|
||
|
||
// CreatePanel - LM Backend & Model
|
||
lmBackendLabel: 'LM Backend',
|
||
lmBackendPt: 'PT (~1.6 GB VRAM)',
|
||
lmBackendVllm: 'VLLM (~9.2 GB VRAM)',
|
||
lmBackendHint: 'PT uses less VRAM, VLLM may be faster on powerful GPUs',
|
||
lmModelLabel: 'LM Model',
|
||
lmModel06B: '0.6B (Lightest, ~0.5 GB VRAM)',
|
||
lmModel17B: '1.7B (Balanced, ~1.5 GB VRAM)',
|
||
lmModel4B: '4B (Best quality, ~4 GB VRAM)',
|
||
lmModelHint: 'Controls the LLM used for lyrics/style enhancement. Auto-downloads if not present.',
|
||
|
||
// CreatePanel - Transcription
|
||
transcribing: 'Transcribing...',
|
||
transcribingWithWhisper: 'Transcribing with Whisper…',
|
||
|
||
// CreatePanel - Library Tabs
|
||
uploaded: 'Uploaded',
|
||
createdTab: 'Created',
|
||
useTrack: 'Use',
|
||
noCreatedSongsYet: 'No created songs yet',
|
||
generateSongsToReuse: 'Generate songs to reuse them as cover or reference',
|
||
|
||
// CreatePanel - Actions
|
||
generate: 'Generate',
|
||
generating: 'Generating...',
|
||
createButton: 'Create',
|
||
formatLyrics: 'Format Lyrics',
|
||
formatting: 'Formatting...',
|
||
clearAll: 'Clear All',
|
||
|
||
// Simple Mode
|
||
describeYourSong: 'DESCRIBE YOUR SONG',
|
||
songDescriptionPlaceholder: 'A happy pop song about summer adventures with friends...',
|
||
quickSettings: 'QUICK SETTINGS',
|
||
key: 'Key',
|
||
time: 'Time',
|
||
|
||
// CreatePanel - Errors
|
||
loginToGenerate: 'Please login to generate music',
|
||
uploadFailed: 'Upload failed',
|
||
formatFailed: 'Format failed',
|
||
formatFailedDetail: 'Format failed. Make sure the LLM is initialized.',
|
||
formatFailedLlmUnavailable: 'Format failed. The LLM may not be available.',
|
||
deleteSongConfirm: 'Are you sure you want to delete "{title}"? This action cannot be undone.',
|
||
profileUpdateFailed: 'Failed to update profile',
|
||
ffmpegLoadFailed: 'Failed to load video encoder. Please refresh and try again.',
|
||
videoRenderFailed: 'Video rendering failed. Please try again.',
|
||
|
||
// SongList / Filters
|
||
searchYourSongs: 'Search your songs...',
|
||
filters: 'Filters',
|
||
refineBy: 'REFINE BY',
|
||
liked: 'Liked',
|
||
public: 'Public',
|
||
private: 'Private',
|
||
generatingStatus: 'Generating',
|
||
selectSongToView: 'Select a song to view details',
|
||
noSongsMatchFilters: 'No songs match your filters.',
|
||
clearFilters: 'Clear filters',
|
||
|
||
// RightSidebar - Song Details
|
||
songDetails: 'Song Details',
|
||
created: 'Created',
|
||
styleTags: 'STYLE & TAGS',
|
||
lyricsSection: 'LYRICS',
|
||
copyLyrics: 'Copy',
|
||
|
||
// Languages
|
||
japanese: 'Japanese',
|
||
spanish: 'Spanish',
|
||
german: 'German',
|
||
french: 'French',
|
||
portuguese: 'Portuguese',
|
||
russian: 'Russian',
|
||
italian: 'Italian',
|
||
dutch: 'Dutch',
|
||
polish: 'Polish',
|
||
turkish: 'Turkish',
|
||
vietnamese: 'Vietnamese',
|
||
czech: 'Czech',
|
||
persian: 'Persian',
|
||
arabic: 'Arabic',
|
||
korean: 'Korean',
|
||
thai: 'Thai',
|
||
hindi: 'Hindi',
|
||
indonesian: 'Indonesian',
|
||
ukrainian: 'Ukrainian',
|
||
hungarian: 'Hungarian',
|
||
swedish: 'Swedish',
|
||
romanian: 'Romanian',
|
||
greek: 'Greek',
|
||
|
||
// Task Types
|
||
audio2audio: 'Audio → Audio',
|
||
coverTask: 'Cover',
|
||
repaintTask: 'Repaint',
|
||
|
||
// Search Page
|
||
searchSongsPlaceholder: 'Search for songs, playlists, creators, or genres',
|
||
songsMatching: 'Songs matching',
|
||
featuredSongs: 'Featured Songs',
|
||
noSongsFound: 'No songs found matching',
|
||
creatorsMatching: 'Creators matching',
|
||
featuredCreators: 'Featured Creators',
|
||
noCreatorsFound: 'No creators found matching',
|
||
noCreatorsYet: 'No creators yet. Be the first to share your music!',
|
||
playlistsMatching: 'Playlists matching',
|
||
featuredPlaylists: 'Featured Playlists',
|
||
noPlaylistsFound: 'No playlists found matching',
|
||
noPlaylistsYet: 'No public playlists yet. Create one and share your favorites!',
|
||
genres: 'Genres',
|
||
songs: 'songs',
|
||
|
||
// Library View
|
||
yourLibrary: 'Your Library',
|
||
newPlaylist: 'New Playlist',
|
||
likedSongs: 'Liked Songs',
|
||
playlists: 'Playlists',
|
||
playlist: 'Playlist',
|
||
byYou: 'By You',
|
||
|
||
// User Profile
|
||
back: 'Back',
|
||
loadingProfile: 'Loading profile...',
|
||
userNotFound: 'User not found',
|
||
goBack: 'Go Back',
|
||
likes: 'Likes',
|
||
plays: 'Plays',
|
||
recent: 'Recent',
|
||
top: 'Top',
|
||
noPublicSongsYet: 'No public songs yet',
|
||
seeMore: 'See More',
|
||
joined: 'Joined',
|
||
supportingSince: 'Supporting since',
|
||
avatarImage: 'Avatar Image',
|
||
uploadAvatar: 'Upload Avatar',
|
||
avatarFormats: 'JPG, PNG, WebP, GIF • Max 5MB',
|
||
bannerImage: 'Banner Image',
|
||
clickToUploadBanner: 'Click to upload banner',
|
||
bannerFormats: 'Recommended: 1500x500px • JPG, PNG, WebP, GIF • Max 5MB',
|
||
bio: 'Bio',
|
||
bioPlaceholder: 'Tell us about yourself...',
|
||
uploadingAvatar: 'Uploading Avatar...',
|
||
uploadingBanner: 'Uploading Banner...',
|
||
saving: 'Saving...',
|
||
saveChanges: 'Save Changes',
|
||
|
||
// Playlist Modals
|
||
createPlaylist: 'Create Playlist',
|
||
playlistName: 'Name',
|
||
playlistNamePlaceholder: 'My Awesome Playlist',
|
||
playlistDescription: 'Description',
|
||
descriptionPlaceholder: 'Vibes for coding...',
|
||
addToPlaylist: 'Add to Playlist',
|
||
createNewPlaylist: 'Create New Playlist',
|
||
noExistingPlaylists: 'No existing playlists.',
|
||
|
||
// Edit Profile Modal (Settings)
|
||
usernameLabel: 'Username',
|
||
usernamePlaceholder: 'username',
|
||
usernameMinLengthError: 'Username must be at least 2 characters',
|
||
usernameTakenError: 'Username is already taken',
|
||
usernameUpdateFailedError: 'Failed to update username',
|
||
usernameRequirements: 'Letters, numbers, underscores, and hyphens only',
|
||
|
||
// Song Details (RightSidebar)
|
||
more: 'more',
|
||
copy: 'Copy',
|
||
copied: 'Copied!',
|
||
copyAllTags: 'Copy all tags',
|
||
|
||
// Song Dropdown Menu
|
||
createVideo: 'Create Video',
|
||
editAudio: 'Edit Audio',
|
||
extractStems: 'Extract Stems',
|
||
reusePrompt: 'Reuse Prompt',
|
||
deleteSong: 'Delete Song',
|
||
useAsReference: 'Use as Reference',
|
||
coverSong: 'Cover Song',
|
||
confirmDeleteTitle: 'Delete Song',
|
||
confirmDeleteManyTitle: 'Delete Songs',
|
||
deleteSongsConfirm: 'Delete {count} songs? This action cannot be undone.',
|
||
songsDeletedSuccess: 'Songs deleted successfully',
|
||
songsDeletedPartial: 'Deleted {succeeded}/{total} songs',
|
||
deleteUploadConfirm: 'Delete this upload? This action cannot be undone.',
|
||
cannotBeUndone: 'This action cannot be undone.',
|
||
|
||
// Player
|
||
nowPlaying: 'Now Playing',
|
||
downloadAudio: 'Download Audio',
|
||
openInEditor: 'Open in Editor',
|
||
anonymous: 'Anonymous',
|
||
|
||
// PlaylistDetail
|
||
loadingPlaylist: 'Loading playlist...',
|
||
playlistNotFound: 'Playlist not found',
|
||
deletePlaylistConfirm: 'Are you sure you want to delete this playlist?',
|
||
artist: 'Artist',
|
||
deletePlaylist: 'Delete Playlist',
|
||
dateAdded: 'Date Added',
|
||
justNow: 'Just now',
|
||
unknown: 'Unknown',
|
||
|
||
// SongProfile
|
||
loadingSong: 'Loading song...',
|
||
songNotFound: 'Song not found',
|
||
similar: 'Similar',
|
||
by: 'By',
|
||
|
||
// ShareModal
|
||
shareSong: 'Share Song',
|
||
shareOnX: 'Share on X',
|
||
shareOnFacebook: 'Share on Facebook',
|
||
shareOnWhatsApp: 'Share on WhatsApp',
|
||
shareOnTelegram: 'Share on Telegram',
|
||
shareOnReddit: 'Share on Reddit',
|
||
shareOnLinkedIn: 'Share on LinkedIn',
|
||
shareViaEmail: 'Share via Email',
|
||
copyLink: 'Copy Link',
|
||
emailSubject: 'Check out this AI song',
|
||
emailBody: 'Hey!\n\nI created this AI-generated song and thought you\'d love it:\n\n"{title}" by {creator}\n{style}\n\nListen here: {url}\n\nMade with ACE-Step UI - free and open source local AI music generation!',
|
||
|
||
// Reference Modal
|
||
referenceModalTitle: 'Reference',
|
||
coverModalTitle: 'Cover',
|
||
referenceModalDescription: 'Create songs inspired by a reference track',
|
||
coverModalDescription: 'Transform an existing track into a new version',
|
||
uploadAudio: 'Upload audio',
|
||
uploadingAudio: 'Uploading...',
|
||
audioFormats: 'MP3, WAV, FLAC',
|
||
mine: 'Mine',
|
||
loadingTracks: 'Loading tracks...',
|
||
noTracksYet: 'No tracks yet',
|
||
uploadAudioFilesAsReferences: 'Upload audio files to use them as references',
|
||
|
||
// Training Module
|
||
loraTraining: 'LoRA Training',
|
||
trainingDescription: 'Build datasets from your audio files and train custom LoRA adapters',
|
||
datasetBuilder: 'Dataset Builder',
|
||
trainLora: 'Train LoRA',
|
||
quickStart: 'Quick Start',
|
||
chooseOneOption: 'Choose one: Load existing dataset OR Scan new directory',
|
||
loadExistingDataset: 'Load Existing Dataset',
|
||
loadDataset: 'Load',
|
||
scanNewDirectory: 'Scan New Directory',
|
||
scanDataset: 'Scan',
|
||
datasetSettings: 'Dataset Settings',
|
||
datasetName: 'Dataset Name',
|
||
customActivationTag: 'Custom Activation Tag',
|
||
allInstrumental: 'All Instrumental',
|
||
tagPosition: 'Tag Position',
|
||
tagPrepend: 'Prepend (tag, caption)',
|
||
tagAppend: 'Append (caption, tag)',
|
||
tagReplace: 'Replace caption',
|
||
genreRatio: 'Genre Ratio',
|
||
genreRatioHint: '0% = all Caption, 100% = all Genre',
|
||
autoLabelWithAI: 'Auto-Label with AI',
|
||
autoLabelDescription: 'Generate metadata for audio files: Caption, BPM, Key, Time Signature',
|
||
skipMetas: 'Skip BPM/Key/Time Signature',
|
||
onlyUnlabeled: 'Only Unlabeled',
|
||
autoLabelAll: 'Auto-Label All',
|
||
filename: 'Filename',
|
||
labeled: 'Labeled',
|
||
saveDataset: 'Save Dataset',
|
||
preprocessToTensors: 'Preprocess to Tensors',
|
||
preprocessDescription: 'Converts dataset to pre-computed tensors for fast training (requires model loaded)',
|
||
preprocess: 'Preprocess',
|
||
preprocessedDataset: 'Preprocessed Dataset',
|
||
loraSettings: 'LoRA Settings',
|
||
loraRank: 'LoRA Rank',
|
||
loraAlpha: 'LoRA Alpha',
|
||
dropout: 'Dropout',
|
||
trainingParameters: 'Training Parameters',
|
||
learningRate: 'Learning Rate',
|
||
maxEpochs: 'Max Epochs',
|
||
gradientAccumulation: 'Gradient Accumulation',
|
||
saveEvery: 'Save Every',
|
||
epochs: 'epochs',
|
||
outputDirectory: 'Output Directory',
|
||
useFP8: 'Use FP8 Quantization',
|
||
fp8Description: 'Reduces VRAM usage',
|
||
startTraining: 'Start Training',
|
||
stopTraining: 'Stop Training',
|
||
trainingProgress: 'Training Progress',
|
||
trainingLog: 'Training Log',
|
||
trainingStatus: 'Training Status',
|
||
tensorboardView: 'TensorBoard View',
|
||
showTensorboard: 'Show TensorBoard',
|
||
hideTensorboard: 'Hide TensorBoard',
|
||
openInNewTab: 'Open in New Tab',
|
||
|
||
// Training Status Messages
|
||
scanning: 'Scanning...',
|
||
autoLabeling: 'Auto-labeling...',
|
||
savingDataset: 'Saving...',
|
||
preprocessing: 'Preprocessing...',
|
||
loadingDataset: 'Loading...',
|
||
startingTraining: 'Starting...',
|
||
error: 'Error',
|
||
datasetInfo: 'Dataset: {name}, Samples: {samples}, Labeled: {labeled}',
|
||
trainingStep: 'Step {step} - Loss: {loss}',
|
||
editSample: 'Edit Sample',
|
||
caption: 'Caption',
|
||
genre: 'Genre',
|
||
promptOverride: 'Prompt Override',
|
||
musicDescription: 'Music description...',
|
||
overrideGlobalRatio: 'Override global ratio for this sample',
|
||
editableUsedForTraining: 'editable, used for training',
|
||
useGlobalRatio: 'Use Global Ratio',
|
||
thisSample: 'this sample',
|
||
},
|
||
zh: {
|
||
// Navigation
|
||
create: '创作',
|
||
library: '音乐库',
|
||
search: '搜索',
|
||
training: '训练',
|
||
news: '新闻',
|
||
|
||
// Theme
|
||
lightMode: '浅色模式',
|
||
darkMode: '深色模式',
|
||
|
||
// Auth
|
||
signIn: '登录',
|
||
signOut: '退出',
|
||
settings: '设置',
|
||
|
||
// Username Modal
|
||
welcomeTitle: '欢迎使用 ACE-Step UI',
|
||
welcomeSubtitle: '输入您的名字开始创作 AI 音乐',
|
||
yourName: '您的名字',
|
||
enterYourName: '请输入您的名字',
|
||
getStarted: '开始使用',
|
||
gettingStarted: '正在启动...',
|
||
yourMusicYourWay: '您的音乐,您的方式。免费创作无限 AI 音乐。',
|
||
usernameMinLength: '用户名至少需要 2 个字符',
|
||
usernameInvalidChars: '用户名只能包含字母、数字、下划线和破折号',
|
||
failedToSetUsername: '设置用户名失败',
|
||
|
||
// Toasts
|
||
songNotAvailable: '该歌曲已不可用。',
|
||
unableToPlay: '无法播放该歌曲。',
|
||
generationTimedOut: '生成超时',
|
||
generationFailed: '生成失败,请重试。',
|
||
playlistCreated: '歌单创建成功!',
|
||
failedToCreatePlaylist: '创建歌单失败',
|
||
songAddedToPlaylist: '已添加到歌单',
|
||
failedToAddSong: '添加歌曲失败',
|
||
songDeleted: '歌曲删除成功',
|
||
failedToDeleteSong: '删除歌曲失败',
|
||
|
||
// Sidebar
|
||
aceStepUI: 'ACE-Step UI',
|
||
collapseSidebar: '收起侧边栏',
|
||
expandSidebar: '展开侧边栏',
|
||
|
||
// Common
|
||
cancel: '取消',
|
||
save: '保存',
|
||
delete: '删除',
|
||
edit: '编辑',
|
||
share: '分享',
|
||
download: '下载',
|
||
play: '播放',
|
||
pause: '暂停',
|
||
normalSpeed: '正常',
|
||
next: '下一首',
|
||
previous: '上一首',
|
||
|
||
// Placeholders
|
||
searchPlaceholder: '搜索...',
|
||
|
||
// Settings
|
||
language: '语言',
|
||
english: 'English',
|
||
chinese: '简体中文',
|
||
japaneseLanguage: '日本語',
|
||
koreanLanguage: '한국어',
|
||
appearance: '外观',
|
||
profile: '个人资料',
|
||
viewProfile: '查看个人资料',
|
||
editProfile: '编辑资料',
|
||
account: '账户',
|
||
username: '用户名',
|
||
memberSince: '加入时间',
|
||
about: '关于',
|
||
version: '版本',
|
||
localAIMusicGenerator: '本地 AI 音乐生成器',
|
||
poweredBy: '由 ACE-Step 1.5 驱动。开源免费使用。',
|
||
createdBy: '开发者 Ambsd',
|
||
localizedBy: '本地化翻译 & 训练 青龙圣者',
|
||
follow: '关注',
|
||
done: '完成',
|
||
light: '浅色',
|
||
dark: '深色',
|
||
|
||
// Mobile
|
||
createSong: '创作歌曲',
|
||
viewList: '查看列表',
|
||
|
||
// CreatePanel - Modes
|
||
simple: '简单',
|
||
custom: '自定义',
|
||
|
||
// CreatePanel - Sections
|
||
audio: '音频',
|
||
lyrics: '歌词',
|
||
styleOfMusic: '音乐风格',
|
||
title: '标题',
|
||
musicParameters: '音乐参数',
|
||
advancedSettings: '高级设置',
|
||
|
||
// CreatePanel - LoRA
|
||
loraPath: 'LoRA 路径',
|
||
loraPathPlaceholder: '输入 LoRA 模型路径...',
|
||
browseFiles: '浏览文件',
|
||
loraLoaded: 'LoRA 已加载',
|
||
loraUnloaded: 'LoRA 未加载',
|
||
loraLoad: '加载',
|
||
loraUnload: '卸载',
|
||
loraScale: 'LoRA 强度',
|
||
loraScaleDescription: '调整 LoRA 模型的影响强度',
|
||
|
||
// CreatePanel - Audio
|
||
reference: '参考',
|
||
cover: '翻唱',
|
||
fromLibrary: '从库中选择',
|
||
upload: '上传',
|
||
|
||
// CreatePanel - Lyrics
|
||
lyricsPlaceholder: '在此输入歌词...',
|
||
leaveLyricsEmpty: '留空表示纯音乐,或使用下方开关',
|
||
vocal: '人声',
|
||
instrumental: '纯音乐',
|
||
vocalLanguage: '人声语言',
|
||
autoInstrumental: '自动 / 纯音乐',
|
||
vocalArabic: '阿拉伯语',
|
||
vocalAzerbaijani: '阿塞拜疆语',
|
||
vocalBulgarian: '保加利亚语',
|
||
vocalBengali: '孟加拉语',
|
||
vocalCatalan: '加泰罗尼亚语',
|
||
vocalCzech: '捷克语',
|
||
vocalDanish: '丹麦语',
|
||
vocalGerman: '德语',
|
||
vocalGreek: '希腊语',
|
||
vocalEnglish: '英语',
|
||
vocalSpanish: '西班牙语',
|
||
vocalPersian: '波斯语',
|
||
vocalFinnish: '芬兰语',
|
||
vocalFrench: '法语',
|
||
vocalHebrew: '希伯来语',
|
||
vocalHindi: '印地语',
|
||
vocalCroatian: '克罗地亚语',
|
||
vocalHaitianCreole: '海地克里奥尔语',
|
||
vocalHungarian: '匈牙利语',
|
||
vocalIndonesian: '印尼语',
|
||
vocalIcelandic: '冰岛语',
|
||
vocalItalian: '意大利语',
|
||
vocalJapanese: '日语',
|
||
vocalKorean: '韩语',
|
||
vocalLatin: '拉丁语',
|
||
vocalLithuanian: '立陶宛语',
|
||
vocalMalay: '马来语',
|
||
vocalNepali: '尼泊尔语',
|
||
vocalDutch: '荷兰语',
|
||
vocalNorwegian: '挪威语',
|
||
vocalPunjabi: '旁遮普语',
|
||
vocalPolish: '波兰语',
|
||
vocalPortuguese: '葡萄牙语',
|
||
vocalRomanian: '罗马尼亚语',
|
||
vocalRussian: '俄语',
|
||
vocalSanskrit: '梵语',
|
||
vocalSlovak: '斯洛伐克语',
|
||
vocalSerbian: '塞尔维亚语',
|
||
vocalSwedish: '瑞典语',
|
||
vocalSwahili: '斯瓦希里语',
|
||
vocalTamil: '泰米尔语',
|
||
vocalTelugu: '泰卢固语',
|
||
vocalThai: '泰语',
|
||
vocalTagalog: '他加禄语',
|
||
vocalTurkish: '土耳其语',
|
||
vocalUkrainian: '乌克兰语',
|
||
vocalUrdu: '乌尔都语',
|
||
vocalVietnamese: '越南语',
|
||
vocalCantonese: '粤语',
|
||
vocalChineseMandarin: '中文(普通话)',
|
||
|
||
// CreatePanel - Style
|
||
stylePlaceholder: '例如:欢快流行摇滚、抒情民谣、90年代嘻哈',
|
||
genreMoodInstruments: '曲风、情绪、乐器、氛围',
|
||
refreshGenres: '刷新风格建议',
|
||
mainGenre: '大类风格',
|
||
subGenre: '小类风格',
|
||
nameSong: '为歌曲命名',
|
||
|
||
// CreatePanel - Parameters
|
||
bpm: '曲速*(BPM)',
|
||
auto: '自动',
|
||
duration: '时长',
|
||
seconds: '秒',
|
||
keyScale: '调式',
|
||
timeSignature: '拍号',
|
||
|
||
// CreatePanel - Advanced
|
||
randomSeed: '随机种子',
|
||
thinking: '思考模式',
|
||
audioFormat: '音频格式',
|
||
inferenceSteps: '推理步数',
|
||
guidanceScale: '引导强度(cfg)',
|
||
inferMethod: '推理方法',
|
||
shift: '偏移(shift)',
|
||
timestepShiftForBase: '基础模型的时间步偏移(turbo 模式无效)',
|
||
expertControls: '专家控制',
|
||
lmParameters: 'LM 参数',
|
||
controlLyricGeneration: '控制歌词生成和创造力',
|
||
transform: '音频转换',
|
||
controlSourceAudio: '控制模型遵循源音频的程度',
|
||
audioCodes: '音频编码',
|
||
optionalAudioCodes: '可选的音频编码载荷',
|
||
taskType: '任务类型',
|
||
textToMusic: '文本 → 音乐',
|
||
audioCoverStrength: '音频翻唱强度',
|
||
repaintingStart: '重绘开始',
|
||
repaintingEnd: '重绘结束',
|
||
instruction: '指令',
|
||
lmTemperature: 'LM 温度',
|
||
higherMoreRandom: '值越高越随机(0-2)',
|
||
lmCfgScale: 'LM CFG 强度',
|
||
noCfgScale: '1.0 = 无 CFG(1-3)',
|
||
topK: 'Top-K',
|
||
topP: 'Top-P',
|
||
lmNegativePrompt: 'LM 负面提示词',
|
||
noUserInput: '无用户输入',
|
||
thingsToAvoid: '要避免的内容...',
|
||
useWhenCfgScaleGreater: '当 LM CFG 强度 > 1.0 时使用',
|
||
lmTopK: 'LM Top-K',
|
||
lmTopP: 'LM Top-P',
|
||
|
||
// Guidance section
|
||
guidance: '引导控制(guidance)',
|
||
advancedCfgScheduling: '高级 CFG 调度控制。',
|
||
cfgIntervalStart: 'CFG 区间开始',
|
||
cfgIntervalEnd: 'CFG 区间结束',
|
||
customTimesteps: '自定义时间步',
|
||
timestepsPlaceholder: '例如:1,3,5,7',
|
||
scoreScale: '分数缩放',
|
||
lmBatchChunkSize: 'LM 批次块大小',
|
||
trackName: '音轨名称',
|
||
optionalTrackName: '可选的音轨名称',
|
||
completeTrackClasses: '完整音轨类别',
|
||
trackClassesPlaceholder: '类别-a, 类别-b',
|
||
useAdg: '使用 ADG',
|
||
allowLmBatch: '允许 LM 批处理',
|
||
useCotMetas: '使用 CoT 元数据',
|
||
useCotCaption: '使用 CoT 字幕',
|
||
useCotLanguage: '使用 CoT 语言',
|
||
autogen: '自动生成',
|
||
constrainedDecodingDebug: '约束解码调试',
|
||
formatCaption: '格式化字幕',
|
||
getScores: '获取分数',
|
||
getLrcLyrics: '获取 LRC(歌词)',
|
||
batchSize: '批量大小(变体数)',
|
||
variations: '变体',
|
||
bulkGenerate: '批量生成',
|
||
job: '任务',
|
||
jobs: '任务',
|
||
queueMultipleJobs: '使用相同设置排队多个独立生成任务',
|
||
numberOfVariations: '要生成的歌曲变体数量',
|
||
moreStepsBetterQuality: '步数越多质量越好,速度越慢(turbo 推荐 8)',
|
||
howCloselyFollowPrompt: '多严格遵循提示词',
|
||
seed: '种子',
|
||
randomSeedRecommended: '每次运行随机(推荐)',
|
||
fixedSeedReproducible: '固定种子以获得可重现结果',
|
||
enterFixedSeed: '输入固定种子',
|
||
thinkingCot: '思考模式(CoT)',
|
||
mp3Smaller: 'MP3(较小)',
|
||
flacLossless: 'FLAC(无损)',
|
||
odeDeterministic: 'ODE(确定性)',
|
||
sdeStochastic: 'SDE(随机性)',
|
||
min: '分钟',
|
||
|
||
// CreatePanel - Drag & Drop
|
||
dropToUseAudio: '拖放以使用音频',
|
||
dropToUpload: '拖放以上传',
|
||
usingAsReference: '用作参考',
|
||
usingAsCover: '用作翻唱',
|
||
uploadingAsReference: '上传为参考',
|
||
uploadingAsCover: '上传为翻唱',
|
||
|
||
// CreatePanel - Vocal Gender
|
||
vocalGender: '人声性别',
|
||
male: '男声',
|
||
female: '女声',
|
||
|
||
// CreatePanel - LM Backend & Model
|
||
lmBackendLabel: 'LM 后端',
|
||
lmBackendPt: 'PT(~1.6 GB 显存)',
|
||
lmBackendVllm: 'VLLM(~9.2 GB 显存)',
|
||
lmBackendHint: 'PT 显存占用更少,VLLM 在高性能 GPU 上可能更快',
|
||
lmModelLabel: 'LM 模型',
|
||
lmModel06B: '0.6B(最轻量,~0.5 GB 显存)',
|
||
lmModel17B: '1.7B(均衡,~1.5 GB 显存)',
|
||
lmModel4B: '4B(最佳质量,~4 GB 显存)',
|
||
lmModelHint: '控制用于歌词/风格增强的 LLM。如不存在将自动下载。',
|
||
|
||
// CreatePanel - Transcription
|
||
transcribing: '转录中...',
|
||
transcribingWithWhisper: '正在使用 Whisper 转录…',
|
||
|
||
// CreatePanel - Library Tabs
|
||
uploaded: '已上传',
|
||
createdTab: '已创建',
|
||
useTrack: '使用',
|
||
noCreatedSongsYet: '暂无已创建歌曲',
|
||
generateSongsToReuse: '生成歌曲后可作为翻唱或参考使用',
|
||
|
||
// CreatePanel - Actions
|
||
generate: '生成',
|
||
generating: '生成中...',
|
||
createButton: '创建',
|
||
formatLyrics: '格式化歌词',
|
||
formatting: '格式化中...',
|
||
clearAll: '清空全部',
|
||
|
||
// Simple Mode
|
||
describeYourSong: '描述你的歌曲',
|
||
songDescriptionPlaceholder: '一首关于夏日和朋友冒险的快乐流行歌曲...',
|
||
quickSettings: '快速设置',
|
||
key: '调式',
|
||
time: '拍号',
|
||
|
||
// CreatePanel - Errors
|
||
loginToGenerate: '请登录以生成音乐',
|
||
uploadFailed: '上传失败',
|
||
formatFailed: '格式化失败',
|
||
formatFailedDetail: '格式化失败。请确保 LLM 已初始化。',
|
||
formatFailedLlmUnavailable: '格式化失败。LLM 可能不可用。',
|
||
deleteSongConfirm: '确定要删除"{title}"吗?此操作无法撤销。',
|
||
profileUpdateFailed: '更新个人资料失败',
|
||
ffmpegLoadFailed: '加载视频编码器失败。请刷新后重试。',
|
||
videoRenderFailed: '视频渲染失败。请重试。',
|
||
|
||
// SongList / Filters
|
||
searchYourSongs: '搜索你的歌曲...',
|
||
filters: '筛选',
|
||
refineBy: '筛选条件',
|
||
liked: '已喜欢',
|
||
public: '公开',
|
||
private: '私密',
|
||
generatingStatus: '生成中',
|
||
selectSongToView: '选择一首歌曲查看详情',
|
||
noSongsMatchFilters: '没有歌曲符合你的筛选条件。',
|
||
clearFilters: '清除筛选',
|
||
|
||
// RightSidebar - Song Details
|
||
songDetails: '歌曲详情',
|
||
created: '创建于',
|
||
styleTags: '风格与标签',
|
||
lyricsSection: '歌词',
|
||
copyLyrics: '复制',
|
||
|
||
// Languages
|
||
japanese: '日语',
|
||
spanish: '西班牙语',
|
||
german: '德语',
|
||
french: '法语',
|
||
portuguese: '葡萄牙语',
|
||
russian: '俄语',
|
||
italian: '意大利语',
|
||
dutch: '荷兰语',
|
||
polish: '波兰语',
|
||
turkish: '土耳其语',
|
||
vietnamese: '越南语',
|
||
czech: '捷克语',
|
||
persian: '波斯语',
|
||
arabic: '阿拉伯语',
|
||
korean: '韩语',
|
||
thai: '泰语',
|
||
hindi: '印地语',
|
||
indonesian: '印尼语',
|
||
ukrainian: '乌克兰语',
|
||
hungarian: '匈牙利语',
|
||
swedish: '瑞典语',
|
||
romanian: '罗马尼亚语',
|
||
greek: '希腊语',
|
||
|
||
// Task Types
|
||
audio2audio: '音频 → 音频',
|
||
coverTask: '翻唱',
|
||
repaintTask: '重绘',
|
||
|
||
// Search Page
|
||
searchSongsPlaceholder: '搜索歌曲、播放列表、创作者或风格',
|
||
songsMatching: '匹配的歌曲',
|
||
featuredSongs: '精选歌曲',
|
||
noSongsFound: '未找到匹配的歌曲',
|
||
creatorsMatching: '匹配的创作者',
|
||
featuredCreators: '精选创作者',
|
||
noCreatorsFound: '未找到匹配的创作者',
|
||
noCreatorsYet: '暂无创作者。成为第一个分享音乐的人!',
|
||
playlistsMatching: '匹配的播放列表',
|
||
featuredPlaylists: '精选播放列表',
|
||
noPlaylistsFound: '未找到匹配的播放列表',
|
||
noPlaylistsYet: '暂无公开播放列表。创建一个并分享你的最爱!',
|
||
genres: '风格',
|
||
songs: '首歌曲',
|
||
|
||
// Library View
|
||
yourLibrary: '我的音乐库',
|
||
newPlaylist: '新建播放列表',
|
||
likedSongs: '喜欢的歌曲',
|
||
playlists: '播放列表',
|
||
playlist: '播放列表',
|
||
byYou: '由你创建',
|
||
|
||
// User Profile
|
||
back: '返回',
|
||
loadingProfile: '加载中...',
|
||
userNotFound: '用户不存在',
|
||
goBack: '返回',
|
||
likes: '喜欢',
|
||
plays: '播放',
|
||
recent: '最新',
|
||
top: '热门',
|
||
noPublicSongsYet: '暂无公开歌曲',
|
||
seeMore: '查看更多',
|
||
joined: '加入于',
|
||
supportingSince: '支持者自',
|
||
avatarImage: '头像',
|
||
uploadAvatar: '上传头像',
|
||
avatarFormats: 'JPG、PNG、WebP、GIF • 最大 5MB',
|
||
bannerImage: '横幅图片',
|
||
clickToUploadBanner: '点击上传横幅',
|
||
bannerFormats: '推荐尺寸:1500x500px • JPG、PNG、WebP、GIF • 最大 5MB',
|
||
bio: '个人简介',
|
||
bioPlaceholder: '介绍一下你自己...',
|
||
uploadingAvatar: '上传头像中...',
|
||
uploadingBanner: '上传横幅中...',
|
||
saving: '保存中...',
|
||
saveChanges: '保存更改',
|
||
|
||
// Playlist Modals
|
||
createPlaylist: '创建播放列表',
|
||
playlistName: '名称',
|
||
playlistNamePlaceholder: '我的超棒播放列表',
|
||
playlistDescription: '描述',
|
||
descriptionPlaceholder: '编程时的氛围音乐...',
|
||
addToPlaylist: '添加到播放列表',
|
||
createNewPlaylist: '创建新播放列表',
|
||
noExistingPlaylists: '暂无播放列表。',
|
||
|
||
// Edit Profile Modal (Settings)
|
||
usernameLabel: '用户名',
|
||
usernamePlaceholder: '用户名',
|
||
usernameMinLengthError: '用户名至少需要 2 个字符',
|
||
usernameTakenError: '用户名已被占用',
|
||
usernameUpdateFailedError: '更新用户名失败',
|
||
usernameRequirements: '仅允许字母、数字、下划线和短横线',
|
||
|
||
// Song Details (RightSidebar)
|
||
more: '更多',
|
||
copy: '复制',
|
||
copied: '已复制!',
|
||
copyAllTags: '复制所有标签',
|
||
|
||
// Song Dropdown Menu
|
||
createVideo: '创建视频',
|
||
editAudio: '编辑音频',
|
||
extractStems: '提取音轨',
|
||
reusePrompt: '重用提示词',
|
||
deleteSong: '删除歌曲',
|
||
useAsReference: '用作参考',
|
||
coverSong: '翻唱歌曲',
|
||
confirmDeleteTitle: '删除歌曲',
|
||
confirmDeleteManyTitle: '删除歌曲',
|
||
deleteSongsConfirm: '确定要删除 {count} 首歌曲吗?此操作无法撤销。',
|
||
songsDeletedSuccess: '歌曲删除成功',
|
||
songsDeletedPartial: '已删除 {succeeded}/{total} 首歌曲',
|
||
deleteUploadConfirm: '确定要删除此上传文件吗?此操作无法撤销。',
|
||
cannotBeUndone: '此操作无法撤销。',
|
||
|
||
// Player
|
||
nowPlaying: '正在播放',
|
||
downloadAudio: '下载音频',
|
||
openInEditor: '在编辑器中打开',
|
||
anonymous: '匿名用户',
|
||
|
||
// PlaylistDetail
|
||
loadingPlaylist: '加载播放列表中...',
|
||
playlistNotFound: '播放列表未找到',
|
||
deletePlaylistConfirm: '确定要删除这个播放列表吗?',
|
||
artist: '艺术家',
|
||
deletePlaylist: '删除播放列表',
|
||
dateAdded: '添加日期',
|
||
justNow: '刚刚',
|
||
unknown: '未知',
|
||
|
||
// SongProfile
|
||
loadingSong: '加载歌曲中...',
|
||
songNotFound: '歌曲未找到',
|
||
similar: '相似',
|
||
by: '由',
|
||
|
||
// ShareModal
|
||
shareSong: '分享歌曲',
|
||
shareOnX: '分享到 X',
|
||
shareOnFacebook: '分享到 Facebook',
|
||
shareOnWhatsApp: '分享到 WhatsApp',
|
||
shareOnTelegram: '分享到 Telegram',
|
||
shareOnReddit: '分享到 Reddit',
|
||
shareOnLinkedIn: '分享到 LinkedIn',
|
||
shareViaEmail: '通过邮件分享',
|
||
copyLink: '复制链接',
|
||
emailSubject: '来听听这首AI歌曲',
|
||
emailBody: '嘿!\n\n我创作了这首AI生成的歌曲,觉得你会喜欢:\n\n《{title}》- {creator}\n{style}\n\n点击收听:{url}\n\n使用 ACE-Step UI 制作 - 免费开源的本地AI音乐生成工具!',
|
||
|
||
// Reference Modal
|
||
referenceModalTitle: '参考音频',
|
||
coverModalTitle: '翻唱音频',
|
||
referenceModalDescription: '基于参考音轨创作歌曲',
|
||
coverModalDescription: '将现有音轨转换为新版本',
|
||
uploadAudio: '上传音频',
|
||
uploadingAudio: '上传中...',
|
||
audioFormats: 'MP3、WAV、FLAC',
|
||
mine: '我的',
|
||
loadingTracks: '加载中...',
|
||
noTracksYet: '暂无音轨',
|
||
uploadAudioFilesAsReferences: '上传音频文件作为参考',
|
||
|
||
// Training Module
|
||
loraTraining: 'LoRA 训练',
|
||
trainingDescription: '从音频文件构建数据集并训练自定义 LoRA 适配器',
|
||
datasetBuilder: '数据集构建器',
|
||
trainLora: '训练 LoRA',
|
||
quickStart: '快速开始',
|
||
chooseOneOption: '选择一项:加载现有数据集 或 扫描新目录',
|
||
loadExistingDataset: '加载现有数据集',
|
||
loadDataset: '加载',
|
||
scanNewDirectory: '扫描新目录',
|
||
scanDataset: '扫描',
|
||
datasetSettings: '数据集设置',
|
||
datasetName: '数据集名称',
|
||
customActivationTag: '自定义激活标签',
|
||
allInstrumental: '全部纯音乐',
|
||
tagPosition: '标签位置',
|
||
tagPrepend: '前置(标签,描述)',
|
||
tagAppend: '后置(描述,标签)',
|
||
tagReplace: '替换描述',
|
||
genreRatio: '风格比例',
|
||
genreRatioHint: '0% = 全部描述,100% = 全部风格',
|
||
autoLabelWithAI: 'AI 自动标注',
|
||
autoLabelDescription: '为音频文件生成元数据:描述、BPM、调式、拍号',
|
||
skipMetas: '跳过 BPM/调式/拍号',
|
||
onlyUnlabeled: '仅未标注',
|
||
autoLabelAll: '自动标注全部',
|
||
filename: '文件名',
|
||
labeled: '已标注',
|
||
saveDataset: '保存数据集',
|
||
preprocessToTensors: '预处理为张量',
|
||
preprocessDescription: '将数据集转换为预计算张量以加速训练(需要加载模型)',
|
||
preprocess: '预处理',
|
||
preprocessedDataset: '预处理数据集',
|
||
loraSettings: 'LoRA 设置',
|
||
loraRank: 'LoRA Rank',
|
||
loraAlpha: 'LoRA Alpha',
|
||
dropout: 'Dropout',
|
||
trainingParameters: '训练参数',
|
||
learningRate: '学习率',
|
||
maxEpochs: '最大轮数',
|
||
gradientAccumulation: '梯度累积',
|
||
saveEvery: '保存间隔',
|
||
epochs: '轮',
|
||
outputDirectory: '输出目录',
|
||
useFP8: '使用 FP8 量化',
|
||
fp8Description: '减少显存占用',
|
||
startTraining: '开始训练',
|
||
stopTraining: '停止训练',
|
||
trainingProgress: '训练进度',
|
||
trainingLog: '训练日志',
|
||
trainingStatus: '训练状态',
|
||
tensorboardView: 'TensorBoard 视图',
|
||
showTensorboard: '显示 TensorBoard',
|
||
hideTensorboard: '隐藏 TensorBoard',
|
||
openInNewTab: '在新标签页打开',
|
||
|
||
// Training Status Messages
|
||
scanning: '扫描中...',
|
||
autoLabeling: '自动标注中...',
|
||
savingDataset: '保存中...',
|
||
preprocessing: '预处理中...',
|
||
loadingDataset: '加载中...',
|
||
startingTraining: '启动中...',
|
||
error: '错误',
|
||
datasetInfo: '数据集:{name},样本数:{samples},已标注:{labeled}',
|
||
trainingStep: '步骤 {step} - 损失:{loss}',
|
||
editSample: '编辑样本',
|
||
caption: '描述',
|
||
genre: '风格',
|
||
promptOverride: '提示词覆盖',
|
||
musicDescription: '音乐描述...',
|
||
overrideGlobalRatio: '覆盖此样本的全局比例',
|
||
editableUsedForTraining: '可编辑,用于训练',
|
||
useGlobalRatio: '使用全局比例',
|
||
thisSample: '此样本',
|
||
},
|
||
ja: {
|
||
// Navigation
|
||
create: '作成',
|
||
library: 'ライブラリ',
|
||
search: '検索',
|
||
training: 'トレーニング',
|
||
news: 'ニュース',
|
||
|
||
// Theme
|
||
lightMode: 'ライトモード',
|
||
darkMode: 'ダークモード',
|
||
|
||
// Auth
|
||
signIn: 'サインイン',
|
||
signOut: 'サインアウト',
|
||
settings: '設定',
|
||
|
||
// Username Modal
|
||
welcomeTitle: 'ACE-Step UIへようこそ',
|
||
welcomeSubtitle: 'AI音楽作成を始めるために名前を入力してください',
|
||
yourName: 'お名前',
|
||
enterYourName: '名前を入力',
|
||
getStarted: '始める',
|
||
gettingStarted: '開始中...',
|
||
yourMusicYourWay: 'あなたの音楽、あなたのスタイルで。無料で無制限にAI音楽を作成。',
|
||
usernameMinLength: 'ユーザー名は2文字以上である必要があります',
|
||
usernameInvalidChars: 'ユーザー名は文字、数字、アンダースコア、ハイフンのみ使用できます',
|
||
failedToSetUsername: 'ユーザー名の設定に失敗しました',
|
||
|
||
// Toasts
|
||
songNotAvailable: 'この曲は利用できません。',
|
||
unableToPlay: 'この曲を再生できません。',
|
||
generationTimedOut: '生成がタイムアウトしました',
|
||
generationFailed: '生成に失敗しました。もう一度お試しください。',
|
||
playlistCreated: 'プレイリストを作成しました!',
|
||
failedToCreatePlaylist: 'プレイリストの作成に失敗しました',
|
||
songAddedToPlaylist: 'プレイリストに追加しました',
|
||
failedToAddSong: '曲の追加に失敗しました',
|
||
songDeleted: '曲を削除しました',
|
||
failedToDeleteSong: '曲の削除に失敗しました',
|
||
|
||
// Sidebar
|
||
aceStepUI: 'ACE-Step UI',
|
||
collapseSidebar: 'サイドバーを折りたたむ',
|
||
expandSidebar: 'サイドバーを展開',
|
||
|
||
// Common
|
||
cancel: 'キャンセル',
|
||
save: '保存',
|
||
delete: '削除',
|
||
edit: '編集',
|
||
share: '共有',
|
||
download: 'ダウンロード',
|
||
play: '再生',
|
||
pause: '一時停止',
|
||
normalSpeed: '通常',
|
||
next: '次へ',
|
||
previous: '前へ',
|
||
|
||
// Placeholders
|
||
searchPlaceholder: '検索...',
|
||
|
||
// Settings
|
||
language: '言語',
|
||
english: 'English',
|
||
chinese: '简体中文',
|
||
japaneseLanguage: '日本語',
|
||
koreanLanguage: '한국어',
|
||
appearance: '外観',
|
||
profile: 'プロフィール',
|
||
viewProfile: 'プロフィールを表示',
|
||
editProfile: 'プロフィールを編集',
|
||
account: 'アカウント',
|
||
username: 'ユーザー名',
|
||
memberSince: '登録日',
|
||
about: 'について',
|
||
version: 'バージョン',
|
||
localAIMusicGenerator: 'ローカルAI音楽ジェネレーター',
|
||
poweredBy: 'ACE-Step 1.5を搭載。オープンソースで無料で使用できます。',
|
||
createdBy: '開発者 Ambsd',
|
||
localizedBy: 'ローカライゼーション&二次開発 bdsqlsz',
|
||
follow: 'フォロー',
|
||
done: '完了',
|
||
light: 'ライト',
|
||
dark: 'ダーク',
|
||
|
||
// Mobile
|
||
createSong: '曲を作成',
|
||
viewList: 'リストを表示',
|
||
|
||
// CreatePanel - Modes
|
||
simple: 'シンプル',
|
||
custom: 'カスタム',
|
||
|
||
// CreatePanel - Sections
|
||
audio: 'オーディオ',
|
||
lyrics: '歌詞',
|
||
styleOfMusic: '音楽スタイル',
|
||
title: 'タイトル',
|
||
musicParameters: '音楽パラメータ',
|
||
advancedSettings: '詳細設定',
|
||
|
||
// CreatePanel - LoRA
|
||
loraPath: 'LoRA パス',
|
||
loraPathPlaceholder: 'LoRA モデルパスを入力...',
|
||
browseFiles: 'ファイルを参照',
|
||
loraLoaded: 'LoRA 読み込み済み',
|
||
loraUnloaded: 'LoRA 未読み込み',
|
||
loraLoad: '読み込む',
|
||
loraUnload: 'アンロード',
|
||
loraScale: 'LoRA スケール',
|
||
loraScaleDescription: 'LoRA モデルの影響強度を調整',
|
||
|
||
// CreatePanel - Audio
|
||
reference: '参照',
|
||
cover: 'カバー',
|
||
fromLibrary: 'ライブラリから',
|
||
upload: 'アップロード',
|
||
|
||
// CreatePanel - Lyrics
|
||
lyricsPlaceholder: 'ここに歌詞を入力...',
|
||
leaveLyricsEmpty: 'インストゥルメンタルの場合は空のままにするか、下のトグルを使用',
|
||
vocal: 'ボーカル',
|
||
instrumental: 'インストゥルメンタル',
|
||
vocalLanguage: 'ボーカル言語',
|
||
autoInstrumental: '自動 / インストゥルメンタル',
|
||
vocalArabic: 'アラビア語',
|
||
vocalAzerbaijani: 'アゼルバイジャン語',
|
||
vocalBulgarian: 'ブルガリア語',
|
||
vocalBengali: 'ベンガル語',
|
||
vocalCatalan: 'カタルーニャ語',
|
||
vocalCzech: 'チェコ語',
|
||
vocalDanish: 'デンマーク語',
|
||
vocalGerman: 'ドイツ語',
|
||
vocalGreek: 'ギリシャ語',
|
||
vocalEnglish: '英語',
|
||
vocalSpanish: 'スペイン語',
|
||
vocalPersian: 'ペルシャ語',
|
||
vocalFinnish: 'フィンランド語',
|
||
vocalFrench: 'フランス語',
|
||
vocalHebrew: 'ヘブライ語',
|
||
vocalHindi: 'ヒンディー語',
|
||
vocalCroatian: 'クロアチア語',
|
||
vocalHaitianCreole: 'ハイチ・クレオール語',
|
||
vocalHungarian: 'ハンガリー語',
|
||
vocalIndonesian: 'インドネシア語',
|
||
vocalIcelandic: 'アイスランド語',
|
||
vocalItalian: 'イタリア語',
|
||
vocalJapanese: '日本語',
|
||
vocalKorean: '韓国語',
|
||
vocalLatin: 'ラテン語',
|
||
vocalLithuanian: 'リトアニア語',
|
||
vocalMalay: 'マレー語',
|
||
vocalNepali: 'ネパール語',
|
||
vocalDutch: 'オランダ語',
|
||
vocalNorwegian: 'ノルウェー語',
|
||
vocalPunjabi: 'パンジャーブ語',
|
||
vocalPolish: 'ポーランド語',
|
||
vocalPortuguese: 'ポルトガル語',
|
||
vocalRomanian: 'ルーマニア語',
|
||
vocalRussian: 'ロシア語',
|
||
vocalSanskrit: 'サンスクリット語',
|
||
vocalSlovak: 'スロバキア語',
|
||
vocalSerbian: 'セルビア語',
|
||
vocalSwedish: 'スウェーデン語',
|
||
vocalSwahili: 'スワヒリ語',
|
||
vocalTamil: 'タミル語',
|
||
vocalTelugu: 'テルグ語',
|
||
vocalThai: 'タイ語',
|
||
vocalTagalog: 'タガログ語',
|
||
vocalTurkish: 'トルコ語',
|
||
vocalUkrainian: 'ウクライナ語',
|
||
vocalUrdu: 'ウルドゥー語',
|
||
vocalVietnamese: 'ベトナム語',
|
||
vocalCantonese: '広東語',
|
||
vocalChineseMandarin: '中国語(標準語)',
|
||
|
||
// CreatePanel - Style
|
||
stylePlaceholder: '例:アップビートなポップロック、エモーショナルなバラード、90年代ヒップホップ',
|
||
genreMoodInstruments: 'ジャンル、ムード、楽器、雰囲気',
|
||
refreshGenres: 'ジャンル提案を更新',
|
||
mainGenre: 'メインジャンル',
|
||
subGenre: 'サブジャンル',
|
||
nameSong: '曲名を付ける',
|
||
|
||
// CreatePanel - Parameters
|
||
bpm: 'BPM',
|
||
auto: '自動',
|
||
duration: '長さ',
|
||
seconds: '秒',
|
||
keyScale: 'キーとスケール',
|
||
timeSignature: '拍子',
|
||
|
||
// CreatePanel - Advanced
|
||
randomSeed: 'ランダムシード',
|
||
thinking: '思考',
|
||
audioFormat: 'オーディオ形式',
|
||
inferenceSteps: '推論ステップ',
|
||
guidanceScale: 'ガイダンススケール',
|
||
inferMethod: '推論方法',
|
||
shift: 'シフト',
|
||
timestepShiftForBase: 'ベースモデルのタイムステップシフト(turboでは無効)',
|
||
expertControls: 'エキスパートコントロール',
|
||
lmParameters: 'LMパラメータ',
|
||
controlLyricGeneration: '歌詞生成と創造性を制御',
|
||
transform: '変換',
|
||
controlSourceAudio: 'モデルがソースオーディオに従う程度を制御',
|
||
audioCodes: 'オーディオコード',
|
||
optionalAudioCodes: 'オプションのオーディオコードペイロード',
|
||
taskType: 'タスクタイプ',
|
||
textToMusic: 'テキスト → 音楽',
|
||
audioCoverStrength: 'オーディオカバー強度',
|
||
repaintingStart: 'リペイント開始',
|
||
repaintingEnd: 'リペイント終了',
|
||
instruction: '指示',
|
||
lmTemperature: 'LM温度',
|
||
higherMoreRandom: '高いほどランダム(0-2)',
|
||
lmCfgScale: 'LM CFGスケール',
|
||
noCfgScale: '1.0 = CFGなし(1-3)',
|
||
topK: 'Top-K',
|
||
topP: 'Top-P',
|
||
lmNegativePrompt: 'LMネガティブプロンプト',
|
||
noUserInput: 'ユーザー入力なし',
|
||
thingsToAvoid: '避けるべきこと...',
|
||
useWhenCfgScaleGreater: 'LM CFGスケール > 1.0の場合に使用',
|
||
lmTopK: 'LM Top-K',
|
||
lmTopP: 'LM Top-P',
|
||
|
||
// Guidance section
|
||
guidance: 'ガイダンス',
|
||
advancedCfgScheduling: '高度なCFGスケジューリング制御。',
|
||
cfgIntervalStart: 'CFG間隔開始',
|
||
cfgIntervalEnd: 'CFG間隔終了',
|
||
customTimesteps: 'カスタムタイムステップ',
|
||
timestepsPlaceholder: '例:1,3,5,7',
|
||
scoreScale: 'スコアスケール',
|
||
lmBatchChunkSize: 'LMバッチチャンクサイズ',
|
||
trackName: 'トラック名',
|
||
optionalTrackName: 'オプションのトラック名',
|
||
completeTrackClasses: '完全なトラッククラス',
|
||
trackClassesPlaceholder: 'クラス-a、クラス-b',
|
||
useAdg: 'ADGを使用',
|
||
allowLmBatch: 'LMバッチを許可',
|
||
useCotMetas: 'CoTメタを使用',
|
||
useCotCaption: 'CoTキャプションを使用',
|
||
useCotLanguage: 'CoT言語を使用',
|
||
autogen: '自動生成',
|
||
constrainedDecodingDebug: '制約付きデコーディングデバッグ',
|
||
formatCaption: 'キャプションをフォーマット',
|
||
getScores: 'スコアを取得',
|
||
getLrcLyrics: 'LRC(歌詞)を取得',
|
||
batchSize: 'バッチサイズ(バリエーション)',
|
||
variations: 'バリエーション',
|
||
bulkGenerate: '一括生成',
|
||
job: 'ジョブ',
|
||
jobs: 'ジョブ',
|
||
queueMultipleJobs: '同じ設定で複数の独立した生成ジョブをキューに追加',
|
||
numberOfVariations: '生成する曲のバリエーション数',
|
||
moreStepsBetterQuality: 'ステップが多いほど品質が高く、遅くなります(turboには8を推奨)',
|
||
howCloselyFollowPrompt: 'プロンプトにどれだけ忠実に従うか',
|
||
seed: 'シード',
|
||
randomSeedRecommended: '毎回ランダム化(推奨)',
|
||
fixedSeedReproducible: '再現可能な結果のための固定シード',
|
||
enterFixedSeed: '固定シードを入力',
|
||
thinkingCot: '思考(CoT)',
|
||
mp3Smaller: 'MP3(小さい)',
|
||
flacLossless: 'FLAC(ロスレス)',
|
||
odeDeterministic: 'ODE(決定論的)',
|
||
sdeStochastic: 'SDE(確率的)',
|
||
min: '分',
|
||
|
||
// CreatePanel - Drag & Drop
|
||
dropToUseAudio: 'ドロップしてオーディオを使用',
|
||
dropToUpload: 'ドロップしてアップロード',
|
||
usingAsReference: '参照として使用',
|
||
usingAsCover: 'カバーとして使用',
|
||
uploadingAsReference: '参照としてアップロード',
|
||
uploadingAsCover: 'カバーとしてアップロード',
|
||
|
||
// CreatePanel - Vocal Gender
|
||
vocalGender: 'ボーカルの性別',
|
||
male: '男性',
|
||
female: '女性',
|
||
|
||
// CreatePanel - LM Backend & Model
|
||
lmBackendLabel: 'LMバックエンド',
|
||
lmBackendPt: 'PT(〜1.6 GB VRAM)',
|
||
lmBackendVllm: 'VLLM(〜9.2 GB VRAM)',
|
||
lmBackendHint: 'PTはVRAMが少なく、VLLMは高性能GPUで高速',
|
||
lmModelLabel: 'LMモデル',
|
||
lmModel06B: '0.6B(最軽量、〜0.5 GB VRAM)',
|
||
lmModel17B: '1.7B(バランス、〜1.5 GB VRAM)',
|
||
lmModel4B: '4B(最高品質、〜4 GB VRAM)',
|
||
lmModelHint: '歌詞/スタイル強化に使用するLLMを制御。未インストールの場合自動ダウンロード。',
|
||
|
||
// CreatePanel - Transcription
|
||
transcribing: '文字起こし中...',
|
||
transcribingWithWhisper: 'Whisperで文字起こし中…',
|
||
|
||
// CreatePanel - Library Tabs
|
||
uploaded: 'アップロード済み',
|
||
createdTab: '作成済み',
|
||
useTrack: '使用',
|
||
noCreatedSongsYet: '作成した曲がまだありません',
|
||
generateSongsToReuse: '曲を生成してカバーや参照として再利用',
|
||
|
||
// CreatePanel - Actions
|
||
generate: '生成',
|
||
generating: '生成中...',
|
||
createButton: '作成',
|
||
formatLyrics: '歌詞をフォーマット',
|
||
formatting: 'フォーマット中...',
|
||
clearAll: 'すべてクリア',
|
||
|
||
// Simple Mode
|
||
describeYourSong: '曲を説明',
|
||
songDescriptionPlaceholder: '友達との夏の冒険についての明るいポップソング...',
|
||
quickSettings: 'クイック設定',
|
||
key: 'キー',
|
||
time: '拍子',
|
||
|
||
// CreatePanel - Errors
|
||
loginToGenerate: '音楽を生成するにはログインしてください',
|
||
uploadFailed: 'アップロードに失敗しました',
|
||
formatFailed: 'フォーマットに失敗しました',
|
||
formatFailedDetail: 'フォーマットに失敗しました。LLMが初期化されていることを確認してください。',
|
||
formatFailedLlmUnavailable: 'フォーマットに失敗しました。LLMが利用できない可能性があります。',
|
||
deleteSongConfirm: '「{title}」を削除しますか?この操作は元に戻せません。',
|
||
profileUpdateFailed: 'プロフィールの更新に失敗しました',
|
||
ffmpegLoadFailed: 'ビデオエンコーダーの読み込みに失敗しました。更新してもう一度お試しください。',
|
||
videoRenderFailed: 'ビデオレンダリングに失敗しました。もう一度お試しください。',
|
||
|
||
// SongList / Filters
|
||
searchYourSongs: '曲を検索...',
|
||
filters: 'フィルター',
|
||
refineBy: '絞り込み',
|
||
liked: 'いいね',
|
||
public: '公開',
|
||
private: '非公開',
|
||
generatingStatus: '生成中',
|
||
selectSongToView: '詳細を表示する曲を選択',
|
||
noSongsMatchFilters: 'フィルターに一致する曲がありません。',
|
||
clearFilters: 'フィルターをクリア',
|
||
|
||
// RightSidebar - Song Details
|
||
songDetails: '曲の詳細',
|
||
created: '作成日',
|
||
styleTags: 'スタイルとタグ',
|
||
lyricsSection: '歌詞',
|
||
copyLyrics: 'コピー',
|
||
|
||
// Languages
|
||
japanese: '日本語',
|
||
spanish: 'スペイン語',
|
||
german: 'ドイツ語',
|
||
french: 'フランス語',
|
||
portuguese: 'ポルトガル語',
|
||
russian: 'ロシア語',
|
||
italian: 'イタリア語',
|
||
dutch: 'オランダ語',
|
||
polish: 'ポーランド語',
|
||
turkish: 'トルコ語',
|
||
vietnamese: 'ベトナム語',
|
||
czech: 'チェコ語',
|
||
persian: 'ペルシャ語',
|
||
arabic: 'アラビア語',
|
||
korean: '韓国語',
|
||
thai: 'タイ語',
|
||
hindi: 'ヒンディー語',
|
||
indonesian: 'インドネシア語',
|
||
ukrainian: 'ウクライナ語',
|
||
hungarian: 'ハンガリー語',
|
||
swedish: 'スウェーデン語',
|
||
romanian: 'ルーマニア語',
|
||
greek: 'ギリシャ語',
|
||
|
||
// Task Types
|
||
audio2audio: 'オーディオ → オーディオ',
|
||
coverTask: 'カバー',
|
||
repaintTask: 'リペイント',
|
||
|
||
// Search Page
|
||
searchSongsPlaceholder: '曲、プレイリスト、クリエイター、スタイルを検索',
|
||
songsMatching: '一致する曲',
|
||
featuredSongs: '注目の曲',
|
||
noSongsFound: '一致する曲が見つかりません',
|
||
creatorsMatching: '一致するクリエイター',
|
||
featuredCreators: '注目のクリエイター',
|
||
noCreatorsFound: '一致するクリエイターが見つかりません',
|
||
noCreatorsYet: 'まだクリエイターがいません。最初に音楽を共有しましょう!',
|
||
playlistsMatching: '一致するプレイリスト',
|
||
featuredPlaylists: '注目のプレイリスト',
|
||
noPlaylistsFound: '一致するプレイリストが見つかりません',
|
||
noPlaylistsYet: '公開プレイリストがまだありません。作成してお気に入りを共有しましょう!',
|
||
genres: 'ジャンル',
|
||
songs: '曲',
|
||
|
||
// Library View
|
||
yourLibrary: 'マイライブラリ',
|
||
newPlaylist: '新しいプレイリスト',
|
||
likedSongs: 'いいねした曲',
|
||
playlists: 'プレイリスト',
|
||
playlist: 'プレイリスト',
|
||
byYou: 'あなたが作成',
|
||
|
||
// User Profile
|
||
back: '戻る',
|
||
loadingProfile: '読み込み中...',
|
||
userNotFound: 'ユーザーが見つかりません',
|
||
goBack: '戻る',
|
||
likes: 'いいね',
|
||
plays: '再生回数',
|
||
recent: '最新',
|
||
top: '人気',
|
||
noPublicSongsYet: '公開曲がまだありません',
|
||
seeMore: 'もっと見る',
|
||
joined: '参加日',
|
||
supportingSince: 'サポート開始',
|
||
avatarImage: 'アバター画像',
|
||
uploadAvatar: 'アバターをアップロード',
|
||
avatarFormats: 'JPG、PNG、WebP、GIF • 最大5MB',
|
||
bannerImage: 'バナー画像',
|
||
clickToUploadBanner: 'クリックしてバナーをアップロード',
|
||
bannerFormats: '推奨サイズ:1500x500px • JPG、PNG、WebP、GIF • 最大5MB',
|
||
bio: '自己紹介',
|
||
bioPlaceholder: '自己紹介を書いてください...',
|
||
uploadingAvatar: 'アバターをアップロード中...',
|
||
uploadingBanner: 'バナーをアップロード中...',
|
||
saving: '保存中...',
|
||
saveChanges: '変更を保存',
|
||
|
||
// Playlist Modals
|
||
createPlaylist: 'プレイリストを作成',
|
||
playlistName: '名前',
|
||
playlistNamePlaceholder: '私の素晴らしいプレイリスト',
|
||
playlistDescription: '説明',
|
||
descriptionPlaceholder: 'コーディング時の雰囲気...',
|
||
addToPlaylist: 'プレイリストに追加',
|
||
createNewPlaylist: '新しいプレイリストを作成',
|
||
noExistingPlaylists: 'プレイリストがまだありません。',
|
||
|
||
// Edit Profile Modal (Settings)
|
||
usernameLabel: 'ユーザー名',
|
||
usernamePlaceholder: 'ユーザー名',
|
||
usernameMinLengthError: 'ユーザー名は2文字以上である必要があります',
|
||
usernameTakenError: 'このユーザー名は既に使用されています',
|
||
usernameUpdateFailedError: 'ユーザー名の更新に失敗しました',
|
||
usernameRequirements: '文字、数字、アンダースコア、ハイフンのみ使用可能',
|
||
|
||
// Song Details (RightSidebar)
|
||
more: 'もっと',
|
||
copy: 'コピー',
|
||
copied: 'コピーしました!',
|
||
copyAllTags: 'すべてのタグをコピー',
|
||
|
||
// Song Dropdown Menu
|
||
createVideo: 'ビデオを作成',
|
||
editAudio: 'オーディオを編集',
|
||
extractStems: 'ステムを抽出',
|
||
reusePrompt: 'プロンプトを再利用',
|
||
deleteSong: '曲を削除',
|
||
useAsReference: '参照として使用',
|
||
coverSong: 'カバーソング',
|
||
confirmDeleteTitle: '曲を削除',
|
||
confirmDeleteManyTitle: '曲を削除',
|
||
deleteSongsConfirm: '{count}曲を削除しますか?この操作は元に戻せません。',
|
||
songsDeletedSuccess: '曲を削除しました',
|
||
songsDeletedPartial: '{succeeded}/{total}曲を削除しました',
|
||
deleteUploadConfirm: 'このアップロードを削除しますか?この操作は元に戻せません。',
|
||
cannotBeUndone: 'この操作は元に戻せません。',
|
||
|
||
// Player
|
||
nowPlaying: '再生中',
|
||
downloadAudio: 'オーディオをダウンロード',
|
||
openInEditor: 'エディターで開く',
|
||
anonymous: '匿名ユーザー',
|
||
|
||
// PlaylistDetail
|
||
loadingPlaylist: 'プレイリストを読み込み中...',
|
||
playlistNotFound: 'プレイリストが見つかりません',
|
||
deletePlaylistConfirm: 'このプレイリストを削除してもよろしいですか?',
|
||
artist: 'アーティスト',
|
||
deletePlaylist: 'プレイリストを削除',
|
||
dateAdded: '追加日',
|
||
justNow: 'たった今',
|
||
unknown: '不明',
|
||
|
||
// SongProfile
|
||
loadingSong: '曲を読み込み中...',
|
||
songNotFound: '曲が見つかりません',
|
||
similar: '類似',
|
||
by: '作成者',
|
||
|
||
// ShareModal
|
||
shareSong: '曲を共有',
|
||
shareOnX: 'Xで共有',
|
||
shareOnFacebook: 'Facebookで共有',
|
||
shareOnWhatsApp: 'WhatsAppで共有',
|
||
shareOnTelegram: 'Telegramで共有',
|
||
shareOnReddit: 'Redditで共有',
|
||
shareOnLinkedIn: 'LinkedInで共有',
|
||
shareViaEmail: 'メールで共有',
|
||
copyLink: 'リンクをコピー',
|
||
emailSubject: 'このAI曲をチェックしてください',
|
||
emailBody: 'こんにちは!\n\n私がこのAI生成の曲を作りました。気に入ってもらえると思います:\n\n「{title}」by {creator}\n{style}\n\nここで聴いてください:{url}\n\nACE-Step UIで作成 - 無料でオープンソースのローカルAI音楽生成!',
|
||
|
||
// Reference Modal
|
||
referenceModalTitle: 'リファレンス',
|
||
coverModalTitle: 'カバー',
|
||
referenceModalDescription: 'リファレンストラックに触発された曲を作成',
|
||
coverModalDescription: '既存のトラックを新しいバージョンに変換',
|
||
uploadAudio: 'オーディオをアップロード',
|
||
uploadingAudio: 'アップロード中...',
|
||
audioFormats: 'MP3、WAV、FLAC',
|
||
mine: 'マイトラック',
|
||
loadingTracks: '読み込み中...',
|
||
noTracksYet: 'トラックがまだありません',
|
||
uploadAudioFilesAsReferences: 'リファレンスとして使用するオーディオファイルをアップロード',
|
||
|
||
// Training Module
|
||
loraTraining: 'LoRAトレーニング',
|
||
trainingDescription: 'オーディオファイルからデータセットを構築し、カスタムLoRAアダプターをトレーニング',
|
||
datasetBuilder: 'データセットビルダー',
|
||
trainLora: 'LoRAをトレーニング',
|
||
quickStart: 'クイックスタート',
|
||
chooseOneOption: '選択:既存のデータセットを読み込む または 新しいディレクトリをスキャン',
|
||
loadExistingDataset: '既存のデータセットを読み込む',
|
||
loadDataset: '読み込む',
|
||
scanNewDirectory: '新しいディレクトリをスキャン',
|
||
scanDataset: 'スキャン',
|
||
datasetSettings: 'データセット設定',
|
||
datasetName: 'データセット名',
|
||
customActivationTag: 'カスタム活性化タグ',
|
||
allInstrumental: '全てインストゥルメンタル',
|
||
tagPosition: 'タグの位置',
|
||
tagPrepend: '前置(タグ、キャプション)',
|
||
tagAppend: '後置(キャプション、タグ)',
|
||
tagReplace: 'キャプションを置換',
|
||
genreRatio: 'ジャンル比率',
|
||
genreRatioHint: '0% = 全てキャプション、100% = 全てジャンル',
|
||
autoLabelWithAI: 'AIで自動ラベル付け',
|
||
autoLabelDescription: 'オーディオファイルのメタデータを生成:キャプション、BPM、キー、拍子',
|
||
skipMetas: 'BPM/キー/拍子をスキップ',
|
||
onlyUnlabeled: 'ラベルなしのみ',
|
||
autoLabelAll: '全て自動ラベル付け',
|
||
filename: 'ファイル名',
|
||
labeled: 'ラベル付き',
|
||
saveDataset: 'データセットを保存',
|
||
preprocessToTensors: 'テンソルに前処理',
|
||
preprocessDescription: 'データセットを事前計算されたテンソルに変換して高速トレーニング(モデルのロードが必要)',
|
||
preprocess: '前処理',
|
||
preprocessedDataset: '前処理済みデータセット',
|
||
loraSettings: 'LoRA設定',
|
||
loraRank: 'LoRAランク',
|
||
loraAlpha: 'LoRA Alpha',
|
||
dropout: 'ドロップアウト',
|
||
trainingParameters: 'トレーニングパラメータ',
|
||
learningRate: '学習率',
|
||
maxEpochs: '最大エポック数',
|
||
gradientAccumulation: '勾配累積',
|
||
saveEvery: '保存間隔',
|
||
epochs: 'エポック',
|
||
outputDirectory: '出力ディレクトリ',
|
||
useFP8: 'FP8量子化を使用',
|
||
fp8Description: 'VRAMを削減',
|
||
startTraining: 'トレーニング開始',
|
||
stopTraining: 'トレーニング停止',
|
||
trainingProgress: 'トレーニング進行状況',
|
||
trainingLog: 'トレーニングログ',
|
||
trainingStatus: 'トレーニングステータス',
|
||
tensorboardView: 'TensorBoardビュー',
|
||
showTensorboard: 'TensorBoardを表示',
|
||
hideTensorboard: 'TensorBoardを非表示',
|
||
openInNewTab: '新しいタブで開く',
|
||
|
||
// Training Status Messages
|
||
scanning: 'スキャン中...',
|
||
autoLabeling: '自動ラベル付け中...',
|
||
savingDataset: '保存中...',
|
||
preprocessing: '前処理中...',
|
||
loadingDataset: '読み込み中...',
|
||
startingTraining: '開始中...',
|
||
error: 'エラー',
|
||
datasetInfo: 'データセット: {name}、サンプル数: {samples}、ラベル付き: {labeled}',
|
||
trainingStep: 'ステップ {step} - 損失: {loss}',
|
||
editSample: 'サンプルを編集',
|
||
caption: 'キャプション',
|
||
genre: 'ジャンル',
|
||
promptOverride: 'プロンプト上書き',
|
||
musicDescription: '音楽の説明...',
|
||
overrideGlobalRatio: 'このサンプルのグローバル比率を上書き',
|
||
editableUsedForTraining: '編集可能、トレーニングに使用',
|
||
useGlobalRatio: 'グローバル比率を使用',
|
||
thisSample: 'このサンプル',
|
||
},
|
||
ko: {
|
||
// Navigation
|
||
create: '생성',
|
||
library: '라이브러리',
|
||
search: '검색',
|
||
training: '훈련',
|
||
news: '뉴스',
|
||
|
||
// Theme
|
||
lightMode: '라이트 모드',
|
||
darkMode: '다크 모드',
|
||
|
||
// Auth
|
||
signIn: '로그인',
|
||
signOut: '로그아웃',
|
||
settings: '설정',
|
||
|
||
// Username Modal
|
||
welcomeTitle: 'ACE-Step UI에 오신 것을 환영합니다',
|
||
welcomeSubtitle: 'AI 음악 제작을 시작하려면 이름을 입력하세요',
|
||
yourName: '이름',
|
||
enterYourName: '이름 입력',
|
||
getStarted: '시작하기',
|
||
gettingStarted: '시작 중...',
|
||
yourMusicYourWay: '당신의 음악, 당신만의 방식으로. 무료로 무제한 AI 음악 제작.',
|
||
usernameMinLength: '사용자 이름은 최소 2자 이상이어야 합니다',
|
||
usernameInvalidChars: '사용자 이름은 문자, 숫자, 밑줄, 하이픈만 사용할 수 있습니다',
|
||
failedToSetUsername: '사용자 이름 설정에 실패했습니다',
|
||
|
||
// Toasts
|
||
songNotAvailable: '이 곡은 더 이상 사용할 수 없습니다.',
|
||
unableToPlay: '이 곡을 재생할 수 없습니다.',
|
||
generationTimedOut: '생성 시간 초과',
|
||
generationFailed: '생성에 실패했습니다. 다시 시도해주세요.',
|
||
playlistCreated: '재생목록이 생성되었습니다!',
|
||
failedToCreatePlaylist: '재생목록 생성에 실패했습니다',
|
||
songAddedToPlaylist: '재생목록에 추가되었습니다',
|
||
failedToAddSong: '곡 추가에 실패했습니다',
|
||
songDeleted: '곡이 삭제되었습니다',
|
||
failedToDeleteSong: '곡 삭제에 실패했습니다',
|
||
|
||
// Sidebar
|
||
aceStepUI: 'ACE-Step UI',
|
||
collapseSidebar: '사이드바 접기',
|
||
expandSidebar: '사이드바 펼치기',
|
||
|
||
// Common
|
||
cancel: '취소',
|
||
save: '저장',
|
||
delete: '삭제',
|
||
edit: '편집',
|
||
share: '공유',
|
||
download: '다운로드',
|
||
play: '재생',
|
||
pause: '일시정지',
|
||
normalSpeed: '보통',
|
||
next: '다음',
|
||
previous: '이전',
|
||
|
||
// Placeholders
|
||
searchPlaceholder: '검색...',
|
||
|
||
// Settings
|
||
language: '언어',
|
||
english: 'English',
|
||
chinese: '简体中文',
|
||
japaneseLanguage: '日本語',
|
||
koreanLanguage: '한국어',
|
||
appearance: '외관',
|
||
profile: '프로필',
|
||
viewProfile: '프로필 보기',
|
||
editProfile: '프로필 편집',
|
||
account: '계정',
|
||
username: '사용자 이름',
|
||
memberSince: '가입일',
|
||
about: '정보',
|
||
version: '버전',
|
||
localAIMusicGenerator: '로컬 AI 음악 생성기',
|
||
poweredBy: 'ACE-Step 1.5 기반. 오픈 소스이며 무료로 사용 가능합니다.',
|
||
createdBy: '개발자 Ambsd',
|
||
localizedBy: '현지화 및 2차 개발 bdsqlsz',
|
||
follow: '팔로우',
|
||
done: '완료',
|
||
light: '라이트',
|
||
dark: '다크',
|
||
|
||
// Mobile
|
||
createSong: '곡 만들기',
|
||
viewList: '목록 보기',
|
||
|
||
// CreatePanel - Modes
|
||
simple: '간단',
|
||
custom: '사용자 정의',
|
||
|
||
// CreatePanel - Sections
|
||
audio: '오디오',
|
||
lyrics: '가사',
|
||
styleOfMusic: '음악 스타일',
|
||
title: '제목',
|
||
musicParameters: '음악 매개변수',
|
||
advancedSettings: '고급 설정',
|
||
|
||
// CreatePanel - LoRA
|
||
loraPath: 'LoRA 경로',
|
||
loraPathPlaceholder: 'LoRA 모델 경로 입력...',
|
||
browseFiles: '파일 찾아보기',
|
||
loraLoaded: 'LoRA 로드됨',
|
||
loraUnloaded: 'LoRA 언로드됨',
|
||
loraLoad: '로드',
|
||
loraUnload: '언로드',
|
||
loraScale: 'LoRA 강도',
|
||
loraScaleDescription: 'LoRA 모델의 영향 강도 조절',
|
||
|
||
// CreatePanel - Audio
|
||
reference: '참조',
|
||
cover: '커버',
|
||
fromLibrary: '라이브러리에서',
|
||
upload: '업로드',
|
||
|
||
// CreatePanel - Lyrics
|
||
lyricsPlaceholder: '여기에 가사를 입력하세요...',
|
||
leaveLyricsEmpty: '연주곡의 경우 비워두거나 아래 토글 사용',
|
||
vocal: '보컬',
|
||
instrumental: '연주곡',
|
||
vocalLanguage: '보컬 언어',
|
||
autoInstrumental: '자동 / 연주곡',
|
||
vocalArabic: '아랍어',
|
||
vocalAzerbaijani: '아제르바이잔어',
|
||
vocalBulgarian: '불가리아어',
|
||
vocalBengali: '벵골어',
|
||
vocalCatalan: '카탈루냐어',
|
||
vocalCzech: '체코어',
|
||
vocalDanish: '덴마크어',
|
||
vocalGerman: '독일어',
|
||
vocalGreek: '그리스어',
|
||
vocalEnglish: '영어',
|
||
vocalSpanish: '스페인어',
|
||
vocalPersian: '페르시아어',
|
||
vocalFinnish: '핀란드어',
|
||
vocalFrench: '프랑스어',
|
||
vocalHebrew: '히브리어',
|
||
vocalHindi: '힌디어',
|
||
vocalCroatian: '크로아티아어',
|
||
vocalHaitianCreole: '아이티 크레올어',
|
||
vocalHungarian: '헝가리어',
|
||
vocalIndonesian: '인도네시아어',
|
||
vocalIcelandic: '아이슬란드어',
|
||
vocalItalian: '이탈리아어',
|
||
vocalJapanese: '일본어',
|
||
vocalKorean: '한국어',
|
||
vocalLatin: '라틴어',
|
||
vocalLithuanian: '리투아니아어',
|
||
vocalMalay: '말레이어',
|
||
vocalNepali: '네팔어',
|
||
vocalDutch: '네덜란드어',
|
||
vocalNorwegian: '노르웨이어',
|
||
vocalPunjabi: '펀자브어',
|
||
vocalPolish: '폴란드어',
|
||
vocalPortuguese: '포르투갈어',
|
||
vocalRomanian: '루마니아어',
|
||
vocalRussian: '러시아어',
|
||
vocalSanskrit: '산스크리트어',
|
||
vocalSlovak: '슬로바키아어',
|
||
vocalSerbian: '세르비아어',
|
||
vocalSwedish: '스웨덴어',
|
||
vocalSwahili: '스와힐리어',
|
||
vocalTamil: '타밀어',
|
||
vocalTelugu: '텔루구어',
|
||
vocalThai: '태국어',
|
||
vocalTagalog: '타갈로그어',
|
||
vocalTurkish: '터키어',
|
||
vocalUkrainian: '우크라이나어',
|
||
vocalUrdu: '우르두어',
|
||
vocalVietnamese: '베트남어',
|
||
vocalCantonese: '광둥어',
|
||
vocalChineseMandarin: '중국어(표준어)',
|
||
|
||
// CreatePanel - Style
|
||
stylePlaceholder: '예: 경쾌한 팝 록, 감성적인 발라드, 90년대 힙합',
|
||
genreMoodInstruments: '장르, 분위기, 악기, 느낌',
|
||
refreshGenres: '장르 제안 새로고침',
|
||
mainGenre: '주요 장르',
|
||
subGenre: '하위 장르',
|
||
nameSong: '곡 이름 짓기',
|
||
|
||
// CreatePanel - Parameters
|
||
bpm: 'BPM',
|
||
auto: '자동',
|
||
duration: '길이',
|
||
seconds: '초',
|
||
keyScale: '키와 스케일',
|
||
timeSignature: '박자',
|
||
|
||
// CreatePanel - Advanced
|
||
randomSeed: '랜덤 시드',
|
||
thinking: '생각',
|
||
audioFormat: '오디오 형식',
|
||
inferenceSteps: '추론 단계',
|
||
guidanceScale: '가이던스 스케일',
|
||
inferMethod: '추론 방법',
|
||
shift: '시프트',
|
||
timestepShiftForBase: '베이스 모델의 타임스텝 시프트 (turbo에서는 무효)',
|
||
expertControls: '전문가 제어',
|
||
lmParameters: 'LM 매개변수',
|
||
controlLyricGeneration: '가사 생성과 창의성 제어',
|
||
transform: '변환',
|
||
controlSourceAudio: '모델이 소스 오디오를 따르는 정도를 제어',
|
||
audioCodes: '오디오 코드',
|
||
optionalAudioCodes: '선택적 오디오 코드 페이로드',
|
||
taskType: '작업 유형',
|
||
textToMusic: '텍스트 → 음악',
|
||
audioCoverStrength: '오디오 커버 강도',
|
||
repaintingStart: '리페인팅 시작',
|
||
repaintingEnd: '리페인팅 종료',
|
||
instruction: '지시',
|
||
lmTemperature: 'LM 온도',
|
||
higherMoreRandom: '높을수록 랜덤 (0-2)',
|
||
lmCfgScale: 'LM CFG 스케일',
|
||
noCfgScale: '1.0 = CFG 없음 (1-3)',
|
||
topK: 'Top-K',
|
||
topP: 'Top-P',
|
||
lmNegativePrompt: 'LM 네거티브 프롬프트',
|
||
noUserInput: '사용자 입력 없음',
|
||
thingsToAvoid: '피해야 할 것들...',
|
||
useWhenCfgScaleGreater: 'LM CFG 스케일 > 1.0일 때 사용',
|
||
lmTopK: 'LM Top-K',
|
||
lmTopP: 'LM Top-P',
|
||
|
||
// Guidance section
|
||
guidance: '가이던스',
|
||
advancedCfgScheduling: '고급 CFG 스케줄링 제어.',
|
||
cfgIntervalStart: 'CFG 간격 시작',
|
||
cfgIntervalEnd: 'CFG 간격 종료',
|
||
customTimesteps: '사용자 정의 타임스텝',
|
||
timestepsPlaceholder: '예: 1,3,5,7',
|
||
scoreScale: '스코어 스케일',
|
||
lmBatchChunkSize: 'LM 배치 청크 크기',
|
||
trackName: '트랙 이름',
|
||
optionalTrackName: '선택적 트랙 이름',
|
||
completeTrackClasses: '완전한 트랙 클래스',
|
||
trackClassesPlaceholder: '클래스-a, 클래스-b',
|
||
useAdg: 'ADG 사용',
|
||
allowLmBatch: 'LM 배치 허용',
|
||
useCotMetas: 'CoT 메타 사용',
|
||
useCotCaption: 'CoT 캡션 사용',
|
||
useCotLanguage: 'CoT 언어 사용',
|
||
autogen: '자동 생성',
|
||
constrainedDecodingDebug: '제약 디코딩 디버그',
|
||
formatCaption: '캡션 포맷',
|
||
getScores: '점수 가져오기',
|
||
getLrcLyrics: 'LRC(가사) 가져오기',
|
||
batchSize: '배치 크기 (변형)',
|
||
variations: '변형',
|
||
bulkGenerate: '대량 생성',
|
||
job: '작업',
|
||
jobs: '작업',
|
||
queueMultipleJobs: '동일한 설정으로 여러 독립 생성 작업 대기열에 추가',
|
||
numberOfVariations: '생성할 곡 변형 수',
|
||
moreStepsBetterQuality: '단계가 많을수록 품질이 높고 느립니다 (turbo는 8 권장)',
|
||
howCloselyFollowPrompt: '프롬프트를 얼마나 엄격히 따를지',
|
||
seed: '시드',
|
||
randomSeedRecommended: '매 실행마다 무작위 (권장)',
|
||
fixedSeedReproducible: '재현 가능한 결과를 위한 고정 시드',
|
||
enterFixedSeed: '고정 시드 입력',
|
||
thinkingCot: '생각 (CoT)',
|
||
mp3Smaller: 'MP3 (작음)',
|
||
flacLossless: 'FLAC (무손실)',
|
||
odeDeterministic: 'ODE (결정론적)',
|
||
sdeStochastic: 'SDE (확률적)',
|
||
min: '분',
|
||
|
||
// CreatePanel - Drag & Drop
|
||
dropToUseAudio: '드롭하여 오디오 사용',
|
||
dropToUpload: '드롭하여 업로드',
|
||
usingAsReference: '참조로 사용',
|
||
usingAsCover: '커버로 사용',
|
||
uploadingAsReference: '참조로 업로드',
|
||
uploadingAsCover: '커버로 업로드',
|
||
|
||
// CreatePanel - Vocal Gender
|
||
vocalGender: '보컬 성별',
|
||
male: '남성',
|
||
female: '여성',
|
||
|
||
// CreatePanel - LM Backend & Model
|
||
lmBackendLabel: 'LM 백엔드',
|
||
lmBackendPt: 'PT (~1.6 GB VRAM)',
|
||
lmBackendVllm: 'VLLM (~9.2 GB VRAM)',
|
||
lmBackendHint: 'PT는 VRAM이 적고, VLLM은 고성능 GPU에서 더 빠름',
|
||
lmModelLabel: 'LM 모델',
|
||
lmModel06B: '0.6B (가장 가벼움, ~0.5 GB VRAM)',
|
||
lmModel17B: '1.7B (균형, ~1.5 GB VRAM)',
|
||
lmModel4B: '4B (최고 품질, ~4 GB VRAM)',
|
||
lmModelHint: '가사/스타일 향상에 사용되는 LLM을 제어. 없으면 자동 다운로드.',
|
||
|
||
// CreatePanel - Transcription
|
||
transcribing: '전사 중...',
|
||
transcribingWithWhisper: 'Whisper로 전사 중…',
|
||
|
||
// CreatePanel - Library Tabs
|
||
uploaded: '업로드됨',
|
||
createdTab: '생성됨',
|
||
useTrack: '사용',
|
||
noCreatedSongsYet: '생성된 곡이 아직 없습니다',
|
||
generateSongsToReuse: '곡을 생성하여 커버나 참조로 재사용',
|
||
|
||
// CreatePanel - Actions
|
||
generate: '생성',
|
||
generating: '생성 중...',
|
||
createButton: '만들기',
|
||
formatLyrics: '가사 포맷',
|
||
formatting: '포맷 중...',
|
||
clearAll: '모두 지우기',
|
||
|
||
// Simple Mode
|
||
describeYourSong: '곡 설명',
|
||
songDescriptionPlaceholder: '친구들과 여름 모험에 대한 밝은 팝송...',
|
||
quickSettings: '빠른 설정',
|
||
key: '키',
|
||
time: '박자',
|
||
|
||
// CreatePanel - Errors
|
||
loginToGenerate: '음악을 생성하려면 로그인하세요',
|
||
uploadFailed: '업로드 실패',
|
||
formatFailed: '포맷 실패',
|
||
formatFailedDetail: '포맷 실패. LLM이 초기화되었는지 확인하세요.',
|
||
formatFailedLlmUnavailable: '포맷 실패. LLM을 사용할 수 없을 수 있습니다.',
|
||
deleteSongConfirm: '「{title}」을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
|
||
profileUpdateFailed: '프로필 업데이트에 실패했습니다',
|
||
ffmpegLoadFailed: '비디오 인코더 로드에 실패했습니다. 새로고침 후 다시 시도하세요.',
|
||
videoRenderFailed: '비디오 렌더링에 실패했습니다. 다시 시도하세요.',
|
||
|
||
// SongList / Filters
|
||
searchYourSongs: '곡 검색...',
|
||
filters: '필터',
|
||
refineBy: '세분화',
|
||
liked: '좋아요',
|
||
public: '공개',
|
||
private: '비공개',
|
||
generatingStatus: '생성 중',
|
||
selectSongToView: '세부 정보를 볼 곡 선택',
|
||
noSongsMatchFilters: '필터와 일치하는 곡이 없습니다.',
|
||
clearFilters: '필터 지우기',
|
||
|
||
// RightSidebar - Song Details
|
||
songDetails: '곡 상세정보',
|
||
created: '생성일',
|
||
styleTags: '스타일 및 태그',
|
||
lyricsSection: '가사',
|
||
copyLyrics: '복사',
|
||
|
||
// Languages
|
||
japanese: '일본어',
|
||
spanish: '스페인어',
|
||
german: '독일어',
|
||
french: '프랑스어',
|
||
portuguese: '포르투갈어',
|
||
russian: '러시아어',
|
||
italian: '이탈리아어',
|
||
dutch: '네덜란드어',
|
||
polish: '폴란드어',
|
||
turkish: '터키어',
|
||
vietnamese: '베트남어',
|
||
czech: '체코어',
|
||
persian: '페르시아어',
|
||
arabic: '아랍어',
|
||
korean: '한국어',
|
||
thai: '태국어',
|
||
hindi: '힌디어',
|
||
indonesian: '인도네시아어',
|
||
ukrainian: '우크라이나어',
|
||
hungarian: '헝가리어',
|
||
swedish: '스웨덴어',
|
||
romanian: '루마니아어',
|
||
greek: '그리스어',
|
||
|
||
// Task Types
|
||
audio2audio: '오디오 → 오디오',
|
||
coverTask: '커버',
|
||
repaintTask: '리페인트',
|
||
|
||
// Search Page
|
||
searchSongsPlaceholder: '곡, 재생목록, 제작자 또는 스타일 검색',
|
||
songsMatching: '일치하는 곡',
|
||
featuredSongs: '추천 곡',
|
||
noSongsFound: '일치하는 곡을 찾을 수 없습니다',
|
||
creatorsMatching: '일치하는 제작자',
|
||
featuredCreators: '추천 제작자',
|
||
noCreatorsFound: '일치하는 제작자를 찾을 수 없습니다',
|
||
noCreatorsYet: '아직 제작자가 없습니다. 음악을 공유하는 첫 번째 사람이 되세요!',
|
||
playlistsMatching: '일치하는 재생목록',
|
||
featuredPlaylists: '추천 재생목록',
|
||
noPlaylistsFound: '일치하는 재생목록을 찾을 수 없습니다',
|
||
noPlaylistsYet: '공개 재생목록이 아직 없습니다. 만들고 즐겨찾기를 공유하세요!',
|
||
genres: '장르',
|
||
songs: '곡',
|
||
|
||
// Library View
|
||
yourLibrary: '내 라이브러리',
|
||
newPlaylist: '새 재생목록',
|
||
likedSongs: '좋아하는 곡',
|
||
playlists: '재생목록',
|
||
playlist: '재생목록',
|
||
byYou: '내가 만든',
|
||
|
||
// User Profile
|
||
back: '뒤로',
|
||
loadingProfile: '로딩 중...',
|
||
userNotFound: '사용자를 찾을 수 없습니다',
|
||
goBack: '뒤로 가기',
|
||
likes: '좋아요',
|
||
plays: '재생 수',
|
||
recent: '최신',
|
||
top: '인기',
|
||
noPublicSongsYet: '공개 곡이 아직 없습니다',
|
||
seeMore: '더 보기',
|
||
joined: '가입일',
|
||
supportingSince: '후원 시작일',
|
||
avatarImage: '아바타 이미지',
|
||
uploadAvatar: '아바타 업로드',
|
||
avatarFormats: 'JPG, PNG, WebP, GIF • 최대 5MB',
|
||
bannerImage: '배너 이미지',
|
||
clickToUploadBanner: '클릭하여 배너 업로드',
|
||
bannerFormats: '권장 크기: 1500x500px • JPG, PNG, WebP, GIF • 최대 5MB',
|
||
bio: '자기소개',
|
||
bioPlaceholder: '자신에 대해 소개하세요...',
|
||
uploadingAvatar: '아바타 업로드 중...',
|
||
uploadingBanner: '배너 업로드 중...',
|
||
saving: '저장 중...',
|
||
saveChanges: '변경 사항 저장',
|
||
|
||
// Playlist Modals
|
||
createPlaylist: '재생목록 만들기',
|
||
playlistName: '이름',
|
||
playlistNamePlaceholder: '내 멋진 재생목록',
|
||
playlistDescription: '설명',
|
||
descriptionPlaceholder: '코딩할 때 듣는 음악...',
|
||
addToPlaylist: '재생목록에 추가',
|
||
createNewPlaylist: '새 재생목록 만들기',
|
||
noExistingPlaylists: '재생목록이 아직 없습니다.',
|
||
|
||
// Edit Profile Modal (Settings)
|
||
usernameLabel: '사용자 이름',
|
||
usernamePlaceholder: '사용자 이름',
|
||
usernameMinLengthError: '사용자 이름은 최소 2자 이상이어야 합니다',
|
||
usernameTakenError: '이 사용자 이름은 이미 사용 중입니다',
|
||
usernameUpdateFailedError: '사용자 이름 업데이트에 실패했습니다',
|
||
usernameRequirements: '문자, 숫자, 밑줄, 하이픈만 허용됨',
|
||
|
||
// Song Details (RightSidebar)
|
||
more: '더보기',
|
||
copy: '복사',
|
||
copied: '복사됨!',
|
||
copyAllTags: '모든 태그 복사',
|
||
|
||
// Song Dropdown Menu
|
||
createVideo: '비디오 만들기',
|
||
editAudio: '오디오 편집',
|
||
extractStems: '스템 추출',
|
||
reusePrompt: '프롬프트 재사용',
|
||
deleteSong: '곡 삭제',
|
||
useAsReference: '참조로 사용',
|
||
coverSong: '커버 곡',
|
||
confirmDeleteTitle: '곡 삭제',
|
||
confirmDeleteManyTitle: '곡 삭제',
|
||
deleteSongsConfirm: '{count}곡을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
|
||
songsDeletedSuccess: '곡이 삭제되었습니다',
|
||
songsDeletedPartial: '{succeeded}/{total}곡 삭제됨',
|
||
deleteUploadConfirm: '이 업로드를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.',
|
||
cannotBeUndone: '이 작업은 되돌릴 수 없습니다.',
|
||
|
||
// Player
|
||
nowPlaying: '재생 중',
|
||
downloadAudio: '오디오 다운로드',
|
||
openInEditor: '편집기에서 열기',
|
||
anonymous: '익명 사용자',
|
||
|
||
// PlaylistDetail
|
||
loadingPlaylist: '재생목록 로딩 중...',
|
||
playlistNotFound: '재생목록을 찾을 수 없습니다',
|
||
deletePlaylistConfirm: '이 재생목록을 삭제하시겠습니까?',
|
||
artist: '아티스트',
|
||
deletePlaylist: '재생목록 삭제',
|
||
dateAdded: '추가일',
|
||
justNow: '방금',
|
||
unknown: '알 수 없음',
|
||
|
||
// SongProfile
|
||
loadingSong: '곡 로딩 중...',
|
||
songNotFound: '곡을 찾을 수 없습니다',
|
||
similar: '유사',
|
||
by: '제작자',
|
||
|
||
// ShareModal
|
||
shareSong: '곡 공유',
|
||
shareOnX: 'X에서 공유',
|
||
shareOnFacebook: 'Facebook에서 공유',
|
||
shareOnWhatsApp: 'WhatsApp에서 공유',
|
||
shareOnTelegram: 'Telegram에서 공유',
|
||
shareOnReddit: 'Reddit에서 공유',
|
||
shareOnLinkedIn: 'LinkedIn에서 공유',
|
||
shareViaEmail: '이메일로 공유',
|
||
copyLink: '링크 복사',
|
||
emailSubject: '이 AI 곡을 들어보세요',
|
||
emailBody: '안녕하세요!\n\n제가 만든 이 AI 생성 곡을 들어보세요. 마음에 드실 거예요:\n\n"{title}" - {creator}\n{style}\n\n여기서 들으세요: {url}\n\nACE-Step UI로 제작 - 무료 오픈 소스 로컬 AI 음악 생성!',
|
||
|
||
// Reference Modal
|
||
referenceModalTitle: '참조 음악',
|
||
coverModalTitle: '커버 음악',
|
||
referenceModalDescription: '참조 트랙에서 영감을 받은 곡 만들기',
|
||
coverModalDescription: '기존 트랙을 새로운 버전으로 변환',
|
||
uploadAudio: '오디오 업로드',
|
||
uploadingAudio: '업로드 중...',
|
||
audioFormats: 'MP3, WAV, FLAC',
|
||
mine: '내 트랙',
|
||
loadingTracks: '로딩 중...',
|
||
noTracksYet: '트랙이 없습니다',
|
||
uploadAudioFilesAsReferences: '참조로 사용할 오디오 파일 업로드',
|
||
|
||
// Training Module
|
||
loraTraining: 'LoRA 훈련',
|
||
trainingDescription: '오디오 파일에서 데이터셋을 구축하고 커스텀 LoRA 어댑터를 훈련',
|
||
datasetBuilder: '데이터셋 빌더',
|
||
trainLora: 'LoRA 훈련',
|
||
quickStart: '빠른 시작',
|
||
chooseOneOption: '선택: 기존 데이터셋 로드 또는 새 디렉토리 스캔',
|
||
loadExistingDataset: '기존 데이터셋 로드',
|
||
loadDataset: '로드',
|
||
scanNewDirectory: '새 디렉토리 스캔',
|
||
scanDataset: '스캔',
|
||
datasetSettings: '데이터셋 설정',
|
||
datasetName: '데이터셋 이름',
|
||
customActivationTag: '커스텀 활성화 태그',
|
||
allInstrumental: '모두 인스트루멘탈',
|
||
tagPosition: '태그 위치',
|
||
tagPrepend: '앞에 추가 (태그, 캡션)',
|
||
tagAppend: '뒤에 추가 (캡션, 태그)',
|
||
tagReplace: '캡션 대체',
|
||
genreRatio: '장르 비율',
|
||
genreRatioHint: '0% = 모두 캡션, 100% = 모두 장르',
|
||
autoLabelWithAI: 'AI로 자동 라벨링',
|
||
autoLabelDescription: '오디오 파일의 메타데이터 생성: 캡션, BPM, 키, 박자',
|
||
skipMetas: 'BPM/키/박자 건너뛰기',
|
||
onlyUnlabeled: '라벨 없는 것만',
|
||
autoLabelAll: '모두 자동 라벨링',
|
||
filename: '파일명',
|
||
labeled: '라벨됨',
|
||
saveDataset: '데이터셋 저장',
|
||
preprocessToTensors: '텐서로 전처리',
|
||
preprocessDescription: '빠른 훈련을 위해 데이터셋을 사전 계산된 텐서로 변환 (모델 로드 필요)',
|
||
preprocess: '전처리',
|
||
preprocessedDataset: '전처리된 데이터셋',
|
||
loraSettings: 'LoRA 설정',
|
||
loraRank: 'LoRA 랭크',
|
||
loraAlpha: 'LoRA Alpha',
|
||
dropout: '드롭아웃',
|
||
trainingParameters: '훈련 파라미터',
|
||
learningRate: '학습률',
|
||
maxEpochs: '최대 에포크',
|
||
gradientAccumulation: '그래디언트 누적',
|
||
saveEvery: '저장 간격',
|
||
epochs: '에포크',
|
||
outputDirectory: '출력 디렉토리',
|
||
useFP8: 'FP8 양자화 사용',
|
||
fp8Description: 'VRAM 사용량 감소',
|
||
startTraining: '훈련 시작',
|
||
stopTraining: '훈련 중지',
|
||
trainingProgress: '훈련 진행',
|
||
trainingLog: '훈련 로그',
|
||
|
||
// Training Status Messages
|
||
scanning: '스캔 중...',
|
||
autoLabeling: '자동 라벨링 중...',
|
||
savingDataset: '저장 중...',
|
||
preprocessing: '전처리 중...',
|
||
loadingDataset: '로드 중...',
|
||
startingTraining: '시작 중...',
|
||
error: '오류',
|
||
datasetInfo: '데이터셋: {name}, 샘플: {samples}, 라벨됨: {labeled}',
|
||
trainingStep: '스텝 {step} - 손실: {loss}',
|
||
editSample: '샘플 편집',
|
||
caption: '캡션',
|
||
genre: '장르',
|
||
promptOverride: '프롬프트 재정의',
|
||
musicDescription: '음악 설명...',
|
||
overrideGlobalRatio: '이 샘플의 글로벌 비율 재정의',
|
||
editableUsedForTraining: '편집 가능, 훈련에 사용',
|
||
useGlobalRatio: '글로벌 비율 사용',
|
||
thisSample: '이 샘플',
|
||
}
|
||
};
|
||
|
||
export type TranslationKey = keyof typeof translations.en;
|