Feliratfájlok összehasonlítása WinMerge használatával

Egy olyan programot szeretnék bemutatni, amely két feliratfájl összehasonlítását nagyban meg tudja könnyíteni. A WinMerge természetesen nemcsak feliratok, hanem bármilyen más szövegfájl, sőt mappák összehasonlítására is remekül alkalmas, de most nézzük meg a feliratozási munkákhoz hasznosítható lehetőségeit!

A program ingyenesen letölthető innen, telepítése eléggé magától értetődő. Annyit fűznék csak hozzá, hogy nekem valahogy sikerült úgy feltennem, hogy bizonyos funkciók magyarul, bizonyosak angolul jelennek meg, tehát lehet, hogy a fordítás nem terjed ki mindenre, ha újrakezdeném, maradnék az angolnál. Ehhez igazodva a képernyőmentéseimet és a leírásomat is angol-magyar keveréknyelven láthatjátok, elnézést érte!
Jelenleg a 2.14-es verzió a hivatalosan ajánlott, én ezt használom, tehát a poszt is ezt fogja bemutatni. De már dolgoznak a 3-ason, ami állítólag egész másmilyen és persze hiper-szuper lesz.

A WinMerge ablakának java részén egy kettéosztott főpanel helyezkedik el, itt jelenik meg kétoldalt a két szövegfájlunk, amit össze akarunk hasonlítani. Továbbá baloldalt egy navigációs panelt (Location Pane) láthatunk, ami ad egy színkódos áttekintést a fájlok közötti eltérésekről, és lehetővé teszi, hogy egy kattintással odanavigáljunk mindkét fájlban egy adott eltéréshez.

A program indítása után a Megnyitás gombbal (Fájl menü – Megnyitás, vagy Ctrl+O) megjelenő ablakban jelölhetjük ki a két összehasonlítandó fájlt, és hogy melyik kerüljön a bal és melyik a jobb oldalra. Nézzük meg a Sense8 1×05-ből az általam beküldött és az oldalra kikerült változat közötti különbséget!
winmerge01
Elsőre ijesztő a sok színes csík a navigációs panelen, de ezek nem mind komoly eltérések, mindjárt faragunk belőlük. Ami a színkódokat illeti, egyelőre kétfélével kell törődnünk, a sárgával (ez mutatja az eltéréseket vagy az olyasmiket, aminek nem találja a program a megfelelőjét a másik oldalon) és a szürkével (ez mutatja az “üres részt”, vagyis ahol a másik oldalra lett valami beszúrva). A főpanelen látható, hogy a sárga sötétebb árnyalatával van jelölve az egész sor, ahol van valamilyen eltérés, és ezen belül világosabb sárga háttérrel maga az eltérés.

Ahogy a képen is látható, ha beszúrunk, összevonunk vagy felosztunk táblákat, akkor onnantól a táblák számozása el fog csúszni. Valahol itt kezdődnek a problémák, ha az ember pl. Total Commanderrel hasonlítja össze a két fájlt: kapunk egy csomó olyan eltérést is, ami számunkra nem lényeges.

A leírás a link mögött folytatódik!

Az eltérések között tudunk navigálni a gombsoron található Előző / Következő / Első / Utolsó gombokkal vagy az ezekhez tartozó gyorsbillentyűkkel. Ha egy eltérés ki van jelölve, akkor a jobb egérgombra megjelenő menüben vagy az Olvasztás (jesszusom, ez a Merge akarhat lenni?) menüben átmásolhatjuk a másik oldalra, jobbra vagy balra. Ez nagyon kényelmes tud lenni, de két dologra nagyon oda kell figyelni. Az egyik, hogy a jót másoljuk rá a rosszra és ne fordítva. A másik, hogy az egymás után következő, eltéréseket tartalmazó sorokat a program egy eltérésnek tekinti, tehát egyben másolja. Tehát pl. ha egy táblának az időzítése és a szövege is eltér, akkor mindkettőt át fogja másolni a túloldalra. Ha az időzítés ugyanaz, csak a sorszám és a szöveg tér el, akkor, ha minden igaz, ezek külön-külön másolhatók. Praktikus lenne, hogy soronként lehessen másolni, ezt a funkciót már kérték a felhasználok, de még nem tették bele a fejlesztők.

Figyelem, most kezdődik a varázslat! A WinMerge-nek meg lehet adni úgynevezett sorszűrőket (line filter), azaz olyan szabályokat, amiknek ha egy sor eleget tesz, akkor azt a sort nem vizsgálja, nem tekinti eltérőnek a program. Ezeket a szabályokat úgynevezett reguláris kifejezések formájában lehet megadni, ez programozóknak ismerős lehet, de aki nem az, az se ijedjen meg, mutatom, hogy mit kell írni hova.

