x 
Inloggen
A- A A+

Info-velden voor meerdere uitvoertalen

door Wim Nelis, Emmeloord, 17-11-2009


PRO-GEN kent de mogelijkheid om de uitvoertaal te kiezen, zodat bijvoorbeeld een parenteel net zo makkelijk in het Nederlands als in het Engels kan worden gemaakt. Maar de keuze van de taal geldt alleen voor de door PRO-GEN gegenereerde tekst, niet voor de tekst die opgeslagen is in het PRO-GEN-bestand. Dus als een andere uitvoertaal wordt gekozen, zal de inhoud van bijvoorbeeld de informatievelden niet worden vertaald. Op deze manier ontstaat een uitvoer in meerdere talen, hetgeen vaak een probleem is. Dit probleem kan vermeden worden door informatievelden niet in de uitvoer op te nemen.

Met versie 4.0 van programma EvaVE (een afkorting van EVAlueer Vtx Expressie) is een andere aanpak mogelijk. In een informatieveld, dat wil zeggen een veld met de naam "Info" of "Tekst", kan worden aangegeven dat een deel alleen in de Nederlandstalige uitvoer dient voor te komen, een ander deel alleen in Engelstalige uitvoer, enzovoorts. Door zelf al de vertalingen in de informatievelden op te nemen, kan dus een uitgebreidere uitvoer gemaakt worden voor (verre) familieleden in het buitenland.



VTX expressie

Opmerking:    Dit hoofdstukje is bedoeld voor de technisch geïnteresseerde lezer, voor het gebruik is lezing van dit hoofdstukje niet nodig.

Het eerste idee was om een VTX-expressie te gebruiken om een stukje tekst alleen in een bepaalde uitvoertaal te aan te maken. Dat zou dus met een oudere versie van EvaVE moeten kunnen. Als EvaVE geïnstalleerd is, zou de volgende tekst in een informatieveld het gewenste resultaat moeten leveren:

#IF$(LANGUAGE$=”NL”,”Een stukje tekst.”)!

Tussen "#" en "!" staat een VTX-expressie, die een stukje tekst oplevert indien de uitvoertaal Nederlands is, te weten de drie woorden "Een stukje tekst.". Maar, door een beperking in PRO-GEN, verschijnt de bovenstaande tekst ongewijzigd in de uitvoer als een andere uitvoertaal dan NL gekozen is.

De reden is gelegen in het gebruik van de VTX-functie EVAL$. Als de tekst die aan EVAL$ is doorgegeven geen VTX-functie is, dan is het resultaat een lege tekst. EvaVE dient de originele tekst tussen "#" en "!", inclusief de scheiders, te laten staan als het niet herkend wordt als een VTX-expressie: de tekens "#" en "!" staan dan blijkbaar in de tekst zonder dat daar een VTX-expressie tussen staat. Dus als functie EVAL$ een lege tekst als resultaat oplevert, zal EvaVE de tekst niet veranderen.
In het bovenstaande voorbeeld is het resultaat van de VTX-functie IF$ een lege tekst als de uitvoertaal anders is dan NL. Dat is de gewenste uitvoer, want in geval van een andere taal dient van deze IF$ niets over te blijven.
Het probleem is dat EVAL$ geen onderscheid maakt tussen een fout (de tekst is geen (correcte) VTX-expressie) en een correcte VTX-expressie die een lege tekst als resultaat oplevert, waardoor EvaVE dat onderscheid ook niet kan maken. Dus de bovenstaande VTX-expressie kan helaas niet gebruikt worden om tekst afhankelijk van de uitvoertaal al dan niet uit te voeren.


Taalscheiders

Hulpprogramma EvaVE is uitgebreid met de mogelijkheid om aan te geven dat bepaalde stukken alleen in de uitvoer mag voorkomen bij een bepaalde uitvoertaal. De notatie is ontleend aan XML. Als een informatieveld het fragment

‹nl›Een stukje Nederlandse tekst.‹/nl›‹gb›A short piece of english text.‹/gb›

bevat, dan zal bij Nederlandstalige en bij Engelstalige uitvoer een stukje van het informatieveld worden overgenomen. De tekst geeft duidelijk aan welk deel. Van dit fragment blijft dus niets over in geval van Duitstalige uitvoer.

Voor de beschrijving van het gebruik zijn definities nodig van de verschillende soorten brokjes in een stuk tekst. In die tekst worden speciale symbolen opgenomen, die het begin en het einde van een stukje tekst in een bepaalde taal aangeven. Dat zijn het taalbeginsymbool, bijvoorbeeld ‹nl›, en het taaleindesymbool, bijvoorbeeld ‹/nl›. De letters nl in de voorbeelden van de taalsymbolen zijn de taalaanduiding. Een stel taalscheiders is een taalbeginsymbool en de eerstvolgende bijbehorende taaleindesymbool. De tekst tussen een stel taalscheiders noem ik een taalfragment.

