Back to Blog
multilingual video project structureworkflow-opshow-to

Edit Once, Dub Many: A Project Structure That Scales

DubLab TeamSeptember 30, 2026 13 min read

When you start with one language, your video project feels simple. A folder, some assets, one export. Then you add a second language. Then five. By the time you are managing 20 dubbed versions of 50 videos, a chaotic folder structure starts to hurt. Files get duplicated, old edits get lost, and someone re-renders video 37 in German when it was done last week. The fix is not working harder. It is organizing once, early.

A good project structure saves you hours per month and makes delegation possible. This is how to build one that works from your first video to your fiftieth.

Project Structure for Multilingual Videos

The Core Tree

Build a folder tree where each video and each language has a fixed home:

projects/
  video-001-product-launch/
    source/
      master.edl
      raw-footage/
    deliverables/
      video-001-en-master.mp4
      video-001-en-subs.srt
      audio/
        video-001-en.wav
        video-001-de.wav
        video-001-fr.wav
    scripts/
      video-001-en-script.txt
      video-001-de-script.txt
      video-001-fr-script.txt
    translations/
      video-001-translation-log.xlsx
    metadata/
      video-001-titles-descriptions.csv
      video-001-thumbnails/

This tree does three things. First, it separates master edits (source/) from delivery (deliverables/), so you never confuse a render-in-progress with a final export. Second, it groups by project so all assets for video 001 live in one place. Third, it uses consistent file naming so a script or person looking for French audio for video 001 knows exactly where to find it.

The separation between source and deliverables is critical. Your source folder contains the project files (.pproj, .fcpxml, .drp) and raw media, which are large and project-specific. Your deliverables folder contains the final renders: mp4 files, audio stems, subtitle files, and anything you plan to upload or share. This boundary prevents accidents where someone shares a work-in-progress or overwrites a final delivery with a test export.

Naming Rules

File names are the glue that holds your structure together. Use this consistent pattern for every asset:

{project-id}-{language-code}-{content-type}.{ext}

Examples:

  • video-001-en-master.mp4 (English master export, full video)
  • video-001-fr-audio.wav (French dubbed audio, ready to mix)
  • video-001-de-subs.srt (German subtitle file)
  • video-001-es-script.txt (Spanish script for dubbing)
  • video-001-ja-titles.csv (Japanese metadata for titles and descriptions)

For assets reused across all languages (music, graphics, effects), place them in a shared folder:

projects/
  shared-assets/
    music/
      background-bed-commercial.mp3
      transition-whoosh.wav
    graphics/
      lower-third-template.psd
      company-logo-final.png
    fonts/
      opensans-regular.ttf

Language codes should use ISO 639-1 standard (en, de, fr, es, ja, pt, ar) so your scripts can parse them reliably. Never use informal codes like "brit" or "eur-de". Machine reading matters more than human intuition here. If you need regional variants (Brazilian Portuguese versus European Portuguese), use ISO 639-1 with a hyphen: pt-br and pt-pt. The consistency pays off when you write a script to batch process files: if naming is predictable, you can find "all German audio files" with a single grep command and trust the result.

Workflow: From Master to Delivery

You edit the master timeline once in Premiere, Final Cut Pro, or DaVinci Resolve. The master then branches into language-specific exports. Here is the exact workflow, with what to do when something fails.

Step 1: Create the Master Sequence

Open your editor and build the master timeline in the source project file. This includes all cuts, color grading, effects, music, and the original language audio. Place this in source/master.edl or as a Premiere sequence named simply "master". Export once to a clean, uncompressed or lightly compressed master: video-001-master-uncompressed.mov. This master export is your reference. Never edit it. Every language will derive from this reference.

If you make changes to the master timeline, you must re-export this master file and increment the version: video-001-master-v2.mov. This way, anyone working on language exports knows whether they are working from v1 or v2.

Step 2: Obtain and Place Dubbed Audio

You will receive dubbed audio for each language from your voice talent, your translation team, or from a service like DubLab (which can generate synthetic voice dubs in 92+ languages). Audio arrives as a WAV or MP3 file. Place it immediately in deliverables/audio/video-001-{lang}.wav. Do not rename it or move it later. If the audio file is longer or shorter than the original, log the exact duration in translations/video-001-translation-log.xlsx in a "Notes" column. Timing mismatches are the most common failure point here.

Step 3: Create Language-Specific Sequences

Do not save a new project file for each language. Instead, create new sequences or timelines inside the master project file. Name each sequence video-001-en, video-001-de, video-001-fr, and so on.

Start each language sequence by duplicating the master sequence. Then:

  • Swap the audio track for the dubbed audio file (mute or delete the original language).
  • Update subtitles if they exist in a subtitle layer or burn-in text.
  • Adjust any on-screen text that was burned into the video if it needs translation. If on-screen text is in a separate graphics layer, update it there.
  • Preview the full sequence to check for audio sync issues, especially at speech transitions.

