HOWTO: maken van een nieuw bestandsfilter

Deze HOWTO beschrijft het maken van een nieuw filter om te gebruiken met OmegaT.

Het maken van een nieuw filter vereist geen programmeer kennis, in Java noch enige andere taal, maar u zou wel een meer dan basale kennis van het werken met computers in het algemeen moeten hebben.

De beschrijving hieronder gaat er van uit dat de bestandsindeling waarvoor u een nieuw filter wilt maken een XML-indeling is. Voor dit voorbeeld gaan we er van uit dat de OmegaT-versie wordt verondersteld 1.8.0 update 01 Beta te zijn, en een nieuw filter moet worden gemaakt voor de Abiword bestandsindeling, gebaseerd op het bestaande XLIFF-filter.
Volg de koppeling vanaf de downloadpagina van de OmegaT website om de OmegaT-broncode te krijgen. Pak het archief uit in een toepasselijke map.

1. Download en installeer Apache Ant

Apache Ant is nodig om de broncode opnieuw te compileren nadat die door u is aangepast. Andere programma's, zoals de Java Development Kit (JDK) kunnen ook voor dit doel worden gebruikt, maar Ant is waarschijnlijk de eenvoudigste om te gebruiken. Download het vanaf ant.apache.org.

2. Kopieer een bestaand filter

Selecteer een bestaand filter dat als basis zal dienen voor uw nieuwe filter. In dit voorbeeld is het XLIFF-filter geselecteerd. Dit filter staat in de map op:

..\OmegaT_1.8.0_01_Beta_Source\src\org\omegat\filters3\xml\xliff

Maak een kopie van deze map met een teoepasselijke naam, bijv. in dit geval:

..\OmegaT_1.8.0_01_Beta_Source\src\org\omegat\filters3\xml\abiword

In die map, hernoem de bestanden, d.i.:

XLIFFDialect.java naar AbiwordDialect.java
XLIFFFilter.java naar AbiwordFilter.java

Open AbiwordDialect.java en AbiwordFilter.java na elkaar in een tekstverwerker, en vervang alle items van XLIFF, xliff, etc. door Abiword, abiword etc.

3. Identificeer de tag(s) voor het alinea-niveau voor uw bestandsindeling

Kijk naar een voorbeeld in de tekstverwerker om te zien wat de tags voor de alinea's zouden moeten zijn. Bijvoorbeeld: in een Abiword-bestand (zoals in dit voorbeeld), zou een alinea er als volgt uit kunnen zien:

<p style="Normaal">Blah blah blah blah blah. Blah blah blah blah blah. Blah blah blah blah blah. Blah blah <c props="font-weight:bold">bold</c> blah <c props="font-style:italic">italics</c>. Blah blah blah.</p>

Dit zegt u dat de tag voor een alinea in Abiword <p> is.

4. Definieer de tag(s) voor de alinea

Vervang in MyFilterDialect.java, in de lijst met tags voor alinea-niveaus, de bestaande tag(s) voor alinea's door die welke u hebt geídentificeerd voor uw filter:

{
public AbiwordDialect()
{
defineParagraphTags(new String[]
{
"p", // NOI18N
});

defineOutOfTurnTags(new String[]

5. Definieer niet-te-vertalen tag(s)

U moet misschien niet-te-vertalen tag(s) definiëren om uw filter te kunnen laten werken. In Abiword moet, bijvoorbeeld, de tag <data> worden gedefiniëerd als niet-te-vertalen:

defineIntactTags(new String[]
{
"data", // NOI18N
});
}
}

6. Voeg uw filter toe aan de filtermaster

Open het bestand

..\OmegaT_1.8.0_01_Beta_Source\src\org\omegat\filters2\master\FilterMaster.java

met een tekstverwerker en zoek naar de verwijzingen voor het XLIFF-filter. Voeg overeenkomende verwijzingen voor uw filter in, bijv.:

import org.omegat.filters3.xml.xliff.XLIFFFilter;
import org.omegat.filters3.xml.abiword.AbiwordFilter;

res.addFilter(new OneFilter(new XLIFFFilter(), false));
res.addFilter(new OneFilter(new AbiwordFilter(), false));

7. Voer uw filter in Bundle.properties in

Open het bestand

..\OmegaT_1.8.0_01_Beta_Source\src\org\omegat\Bundle.properties

in een tekstverwerker. Zoek naar het item van het XLIFF-filter, en voeg een overeenkomende verwijzing voor uw nieuwe filter in:

# XLIFFFilter.java

XLIFF_FILTER_NAME=XLIFF files

# AbiwordFilter.java

ABIWORD_FILTER_NAME=Abiword files

(We gaan er hier van uit dat u de Engelse versie van OmegaT gebruikt; vermeld het item in "uw" taalversie van het bestand Bundle.properties als dit niet het geval is.)

8. Compileer de code

Open een venster voor de opdrachtregel (console, DOS-venster). Wijzig de map naar de hoofdmap in de OmegaT borncode (de map waarin het bestand build.xml staat), bijv.

cd C:\Mijn Documenten\MijnOmegat\OmegaT_1.8.0_01_Beta_Source

Voer, vanuit deze map, Apache Ant uit door de Ant executable in te voeren met het volleeidge pad, bijv.:

C:\Program Files\apache-ant-1.7.0-bin\apache-ant-1.7.0\bin\ant

Als de code succesvol compileert,zult u het bericht "BUILD SUCCESSFUL" zien. Indien niet zullen foutberichten worden weergegeven die (hopelijk) een idee geven over waar het probleem zich bevindt.

9. OmegaT starten

Als uw code succesvol is gecompileerd, is de gecompileerde OmegaT geplaatst in:

OmegaT_1.8.0_01_Beta_Source\dist

Wijzig, nog steeds in uw venster van de opdrachtergel, naar die map, bijv. met:

cd C:\Mijn Documenten\MijnOmegat\OmegaT_1.8.0_01_Beta_Source\dist

en start OmegaT met:

java -jar OmegaT.jar

10. Controleer of het filter aanwezig is in OmegaT

Selecteer Opties > Bestandsfilters > Standaardinstellingen om te zien of uw filter in de lijst van filters in OmegaT staat.

11. Controleer of uw filter werkt

maak een nieuw project met een voorbeeldbestand in de gewenste indeling.

Terug naar documentatie
D] © Marc Prior, 2009