Blogg – Rensa i xliff-filers taggar

De flesta facköversättare jobbar sannolikt med någon form av xliff-filer.

Det betyder naturligtvis inte att originalet är i det formatet. Word, Excel, InDesign, FrameMaker eller varför inte allas favorithatobjekt PDF. Bekymren med alla är mer eller mindre stora; råkar de vara större än annars orsakas det i många fall av att antalet taggar kontra ord går över en svårdefinierbar gräns, som ändå kanske kan beskrivas med ”det är inte roligt längre”.

Det här inlägget är det första i en serie som syftar till att du ska kunna ta en xliff-fil – som ditt verktyg har tillverkat åt dig av vad nu originalet än kan tänkas vara – till en tvåspaltig Word-fil med originaltext och översatt text där alla taggar har försvunnit och (i den mån det går) ersatts av fetstilt, kursiv och normal text, eller kanske till och med understruken länktext, eller vad du nu än föredrar.

Det den stressade och kvalitetssäkrande facköversättaren helst av allt vill slippa se är något i stil med

både före och efter översättningen, men går det inte att påverka redan före råöversättningen vore det fint att kunna få läsa det ovanstående på formen

när det är dags att korrekturläsa. (En gång i tiden ansågs det korrekt att skriva ut och läsa alla korrektur på papper, och även om det nog är tämligen vanligt bland skönlitterära översättare vågar jag spekulera i att de flesta facköversättare numera har gått över till att läsa på skärm. Proceduren som jag tänker beskriva i dag och i ett par andra artiklar bekymrar sig inte om vilket.)

För ögonblicket förutsätter att du har lyckats få in den text du har översatt i ditt (xliff-baserade) översättningsverktyg i två spalter i Microsoft Word, och att den text du då har fått fram ser ut ungefär i den här stilen:

Det enklaste alternativet för korrekturläsning är att göra sig kvitt alla taggar,

vilket inte kräver något annat än att man söker och ersätter med följande uttryck i Word; notera att jag har bockat för ”Använd mönstermatchning”:

Alla är nog vana vid att söka i Word, men att söka med mönstermatchning är förmodligen inte lika vanligt. Som du ser har jag skrivit ”\<(*)\>”. Tecknet < har en specialbetydelse när man söker med mönstermatchning. Jag vill att det ska ha den vanliga betydelsen, dvs. betyda tecknet ”<”, och måste därför ha tecknet ”\” före. Samma sak gäller tecknet ”>”. Resten av uttrycket, ”(*)”, betyder ”matcha ett obegränsat antal tecken” (och spara i variabeln ”\1″, se nedan). Eftersom det står mellan \< och \> betyder hela uttrycket ”matcha < följt av ett obegränsat antal tecken följt av >”. Det är precis så en tagg ser ut, ”<entagg>”, och eftersom jag ersätter med ingenting tas alla taggar bort.

Det är tämligen elegant, men om vi kikar närmare på vad som faktiskt finns i taggarna ovan ser vi på rad 2 och 3 att ”italic=on” och ”bold=on” förekommer. Det är tydligt att den som har skrivit ursprungstexten vill att den ska vara kursiv respektive fet där. Hur förmår vi Word att göra texten fet och kursiv?

Naturligtvis med ett annat mönstermatchningsuttryck. Om vi tar och väljer den feta texten ser vi att vi skulle vilja ersätta

<cf font=”Ubuntu” asiantextfont=”Ubuntu” bold=”on” complexscriptsbold=”on” size=”9″ complexscriptssize=”9″>Samhällstjänster (funktioner riktade mot medborgarna och operativa aktiviteter) </cf>

med

Samhällstjänster (funktioner riktade mot medborgarna och operativa aktiviteter).

Det mönstermatchningsuttryck som hittar hela uttrycket i Word är

\<cf (*)bold=”on”(*)\>(*)\</cf\>

Den första förekomsten av (*) hittar all text fram till bold=”on”, den andra texten fram till första ”>” och den tredje fångar upp allt som står mellan cf-taggarna, nämligen ”Samhällstjänster … aktiviteter)”. Vi vill ersätta hela uttrycket med vad som finns i den tredje förekomsten och göra alltihop fetstilt. Den tredje förekomsten går att referera till med ”\3”. Words sök- och ersätt-ruta behöver alltså se ut så här:

På samma vis skulle vi nu kunna göra den kursiva texten kursiv,

\<cf (*)italic=”on”(*)\>(*)\</cf\>

men byta ut Teckensnitt:Fet mot Teckensnitt:Kursiv ovan. Här ser den som har programmeringserfarenhet att det är upplagt att skriva en funktion för att åstadkomma detta och andra saker. Till det återkommer jag en annan vecka. Med ovanstående två sök och ersätt-funktioner och den första jag använde ovan (bara <(*)\> ersatt med ingenting) får vi slutligen fram den mer lättlästa texten

Nästa gång återkommer jag med ett utbyggbart system för att hantera (i princip) vilka taggar som helst inifrån Word. Det kommer att kräva att vi ger oss in i Visual Basic for Applications, den skriptmiljö som Word och andra av Microsofts program erbjuder och som ger tillgång till en ofantlig massa möjligheter.

Roger Sjölander