Voor het gebruik van deze nieuwe functie in EvaVE gelden de volgende regels:
●    de taalaanduiding is altijd met kleine letters;
●    toegestane taalaanduidingen zijn d, f, fr, gb, gro, na, nl, pl en sa, dus de waarden die de VTX-expressie LCASE$(LANGUAGE$) kan opleveren;
●    een taalfragment bevat geen taalbeginsymbool of een taaleindesymbool, of anders gezegd, twee taalfragmenten (veelal met een verschillende taalaanduiding) mogen niet overlappen;
●    in een taalfragment mogen VTX-expressies, tussen # en !, worden opgenomen.

Tekst die niet tussen een stel taalscheiders staat wordt altijd in de uitvoer opgenomen, ongeacht de uitvoertaal. Installatie van de nieuwe versie van EvaVE zal dus geen verandering van de uitvoer tot gevolg hebben, totdat taalscheiders zijn aangebracht in informatievelden.


PRO-GEN-velden

Na installatie van EvaVE versie 4.0 zullen taalscheiders in de volgende velden in een persoonsblad worden herkend:
̵    Geboorte info
̵    Geboorte tekst
̵    Doop info
̵    Doop tekst
̵    Overlijden info
̵    Overlijden tekst
̵    Crematie info
̵    Crematie tekst
̵    Begrafenis info
̵    Begrafenis tekst
̵    Persoon info
̵    Persoon klad
̵    Adres info

Tevens worden taalscheiders in de volgende velden in een relatieblad worden herkend:
̵    Samenwonen info
̵    Samenwonen tekst
̵    Ondertrouw info
̵    Ondertrouw tekst
̵    Wettelijk huwelijk info
̵    Wettelijk huwelijk tekst
̵    Kerkelijk huwelijk info
̵    Kerkelijk huwelijk tekst
̵    Scheiding info
̵    Scheiding tekst
̵    Relatie info
̵    Relatie klad


Beperkingen

In VTX wordt een regelovergang ("Enter") op een speciale manier behandeld. Het is voor de meeste VTX-functies niet zichtbaar (de uitzonderingen zijn de functies INFO$ en INFOLEN). Om de regelovergangen correct te behandelen vervangt EvaVE elke regelovergang door het teken met code 1, in VTX-termen door CHR$(1). Achteraf wordt elke teken met code 1 vervangen door een regelovergang. De beperking is dat in de originele tekst geen tekens met code 1 mogen voorkomen, want ze zullen vervangen worden door regelovergangen.

De maximale lengte van een informatieveld is ruim 16.000 tekens, maar de praktische bovengrens van de lengte is vaak ongeveer 11.000 tekens. Als een stuk tekst in twee talen opgenomen wordt in een informatieveld, zal de maximum lengte van de tekst dalen naar 5.000 a 6.000 tekens. Voor sommige PRO-GEN-gebruikers zal dit een serieuze beperking opleveren.

Als in veld "Geboorte tekst" een stuk tekst in het Engels en de vertaling daarvan in het Duits is opgenomen, zal de gehele tekst onderdrukt worden in geval de uitvoertaal Nederlands is. Aangezien al eerder in het uitvoerprogramma bemerkt is dat het betreffende veld niet leeg is, zal in de uitvoer dan wel een tekst gaan voorkomen als "(brontekst: )". De uitbreiding EvaVE zal alle tekst in het informatieveld onderdrukken, met als resultaat een leeg citaat.


Ideeën die het niet gehaald hebben

Er is geen verstekwaarde die bepaalt of tekst die niet tussen een stel taalscheiders staat al dan niet in de uitvoer moet worden opgenomen. Een mogelijke verstekwaarde is de programmataal van PRO-GEN, maar deze waarde kan niet bepaald worden in een VTX-programma.

Andere velden in het PRO-GEN-bestand zijn een stuk moelijker om "af te vangen". Zo is het veld "beroep" een goede kandidaat om ook afhankelijk te worden van de uitvoertaal. Dit veld wordt echter in veel programmatuur al gebruikt. Al deze programmatuur zal aangepast moeten worden, om de taalafhankelijke uitvoer in alle gevallen goed te laten werken.


Installatie

Het hulpprogramma heet evave40 en is verkrijgbaar op de webstek van de PRO-GEN Gebruikersgroep. Na installatie is er weinig van terug te vinden: er zijn zelfs geen uitbreidingen op menu’s die bij deze uitbreiding horen. Het werkt uitsluitend op de informatie die staat in de Tekst- en Infovelden, en grijpt in bij de tekstuitvoer van een parenteel, genealogie, kwartierstaat of stamreeks.

Dit hulpprogramma is getest met PRO-GEN versie 3.0b-p17 en werkt naar verwachting met alle versies vanaf 3.0b-p0. Dit programma is niet getest met PRO-GEN versie 3.0a of ouder.