Export to deliverables/video-001-{lang}-master.mp4 with the same codec and resolution as the master.

Step 4: Quality Check Before Delivery

Before archiving the export, play through the first 30 seconds, the middle, and the last 30 seconds in a media player. Listen for audio dropouts, sync issues, or obvious mistakes. If the audio is visibly out of sync (lips move but audio lags), you have a timing issue: check the dubbed audio duration against the script duration, and ask the voice talent or dubbing service to re-render.

Log the export date and QA status in your translation log. If an issue is found and fixed, update the filename to v2: video-001-de-master-v2.mp4.

For a software like CapCut or mobile editors that lack multi-sequence support, export the master to a clean MP4, then re-import and re-edit for each language. It is slower but keeps your folder clean and prevents accidental corruption of the master project file.

Metadata and Versioning

Each video needs one metadata file tracking titles, descriptions, and thumbnails per language. This file centralizes platform-specific information:

video-001-titles-descriptions.csv

id,language,title,description,keywords
001,en,"Product Launch 2026","Introducing our fastest model yet...","product, launch, demo"
001,de,"Produktstart 2026","Wir stellen unser schnellstes Modell vor...","Produkt, Start"

For scripts, version them explicitly. Translations change, time codes shift, and idioms get refined. Keep a translation log:

video-001-translation-log.xlsx

Date,Language,Translator,Word_Count,Duration,Notes,Status
2026-10-22,en,internal,850,2:15,"Master script, all cuts final",approved
2026-10-24,de,freelancer-a,920,2:18,"Expanded welcome, added idiom",needs-review
2026-10-25,de,freelancer-b,920,2:18,"Idiom adjusted per feedback",approved
2026-10-25,fr,freelancer-c,875,2:12,"Tight translation, no expansion",approved

This log prevents re-translating the same script twice and shows who is responsible if a dub sounds off. If a freelancer reports that a script is already translated, point them to this log. It also becomes your archive: in six months, when you need to know why the German dub is slightly longer than the English, the translation log tells you it was an expansion decision, not an error.

Team Collaboration and Permissions

When you work alone, folder structure is a convenience. When you work with translators, voice talent, editors, and contractors, it becomes essential.

Set clear permissions based on roles. Your translator should have read-only access to scripts and metadata but cannot modify source or deliverables. Your editor can read the source project files and write to deliverables. Your contractor who handles uploads gets read-only access to deliverables.

Use a shared folder on Google Drive, Dropbox, or OneDrive. Structure it like your local folder. This way, a freelancer in another time zone can see what work is in progress and what is waiting for them, without a message from you.

Include a ROLES.md file at the root:

# Roles and Permissions

| Role | Folders | Permissions |
|---|---|---|
| Translator | scripts/, translations/, metadata/ | Read source scripts, write translations, read metadata |
| Voice Talent | scripts/, translations/ | Read scripts and translations only |
| Editor | source/, deliverables/ | Read source, write and publish deliverables |
| Admin | All folders | Full access |

Do not move files. Do not rename folders. Create a new folder for your language, but follow the naming rule: {video-id}-{language-code}-{content-type}.

If a contractor is unsure where to put a file, the README + ROLES file answers the question. This prevents parallel folder structures that are incompatible with your backup and automation scripts.

Common Mistakes and How to Fix Them

Mistake 1: Mixing master edits with language exports

You save language-specific versions of your master project file (e.g., video-001-de.pproj). Then someone updates the master, but your German version now has old edits. You end up re-rendering the same scene twice.

Fix: Never save per-language project files. Save only the master. Create language sequences inside the master project, then export language versions as mp4 files. The project file stays singular; only the exported mp4s multiply.

Mistake 2: Inconsistent audio durations

The English audio is 2:15, but the German audio is 2:22 because the translator added context. You swap the audio into your timeline and the end of the video plays silent while waiting for audio to finish.

Fix: Before swapping audio, measure the duration in your audio editor or media player. If the dubbed audio is significantly longer (over 3 seconds), ask the translator to tighten it, or extend the video with a blank frame at the end. Log every duration discrepancy in your translation log, and if you choose to extend the video, note why.

Mistake 3: Losing thumbnail variations

You create 10 thumbnail variations for the English version. When you export the German version, you use the same thumbnail, which has English text. Viewers in German markets see an English thumbnail.

Fix: Create a metadata/video-001-thumbnails/ folder with language-specific thumbnails: video-001-en-thumb.jpg, video-001-de-thumb.jpg, etc. If you use an online tool like Figma or Canva, keep a live link in your metadata CSV so you can regenerate thumbnails quickly if the design changes.

Mistake 4: Forgotten translations of on-screen text

