Naar de hoofdinhoud
SubtitleMatrix

Tweetalige ondertitels splitsen

Tekst en stijlEen tweetalig bestand in twee sporen splitsen
Of plak ondertiteltekst

Opties

Een tweetalig bestand bevat normaal twee schriftsystemen — Latijns boven Chinees, Japans boven Koreaans — en dat is wat de standaard leest: de letters van elke regel bepalen bij welk bestand ze horen, en de taal die het eerst in het bestand voorkomt wordt het eerste bestand. Het is geen gok naar betekenis, alleen naar schrift, dus het verwisselt nooit welke kant welke is zodra het de eerste regel heeft gezien. Wat het niet kan, is twee talen onderscheiden die hetzelfde alfabet delen. Een Engels bestand tegen een Spaans, of een Russisch tegen een Oekraïens, leest als één schriftsysteem — en zo ook een gewoon eentalig bestand waarvan de lange regels naar een tweede rij zijn omgebroken, wat het gangbare geval is en de reden dat deze lezing bewust voorzichtig is. Wanneer elke regel van elk blok als hetzelfde schriftsysteem leest, komt er niets uit: het bestand gaat ongewijzigd door en de run wordt gemeld als zonder wijziging. Dat is het signaal om in plaats daarvan de regelpositie te kiezen. Regelpositie kiezen maakt dat de regel voor elk blok: de eerste regel van elk blok gaat naar het eerste bestand en de rest naar het tweede. Dat past bij een bestand waarvan de twee talen altijd op dezelfde regels staan, en het is de enige manier om een paar te splitsen dat hetzelfde alfabet deelt — maar bij een bestand waar de volgorde wisselt, verdeelt het de verkeerde regels, en anders dan de standaard zegt het niet dat het dat heeft gedaan.

In welke beeldsnelheid de tijden worden geteld. Op de formaatpagina’s is dit wat MicroDVD nodig heeft, want het slaat tijden op als framenummers. Op de beeldsnelheidspagina’s is het de snelheid waartegen het bestand getimed is — de versie waarvoor de ondertitels gemaakt zijn — en het tweede vak op de pagina neemt de snelheid van de video die je gaat gebruiken. 23,976, 24, 25, 29,97, 30, 50, 59,94 en 60 zijn de gebruikelijke. Een verkeerde waarde verschuift de hele tijdlijn, en op de beeldsnelheidspagina’s verschuift ze die met een verhouding in plaats van met een vast bedrag.

Deze pagina neemt één tweetalig ondertitelbestand en splitst het in twee bestanden, één per taal, verpakt in een zip. Elk blok wordt gelezen en elke regel wordt aan een taal toegewezen op grond van het schrift waarin hij is geschreven: Chinees, Japans, Koreaans of een ander schrift gaat naar het ene bestand, Latijnse tekst naar het andere. De taal die het eerst in het bestand voorkomt, wordt het eerste bestand in de zip, en het tweede de tweede.

De bestandsnamen komen uit de naam van het invoerbestand, met een toevoeging voor het tweede. `film.srt` wordt `film.srt` en `film.cjk.srt`, zodat je in één oogopslag ziet welke de oorspronkelijke is. De bloknummers van het bronbestand blijven per bestand bewaard, ook waar ze gaten vertonen: een blok waarin alleen de tweede taal stond, laat in het eerste bestand een gat achter in plaats van de nummering te laten doorlopen. Dat is met opzet, want de nummers zijn een verwijzing naar het bronbestand en hernummeren zou die verwijzing breken.

Er is een geval waarin de pagina niets kan doen, en dat is niet zeldzaam. Wanneer beide talen hetzelfde schrift gebruiken — twee talen die allebei Latijns schrijven, of twee die allebei Chinees schrijven — kan de pagina aan de tekst niet zien welke taal welke is. Hetzelfde geldt voor een bestand waarin de twee talen altijd op vaste regels staan, want dan is de positie de enige aanwijzing. In die gevallen levert de standaardinstelling niets op, en moet je de optie kiezen die op regelpositie splitst in plaats van op schrift.

De invoer wordt als één bestand gelezen en de twee uitvoerbestanden worden samen als zip gedownload, want een browser blokkeert meerdere downloads uit één klik. De negen formaten die met blokken en tijden werken kunnen worden gesplitst — SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON en CSV — plus MicroDVD, omdat daar maar één framerate per bestand nodig is. LRC en platte tekst hebben geen blokken om te splitsen en vallen af. Alles gebeurt in je browser en er wordt niets geüpload.

Voorbeelden

Een bestand met Engels en Chinees per blok

Invoer

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:05,000 --> 00:00:07,000
How are you?
你好吗?

Uitvoer

