· kaynak dev.to (home feed)
İsveç'te bir geliştirici, SVT, NRK ve DR yayın oynatıcılarına çift altyazı ekleyen ücretsiz bir tarayıcı eklentisi yayınladı
İsveç'te bir geliştirici, SVT Play, UR, NRK TV ve DR TV'deki her orijinal altyazı satırını, dil öğrenenler için eşzamanlı bir çeviriyle eşleştiren ücretsiz bir tarayıcı eklentisi olan Nordic Dual Subs'u geliştirdi.

İsveç'te yaşayan bir geliştirici, İskandinav kamu yayıncılarının yayın oynatıcılarına iki altyazı satırı bindiren ücretsiz bir tarayıcı eklentisi olan Nordic Dual Subs'u yayınladı: orijinal İsveççe, Norveççe veya Danca altyazının yanında izleyicinin dilinde eşzamanlı bir çeviri. Henüz İsveççe öğrenmekte olan geliştirici, dev.to'daki yazısında projenin kişisel bir boşluğu doldurduğunu belirtiyor. SVT, UR, NRK ve DR neredeyse her programda orijinal dilde altyazı sunan büyük ücretsiz kütüphanelere sahip, ancak oynatıcıları aynı anda yalnızca bir iz gösteriyor ve bir çeviri izi bulunmuyor. Language Reactor gibi araçlar bunu Netflix ve YouTube için çözmüştü, ancak İskandinav yayıncılar için değil.
Nasıl çalışıyor
Yazıya göre eklenti SVT Play, SVT Barn, UR Play, NRK TV ve DR TV'yi destekliyor. Her yayıncının kendi oynatıcısının yüklediği altyazı dosyalarını — WebVTT ve ilgili biçimleri — çekiyor, bunları arka planda bir worker'da ayrıştırıyor ve sitenin oynatıcısının içine, tam ekran modunda da çalışacak şekilde bir katman çiziyor; çakışmayı önlemek için sitenin kendi altyazıları gizleniyor. Beş site de tek sayfalık uygulama olduğu için eklenti, hangi programın oynatıldığını anlamak üzere URL değişikliklerini takip ediyor.
Çeviriler Arapça, Farsça, Somalice, Tigrinya, Ukraynaca ve Çince dahil 29 dili kapsıyor ve sağdan sola yazılan yazı sistemleri destekleniyor. Bir kelimeye tıklamak videoyu duraklatıyor ve kelimenin anlamını ile sözlükteki halini gösteriyor — yazıdaki örnek, 'sprang' kelimesinin 'springa' olarak çözümlenmesi — ve açık kaynak Folkets lexikon sözlüğünden bir İngilizce açıklama sunuyor. Kelimeler bulundukları cümleyle birlikte kaydedilebiliyor, basit aralıklı tekrarlarla gözden geçirilebiliyor veya CSV olarak Anki'ye aktarılabiliyor; klavye kısayolları ise önceki ya da sonraki satırı tekrar oynatıyor veya bir satırı yavaşça yineliyor. Görüntünün içine gömülü altyazılı filmlerde eklenti, bunları WebAssembly'ye derlenmiş Tesseract ile yerel olarak okuyup çeviriyor.
Çalışan faturası olmayan bir çeviri önbelleği
En alışılmadık kısım ise geliştiricinin hiçbir maliyetle çalıştırmak istediği çeviri hattı. Her tarayıcı, satırları kendi IP adresinden Google'ın ücretsiz web uç noktası üzerinden çeviriyor ve satır-çeviri çiftini küçük bir backend'e gönderiyor. Bir satır, iki farklı ağdaki kurulumlar özdeş bir çeviri gönderdiğinde ancak o zaman güvenilir hale geliyor: Google aynı girdi için aynı çıktıyı verdiği için bağımsız istemciler aynı sonuca yakınsıyor ve tek bir kurulum kötü bir çeviri enjekte edemiyor. Güvenilen satırlar daha sonra satırın karmasıyla indekslenerek herkese sunuluyor; böylece backend, altyazı metnini zaten elinde tutmayan kimseye ifşa etmiyor. Google bir kullanıcıyı hız sınırına takıldığında, sınırlı bir DeepL yedeği oynatma konumuna yakın satırları karşılıyor.
Ücretsiz katman altyapısı
Backend, Cloudflare'ın ücretsiz katmanında çalışıyor: bir Worker ve paylaşılan çeviri önbelleğini tutan bir D1 SQLite veritabanı, HMAC oturum belirteçleriyle tanımlanan anonim kurulumlar, kaydedilen kelimeleri eşitlemek için isteğe bağlı Google oturum açma ve olası bir gelecek ücretli plan için hazır bekleyen Stripe. Bir GitHub Action her sabah D1 ve Workers kullanımını kontrol ediyor ve bir şey günlük sınırlara yaklaşmadan önce geliştiriciye e-posta gönderiyor. Projeden çıkan derslerden biri: uçtan uca testler sessizce üretim veritabanına binlerce satır yazıyormuş. Artık süreç içi bir sahte API'ye karşı çalışıyorlar ve bir şey üretime erişmeye çalışırsa testi başarısız kılan bir koruma var.
Üç mağaza, tek kod tabanı
Aynı kaynak, Chrome/Edge ve Firefox paketlerini üretiyor. Firefox derlemesi Manifest V3 service worker'ı arka plan scriptleriyle değiştiriyor, OCR Firefox'un DOM'a sahip arka plan sayfasında çalışabildiği için offscreen API'sini çıkarıyor ve Firefox'un veri toplama onayını beyan ediyor. Android için Firefox'ta klavye kısayollarının yerini dokunmatik kontroller alıyor. Yayınlama, her mağazanın API'si üzerinden otomatikleştirilmiş; tek istisna şu: Microsoft, bir Edge eklentisinin API ile yayımlanmasına yalnızca ilk sürüm elle çıkarıldıktan sonra izin veriyor.
Bazı sınırlar eklentinin kontrolü dışında: DR TV yalnızca oturum açmış izleyicilere oynatıyor ve bazı programlar yalnızca kendi ülkelerine sınırlandırılmış. İlk kullanıcı e-postası eklentinin DR TV'de çalışmadığını bildirdikten sonra, eklenti artık sessizce başarısız olmak yerine nedeni — gerekli oturum açma veya coğrafi engel — açıklıyor.
Bir yapay zekâ asistanıyla geliştirildi
Geliştirici, projenin bir yapay zekâ kodlama asistanının yoğun yardımıyla geliştirildiğini açıklıyor; asistan kodların ve testlerin büyük bölümünü yazdı, uçtan uca testleri gerçek SVT ve NRK programlarına karşı çalıştırdı ve mağaza evrak işlerinin çoğunu halletti. Neyin geliştirileceğine geliştirici karar verdi, gerçek izleme oturumlarında test etti ve çıktı yanlış olduğunda itiraz etti.
Neden önemli
Çift altyazı sorunu Netflix ve YouTube'ta yıllardır çözülmüş durumdaydı; oysa ücretsiz ve altyazılı kütüphaneleri İsveççe, Norveççe ve Danca için en iyi dalma kaynakları arasında sayılan kamu yayıncıları bu dışında bırakılmıştı. Nordic Dual Subs bu boşluğu beş ana İskandinav yayın hizmeti için kapatıyor. Maliyetsiz çeviri mimarisi diğer ilgi çekici parça: çıktılarına güvenmeden önce bağımsız istemcileri çapraz doğrulamak ve önbelleğe alınan çevirileri içerik karmalarıyla indeksleyerek sunmak, böylece backend altyazı metnini asla yeniden dağıtmıyor. Aynı desen diğer kamu yayıncılarının kütüphanelerine de taşınabilir.
Yazıya göre eklenti lansman döneminde ücretsiz, çift altyazı özelliği ücretsiz kalacak ve hesap gerekmiyor. Chrome sürümü yayında; Android dahil Edge ve Firefox derlemeleri yazının kaleme alındığı sırada mağaza incelemesindeydi.
- #browser-extensions
- #language-learning
- #subtitles
- #cloudflare-workers
- #webvtt