You translated the script and dubbed the audio but overlooked the title card, the lower-third graphics, and the closing credits. They are still in English, breaking immersion for viewers in other languages.

Fix: During the QA step, create a checklist: script, audio, subtitles, title cards, lower thirds, credits, any overlaid text. Go through each item for each language export. If on-screen text is in a graphics layer, update it before exporting. If it is burned into the video, you may need to re-edit that segment with new graphics.

Scaling: When to Move to Cloud Storage

Once you have 50 videos with 20 languages each, your folder structure on a local drive becomes unwieldy. A three-minute video is 500 MB to 2 GB depending on codec. Fifty videos times 20 languages easily exceeds 100 GB, and you will run out of local disk space.

Start using cloud storage early. A simple approach:

Storage LayerWhat Lives Here
Local diskCurrent project(s) you are actively editing, previous 2-3 videos for reference
Google Drive or DropboxCompleted videos, scripts, translations, metadata CSVs
AWS S3 or Backblaze B2Archived videos, long-term backup, searchable via script

Use a script to sync. A simple bash loop can move deliverables to cloud storage once a video is approved:

for lang in en de fr es ja; do
  aws s3 cp deliverables/video-001-$lang-master.mp4 \
    s3://your-bucket/archive/video-001/$lang/master.mp4
done

DubLab handles cloud storage for you: when you export dubbed videos from the app, they are stored in the cloud, and you can download them in any language or re-order them. This removes the burden of managing your own folder structure for derived videos, though you still need to organize your source files and metadata locally or in a shared drive.

Automation: Scripts to Save Time

Once your naming is consistent, you can write simple scripts to automate repetitive tasks. This is where structure pays real dividends.

A bash script to find all German audio files:

find projects -name "*-de-audio.*" -type f

A script to verify all expected languages are delivered for a video:

#!/bin/bash
VIDEO_ID=$1
LANGUAGES="en de fr es ja pt ar"
for lang in $LANGUAGES; do
  if [ ! -f "projects/$VIDEO_ID/deliverables/$VIDEO_ID-$lang-master.mp4" ]; then
    echo "Missing: $VIDEO_ID-$lang-master.mp4"
  fi
done

A script to list all videos with their translation status:

for video in projects/video-*/translations/*-translation-log.xlsx; do
  echo "$video:"
  tail -1 "$video"  # Print the latest status line
done

These scripts work only if naming is predictable. Chaos in naming forces you back to manual searching. Order enables automation.

You can build more sophisticated tools later: a Python script that reads your translation logs and auto-generates a dashboard, a Node.js tool that uploads completed videos to YouTube with the correct metadata, or a sync script that backs up your deliverables to S3 every night. Start simple: one bash script that solves one pain point, then add more as needed.

What to Do Next

Start with one video. Resist the temptation to optimize before you have a baseline.

  1. Create the folder tree from the template above. Customize folder names only if you have a good reason (for example, if you work in a language other than English, translate the folder names but keep the structure identical).

  2. Write a short README at the root level. Paste the example from this guide, customize the language codes for your projects, and save it as README.md in the projects root. When you hire a contractor or bring on a team member, they read this file first. Include a link to this article if they need help understanding the reasoning.

  3. Name your files consistently from the start. Use the {project-id}-{language-code}-{content-type}.{ext} pattern without exception. Consistency pays off the moment you write your first script to batch process files.

  4. Log every script, translation, and export in a spreadsheet. You do not need a database or a tool; a simple CSV in your translations folder is enough. Every row saves you an hour of searching later. Include columns for date, language, duration, translator name, and status.

  5. Set up cloud storage early. Even if you have only three videos, start syncing your deliverables folder to Google Drive or an S3 bucket. By the time you have 20 videos, local storage will be tight, and you will wish you had started the backup habit earlier.

  6. Test the workflow with three videos and five languages. You will discover edge cases (audio timing, on-screen text, unusual language codes, storage paths). Fix these now while the overhead is small. Once you have 50 videos, mistakes are expensive.

  7. Document variations if they occur. If you use different editors (Premiere for some videos, DaVinci for others) or different audio codecs, note this in the README or in a "EXCEPTIONS.md" file. Consistency is the goal, but documented exceptions are better than silent chaos.

The first video takes three hours to set up, including writing the README and ROLES file. The second video takes one hour. By the fifth, you are done in 30 minutes. The system pays for itself after three videos. Build it now and never think about file management again.

As you scale to 50 videos and more, this structure keeps you sane. Delegation becomes possible because instructions are clear. Automation becomes possible because naming is predictable. And you reclaim the hours you would have spent searching for files.


🚀 Start Dubbing Your Videos Today

DubLab uses AI to translate your videos into 92+ languages in minutes.

📱 Download for iOS

🌐 Try Free at dublab.app