winmerge02
Menjünk be ide: Eszközök menü – SzűrőkSorszűrők, és kapcsoljuk be, hogy egyáltalán vizsgálja a sorszűrőket, pipáljuk be, hogy “Enable Line Filters“. Ezek után a listába vegyünk fel egy ilyen elemet (Új gomb):
^([\d,:]+ –> [\d,:]+|\d+)$

Ez magyarra lefordítva ezt jelenti: vedd az olyan sorokat, amik vagy úgy néznek ki, mint egy .srt időkód-sor, vagy csak számokból állnak.

Pipáljuk is be ezt az újonnan felvett sort, ezzel utasítva a programot arra, hogy az ilyen sorokban található eltéréseket ne vegye figyelembe! Okézzuk le az ablakot, és nézzük meg, mi történik!
winmerge02b
A navigációs panel sokat tisztult, a főpanel viszont színesebb lett. Azoknál a tábláknál, amelyek csak a sorszámukban térnek el, bejött egy új szín. Nálam ez halványrózsaszín, nálatok alapértelmezésben valami más lesz. Már nem emlékszem, de nekem túl feltűnő volt, ezért cseréltem le erre. (A színeket egyébként itt lehet állítgatni: Szerkesztés menü – BeállításokSzínek. Itt a “Kihagyott Eltérés” című sor az, aminek megváltoztattam az értékét az alapértelmezettről.)

Tehát a kihagyott eltéréseket csak a főpanelen jelöli színnel, a navigációson nem, ami szuper, mert így ott már kezelhető mennyiségű eltérést látunk. A színkódok alapján valamennyire el lehet igazodni a navigációs panelen. Ami mindkét oldalon sárga, az javítás, áttördelés, esetleg formázás (pl. dőlt). Ami az egyik oldalon szürke, a másikon sárga, az valószínűleg törölt, beszúrt, összevont vagy felbontott tábla lesz.

Ahol egymás után sok eltérés van (akár csak apróbbak, itt egy áttördelés, ott egy formázás), ott előfordulhat, hogy a program “kizökken”, nem tudja követni, hogy melyik tábla melyiknek a megfelelője a másikban, így elcsúsznak a táblák egymástól egy időre, és mindegyiket eltérésként jelöli meg. Itt a Sense8-es példában középtájt láthattok egy blokkot, ahol először az egyik oldal szürke, aztán sok kis sárga eltérés, aztán a másik oldal szürke, az ilyenek tipikusan erre utalnak. Így lehet őket kiszúrni, ezek valójában nem tartalmaznak ilyen sok eltérést. Sajnos kivédeni ezt nem nagyon lehet, talán a WinMerge következő verziója okosabban párosítja majd be az eltéréseket. Egyvalamivel lehet kísérletezni: a SzerkesztésBeállításokÁltalános pont alatt van egy olyan opció, hogy “Mozgatott blokk észlelés bekapcsolása“. Ez máshogy vizsgálja, ha valami az egyik fájlban máshol van, mint a másikban, és így más eredményeket kaphatunk, ami lehet jobb is meg rosszabb is az előzőnél. (Ha ezt kiválasztjátok, bejön egy újabb szín, ami az átmozgatottnak ítélt sorokat jelöli.)

Arra szintén oda kell figyelni, hogy a kihagyott eltérésekből is igazi eltérés lesz, ha egy igazi eltérés áll mellettük. Tehát a példánál maradva, ha egy tábla szövege változik, akkor már az időzítést és a táblaszámot is eltérésként fogja jelezni a program.

Új sorszűrők felvételével és ezek ki-be kapcsolgatásával különböző sortípusokat, keresési mintákat vehetünk ki a vizsgált sorok közül vagy tehetünk oda vissza. Néhány példa:

Ha csak az időzítések és a szöveg eltérését akarjuk vizsgálni, a táblaszámokét nem:
^\d+$
winmerge05
(Itt, a fent leírtaknak megfelelően, ahol az időzítés eltért, ott a táblaszámot is belevette az eltérésbe.)

Ha csak a táblaszámokat és az időzítést akarjuk vizsgálni, és minden mást ki akarunk venni belőle, tehát a szöveg eltérései nem érdekelnek:
^(?!([\d,:]+ –> [\d,:]+$|\d+$))
winmerge03

Ha csak az időzítést akarjuk vizsgálni, a táblaszámokat és mást nem:
^(?!([\d,:]+ –> [\d,:]+$))
winmerge04
(Itt is, ahol az időzítés eltért, ott a táblaszámot is belevette az eltérésbe.)

Ha van még olyan szituáció, ami most nem jutott eszembe, amihez kéne egy sorszűrő, keressetek meg engem vagy egy tisztességes programozót, aki tud reguláris kifejezéseket írni!

Mint látható, vannak a WinMerge-nek szépséghibái, hiányosságai, de így is sokat segíthet a különböző verziójú feliratfájlok összehasonlításában más, nem kimondottan erre a célra írt programokhoz képest. Jó munkát!

Vélemény, hozzászólás?

Post Navigation