{{ currentLang === 'en' ? 'Draft Restored' : 'Brouillon restaure' }}

{{ currentLang === 'en' ? 'Files must be re-uploaded.' : 'Les fichiers doivent etre re-uploades.' }}

{{ currentLang === 'en' ? 'Saved drafts:' : 'Brouillons enregistres :' }}
{{ submitResult.success ? 'OK' : 'X' }}
{{ submitResult.success ? t('successTitle') : t('errorTitle') }}
{{ submitResult.message }}
{{ t('reference') }}: {{ form.catalogueNumber }}
{{ currentLang === 'en' ? 'Your tracks' : 'Vos pistes' }}
{{ track.position }} {{ track.artist }} - {{ track.title }}
{{ currentLang === 'en' ? 'Preview & verify audio' : 'Verifier les pistes audio' }}
View Online Submission Queue
{{ currentLang === 'en' ? 'Already have a release sheet?' : 'Vous avez deja une fiche produit ?' }} AI {{ currentLang === 'en' ? 'Analyzing your release sheet...' : 'Analyse de votre fiche produit...' }} {{ currentLang === 'en' ? 'Form auto-filled!' : 'Formulaire pre-rempli !' }}
{{ currentLang === 'en' ? 'Drop your release info document here (PDF, DOCX, TXT) — AI will extract catalogue number, artists, tracklist and auto-fill the form below.' : 'Deposez votre document d\'infos de sortie ici (PDF, DOCX, TXT) — l\'IA extraira le numero de catalogue, artistes, tracklist et pre-remplira le formulaire ci-dessous.' }} {{ currentLang === 'en' ? 'Extracting catalogue number, artists, tracklist...' : 'Extraction du numero de catalogue, artistes, tracklist...' }} {{ parserMissing.length === 0 ? (currentLang === 'en' ? 'All fields extracted successfully' : 'Tous les champs extraits avec succes') : (currentLang === 'en' ? parserMissing.length + ' field(s) need manual entry' : parserMissing.length + ' champ(s) a completer manuellement') }}
{{ currentLang === 'en' ? 'Not your audio files or artwork — just the text document with your release metadata.' : 'Pas vos fichiers audio ou visuels — juste le document texte avec les metadonnees de votre sortie.' }}
{{ currentLang === 'en' ? 'Optional' : 'Optionnel' }}
{{ parserSource }} {{ currentLang === 'en' ? 'Fields auto-filled' : 'Champs remplis automatiquement' }}
{{ currentLang === 'en' ? 'Missing:' : 'A completer :' }} {{ parserMissing.join(', ') }}
{{ currentLang === 'en' ? 'Paste your release info below (catalogue number, artist, title, tracklist...):' : 'Collez vos infos de sortie ci-dessous (numero de catalogue, artiste, titre, tracklist...) :' }}
{{ currentLang === 'en' ? 'Paste a link to your release sheet (Google Doc, Dropbox, etc.):' : 'Collez un lien vers votre fiche produit (Google Doc, Dropbox, etc.) :' }}
{{ parsingText }}
{{ currentLang === 'en' ? 'Choose format first' : 'Choisissez le format en premier' }} *

{{ currentLang === 'en' ? 'The image slots below adapt to the format you pick — number of sleeves and labels.' : 'Les emplacements d\'images ci-dessous s\'adaptent au format choisi — nombre de pochettes et de labels.' }}

{{ formatChangeNotice }}
Images AI Vision

{{ currentLang === 'en' ? 'Drop your images — AI reads label text to pre-fill the form automatically.' : 'Deposez vos images — l\'IA lit le texte des labels pour pre-remplir le formulaire.' }}

{{ currentLang === 'en' ? 'Image guidelines' : 'Guide images' }}

Sleeve Front / Sleeve Back — The cover artwork. Both sides are required for vinyl releases. Square format, minimum 1400x1400px.

Label Side A / Side B — The vinyl centre labels for each side. The system will apply the black ring automatically if needed.

AI Label Reading — When you drop a label image, our AI reads the text on the macaron to pre-fill tracklist, artist, and other metadata automatically.

Only upload final artwork — no mockups, no watermarks. Images are published directly to the website.

Sleeve Front / Sleeve Back — L'artwork de la pochette. Les deux faces sont obligatoires pour une sortie vinyle. Format carre, minimum 1400x1400px.

Label Side A / Side B — Les macarons du vinyle pour chaque face. Le systeme appliquera le ring noir automatiquement si besoin.

