Ga naar inhoud
  • 0

Meertalige user interface maken?


Wim Janin

Vraag

Dag Menno,

op dotfmp in Berlijn gaf je even inzicht in een leuk concept: via een centrale vertaaltabel heb je ervoor gezorgd dat elk label dat je op een layout zet, eigenlijk uit die vertaaltabel komt.

Nu vroeg ik me af:

  • hoe zet je die referenties concreet op een layout?
  • en hoe zorg je ervoor dat die labels zichtbaar blijven, als je in Find mode geraakt?

Op vraag 1 denk ik in deze richting:

  • als veld: naah, dan heb je vanuit elke tabel een link nodig naar die vertaaltabel, en moet je heel erg zorgen dat niemand er ooit kan in schrijven
  • als tekst label, met <<tabel::somefield>> referentie: ca va, maar die ben je kwijt als je in Find modus gaat, juist?
  • als button bar met één element erin? Zou kunnen, en dan kan je zelfs een CF aanroepen, die één groot centraal JSON object bevraagt & een label vertaalt. Zo?
  • nog iets anders? Hmmm...

Benieuwd naar jouw oplossing!

Link naar reactie

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Ben zo vrij om even mijn oplossing te delen 😀

De truc zoals ik het toepaste is uit de tabel alle vertalingen van de gekozen taal bij aanvang in de sessie in een globaal veld te laden met x herhalingen. Je neemt dan overal ernaar verwijzen, waarbij je steeds het herhalingsnummertje gebruikt. Dit gaat razendsnel.

Werkt ook in zoekmodus, dialogen, calculaties, etc. Omdat het een global is hoef je niet te malen om de relaties. Enkel en alleen om de herhalingnummers.

In de vertaal tabel is elke record dus een taal-element, met een vertalingenveld met x-herhalingen, waarin de vertalingen zijn ondergebracht. Elke herhaling is een taal.

De referentie heeft dus de vorm: <<lg::tr[3]>>  (hou het zo kort mogelijk!)

Een nieuwe taal laden is even de globaal vullen met één van de herhalingen van het vertalingenveld.

Het indexnummer (herhalingsnummer) is hier natuurlijk erg belangrijk. Het verwijderen van een record uit de tabel is funest. Inderdaad beheer en redactie van de vertalingen heel goed afschermen.

Link naar reactie
  • 0
7 hours ago, Wim Janin said:
  • hoe zet je die referenties concreet op een layout?
  • en hoe zorg je ervoor dat die labels zichtbaar blijven, als je in Find mode geraakt?

De labels staan in een aparte tabel met global-fields, voor elk label is er een apart veld met de naam van het label. De tabel heet bij mij simpelweg "Labels", maar in de relatie-grafiek noem ik deze "L" omdat die naam lekker kort is :-).

Bij het opstarten vul ik met een scriptje en de ingesteld taal alle global-fields met de vertaling van het label. Omdat deze velden globaal zijn blijven ze hun waarde tonen in elke modus van het bestand. Een relatie naar de table-occurrence "L" is hier nooit nodig, omdat alle velden globals zijn. Je kan de table-occurrece "L" dus in ieder bestand van het database-systeem opnemen en de (vertaalde) labels zo overal gebruiken.

Op mijn site https://www.filemakertips.nl het ik in 2015 een artikel geplaatst over dit onderwerp: https://www.filemakertips.nl/meertalig-systeem/ met een voorbeeldbestand om te downloaden

Link naar reactie
  • 0

Het is erg leuk en leerzaam om de benaderingen te vergelijken.  Wat betreft mijn benadering:

  • ik heb één tabel met waarin alle taal-elementen worden opgenomen. Een record omvat alle vertalingen. je hebt daardoor ook het redactionele overzicht. 
  • dus niet alleen veldnamen: alles waar een stukje vertaald tekst moet worden getoond.
  • voor toevoegen van nieuwe elementen hoef je geen velden aan te maken, maar een nieuw record!
  • groot nadeel: er is geen betekenisvolle referentie als je taal-elelement gebruikt: alles hangt aan de nummers. 
  • ook is het mogelijk om [labels] in de taal-elementen mee te nemen, zodat je ook volzinnen met ingevulde data kunt presenteren (wat relevant kan zijn in bijv. dialogue boxes)

 

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...