700 lines
42 KiB
TypeScript
700 lines
42 KiB
TypeScript
import type { TranslationMessages } from '../types';
|
||
|
||
export const enUsMessages: TranslationMessages = {
|
||
'app.loading': 'Loading ...',
|
||
'assistant.displayName': 'K.G.Studio Musician Assistant',
|
||
'assistant.welcomeFallback': 'Welcome to K.G.Studio Musician Assistant.',
|
||
'status.chordGuideCandidate': 'Chord Guide Candidate: {name} - {notes} - {note}',
|
||
'settings.sidebar.title': 'Settings',
|
||
'settings.sidebar.close': 'Close Settings',
|
||
'settings.sidebar.general': 'General',
|
||
'settings.sidebar.audioIo': 'Audio I/O',
|
||
'settings.sidebar.behavior': 'Behavior',
|
||
'settings.sidebar.templates': 'Templates',
|
||
'settings.sidebar.chordGuide': 'Chord Guide',
|
||
'settings.general.title': 'General',
|
||
'settings.general.language.label': 'Language',
|
||
'settings.general.language.help': 'Auto uses your system language.',
|
||
'settings.general.language.auto': 'Auto',
|
||
'settings.general.language.en_us': 'English',
|
||
'settings.general.language.fr_fr': 'Français',
|
||
'settings.general.language.zh_cn': '简体中文',
|
||
'settings.general.language.zh_hk': '繁體中文',
|
||
'settings.yes': 'Yes',
|
||
'settings.no': 'No',
|
||
'settings.restoreDefault': 'Restore default',
|
||
'settings.deleteCachedModel': 'Delete Cached Model',
|
||
'settings.deleting': 'Deleting...',
|
||
'settings.general.llmProvider.section': 'LLM Provider',
|
||
'settings.general.llmProvider.label': 'LLM Provider',
|
||
'settings.general.llmProvider.local': 'Local LLM (Browser)',
|
||
'settings.general.llmProvider.openai': 'OpenAI',
|
||
'settings.general.llmProvider.claudeOpenRouter': 'Claude (via OpenRouter)',
|
||
'settings.general.llmProvider.openaiCompatible': 'OpenAI Compatible (e.g. OpenRouter, Ollama)',
|
||
'settings.general.persistKeys.label': 'Persist API Keys on Non-Localhost',
|
||
'settings.general.persistKeys.help': 'When enabled, API keys will be saved to browser storage even on non-localhost environments. Warning: This may increase security vulnerability to XSS attacks.',
|
||
'settings.general.localRuntime.cachedStatus': 'Cached Model Status',
|
||
'settings.general.localRuntime.cacheChecking': 'Checking local model cache...',
|
||
'settings.general.localRuntime.cacheDownloaded': 'Downloaded in browser cache.',
|
||
'settings.general.localRuntime.cacheMissing': 'Not downloaded yet.',
|
||
'settings.general.localRuntime.contextLength': 'Context Length',
|
||
'settings.general.localRuntime.contextHelp': 'Larger context lengths require more VRAM and may also reduce performance as conversations become longer.',
|
||
'settings.general.localRuntime.downloadUrl': 'Download URL',
|
||
'settings.general.localRuntime.downloadHelp': 'Changing this URL may break downloads or point to an incompatible model file.',
|
||
'settings.general.localRuntime.autoDownload': 'The local model downloads automatically the next time you chat with `Local LLM (Browser)`.',
|
||
'settings.general.uvr5.section': 'UVR5 Web Runtime',
|
||
'settings.general.uvr5.downloadUrl': 'UVR-MDX-NET-Inst_HQ_3 Download URL',
|
||
'settings.general.htdemucs.downloadUrl': 'htdemucs_4s Download URL',
|
||
'settings.general.modelUrl.help': 'Changing this URL may break downloads or point to an incompatible model file.',
|
||
'settings.general.openai.section': 'OpenAI',
|
||
'settings.general.openai.key': 'Key',
|
||
'settings.general.openai.keyPlaceholder': 'Enter your OpenAI API key',
|
||
'settings.general.openai.model': 'Model',
|
||
'settings.general.openai.flexMode': 'Flex Mode',
|
||
'settings.general.openai.flexHelp': 'Flex Mode uses OpenAI\'s flexible service tier. Pros: potential cost savings and higher throughput during busy periods. Cons: variable latency and possible queueing/deprioritization. Applies only to the OpenAI provider; no effect for OpenAI Compatible servers.',
|
||
'settings.general.keys.persisted': 'Keys are persisted locally (the IndexedDB in your browser).',
|
||
'settings.general.keys.sessionOnly': 'For security, keys are not persisted on non-local hosts and are kept in-memory for this session.',
|
||
'settings.general.claudeOpenRouter.section': 'Anthropic Claude (via OpenRouter)',
|
||
'settings.general.claudeOpenRouter.keyPlaceholder': 'Enter your Claude API key',
|
||
'settings.general.baseUrl': 'Base URL',
|
||
'settings.general.claudeOpenRouter.baseUrlHelp': 'This is the base URL for the OpenRouter API. Please do not change this unless you know what you are doing.',
|
||
'settings.general.openaiCompatible.section': 'OpenAI Compatible Server',
|
||
'settings.general.openaiCompatible.keyPlaceholder': 'Enter your API key',
|
||
'settings.general.openaiCompatible.baseUrlPlaceholder': 'e.g. https://openrouter.ai/api/v1',
|
||
'settings.general.openaiCompatible.baseUrlHelp': 'Quick presets:',
|
||
'settings.general.openaiCompatible.modelPlaceholder': 'e.g. qwen3:30b',
|
||
'settings.general.soundfont.section': 'Soundfont Settings',
|
||
'settings.general.soundfont.managed': 'Soundfont configuration is managed by the server (kgone-server.json). Settings are read-only.',
|
||
'settings.general.soundfont.baseUrl': 'Base URL',
|
||
'settings.general.soundfont.baseUrlHelp': 'Changing this URL to an incompatible soundfont source may cause some instruments to sound wrong or not play.',
|
||
'settings.general.kgone.section': 'K.G.One Settings',
|
||
'settings.general.kgone.managed': 'K.G.One configuration is managed by the server (kgone-server.json). Settings are read-only.',
|
||
'settings.general.kgone.enabled': 'Enable K.G.One Integration',
|
||
'settings.general.kgone.disabled': 'Disabled',
|
||
'settings.general.kgone.enabledOption': 'Enabled',
|
||
'settings.general.kgone.serverBaseUrl': 'Server Base URL',
|
||
'settings.general.kgone.serverBaseUrlHelp': 'Base URL of a running K.G.One Music Studio server. Used for full-song generation, clip generation, and stem separation.',
|
||
'dialog.title.notice': 'Notice',
|
||
'dialog.title.timeSignature': 'Time Signature',
|
||
'dialog.title.tempoDetection': 'Tempo Detection',
|
||
'dialog.title.applyTempo': 'Apply Tempo',
|
||
'dialog.title.chordDetection': 'Chord Detection',
|
||
'dialog.title.input': 'Input',
|
||
'dialog.title.confirm': 'Confirm',
|
||
'dialog.close': 'Close dialog',
|
||
'dialog.cancel': 'Cancel',
|
||
'dialog.ok': 'OK',
|
||
'dialog.experimentalFeature': 'Experimental Feature',
|
||
'dialog.recommendedSource': 'Recommended Source Material',
|
||
'dialog.chordHint.audio': 'Chord analysis is still experimental. Harmonic content, arrangement density, and transient-heavy material can affect accuracy. For more reliable results, start with the default settings, then refine sensitivity and stability until the detected harmony best matches the musical phrasing.',
|
||
'dialog.chordHint.midi': 'Chord analysis is still experimental. Voicing density, overlaps, and ornamental notes can influence the result. For more reliable chord labels, begin with the default settings, then adjust note suppression and harmonic focus to match the musical role of the passage.',
|
||
'dialog.chordHint.tempo': 'Tempo analysis is still experimental. Rubato phrasing, sparse transients, and layered percussion can reduce accuracy. Start with the default BPM range, then narrow the analysis window to the most plausible tempo span for the material if the first pass is not musically convincing.',
|
||
'dialog.sourceHint.kgone': 'For the most dependable chord labels, analyze a stem with vocals and percussion reduced or removed. If K.G.One Music Studio server integration is available, run Separator with the "Vocal, Drums, Bass, Guitar, Piano, and Others" model and use the Piano or Others stem for analysis.',
|
||
'dialog.sourceHint.local': 'For the most dependable chord labels, analyze a stem with vocals and percussion reduced or removed. If you are using the local separator, choose the "Vocal, Drums, Bass, and Others" model and use the Others stem for analysis.',
|
||
'dialog.label.sensitivity': 'Sensitivity',
|
||
'dialog.label.stability': 'Stability',
|
||
'dialog.label.noChordThreshold': 'No-Chord Threshold',
|
||
'dialog.label.enableSevenths': 'Chord Detail: Enable sevenths',
|
||
'dialog.label.shortNotes': 'Short Notes',
|
||
'dialog.option.suppressionLow': 'Low suppression',
|
||
'dialog.option.suppressionMedium': 'Medium suppression',
|
||
'dialog.option.suppressionHigh': 'High suppression',
|
||
'dialog.label.harmonicFocus': 'Harmonic Focus',
|
||
'dialog.option.harmonicBalanced': 'Balanced',
|
||
'dialog.option.harmonicSustained': 'Favor sustained notes',
|
||
'dialog.label.minimumBpm': 'Minimum BPM',
|
||
'dialog.label.maximumBpm': 'Maximum BPM',
|
||
'dialog.label.autoAlignRegionToBeat': 'Auto-align region to beat',
|
||
'dialog.message.chordDetection': 'Tune audio chord detection settings before processing.',
|
||
'dialog.message.tempoDetection': 'Tune audio tempo detection settings before processing.',
|
||
'dialog.message.tempoApply': 'Detected tempo: {bpm} BPM. Choose how to apply it.\n\nUpdate Current Tempo changes the active tempo at this clip location. Insert Tempo Change adds a new tempo region at the nearest bar before the clip starts.',
|
||
'dialog.action.updateCurrentTempo': 'Update Current Tempo',
|
||
'dialog.action.insertTempoChange': 'Insert Tempo Change',
|
||
'eventList.title': 'Event List',
|
||
'eventList.scopeTabs': 'Event list scopes',
|
||
'eventList.scope.region': 'Region',
|
||
'eventList.scope.track': 'Track',
|
||
'eventList.scope.global': 'Global',
|
||
'eventList.deleteVisibleSelectedRows': 'Delete visible selected rows',
|
||
'eventList.table.position': 'Position',
|
||
'eventList.table.status': 'Status',
|
||
'eventList.table.num': 'Num',
|
||
'eventList.table.val': 'Val',
|
||
'eventList.table.lengthInfo': 'Length/Info',
|
||
'eventList.region.filters': 'Region event filters',
|
||
'eventList.region.filter.notes': 'Notes',
|
||
'eventList.region.filter.pitchBends': 'Pitch Bends',
|
||
'eventList.region.filter.controller': 'Controller',
|
||
'eventList.region.empty': 'Please select a MIDI region, or open one in the Piano Roll, to view its event list.',
|
||
'eventList.region.add.label': 'Add',
|
||
'eventList.region.add.noteTitle': 'Add note at playhead',
|
||
'eventList.region.add.pitchBendTitle': 'Add pitch bend at playhead',
|
||
'eventList.region.add.controllerTitle': 'Add controller event at playhead',
|
||
'eventList.region.addType.note': 'Note',
|
||
'eventList.region.addType.pitchBend': 'Pitch Bend',
|
||
'eventList.region.addType.controller': 'Controller',
|
||
'eventList.region.status.note': 'Note',
|
||
'eventList.region.status.pitchBend': 'Pitch Bend',
|
||
'eventList.region.status.controller': 'Controller',
|
||
'eventList.track.filters': 'Track list modes',
|
||
'eventList.track.filter.regions': 'Regions',
|
||
'eventList.track.filter.volume': 'Volume',
|
||
'eventList.track.filter.pan': 'Pan',
|
||
'eventList.track.empty': 'Please select a track to view regions and track automation.',
|
||
'eventList.track.add.label': 'Add',
|
||
'eventList.track.add.midiRegionTitle': 'Add MIDI region at playhead',
|
||
'eventList.track.add.volumeTitle': 'Add volume automation point at playhead',
|
||
'eventList.track.add.panTitle': 'Add pan automation point at playhead',
|
||
'eventList.track.addType.midiRegion': 'MIDI Region',
|
||
'eventList.track.status.audio': 'Audio',
|
||
'eventList.track.status.midi': 'MIDI',
|
||
'eventList.track.status.volume': 'Volume',
|
||
'eventList.track.status.pan': 'Pan',
|
||
'eventList.global.filters': 'Global event filters',
|
||
'eventList.global.filter.marker': 'Marker',
|
||
'eventList.global.filter.tempo': 'Tempo',
|
||
'eventList.global.filter.keySignature': 'Key Sig.',
|
||
'eventList.global.filter.chord': 'Chord',
|
||
'eventList.global.add.label': 'Add',
|
||
'eventList.global.add.markerTitle': 'Add marker region at playhead',
|
||
'eventList.global.add.tempoTitle': 'Add tempo region at playhead',
|
||
'eventList.global.add.keySignatureTitle': 'Add key signature region at playhead',
|
||
'eventList.global.add.chordTitle': 'Add chord region at playhead',
|
||
'eventList.global.addType.marker': 'Marker',
|
||
'eventList.global.addType.tempo': 'Tempo',
|
||
'eventList.global.addType.keySignature': 'Key Signature',
|
||
'eventList.global.addType.chord': 'Chord',
|
||
'eventList.global.status.marker': 'Marker',
|
||
'eventList.global.status.tempo': 'Tempo',
|
||
'eventList.global.status.keySignature': 'Key Signature',
|
||
'eventList.global.status.chord': 'Chord',
|
||
'eventList.global.validation.marker': 'Please enter a marker label. Expected a non-empty text label. Example: Intro',
|
||
'eventList.global.validation.tempo': 'Please enter a BPM value using digits only. Expected a whole number between {min} and {max}. Example: 128',
|
||
'eventList.global.validation.keySignature': 'Please enter one exact key signature name. Expected a canonical value such as "C major" or "F# minor". Example: F# minor',
|
||
'eventList.global.validation.chord': 'Please enter a valid chord symbol. Expected a chord representation the app can parse. Example: Bm7b5',
|
||
'eventList.global.validation.position': 'Please enter a position at or after the start of the project. Expected a non-negative location. Example: 1 1 0',
|
||
'eventList.global.validation.length': 'Please enter a positive length. Expected a duration greater than zero. Example: 4 0',
|
||
'globalTracks.label': 'Global tracks',
|
||
'globalTracks.marker': 'Marker',
|
||
'globalTracks.tempo': 'Tempo',
|
||
'globalTracks.signature': 'Key Signature',
|
||
'globalTracks.chord': 'Chord',
|
||
'globalTracks.addItem': 'Add {label} global track item',
|
||
'pianoRoll.power.linear': 'Linear',
|
||
'pianoRoll.power.sqrtDefault': '√ (default)',
|
||
'pianoRoll.power.mild': 'Mild',
|
||
'pianoRoll.power.strong': 'Strong',
|
||
'pianoRoll.chordGuide.off': 'Chord guide off',
|
||
'pianoRoll.chordGuide.tonic': 'Chord guide tonic',
|
||
'pianoRoll.chordGuide.subdominant': 'Chord guide subdominant',
|
||
'pianoRoll.chordGuide.dominant': 'Chord guide dominant',
|
||
'pianoRoll.spectrogramView': 'Spectrogram View',
|
||
'pianoRoll.sheetMusicView': 'Sheet Music View',
|
||
'pianoRoll.pointerTool': 'Pointer Tool',
|
||
'pianoRoll.pencilTool': 'Pencil Tool',
|
||
'pianoRoll.toggleAutomationLane': 'Toggle automation lane',
|
||
'pianoRoll.automation': 'Automation',
|
||
'pianoRoll.automationLane': '{label} automation lane',
|
||
'pianoRoll.automationType.pitchBend': 'Pitch Bend',
|
||
'pianoRoll.automationType.cc1': 'CC1',
|
||
'pianoRoll.automationType.cc2': 'CC2',
|
||
'pianoRoll.automationType.cc7': 'CC7',
|
||
'pianoRoll.automationType.cc11': 'CC11',
|
||
'pianoRoll.automationType.cc64': 'CC64',
|
||
'pianoRoll.mode': 'Mode',
|
||
'pianoRoll.modeOption.ionian': 'Ionian',
|
||
'pianoRoll.modeOption.dorian': 'Dorian',
|
||
'pianoRoll.modeOption.phrygian': 'Phrygian',
|
||
'pianoRoll.modeOption.lydian': 'Lydian',
|
||
'pianoRoll.modeOption.mixolydian': 'Mixolydian',
|
||
'pianoRoll.modeOption.aeolian': 'Aeolian',
|
||
'pianoRoll.modeOption.locrian': 'Locrian',
|
||
'pianoRoll.modeOption.harmonic_minor': 'Harmonic Minor',
|
||
'pianoRoll.modeOption.melodic_minor': 'Melodic Minor',
|
||
'pianoRoll.modeOption.phrygian_dominant': 'Phrygian Dominant',
|
||
'pianoRoll.modeOption.harmonic_major': 'Harmonic Major',
|
||
'pianoRoll.chordGuide': 'Chord guide',
|
||
'pianoRoll.sheetQuantization': 'Sheet Quant.',
|
||
'pianoRoll.snap': 'Snap',
|
||
'pianoRoll.snap.none': 'NO SNAP',
|
||
'pianoRoll.quantizePositionCompact': 'Qua. Pos.',
|
||
'pianoRoll.quantizeLengthCompact': 'Qua. Len.',
|
||
'pianoRoll.floor': 'Floor',
|
||
'pianoRoll.curve': 'Curve',
|
||
'pianoRoll.zoom': 'Zoom',
|
||
'pianoRoll.moreOptions': 'More options',
|
||
'pianoRoll.quantize.1/1': '1/1',
|
||
'pianoRoll.quantize.1/2': '1/2',
|
||
'pianoRoll.quantize.1/3': '1/3',
|
||
'pianoRoll.quantize.1/4': '1/4',
|
||
'pianoRoll.quantize.1/6': '1/6',
|
||
'pianoRoll.quantize.1/8': '1/8',
|
||
'pianoRoll.quantize.1/12': '1/12',
|
||
'pianoRoll.quantize.1/16': '1/16',
|
||
'pianoRoll.quantize.1/24': '1/24',
|
||
'pianoRoll.quantize.1/32': '1/32',
|
||
'pianoRoll.showActiveRegionOnly': 'Show Active Region Only',
|
||
'pianoRoll.showEntireTrack': 'Show Entire Track',
|
||
'pianoRoll.detectChords': 'Detect chords...',
|
||
'pianoRoll.detectingChords': 'Detecting chords...',
|
||
'pianoRoll.detectTempo': 'Detect tempo...',
|
||
'pianoRoll.detectingTempo': 'Detecting tempo...',
|
||
'percussion.short.35': 'Ac.Bass',
|
||
'percussion.short.36': 'BassDrum',
|
||
'percussion.short.37': 'SideStick',
|
||
'percussion.short.38': 'Ac.Snare',
|
||
'percussion.short.39': 'HandClap',
|
||
'percussion.short.40': 'ElecSnare',
|
||
'percussion.short.41': 'LowFloor',
|
||
'percussion.short.42': 'ClosedHH',
|
||
'percussion.short.43': 'HighFloor',
|
||
'percussion.short.44': 'PedalHH',
|
||
'percussion.short.45': 'LowTom',
|
||
'percussion.short.46': 'OpenHH',
|
||
'percussion.short.47': 'LowMidTom',
|
||
'percussion.short.48': 'HiMidTom',
|
||
'percussion.short.49': 'Crash1',
|
||
'percussion.short.50': 'HighTom',
|
||
'percussion.short.51': 'Ride1',
|
||
'percussion.short.52': 'Chinese',
|
||
'percussion.short.53': 'RideBell',
|
||
'percussion.short.54': 'Tambourine',
|
||
'percussion.short.55': 'Splash',
|
||
'percussion.short.56': 'Cowbell',
|
||
'percussion.short.57': 'Crash2',
|
||
'percussion.short.58': 'Vibraslap',
|
||
'percussion.short.59': 'Ride2',
|
||
'percussion.short.60': 'HiBongo',
|
||
'percussion.short.61': 'LowBongo',
|
||
'percussion.short.62': 'MuteHiCon',
|
||
'percussion.short.63': 'OpenHiCon',
|
||
'percussion.short.64': 'LowConga',
|
||
'percussion.short.65': 'HighTimba',
|
||
'percussion.short.66': 'LowTimba',
|
||
'percussion.short.67': 'HighAgo',
|
||
'percussion.short.68': 'LowAgo',
|
||
'percussion.short.69': 'Cabasa',
|
||
'percussion.short.70': 'Maracas',
|
||
'percussion.short.71': 'ShortWhis',
|
||
'percussion.short.72': 'LongWhis',
|
||
'percussion.short.73': 'ShortGui',
|
||
'percussion.short.74': 'LongGui',
|
||
'percussion.short.75': 'Claves',
|
||
'percussion.short.76': 'HiWood',
|
||
'percussion.short.77': 'LowWood',
|
||
'percussion.short.78': 'MuteCuica',
|
||
'percussion.short.79': 'OpenCuica',
|
||
'percussion.short.80': 'MuteTri',
|
||
'percussion.short.81': 'OpenTri',
|
||
'percussion.full.35': 'Acoustic Bass Drum',
|
||
'percussion.full.36': 'Bass Drum 1',
|
||
'percussion.full.37': 'Side Stick',
|
||
'percussion.full.38': 'Acoustic Snare',
|
||
'percussion.full.39': 'Hand Clap',
|
||
'percussion.full.40': 'Electric Snare',
|
||
'percussion.full.41': 'Low Floor Tom',
|
||
'percussion.full.42': 'Closed Hi Hat',
|
||
'percussion.full.43': 'High Floor Tom',
|
||
'percussion.full.44': 'Pedal Hi-Hat',
|
||
'percussion.full.45': 'Low Tom',
|
||
'percussion.full.46': 'Open Hi-Hat',
|
||
'percussion.full.47': 'Low-Mid Tom',
|
||
'percussion.full.48': 'Hi Mid Tom',
|
||
'percussion.full.49': 'Crash Cymbal 1',
|
||
'percussion.full.50': 'High Tom',
|
||
'percussion.full.51': 'Ride Cymbal 1',
|
||
'percussion.full.52': 'Chinese Cymbal',
|
||
'percussion.full.53': 'Ride Bell',
|
||
'percussion.full.54': 'Tambourine',
|
||
'percussion.full.55': 'Splash Cymbal',
|
||
'percussion.full.56': 'Cowbell',
|
||
'percussion.full.57': 'Crash Cymbal 2',
|
||
'percussion.full.58': 'Vibraslap',
|
||
'percussion.full.59': 'Ride Cymbal 2',
|
||
'percussion.full.60': 'Hi Bongo',
|
||
'percussion.full.61': 'Low Bongo',
|
||
'percussion.full.62': 'Mute Hi Conga',
|
||
'percussion.full.63': 'Open Hi Conga',
|
||
'percussion.full.64': 'Low Conga',
|
||
'percussion.full.65': 'High Timbale',
|
||
'percussion.full.66': 'Low Timbale',
|
||
'percussion.full.67': 'High Agogo',
|
||
'percussion.full.68': 'Low Agogo',
|
||
'percussion.full.69': 'Cabasa',
|
||
'percussion.full.70': 'Maracas',
|
||
'percussion.full.71': 'Short Whistle',
|
||
'percussion.full.72': 'Long Whistle',
|
||
'percussion.full.73': 'Short Guiro',
|
||
'percussion.full.74': 'Long Guiro',
|
||
'percussion.full.75': 'Claves',
|
||
'percussion.full.76': 'Hi Wood Block',
|
||
'percussion.full.77': 'Low Wood Block',
|
||
'percussion.full.78': 'Mute Cuica',
|
||
'percussion.full.79': 'Open Cuica',
|
||
'percussion.full.80': 'Mute Triangle',
|
||
'percussion.full.81': 'Open Triangle',
|
||
'toolbar.export.kgstudio': 'Export to KGStudio file',
|
||
'toolbar.export.midi': 'Export to MIDI file',
|
||
'toolbar.export.wav': 'Export to WAV',
|
||
'toolbar.export.mp3': 'Export to MP3',
|
||
'toolbar.projectName.prompt': 'Enter project name:',
|
||
'toolbar.projectName.invalid': 'Invalid project name. Only letters, numbers, spaces, hyphens, underscores, periods, and parentheses are allowed.',
|
||
'toolbar.projectName.reserved': '"{name}" is a reserved project name. Please choose a different name.',
|
||
'toolbar.projectName.overwrite': 'Project "{name}" already exists. Do you want to overwrite it?',
|
||
'toolbar.projectName.renameOrCopy': 'Would you like to rename this project, or save it as a new copy?',
|
||
'toolbar.projectName.saveAsCopy': 'Save as Copy',
|
||
'toolbar.projectName.rename': 'Rename',
|
||
'toolbar.save.error': 'An error occurred while saving: {error}',
|
||
'toolbar.load.error': 'An error occurred while loading the project: {error}',
|
||
'toolbar.newProject.confirm': 'Are you sure you want to create a new project? Any unsaved changes will be lost.',
|
||
'toolbar.project.notFound': 'Project "{name}" not found.',
|
||
'toolbar.openProject.confirm': 'Open this project? Any unsaved changes in the current project will be lost.',
|
||
'toolbar.status.loadFailed': 'Failed to load project: {error}',
|
||
'toolbar.status.newProjectCreated': 'New project "{name}" created',
|
||
'toolbar.status.projectLoaded': '{description} loaded successfully',
|
||
'toolbar.status.projectExportedKgstudio': 'Project "{name}" exported as KGStudio file',
|
||
'toolbar.status.exportProjectError': 'Error exporting project: {error}',
|
||
'toolbar.export.failedProject': 'Failed to export project: {error}',
|
||
'toolbar.status.projectExportedMidi': 'Project "{name}" exported as MIDI file',
|
||
'toolbar.status.exportMidiError': 'Error exporting MIDI: {error}',
|
||
'toolbar.export.failedMidi': 'Failed to export project as MIDI: {error}',
|
||
'toolbar.status.projectExportedWav': 'Project "{name}" exported as WAV file',
|
||
'toolbar.status.exportWavError': 'Error exporting WAV: {error}',
|
||
'toolbar.export.failedWav': 'Failed to export project as WAV: {error}',
|
||
'toolbar.status.projectExportedMp3': 'Project "{name}" exported as MP3 file',
|
||
'toolbar.status.exportMp3Error': 'Error exporting MP3: {error}',
|
||
'toolbar.export.failedMp3': 'Failed to export project as MP3: {error}',
|
||
'toolbar.status.importFailed': 'Failed to import file: {error}',
|
||
'toolbar.import.failedProjectFile': 'Failed to import project file: {error}',
|
||
'toolbar.import.corruptedKgstudio': 'The .kgstudio file is corrupted or invalid: {error}',
|
||
'toolbar.status.importingMidi': 'Importing MIDI file "{name}"...',
|
||
'toolbar.status.failedImportMidi': 'Failed to import MIDI file: {error}',
|
||
'toolbar.status.playbackFailedStart': 'Playback failed to start',
|
||
'toolbar.status.recordingStoppedCommitted': 'Recording stopped - notes committed',
|
||
'toolbar.status.failedStopPlayback': 'Failed to stop playback',
|
||
'toolbar.maxBars.prompt': 'Enter new max bars (>= {min}):',
|
||
'toolbar.input.invalidNumber': 'Invalid input. Please enter a valid number.',
|
||
'toolbar.maxBars.invalid': 'Invalid value. Please enter a number >= {min}.',
|
||
'toolbar.status.maxBarsChanged': 'Max bars changed to {value}',
|
||
'toolbar.bpm.prompt': 'Enter new BPM ({min}-{max}):',
|
||
'toolbar.bpm.invalid': 'Invalid BPM. Please enter a value between {min} and {max}.',
|
||
'toolbar.status.bpmChanged': 'BPM changed to {value}',
|
||
'toolbar.timeSignature.prompt': 'Set the time signature:',
|
||
'toolbar.status.timeSignatureChanged': 'Time signature changed to {value}',
|
||
'toolbar.status.keySignatureChanged': 'Key signature changed to {value}',
|
||
'toolbar.status.copied': 'Items copied to clipboard',
|
||
'toolbar.status.copyNone': 'No items selected to copy',
|
||
'toolbar.status.pasted': 'Items pasted from clipboard',
|
||
'toolbar.status.pasteFailed': 'Cannot paste - no valid clipboard content or context',
|
||
'toolbar.status.deleted': 'Selected regions deleted',
|
||
'toolbar.status.deleteNone': 'No regions selected for deletion',
|
||
'toolbar.undo.none': 'Nothing to undo',
|
||
'toolbar.redo.none': 'Nothing to redo',
|
||
'toolbar.status.undid': 'Undid: {description}',
|
||
'toolbar.status.redid': 'Redid: {description}',
|
||
'toolbar.action': 'action',
|
||
'toolbar.status.chatToggled': 'Chat toggled',
|
||
'toolbar.status.settingsToggled': 'Settings toggled',
|
||
'toolbar.pianoRoll.selectMidiRegion': 'Please select a MIDI region to open the Piano Roll.',
|
||
'toolbar.status.recordingStopped': 'Recording stopped',
|
||
'toolbar.status.audioRecordingStarted': 'Audio recording started...',
|
||
'toolbar.recording.openMidiRegion': 'Please open a MIDI region in the Piano Roll before starting recording.',
|
||
'toolbar.recording.selectMidiRegion': 'Please select a MIDI region before starting recording.',
|
||
'toolbar.recording.noMidiDevice': 'No MIDI device detected. Please connect a MIDI keyboard and try again.',
|
||
'toolbar.status.recordingStarted': 'Recording started...',
|
||
'toolbar.button.new': 'New',
|
||
'toolbar.button.load': 'Load',
|
||
'toolbar.button.save': 'Save',
|
||
'toolbar.button.export': 'Export',
|
||
'toolbar.button.import': 'Import',
|
||
'toolbar.button.settings': 'Settings',
|
||
'toolbar.button.undo': 'Undo',
|
||
'toolbar.button.redo': 'Redo',
|
||
'toolbar.button.select': 'Select',
|
||
'toolbar.button.pencil': 'Pencil',
|
||
'toolbar.button.splitRegion': 'Split Region at Playhead',
|
||
'toolbar.button.mergeRegions': 'Merge Selected MIDI Regions',
|
||
'toolbar.button.snapToGrid': 'Snap to Grid',
|
||
'toolbar.button.copy': 'Copy',
|
||
'toolbar.button.paste': 'Paste',
|
||
'toolbar.button.delete': 'Delete',
|
||
'toolbar.button.backToBeginning': 'Back to beginning',
|
||
'toolbar.button.play': 'Play',
|
||
'toolbar.button.pause': 'Pause',
|
||
'toolbar.button.stopRecording': 'Stop Recording',
|
||
'toolbar.button.record': 'Record',
|
||
'toolbar.button.loop': 'Loop',
|
||
'toolbar.button.metronome': 'Metronome',
|
||
'toolbar.button.piano': 'Piano',
|
||
'toolbar.button.kgone': 'K.G.One Music Generator',
|
||
'toolbar.button.chat': 'Chat',
|
||
'toolbar.button.eventList': 'Event List Editor',
|
||
'toolbar.keySignatureChooser': 'Choose key signature, current {value}',
|
||
'toolbar.export.label': 'Export',
|
||
'toolbar.importProject.title': 'Import Project',
|
||
'toolbar.importProject.description': 'Drag and drop your project file here',
|
||
'toolbar.openingProject': 'Opening project...',
|
||
'fileImport.invalidType': 'Invalid file type. Please select a file with one of these extensions: {extensions}',
|
||
'fileImport.close': 'Close import modal',
|
||
'fileImport.supportedFormats': 'Supported formats: {formats}',
|
||
'fileImport.or': 'or',
|
||
'fileImport.browse': 'Browse Files',
|
||
'instrument.group.PIANO_AND_KEYBOARDS': 'Piano and Keyboards',
|
||
'instrument.group.GUITAR': 'Guitar',
|
||
'instrument.group.BASS': 'Bass',
|
||
'instrument.group.STRINGS': 'Strings',
|
||
'instrument.group.BRASS': 'Brass',
|
||
'instrument.group.WOODWIND': 'Woodwind',
|
||
'instrument.group.PERCUSSION_KIT': 'Percussion Kit',
|
||
'instrument.group.SYNTH': 'Synthesizer',
|
||
'instrument.name.acoustic_grand_piano': 'Acoustic Grand Piano',
|
||
'instrument.name.bright_acoustic_piano': 'Bright Acoustic Piano',
|
||
'instrument.name.electric_grand_piano': 'Electric Grand Piano',
|
||
'instrument.name.electric_piano_1': 'Electric Piano 1',
|
||
'instrument.name.electric_piano_2': 'Electric Piano 2',
|
||
'instrument.name.drawbar_organ': 'Drawbar Organ',
|
||
'instrument.name.clavinet': 'Clavinet',
|
||
'instrument.name.harpsichord': 'Harpsichord',
|
||
'instrument.name.accordion': 'Accordion',
|
||
'instrument.name.acoustic_guitar_nylon': 'Acoustic Guitar (nylon)',
|
||
'instrument.name.acoustic_guitar_steel': 'Acoustic Guitar (steel)',
|
||
'instrument.name.electric_guitar_clean': 'Electric Guitar (clean)',
|
||
'instrument.name.overdriven_guitar': 'Electric Guitar (overdrive)',
|
||
'instrument.name.distortion_guitar': 'Electric Guitar (distortion)',
|
||
'instrument.name.acoustic_bass': 'Acoustic Bass',
|
||
'instrument.name.electric_bass_finger': 'Electric Bass (finger)',
|
||
'instrument.name.electric_bass_pick': 'Electric Bass (picked)',
|
||
'instrument.name.slap_bass_1': 'Slap Bass',
|
||
'instrument.name.synth_bass_1': 'Synth Bass 1',
|
||
'instrument.name.violin': 'Violin',
|
||
'instrument.name.viola': 'Viola',
|
||
'instrument.name.cello': 'Cello',
|
||
'instrument.name.contrabass': 'Contrabass',
|
||
'instrument.name.string_ensemble_1': 'String Ensemble',
|
||
'instrument.name.string_ensemble_2': 'String Ensemble 2',
|
||
'instrument.name.pizzicato_strings': 'Pizzicato Strings',
|
||
'instrument.name.tremolo_strings': 'Tremolo Strings',
|
||
'instrument.name.orchestral_harp': 'Orchestral Harp',
|
||
'instrument.name.trumpet': 'Trumpet',
|
||
'instrument.name.trombone': 'Trombone',
|
||
'instrument.name.tuba': 'Tuba',
|
||
'instrument.name.french_horn': 'French Horn',
|
||
'instrument.name.brass_section': 'Brass Section',
|
||
'instrument.name.soprano_sax': 'Soprano Sax',
|
||
'instrument.name.alto_sax': 'Alto Sax',
|
||
'instrument.name.tenor_sax': 'Tenor Sax',
|
||
'instrument.name.baritone_sax': 'Baritone Sax',
|
||
'instrument.name.oboe': 'Oboe',
|
||
'instrument.name.english_horn': 'English Horn',
|
||
'instrument.name.bassoon': 'Bassoon',
|
||
'instrument.name.clarinet': 'Clarinet',
|
||
'instrument.name.piccolo': 'Piccolo',
|
||
'instrument.name.flute': 'Flute',
|
||
'instrument.name.shakuhachi': 'Shakuhachi',
|
||
'instrument.name.harmonica': 'Harmonica',
|
||
'instrument.name.standard': 'Standard Drum Kit',
|
||
'instrument.name.orchestra_kit': 'Orchestra Drum Kit',
|
||
'instrument.name.marimba': 'Marimba',
|
||
'instrument.name.timpani': 'Timpani',
|
||
'instrument.name.taiko_drum': 'Taiko Drum',
|
||
'instrument.name.woodblock': 'Woodblock',
|
||
'instrument.name.lead_1_square': 'Lead 1 (square)',
|
||
'instrument.name.lead_2_sawtooth': 'Lead 2 (sawtooth)',
|
||
'instrument.name.pad_1_new_age': 'Pad 1 (new age)',
|
||
'instrument.name.pad_2_warm': 'Pad 2 (warm)',
|
||
'instrument.name.pad_3_polysynth': 'Pad 3 (polysynth)',
|
||
'instrument.name.pad_4_choir': 'Pad 4 (choir)',
|
||
'instrument.name.pad_5_bowed': 'Pad 5 (bowed glass)',
|
||
'instrument.name.pad_6_metallic': 'Pad 6 (metallic)',
|
||
'instrument.name.pad_7_halo': 'Pad 7 (halo)',
|
||
'instrument.name.pad_8_sweep': 'Pad 8 (sweep)',
|
||
'instrument.name.fx_1_rain': 'FX 1 (rain)',
|
||
'instrument.name.fx_2_soundtrack': 'FX 2 (soundtrack)',
|
||
'instrument.name.fx_3_crystal': 'FX 3 (crystal)',
|
||
'instrument.name.fx_4_atmosphere': 'FX 4 (atmosphere)',
|
||
'instrument.name.fx_5_brightness': 'FX 5 (brightness)',
|
||
'instrument.name.fx_6_goblins': 'FX 6 (goblins)',
|
||
'instrument.name.fx_7_echoes': 'FX 7 (echoes)',
|
||
'instrument.name.fx_8_scifi': 'FX 8 (sci-fi)',
|
||
// ─── K.G.One / Music Generator Panel ─────────────────────────────────────────
|
||
'kgone.panel.title.server': 'K.G.One Music Generator',
|
||
'kgone.panel.title.local': 'Music Generator',
|
||
'kgone.tab.fullSong': 'Full Song',
|
||
'kgone.tab.remix': 'Remix',
|
||
'kgone.tab.repaint': 'Repaint',
|
||
'kgone.tab.separator': 'Separator',
|
||
'kgone.tab.requiresServer': 'Requires K.G.One Music Studio server integration',
|
||
// Shared across tabs
|
||
'kgone.shared.advancedSettings': 'Advanced Settings',
|
||
'kgone.shared.caption': 'Caption',
|
||
'kgone.shared.lyrics': 'Lyrics',
|
||
'kgone.shared.lyricsPlaceholder': '[Verse 1]\nYour lyrics here...\n\n[Chorus]\n...',
|
||
'kgone.shared.instrumental': 'Instrumental (no vocals)',
|
||
'kgone.shared.inferenceSteps': 'Inference Steps',
|
||
'kgone.shared.guidanceScale': 'Guidance Scale',
|
||
'kgone.shared.useRandomSeed': 'Use Random Seed',
|
||
'kgone.shared.seed': 'Seed',
|
||
'kgone.shared.thinking': 'Thinking (CoT metadata generation)',
|
||
'kgone.shared.selectedRegion': 'Selected Region',
|
||
'kgone.shared.track': 'Track',
|
||
'kgone.shared.poweredBy': 'Powered by ',
|
||
'kgone.shared.btn.loadingModel': 'Loading model...',
|
||
'kgone.shared.btn.generating': 'Generating...',
|
||
'kgone.shared.btn.processing': 'Processing...',
|
||
'kgone.shared.btn.downloading': 'Downloading...',
|
||
'kgone.shared.btn.preparingUpload': 'Preparing upload...',
|
||
'kgone.shared.btn.importing': 'Importing...',
|
||
'kgone.shared.hint.loadingModel': 'Loading model — this can take 60+ seconds, please wait...',
|
||
'kgone.shared.hint.submitting': 'Submitting generation request...',
|
||
'kgone.shared.hint.downloadingAudio': 'Downloading audio...',
|
||
// Clip tab
|
||
'kgone.clip.field.prompt': 'Prompt',
|
||
'kgone.clip.field.promptPlaceholder': 'e.g. Gritty, Acid, Bassline, 303, Synth Lead, FM, Sub, Upper Mids, High Phaser, High Reverb, Pitch Bend, 8 Bars, 140 BPM, E minor',
|
||
'kgone.clip.field.promptHint': 'Describe the clip with comma-separated tags: instrument family, sub-type, timbre, FX, bars, BPM, key.',
|
||
'kgone.clip.field.negativePrompt': 'Negative Prompt',
|
||
'kgone.clip.field.negativePromptPlaceholder': 'e.g. distortion, noise',
|
||
'kgone.clip.field.bars': 'Bars',
|
||
'kgone.clip.field.bars4': '4 Bars',
|
||
'kgone.clip.field.bars8': '8 Bars',
|
||
'kgone.clip.field.note': 'Note',
|
||
'kgone.clip.field.scale': 'Scale',
|
||
'kgone.clip.field.scaleMajor': 'Major',
|
||
'kgone.clip.field.scaleMinor': 'Minor',
|
||
'kgone.clip.field.bpm': 'BPM',
|
||
'kgone.clip.field.steps': 'Steps',
|
||
'kgone.clip.field.cfgScale': 'CFG Scale',
|
||
'kgone.clip.field.seedLabel': 'Seed (-1 = random)',
|
||
'kgone.clip.field.samplerType': 'Sampler Type',
|
||
'kgone.clip.field.sigmaMin': 'Sigma Min',
|
||
'kgone.clip.field.sigmaMax': 'Sigma Max',
|
||
'kgone.clip.field.cfgRescale': 'CFG Rescale',
|
||
'kgone.clip.hint.generating': 'Generating clip...',
|
||
'kgone.clip.hint.drag': 'Drag the player above to a track to import the clip. Drop onto an <strong>audio track</strong> to import as a WAV region (recommended), or onto a <strong>MIDI track</strong> to import as a MIDI region. Note: MIDI is transcribed from the audio and may not be perfectly accurate.',
|
||
'kgone.clip.btn.generate': 'Generate Clip',
|
||
'kgone.clip.poweredBy': 'Foundation-1',
|
||
// Full Song tab
|
||
'kgone.fullSong.field.captionPlaceholder': 'e.g. Genre: Eurodance, 90s dance-pop, upbeat electronic. Style: Catchy, energetic... Tempo: ~130 BPM. Instrumentation: driving kick drum, eurodance bassline...',
|
||
'kgone.fullSong.field.captionHint': 'Describe the song style, mood, tempo, instrumentation, and structure in natural language.',
|
||
'kgone.fullSong.field.lyricsHint': 'Use [Intro], [Verse], [Chorus], [Bridge] tags to mark sections.',
|
||
'kgone.fullSong.hint.generating': 'Generating...',
|
||
'kgone.fullSong.hint.generatingProgress': 'Generating... {pct}% — {stage}',
|
||
'kgone.fullSong.hint.generatingProgressNoStage': 'Generating... {pct}%',
|
||
'kgone.fullSong.hint.drag': 'Drag the player above to an <strong>audio track</strong> to import the song. Dropping onto a MIDI track is not supported for full song generation.',
|
||
'kgone.fullSong.btn.generate': 'Generate Song',
|
||
'kgone.fullSong.poweredBy': 'ACE-Step 1.5',
|
||
// Remix tab
|
||
'kgone.remix.field.captionPlaceholder': 'e.g. Genre: Jazz, Style: Smooth and mellow, Instrumentation: piano, upright bass, brushed drums...',
|
||
'kgone.remix.field.captionHint': 'Describe the target style, mood, and instrumentation for the remix.',
|
||
'kgone.remix.field.lyricsHint': 'Leave empty to keep the original lyrics, or provide new ones. Use [Verse], [Chorus], [Bridge] tags.',
|
||
'kgone.remix.field.coverStrength': 'Cover Strength',
|
||
'kgone.remix.field.coverStrengthHint': '0 = creative, 1 = faithful to source structure',
|
||
'kgone.remix.field.noiseStrength': 'Noise Strength',
|
||
'kgone.remix.field.noiseStrengthHint': '0 = pure style transfer, 0.1–0.25 recommended',
|
||
'kgone.remix.hint.submitting': 'Submitting remix request...',
|
||
'kgone.remix.hint.generating': 'Generating remix...',
|
||
'kgone.remix.hint.generatingProgress': 'Generating remix... {pct}% — {stage}',
|
||
'kgone.remix.hint.generatingProgressNoStage': 'Generating remix... {pct}%',
|
||
'kgone.remix.hint.drag': 'Drag the player above to an <strong>audio track</strong> to import the remix.',
|
||
'kgone.remix.hint.noRegion': 'Select an audio region on the timeline to remix it. Only audio regions are supported — MIDI regions cannot be remixed.',
|
||
'kgone.remix.btn.generate': 'Generate Remix',
|
||
'kgone.remix.btn.processingRemix': 'Processing remix...',
|
||
'kgone.remix.btn.importAligned': 'Import Aligned to Source',
|
||
'kgone.remix.poweredBy': 'ACE-Step 1.5',
|
||
// Repaint tab
|
||
'kgone.repaint.field.repaintRange': 'Repaint Range',
|
||
'kgone.repaint.field.loopModeOff': 'Loop mode is off. Enable the loop button on the toolbar and set a loop range to define the repaint window.',
|
||
'kgone.repaint.field.start': 'Start',
|
||
'kgone.repaint.field.end': 'End',
|
||
'kgone.repaint.field.untilEnd': 'until end of audio',
|
||
'kgone.repaint.field.captionPlaceholder': 'e.g. Genre: Jazz, Style: Smooth and mellow, Instrumentation: piano, upright bass, brushed drums...',
|
||
'kgone.repaint.field.captionHint': 'Describe the target style and instrumentation for the repainted section.',
|
||
'kgone.repaint.field.lyricsHint': 'Leave empty to keep the original lyrics, or provide new ones for the repainted section.',
|
||
'kgone.repaint.field.repaintStrength': 'Repaint Strength',
|
||
'kgone.repaint.field.repaintStrengthHint': '0 = preserve original, 1 = full regeneration',
|
||
'kgone.repaint.hint.submitting': 'Submitting repaint request...',
|
||
'kgone.repaint.hint.generating': 'Generating repaint...',
|
||
'kgone.repaint.hint.generatingProgress': 'Generating repaint... {pct}% — {stage}',
|
||
'kgone.repaint.hint.generatingProgressNoStage': 'Generating repaint... {pct}%',
|
||
'kgone.repaint.hint.drag': 'Drag the player above to an <strong>audio track</strong> to import the repaint.',
|
||
'kgone.repaint.hint.noRegion': 'Select an audio region on the timeline to repaint it. Only audio regions are supported — MIDI regions cannot be repainted.',
|
||
'kgone.repaint.btn.generate': 'Generate Repaint',
|
||
'kgone.repaint.btn.processingRepaint': 'Processing repaint...',
|
||
'kgone.repaint.btn.importAligned': 'Import Aligned to Source',
|
||
'kgone.repaint.poweredBy': 'ACE-Step 1.5',
|
||
// Separator tab
|
||
'kgone.separator.field.separationModel': 'Separation Model',
|
||
'kgone.separator.field.chunkDuration': 'Optional audio chunk duration (seconds)',
|
||
'kgone.separator.field.chunkDurationPlaceholder': 'Leave blank to process the full region',
|
||
'kgone.separator.field.modelOverlap': 'Model overlap',
|
||
'kgone.separator.hint.drag': 'Drag each stem player above to an <strong>audio track</strong> to import it. Dropping onto a MIDI track is not supported for stem separation.',
|
||
'kgone.separator.hint.noRegion.download': 'Download {model}, then select an audio region on the timeline to extract stems from it.',
|
||
'kgone.separator.hint.noRegion.select': 'Select an audio region on the timeline to extract stems from it. Only audio regions are supported — MIDI regions cannot be separated.',
|
||
'kgone.separator.btn.separateStems': 'Separate Stems',
|
||
'kgone.separator.btn.importAllStems': 'Import All Stems to Timeline',
|
||
'kgone.separator.poweredBy': 'UVR5 CLI',
|
||
'kgone.separator.model.vocalInstMedium': 'Vocal and Instrument (Medium Accuracy)',
|
||
'kgone.separator.model.vocalInstHigh': 'Vocal and Instrument (High Accuracy)',
|
||
'kgone.separator.model.6stem': 'Vocal, Drums, Bass, Guitar, Piano, and Others',
|
||
'kgone.separator.model.htdemucs4s': 'Vocal, Drums, Bass, and Others',
|
||
'kgone.separator.btn.server.loadingModel': 'Loading model...',
|
||
'kgone.separator.btn.server.generating': 'Preparing upload...',
|
||
'kgone.separator.btn.server.polling': 'Separating stems...',
|
||
'kgone.separator.btn.server.downloading': 'Downloading...',
|
||
'kgone.separator.btn.local.loadingModel': 'Preparing local model...',
|
||
'kgone.separator.btn.local.generating': 'Preparing audio...',
|
||
'kgone.separator.btn.local.polling': 'Separating locally...',
|
||
'kgone.separator.btn.local.downloading': 'Finalizing...',
|
||
'kgone.separator.local.title': 'Local Separator Mode',
|
||
'kgone.separator.local.description': 'If K.G.One Music Studio is unavailable, Local Separator Mode provides a built-in alternative for extracting stems directly in your browser. Two local models are available: Vocal and Instrument (Medium Accuracy), and Vocal, Drums, Bass, and Others. Download status below reflects the currently selected model. Vocal and Instrument (Medium Accuracy) usually takes longer to process than Vocal, Drums, Bass, and Others, and total processing time will still depend on your hardware. If processing falls back to CPU, the page may become temporarily less responsive while separation is running.',
|
||
'kgone.separator.local.learnMore': 'Learn more about K.G.One Music Studio server integration.',
|
||
'kgone.separator.local.provider': 'Provider: ',
|
||
'kgone.separator.local.model': 'Model: ',
|
||
'kgone.separator.local.downloaded': 'downloaded',
|
||
'kgone.separator.local.notDownloaded': 'not downloaded',
|
||
'kgone.separator.local.checkingCache': 'Checking local model cache...',
|
||
'kgone.separator.local.btn.download': 'Download Selected Model',
|
||
'kgone.separator.local.btn.downloading': 'Downloading Model...',
|
||
'kgone.separator.local.btn.redownload': 'Redownload Model',
|
||
'kgone.separator.local.btn.redownloading': 'Redownloading...',
|
||
'kgone.separator.local.btn.deleteCache': 'Delete Cached Model',
|
||
'kgone.separator.local.btn.deleting': 'Deleting...',
|
||
'kgone.separator.local.progress.downloading': 'Downloading {name}...',
|
||
'kgone.separator.local.progress.downloadingWithSize': 'Downloading {name}... {received} / {total} MB',
|
||
'kgone.separator.local.progress.downloadingMbOnly': 'Downloading {name}... {received} MB',
|
||
'kgone.separator.local.progress.ready': '{name} is ready.',
|
||
'kgone.separator.local.progress.preparingRuntime': 'Preparing ONNX Runtime session...',
|
||
'kgone.separator.local.progress.readingAudio': 'Reading audio file...',
|
||
'kgone.separator.local.progress.running': 'Running browser separation...',
|
||
'kgone.separator.local.progress.complete': 'Separation complete.',
|
||
|
||
'openProjectModal.title': 'Open Project',
|
||
'openProjectModal.close': 'Close',
|
||
'openProjectModal.loading': 'Loading projects...',
|
||
'openProjectModal.date.unknown': 'Unknown',
|
||
'openProjectModal.filter.placeholder': 'Filter projects...',
|
||
'openProjectModal.viewToggle.projects': 'Projects',
|
||
'openProjectModal.viewToggle.trash': 'Trash',
|
||
'openProjectModal.trash.hint': 'Deleted projects are automatically removed after 30 days.',
|
||
'openProjectModal.sort.name': 'Name',
|
||
'openProjectModal.sort.created': 'Created',
|
||
'openProjectModal.sort.updated': 'Updated',
|
||
'openProjectModal.empty.trash': 'Trash is empty',
|
||
'openProjectModal.empty.noProjects': 'No saved projects',
|
||
'openProjectModal.empty.noMatch': 'No projects match the filter',
|
||
'openProjectModal.meta.created': 'Created {date}',
|
||
'openProjectModal.meta.updated': 'Updated {date}',
|
||
'openProjectModal.meta.deleted': 'Deleted {date}',
|
||
'openProjectModal.action.open': 'Open',
|
||
'openProjectModal.action.duplicate': 'Duplicate',
|
||
'openProjectModal.action.delete': 'Delete',
|
||
'openProjectModal.action.restore': 'Restore',
|
||
'openProjectModal.action.deletePermanently': 'Delete permanently',
|
||
'openProjectModal.dialog.duplicateName': 'Enter a name for the duplicated project:',
|
||
'openProjectModal.dialog.invalidName': 'Invalid project name. Only letters, numbers, spaces, hyphens, underscores, periods, and parentheses are allowed.',
|
||
'openProjectModal.dialog.duplicateError': 'Failed to duplicate project: {error}',
|
||
'openProjectModal.dialog.deleteError': 'Failed to delete project: {error}',
|
||
'openProjectModal.dialog.restoreError': 'Failed to restore project: {error}',
|
||
'openProjectModal.dialog.confirmPermanentDelete': 'Are you sure you want to permanently delete "{name}"?\n\nThis operation cannot be undone.',
|
||
'openProjectModal.dialog.permanentDeleteError': 'Failed to permanently delete project: {error}',
|
||
};
|