Lecture IA du label — Quand vous deposez une image de label, notre IA lit le texte du macaron pour pre-remplir la tracklist, l'artiste et autres metadonnees automatiquement.

N'uploadez que les artworks finaux — pas de mockups, pas de filigranes. Les images sont publiees directement sur le site.

{{ currentLang === 'en' ? 'Pick a format above to see image slots' : 'Choisissez un format ci-dessus pour voir les emplacements d\'images' }}
{{ currentLang === 'en' ? 'Reading ' + Object.values(imageSlots).filter(s => s).length + ' image(s)...' : 'Lecture de ' + Object.values(imageSlots).filter(s => s).length + ' image(s)...' }}
{{ currentLang === 'en' ? 'Pre-filled:' : 'Pre-rempli :' }} {{ field }}
{{ imageBatchError }}
{{ currentLang === 'en' ? 'Vision detected differences:' : 'Differences detectees par la vision :' }}
{{ c.label }}: {{ c.current }} {{ c.field === 'tracklist' ? (c.vision.split('\n').length + ' tracks from image') : c.vision }}
{{ currentLang === 'en' ? 'AI detected metadata from label' : 'IA a detecte des metadonnees sur le label' }}
{{ c.field }}: {{ c.current }} {{ c.suggested }}
{{ currentLang === 'en' ? 'Auto-filled:' : 'Rempli auto :' }} {{ visionResult.autoFilled.join(', ') }}
{{ currentLang === 'en' ? 'Tracklist from label:' : 'Tracklist depuis le label :' }}
{{ t.position }}. {{ t.title }}{{ t.remixer ? ' (' + t.remixer + ')' : '' }}
{{ Object.values(imageSlots).filter(s => s).length }} image(s) ready
{{ t('draft_saved') || 'Draft saved' }}
{{ t('draft_restored') || 'Draft restored' }}
{{ t('selectRelease') || 'Select a release to copy specs from:' }}
{{ entry.sku }}
{{ entry.label }} - {{ entry.format || 'No format' }}
1 {{ t('basicInfo') }}
{{ emailError }}
MFG
{{ label.name }}
No labels found
+ Create new label
⚠️ Did you mean an existing label?
You typed "{{ elixigaLabelWarning.query }}". We found similar labels already in YOYAKU's catalog:
{{ artist.name }}
No artists found
⚠️ Did you mean an existing artist?
You typed "{{ elixigaArtistWarnings[0].query }}". Similar artists in YOYAKU's catalog:
+
Common Ground
{{ t('commonGroundDesc') }}
{{ discogsError }}
{{ discogsPreview.title }}
{{ discogsPreview.artist }}
Release auto-set to +60 days
{{ daysUntilRelease }}d
{{ t('minDateError') }}
2 Genres
{{ currentLang === 'en' ? 'Pricing — auto-publish' : 'Prix — publication automatique' }} opt.

{{ currentLang === 'en' ? 'Fill BOTH prices to auto-publish on YOYAKU.IO (B2C) and yydistribution.fr (B2B) immediately after submission. Leave empty for manual review by the YOYAKU team.' : 'Remplir LES DEUX prix pour publier automatiquement sur YOYAKU.IO (B2C) et yydistribution.fr (B2B) après envoi. Laissez vide pour validation manuelle par l\'équipe YOYAKU.' }}

{{ currentLang === 'en' ? '⚠ Both prices required for auto-publish — submission will go to manual review.' : '⚠ Les deux prix requis pour la publication auto — sinon validation manuelle.' }}
{{ currentLang === 'en' ? '✓ Will auto-publish on both sites after submission.' : '✓ Publication automatique sur les deux sites après envoi.' }}
3 {{ t('descriptionSection') }} *

{{ currentLang === 'en' ? 'Artist bio, release description, relevant info.' : 'Bio artiste, description release, infos pertinentes.' }}

4 Preview Audio
Online distribution only — preview files must be 1m30–2min max. For full masters & vinyl pressing, use the pricing tool. Distribution online uniquement — les fichiers preview doivent faire 1m30 à 2min max. Pour les masters complets & le pressage vinyle, utilisez le pricing tool.

MP3 ou WAV. Les fichiers seront convertis en MP3 320kbps automatiquement.

{{ currentLang === 'en' ? 'Some tracks are missing titles.' : 'Certaines pistes n\'ont pas de titre.' }} {{ currentLang === 'en' ? 'Drop a label image above to auto-fill titles via vision analysis, or edit them manually in the tracklist.' : 'Deposez une image de label ci-dessus pour remplir les titres automatiquement, ou editez-les manuellement dans la tracklist.' }}

