Uber needed to distribute localized in-app rider and driver education videos in 60+ languages quickly.
Editors were considerably backlogged by caption translations, and ops teams were backlogged by turn-around
time for local teams to produce SRT spreadsheets. The process was taking weeks per video.
Using a simple front-end webform for ops memebers to log into and enter subtitle translations, this
system parsed input into a custom JSON format and output a master SRT subtitle file for the video editor. The file
was then piped into a Dataclay Templater backend to bulk render videos, and, using some After Effects ExtendScript magic,
SRT subtitles were automatically injected into each video at the proper timestamp and (x,y) position.
As a bonus, the templater also targeted app design files to localize in-app text.
This turned a 3 week localization pipeline into a 1 day job.
Decentralized translation and un-opinionated framework
[
{
"ID" : "2-arabic",
"screencast-asset" : "_localeScreencasts/_cfr_converted/pauseScreencast_english.mp4",
"subtitleVideo-asset" : "_subProxies/videoAsset_vertical_0-english.mp4",
"sub-1" : "هنا نصائح المحترفين للسائقين!",
"sub-2" : "لمنحك مزيد من التحكم عند العمل، استخدم مفتاح الحالة الجديدة للاتصال وقطع الاتصال.",
"sub-3" : "انقر المفتاح لبدء تلقي الطلبات.",
"sub-4" : "سترى تحول شريط التبديل إلى اللون الأزرق عند أنت متصل.",
"sub-5" : "لنقل أنك تراجعت لتنفيذ المشاوير لبرهة والغاز في سيارتك على وشك النفاد.",
"sub-6" : "يظهر المفتاح الآن في العديد من الأماكن في جميع أنحاء الدولة التطبيق.",
"sub-7" : "يمكنك الذهاب إلى قائمة الرحلات ونقر الحالة التحويل إلى إيقاف تلاقي طلبات رحلات جديدة قطع الاتصال بعد استكمال رحلتك الحالية.",
"sub-8" : "ستعرف أنك لست متصلاً لأن شريط التبديل سيصبح أسود.",
"sub-9" : "حين تكون مستعدًا للعودة مجددًا للقيادة، انقر الزر مجددًا للاتصال مرة أخرى وأنت مستعد لاستلام طلبات المشاوير مرة أخرى.",
"sub-10" : "قيادة ممتعة!"
},
{
"ID" : "2-japanese",
"screencast-asset" : "_localeScreencasts/_cfr_converted/pauseScreencast_english.mp4",
"subtitleVideo-asset" : "_subProxies/videoAsset_vertical_0-english.mp4",
"sub-1" : "ドライバーのプロのヒントです!",
"sub-2" : "業務中より多くの管理権限を与えるために、お使いください オンライン、オフラインにする新しいステータススイッチ。",
"sub-3" : "スイッチをタップして配車リクエストの受け取りを開始してください。",
"sub-4" : "このとき、スイッチバーが青色になります オンラインです。",
"sub-5" : "例えばあなたが連続乗車をしているとします しばらくしてガソリンが不足してきます。",
"sub-6" : "スイッチは現在、全体の数ヵ所に表示されています アプリ。",
"sub-7" : "ご乗車のメニューに移動し、ステータスをタップ スイッチで新しいご乗車の配車リクエストを停止して 現在のご乗車が完了した後にオフラインにします。",
"sub-8" : "オフラインであることがわかります。なぜならスイッチ バーが黒色になります。",
"sub-9" : "業務に戻る準備が整ったら、 スイッチをタップしてオンラインに戻ると、準備が整います 再びご乗車の配車リクエストを受け取るために。",
"sub-10" : "運転を楽しんでください!"
},
{
"ID" : "2-danish",
"screencast-asset" : "_localeScreencasts/_cfr_converted/pauseScreencast_english.mp4",
"subtitleVideo-asset" : "_subProxies/videoAsset_vertical_0-english.mp4",
"sub-1" : "Her er et godt tip til chauffører!",
"sub-2" : "For at give dig mere kontrol, når du arbejder, skal du bruge den nye statusindikator til at vise, om du er on- eller offline.",
"sub-3" : "Tryk på indikatoren for at begynde at modtage turbestillinger.",
"sub-4" : "Du vil se din indikator blive blå, når du er online.",
"sub-5" : "Lad os sige, at du tager imod flere ture i træk over et stykke tid, og løber tør for benzin.",
"sub-6" : "Indikatoren vil nu vise sig på flere steder i appen.",
"sub-7" : "Du kan gå ind i turmenuen, trykke på statusindikatoren for at stoppe med at modtage nye turbestillinger og gå offline, efter din nuværende tur er fuldendt.",
"sub-8" : "Du vil vide, at du er offline, fordi din indikator vil blive sort.",
"sub-9" : "Når du er klar til at komme ud på vejene igen slår du indikatoren til online, og så er du klar til at modtage turbestillinger igen.",
"sub-10" : "God fornøjelse med at køre!"
},
{
"ID" : "2-german",
"screencast-asset" : "_localeScreencasts/_cfr_converted/pauseScreencast_english.mp4",
"subtitleVideo-asset" : "_subProxies/videoAsset_vertical_0-english.mp4",
"sub-1" : "Hier ein Profi-Tipp für Fahrer!",
"sub-2" : "Wenn du noch mehr Kontrolle über deine Arbeitseinteilung willst probier den neuen Statusschalter, mit dem du offline und online gehen kannst.",
"sub-3" : "Tippe auf den Schalter, um Fahrtbestellungen zu erhalten.",
"sub-4" : "Der Statusschalter wird blau, wenn du online bist.",
"sub-5" : "Sagen wir mal, du machst den schon den ganzen Tag eine Fahrt nach der anderen und dir geht langsam das Benzin aus.",
"sub-6" : "Den Schalter findest du jetzt in verschiedenen Bereichen der App.",
"sub-7" : "Du kannst im Fahrtmenü den Statusschalter antippen, um neue Fahrtbestellungen zu deaktivieren und nach Abschluss deiner angefangenen Fahrt offline zu gehen.",
"sub-8" : "Der Schalter färbt sich schwarz und zeigt dir so dass du offline bist.",
"sub-9" : "Wenn du wieder weiterfahren willst schalte mit einem Tippen wieder auf „online“, und du erhältst wieder Bestellungen.",
"sub-10" : "Gute Fahrt!"
},
{
"ID" : "2-spanish(spain)",
"screencast-asset" : "_localeScreencasts/_cfr_converted/pauseScreencast_english.mp4",
"subtitleVideo-asset" : "_subProxies/videoAsset_vertical_0-english.mp4",
"sub-1" : "¡Te damos un consejo profesional de conductor!",
"sub-2" : "Para que tengas más control al trabajar, usa el nuevo indicador de estado para conectarte y desconectarte.",
"sub-3" : "Toca el botón para comenzar a recibir pedidos.",
"sub-4" : "Verás la barra del botón ponerse azul cuando estás conectado.",
"sub-5" : "Digamos que estás tomando viajes consecutivos durante un rato y te estás quedando sin gasolina.",
"sub-6" : "El botón ahora aparece en varios lugares en todo el app.",
"sub-7" : "Puedes ir al menú de viaje, tocar el botón de estado y dejarás de recibir pedidos de viaje, y podrás desconectarte después de terminar tu viaje actual.",
"sub-8" : "Sabrás que estás desconectado cuando tu barra del botón se pone de color negro.",
"sub-9" : "Cuando estés listo para regresar a las calles toca el botón para conectarte y estarás listo para recibir pedidos de viaje nuevamente.",
"sub-10" : "¡Felices viajes!"
},
]
Automated replacement of in-situ assets and srt subtitles at correct (x,y) position for in-app video education content