First file (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


Second file (film.cjk.srt):
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
你好吗?

Elk blok heeft een Engelse regel en een Chinese regel, en de pagina maakt twee bestanden: één met alleen de Engelse regels en één met alleen de Chinese. De bloknummers en tijden komen in beide bestanden overeen met het bronbestand, dus de twee uitvoerbestanden kunnen op tijd tegen elkaar worden gelegd. De zip bevat beide, en de download is één beweging in plaats van twee die de browser zou blokkeren.

Twee Latijnse talen: geen onderscheid

Invoer

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:05,000 --> 00:00:07,000
(敲门声)

3
00:00:09,000 --> 00:00:11,000
See you soon.
再见。

Uitvoer

First file (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

3
00:00:09,000 --> 00:00:11,000
See you soon.


Second file (film.cjk.srt):
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
(敲门声)

3
00:00:09,000 --> 00:00:11,000
再见。

Engels en Nederlands gebruiken hetzelfde schrift, dus aan de tekens is niet te zien welke taal welke is; de standaardinstelling levert hier geen bruikbare splitsing op. Dat is geen fout maar een grens van de methode: schrift is een betrouwbaar signaal tussen Chinees en Engels en een onbruikbaar signaal tussen Engels en Nederlands. Voor dit geval kies je de optie die op regelpositie splitst, waarbij de eerste regel altijd de eerste taal is en de tweede altijd de tweede, wat een afspraak is in plaats van een taalkundige analyse.

Een bestand waarin één blok maar één taal heeft

Invoer

1
00:00:01,000 --> 00:00:03,000
Good morning.
Buenos días.

2
00:00:05,000 --> 00:00:07,000
How are you?
¿Cómo estás?

Uitvoer

With the split set to line position (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


With the split set to line position (film.latin.srt):
1
00:00:01,000 --> 00:00:03,000
Buenos días.

2
00:00:05,000 --> 00:00:07,000
¿Cómo estás?

Het tweede blok bevat alleen een Engelse regel, dus het komt niet in het Chinese bestand terecht en de nummering daar vertoont een gat: 1, dan 3. Dat is de bedoelde uitkomst, want de bloknummers verwijzen naar het bronbestand en hernummeren zou die verwijzing breken. Leg je de twee uitvoerbestanden op tijd naast elkaar, dan zie je meteen dat het tweede blok maar in één taal bestond.

Veelgestelde vragen

Hoe bepaalt de pagina welke regel bij welke taal hoort?

Door naar het schrift van de tekens te kijken. Regels die Chinese, Japanse of Koreaanse tekens bevatten gaan naar het ene bestand, regels in Latijns schrift naar het andere. Dat werkt goed voor de gebruikelijke combinatie van een Oost-Aziatische en een West-Europese taal, omdat de twee schriften niet op elkaar lijken. Het werkt niet voor twee talen in hetzelfde schrift: Engels en Nederlands zijn aan de tekens niet te onderscheiden, en dan is de optie die op regelpositie splitst de juiste keuze.

Wat gebeurt er wanneer beide talen hetzelfde schrift gebruiken?

De standaardinstelling levert dan geen bruikbare splitsing op, omdat alle regels naar hetzelfde bestand gaan. Dat is geen fout die je moet repareren maar een grens van wat aan de tekst te zien is. Kies in dat geval de optie die op regelpositie splitst, waarbij de eerste regel van elk blok als de eerste taal geldt en de tweede als de tweede. Dat is een vaste afspraak: de uitkomst klopt zolang je bronbestand die volgorde aanhoudt.

Waarom zitten de twee bestanden in een zip in plaats van als twee downloads?

Omdat browsers meerdere downloads uit één klik blokkeren. De pagina maakt de twee bestanden en verpakt ze samen, zodat je één bestand downloadt dat je daarna uitpakt. De namen binnen de zip zijn afgeleid van het invoerbestand, met een toevoeging voor de tweede taal, zodat je na het uitpakken meteen ziet welke welke is en ze niet per ongeluk verwisselt.

Blijven de bloknummers in de twee uitvoerbestanden gelijk aan het bronbestand?

Ja, inclusief gaten. Een blok dat maar in één taal bestond, laat in het andere bestand een ontbrekend nummer achter in plaats van de nummering te laten doorlopen. Dat is met opzet: de nummers verwijzen naar het bronbestand, en hernummeren zou die verwijzing breken wanneer je later iets in het origineel wilt opzoeken. De tijden blijven ook gelijk, zodat de twee bestanden op tijd tegen elkaar kunnen worden gelegd.

Welke formaten kunnen in twee talen worden gesplitst?

SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON en CSV, plus MicroDVD. Die laatste kan meedoen omdat de splitsing binnen één bestand gebeurt en er dus maar één framerate in het spel is. LRC en platte tekst vallen af: LRC heeft geen blokken met begin- en eindtijden in de gebruikelijke zin, en platte tekst heeft helemaal geen tijden, dus er is niets om als blok te splitsen. De uitvoer van de twee bestanden staat in hetzelfde formaat als de invoer.

Wordt mijn tweetalige ondertitel geüpload wanneer ik hem splits?

Nee. Het bestand wordt in je browser gelezen, in twee delen gesplitst en daar als zip klaargezet. Er gaat geen inhoud naar een server, ook niet bij een groot bestand. Je kunt de pagina met een verbroken verbinding blijven gebruiken zodra ze geladen is, en de enige netwerkactiviteit is het ophalen van de pagina zelf. Dat geldt voor beide uitvoerbestanden, ook wanneer je ze daarna nog een keer door een andere pagina haalt.

Gerelateerde hulpmiddelen