Name your files = name your tracks. The filename becomes the track title. Prefix with the vinyl position so tracks sort automatically.

A1 - Ghosts Of Massilia.wav
A2 - Haunted Hill.wav
B1 - 99 Sand Attack.wav
Auto-sorted by position Titles filled from filenames Without prefix → manual order confirmation

VA tip: use A1 - Artist Name - Title.wav to auto-fill artist names.

Nommez vos fichiers = nommez vos pistes. Le nom du fichier devient le titre. Prefixez avec la position vinyle pour un tri automatique.

A1 - Ghosts Of Massilia.wav
A2 - Haunted Hill.wav
B1 - 99 Sand Attack.wav
Tri automatique par position Titres remplis depuis les noms Sans prefixe → confirmation manuelle de l'ordre

Compil : utilisez A1 - Nom Artiste - Titre.wav pour remplir les artistes automatiquement.

Drop MP3/WAV files
or click to browse
{{ currentLang === 'en' ? 'Tip: prefix files with vinyl position (A1, B1...)' : 'Astuce : prefixez vos fichiers avec la position vinyle (A1, B1...)' }}
Tracklist *
{{ currentLang === 'en' ? 'Track titles come from your filenames — edit them here as they should appear on the site' : 'Les titres viennent de vos noms de fichiers — editez-les ici tels qu\'ils doivent apparaitre sur le site' }}
{{ track.format }} {{ track.metadata.sizeFormatted }} {{ track.metadata.durationFormatted }}
No tracks yet
{{ s.label }}: {{ s.count }} track{{ s.count > 1 ? 's' : '' }} — {{ s.duration }}
Total: {{ sideSummary.total }}

No track positions detected in filenames. Files are in drop order. Please verify the order matches your tracklist — use the drag handles to reorder if needed.

Aucune position de piste detectee dans les noms de fichiers. L'ordre correspond a celui du depot. Verifiez que l'ordre correspond a votre tracklist — utilisez les poignees pour reorganiser si besoin.

{{ currentLang === 'en' ? 'Track order confirmed' : 'Ordre des pistes confirme' }}
{{ audioTracks.filter(t => t.file || t.serverUrl).length }} track(s) ready Total: {{ formatTotalSize(audioTracks) }}
{{ currentLang === 'en' ? `${audioTracks.length} track(s) ready - Drop MP3/WAV files to match` : `${audioTracks.length} track(s) prets - Deposez les fichiers MP3/WAV` }}
{{ audioTracks.filter(t => t.file || t.serverUrl).length }}/{{ audioTracks.length }} {{ currentLang === 'en' ? 'files matched' : 'fichiers associes' }} Total: {{ formatTotalSize(audioTracks) }}
5 {{ t('termsConditions') }}
{{ currentLang === 'en' ? 'One or more preview files exceed 3 minutes. Online distribution previews must be 1m30–2min max. Please shorten or use the pricing tool for full masters.' : 'Un ou plusieurs fichiers de preview dépassent 3 minutes. Les previews pour la distribution en ligne doivent faire 1m30–2min max. Raccourcissez ou utilisez l\'outil de tarification pour les masters complets.' }}
{{ currentLang === 'en' ? 'Cannot submit — file(s) too long' : 'Soumission bloquée — fichier(s) trop long(s)' }}
  • {{ currentLang === 'en' ? 'Track' : 'Piste' }} {{ t.position }} — {{ t.title }} ({{ Math.floor(t.duration/60) }}m{{ String(t.duration%60).padStart(2,'0') }}s)
{{ currentLang === 'en' ? 'Online distribution previews must be cuts of 1m30–2min from the original tracks. For full WAV/AIFF masters going to vinyl pressing, use the pricing tool at ' : 'Les previews pour la distribution en ligne doivent être des cuts de 1m30–2min des tracks originaux. Pour les masters WAV/AIFF complets pour pressage vinyle, utilisez l\'outil de pricing sur ' }} /pricing.
{{ t('tracklistCheckWarning') }}
{{ currentLang === 'en' ? 'Missing required fields:' : 'Champs requis manquants :' }}
{{ currentLang === 'en' ? 'Please accept all terms and conditions to submit' : 'Veuillez accepter toutes les conditions pour soumettre' }}
{{ uploadStatusText }}
YOYAKU
LABEL

Sign in to submit your release

Sign in with Google

Only for YOYAKU team accounts

or
{{ authMessage }}
New label? Create a label account Already have an account? Sign in