Multi-Language Workflows - Content Management
Multi-Language Workflows
Multiple Caption Tracks
Each entry supports multiple caption tracks — one asset per language per entry. The player displays a language selector when multiple tracks exist:
# Add English caption
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" \
-d "captionAsset[objectType]=KalturaCaptionAsset" \
-d "captionAsset[label]=English" \
-d "captionAsset[language]=English" \
-d "captionAsset[format]=1" \
-d "captionAsset[isDefault]=1"
# Add Spanish caption
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" \
-d "captionAsset[objectType]=KalturaCaptionAsset" \
-d "captionAsset[label]=Spanish" \
-d "captionAsset[language]=Spanish" \
-d "captionAsset[format]=1"
Translation via REACH
Three translation modes:
- From audio: REACH transcribes audio directly in the target language
- From existing captions: REACH translates an existing caption track to a new language
- Caption-then-translate: Order captioning first, then chain a translation task. When the caption task completes, REACH auto-triggers the translation task.
Translation tasks reference the source caption via the task's sourceLanguage and target via catalogItemId.
Managing Language Variants
List all caption tracks for an entry and switch defaults:
# List all tracks
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[objectType]=KalturaAssetFilter" \
-d "filter[entryIdEqual]=$KALTURA_ENTRY_ID" \
-d "filter[statusEqual]=2"
# Switch default to Spanish
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/setAsDefault" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "captionAssetId=$SPANISH_CAPTION_ID"
Multi-Language File Parsing
Upload a single DFXP file containing multiple language tracks with language="Multilingual":
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" \
-d "captionAsset[objectType]=KalturaCaptionAsset" \
-d "captionAsset[language]=Multilingual" \
-d "captionAsset[format]=2"
The server auto-splits the DFXP into per-language caption assets. Each language track becomes a separate KalturaCaptionAsset.
Live Translation
Real-time translated subtitles during live streams via REACH:
- serviceFeature:
11(LIVE_CAPTION) - Provides real-time ASR with optional simultaneous translation
- Caption data delivered via the live stream's caption track