Skip to main content
View as Markdown

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:

  1. From audio: REACH transcribes audio directly in the target language
  2. From existing captions: REACH translates an existing caption track to a new language
  3. 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