Bir SRT dosyası nelerden oluşur?
SRT dosyası, numaralandırılmış blokların listesidir. Her blok üç bölümden oluşur: bir numara, saat:dakika:saniye,milisaniye biçiminde yazılmış bir başlangıç ve bitiş zamanı ve bir ya da iki satır metin. Boş bir satır bloğu bitirir.
329
00:24:22,584 --> 00:24:23,784
absence ...
Video oynatıcı yalnızca zamanlara bakar. Metni başlangıç zamanından bitiş zamanına kadar gösterir, geri kalan her şeyi yok sayar. Bu yüzden bir çeviri kusursuz okunabilir ama yine de kötü oynatılabilir: kelimeler doğrudur, ama yanlış zamanlara bağlanmıştır.
Çevirinin zamanlamayı bozduğu üç yol
Bu örnekler, üç sohbet modelinin 1.200 satırlık, 85 dakikalık aynı SRT dosyasını tek yanıtta İspanyolcaya çevirdiği dört uzun işlik testimizden alındı.
1. Bir satır öncekinin içine katılır. Orijinalde 328. satırda "...take advantage of Lady Bracknell's temporary", 329. satırda "absence ..." vardı. Bir model cümlenin tamamını 328. satıra yazdı ve 329. satırı sildi. Ekranda "absence" artık bir saniye erken görünüyor ve 329. satırın zaman aralığı boş kalıyor.
2. Atlanan bir satırdan sonraki her şey yeniden numaralandırılır. Aynı model dosyanın geri kalanını boşluk bırakmadan 329'dan itibaren numaralandırdı. 357. satırdaki ikinci birleştirmeden sonra 1.200 satırdan 870'i orijinaldekinden farklı bir numara taşıyordu. Dosya yine de oynatılır. Ama siz ya da editörünüz çeviriyi orijinalle satır numarasına göre karşılaştırırsanız, 329'dan sonraki her satır yanlış satırla eşleşir.
3. Bir zaman kodundaki tek bir rakam değişir. Başka bir model, aslında 00:54:45,839 --> 00:54:51,039 olan bir satır için 00:54:55,839 --> 00:54:51,039 yazdı. Satır artık başlamadan bitiyor. Oynatıcıya göre ya atlanır, ya göz açıp kapayıncaya kadar görünür, ya da dosyanın yüklenmemesine yol açar.
Bütün dosyanın kayması, yani her satırın ilk satırdan itibaren aynı miktarda kayık olması farklı bir sorundur: altyazı videonun başka bir kurgusu ya da kare hızı için hazırlanmıştır. Buna çeviri neden olmaz.
2 dakikalık kontrol
Orijinal dosyayı ve çeviriyi herhangi bir metin düzenleyicide yan yana açın.
- Son satır. İki dosyanın da sonuna gidin. Son satır numarası ile son zaman kodu birebir aynı olmalı. Çeviri 1,198'de, orijinal 1,200'de bitiyorsa iki satır birleştirilmiş ya da atlanmış demektir.
- Ortadan üç satır. Orijinalden, yaklaşık dörtte bir, yarı ve dörtte üç noktalarından üç zaman kodu alıp çeviride arayın. Her birinin numarası iki dosyada da aynı olmalı. Numaraların ilk ayrıştığı yer, bir satırın kaybolduğu yerdir.
- Imkânsız zamanlar. Bitiş zamanı başlangıç zamanından önce olan satır var mı, bakın. Uzun bir dosyada küçük bir betik ya da altyazı düzenleyicisinin hata denetimi bunları anında bulur.
- Son on dakika. Çeviriyi oynatıcınıza yükleyip sona yakın bir yere atlayın. Satırlar orada zamanında görünüyorsa dosya büyük olasılıkla sorunsuzdur.
Bilgisayarınızda Python varsa bu kısa betik, herhangi bir dosya çiftinde 1'den 3'e kadar olan kontrolleri çalıştırır (python3 srtcheck.py original.srt translated.srt). Testimizdeki üç çeviride, yukarıda anlatılan hataların tam olarak aynısını bildirdi.
import re, sys
def cues(path):
text = open(path, encoding="utf-8-sig").read().replace("\r", "")
return re.findall(r"^(\d+)\n(\d\d:\d\d:\d\d,\d{3}) --> (\d\d:\d\d:\d\d,\d{3})", text, re.M)
a, b = cues(sys.argv[1]), cues(sys.argv[2])
print(f"lines: {len(a)} original, {len(b)} translated")
print(f"last: {a[-1]} vs {b[-1]}")
times = {(s, e): n for n, s, e in a}
renumbered = sum(1 for n, s, e in b if (s, e) in times and times[(s, e)] != n)
changed = [n for n, s, e in b if (s, e) not in times]
broken = [n for n, s, e in b if e <= s]
missing = [n for n, s, e in a if (s, e) not in {(s2, e2) for _, s2, e2 in b}]
print(f"renumbered: {renumbered}, changed time codes: {changed[:10]}, "
f"end before start: {broken[:10]}, original lines missing: {missing[:10]}")
Çeviri dört kontrolü de geçiyorsa kullanabilirsiniz. Birinden kalırsa, dosyayı elle düzeltmek yerine zamanlamayı koruyan bir araçla yeniden çevirmek genellikle daha hızlıdır.
Satır uzunluğu ayrı bir kontrol konusu
İspanyolca, Almanca veya Fransızca çeviriler çoğu zaman İngilizceden daha uzun çıkar. Netflix'in İngilizce (ABD) stil kılavuzu, satır başına 42 karaktere ve altyazı başına iki satıra izin veriyor. Testimizde, 42 karakterden uzun satır içeren çevrilmiş satırların payı, modele bağlı olarak 1,200 satırın 32 ila 447'si arasında değişti. Kendi aracımızda bu sayı 105 oldu; yani hangi aracı kullanırsanız kullanın bu kontrole değer: uzun satırları okumak zordur ama zamanlamayı bozmazlar.
Bu sorun nasıl önlenir?
Yukarıdaki hatalar, modelden çeviriyle birlikte numaraları ve zamanları da yeniden yazması istendiği için ortaya çıkıyor. Bunları modelin elinden alın. Altyazı çeviricimiz .srt veya .vtt dosyanızı okur, yalnızca metni en fazla 60 satırlık bloklar hâlinde gönderir, eksik dönen her satırı yeniden ister ve tüm numaraları ile zamanları orijinalinizden aynen kopyalar. Aynı 1,200 satırlık test dosyasında 1,200 satırın tamamı, aynı numaralar ve zaman kodlarıyla geri geldi.
Her işin ilk bölümü ücretsizdir ve hesap gerektirmez. Bütün bir film ya da sezon, en fazla 30 dosyada 5,000 satıra kadar, $5 tutarında tek seferlik ödemedir. Popüler hedef dillerin kendi sayfaları var: SRT'den İspanyolcaya, Arapçaya ve Farsçaya.
Yöntem ve veriler
Kaynaklar
- SubRip (SRT file format) — Wikipedia
- English (USA) Timed Text Style Guide — Netflix Partner Help Center
- Timed Text Style Guide: General Requirements — Netflix Partner Help Center