Jump to content
  • 0

Meertalige labels met variabele


martindes

Question

Beste Filemaker ontwikkelaars.

 

Ik wil mijn Filemaker oplossing graag meertalig hebben zonder dat ik daar voor elke taal een aparte lay-out hoef te maken.

 

Ik heb een lay-out coureurs en een lay-out met de labels. Kies ik in de layout van de labels de taal dan werkt het wel. In elke andere lay-out waar ik de variabele toevoeg komt dan de juiste vertaling tevoorschijn.

 

Kies ik de taal in de coureur lay-out dan verspringt de knop in de label lay-out wel op de door mij gekozen taal maar het script werkt dan niet.

 

Kennen jullie deze oplossing voor een tweetalige FM oplossing of hebben jullie ook nog andere opties?

 

http://www.modularfilemaker.org/module/labelmaker-pro-enable-multilingual-field-labels-for-your-filemaker-solution/

Edited by Guest
Link to comment

10 answers to this question

Recommended Posts

  • 0

Hier worden (globale) variabelen gebruikt als veldlabels. Je kan dat op 2 manieren doen:

 

  • De variabele(n) instellen en daarna naar de layout gaan of
  • De variabele(n) instellen en dan de layout verversen.

De layout verversen kan op legio manieren zoals refresh-window, even naar preview en weer terug, een nieuw record aanmaken, naar een ander layout en weer terug etc.

 

Een andere methode is een tabel met alleen globale velden maken (die hoeft dus ook maar één record te hebben). Je geeft die tabel een Table-Occurrence naam van slecht één letter, bijvoorbeeld "T". Je hoeft geen enkele relatie te leggen naar die tabel, omdat de velden allemaal global zijn ;-)

Daarna gebruik je die velden gewoon exact zoals merge-velden overal op je layouts als: <<T::veldnaam>> ipv <<$$LabelNaam>>

 

Je kan nu bij het opstarten van je solution even in een scriptje alle labelvelden instellen met de gewenste taal, daarna kan je het weer "vergeten". Het voordeel van deze methode is dat je niet zo'n idioot grote hoeveelheid $$-variabelen hebt

Link to comment
  • 0

Dank je. Dit is inderdaad en vrij eenvoudige en goedwerkende methode.

 

De andere vraag die er uiteraard op volgt is hoe ik nu ook de velden zelf kan laten wisselen op de gekozen taal. Want uiteraard zoek ik naar een oplossing om de database meertalig te maken zonder dat ik daarvoor aparte lay-outs hoef te maken.

 

Kan je uitleggen hoe ik dat kan aanpakken? Ik zat zelf te denken aan velden met herhalingen. Echter, het is ook belangrijk dat de gebruiker bij het invoeren beide talen moet invoeren wanneer er nieuwe waardes moeten worden ingevoerd.

 

Ik denk zelf aan een oplossing waarbij de gebruiker alleen de waarde ziet in de gekozen taal en dat ik een pop-up kan gebruiken om de gebruiker te forceren om beide talen in te voeren.

Link to comment
  • 0

Je zou kunnen werken met de ‘Hide object when’-optie voor de talen die je niet wilt laten zien. Om te voorkomen dat je voor alle velden deze optie moet opgeven zou je met Slider Controls kunnen werken die je in zijn geheel verbergt. Eventueel kun je creatief mee omgaan door ze niet eens echt te verbergen maar als een soort Tab Control te gebruiken.

Verschillende mogelijkheden, afhankelijk van de wens/ het doel kun je ze toepassen.

Link to comment
  • 0

De andere vraag die er uiteraard op volgt is hoe ik nu ook de velden zelf kan laten wisselen op de gekozen taal. Want uiteraard zoek ik naar een oplossing om de database meertalig te maken zonder dat ik daarvoor aparte lay-outs hoef te maken.

 

Kan je uitleggen hoe ik dat kan aanpakken? Ik zat zelf te denken aan velden met herhalingen. Echter, het is ook belangrijk dat de gebruiker bij het invoeren beide talen moet invoeren wanneer er nieuwe waardes moeten worden ingevoerd.

Ook hier moet je m.i. ook normalisatie toepassen: een nederlandstalig record en een engelstalig record aanmaken. Je komt dan wel weer nieuwe problemen tegen zoals hoe dan snel zoeken enzo ... Ik heb wel een idee, maar daar heb ik nu ff geen tijd voor, ik maak vanavond wel fii een voorbeeldje

Link to comment
  • 0

Zoals ik het doe:

 

a. Een aparte tabel TAAL, waar bij mij 5 records in zitten.

De sleutels zijn NL, DE, FR, EN, en PL.

In de tabel zijn nu 1500 velden aanwezig, genaamd L0001 tm L1500.

 

b. In de tabel USER heb ik dezelfde 1500 veldnamen aangebracht, maar dan van het type Globale velden.

Er is een procedure die deze velden naar Globale velden transporteert, zodra een gebruiker een taal kiest.

Dit zijn de velden die op layouts getoond worden.

Het voordeel van Globale velden, is dat deze onder alle omstandigheden de juiste weergave biedt. Dus ook in de Zoek modus.

Een relatie leggen naar Globale velden is overigens niet nodig. Zodra je naar het tabel::veldnaam verwijst en het is een globaal veld, dan zal hij getoond worden.

 

c. Ik heb nog een derde tabel gemaakt ZOEKTAAL, die erg simpel is.

Het heeft 2 velden.

c1. Labelnaam

c2. Tekst in de taal

Via een procedure moet ik deze tabel af en toe updaten. Elk veld uit de tabel TAAL resulteert in een apart record, met een gevulde labelnaam en tekst in de taal.

Het maken van deze procedure is wel wat lastig, je moet de mogelijkheden kennen om de veldnamen uit te lezen en de juiste loops weten te maken om alle velden goed uitgelezen te krijgen.

Via deze tabel kan ik snel zoeken welk label ik moet gebruiken voor een bepaalde kreet.

 

 

Mijn verwerkingsprocedure:

Eerst zoek ik altijd in de ZOEKTAAL om te ontdekken of een kreet al bestaat en zo ja, welk label ik moet gebruiken.

Heb ik het label, dan laat ik alle scripts en layouts verwijzen naar het juiste label.

Na verloop van tijd ontdek je dat er een paar erg veel worden gebruikt.

Zo is bij mij USER::L0233 gevuld met de tekst "Annuleren"

 

Ik heb een paar keer een extra taal toegevoegd in het systeem.

Via ZOEKTAAL heb ik een vertaalprogrammaatje samengesteld, waar een nieuwe waarde voor de nieuwe taal aan toe te voegen is.

Dit programmaatje stuur ik vervolgens naar een vertaalburo en krijg het gevulde tabelletje weer terug.

Dit moet je dan weer via een procedure in de TAAL tabel toegevoegd zien te krijgen en voila, een nieuwe taal aanwezig in het systeem.

 

 

Een paar pijnpuntjes zijn er nog wel: Checkboxen, Valuelists en Radioboxen.

Ik gebruik vrijwel alleen ON / OFF ingeval dergelijke keuzes. Hoeft niet vertaald te worden.

Maar verder heb ik nog een uitgebreid gerelateerd tabelletje lopen om vaste databasewaarden om te zetten in de juiste taal.

De valuelists zijn hier vervolgens op ingesteld en tonen alleen de tweede waarde in de juiste taal.

Vergt enige extra uitleg om te vertellen hoe dat werkt, maar met enig kunst en vliegwerk werkt het wel.

 

Ook een punt: scriptnamen en layoutnamen.

Deze zijn niet te vertalen en ik hou die dingen dan ook altijd onder een knop.

 

Berichtgeving aan gebruikers is ook zo'n ding.

Mijn App maakt emailberichten, zie voorzien zijn van duidelijke tekst.

Dat is vaak een combinatie van harde tekst en tekst uit velden. Moet dus ook weer via de taal tabellen verwerkt worden.

 

Ik heb het geluk dat mijn programma's sinds deze "generatie" voorzien zijn vanaf de start met de taaltabellen.

Het is consequent doorgevoerd en het werkt perfect.

Achteraf inbouwen wil nog wel eens veel werk opleveren.

 

Nog een aandachtspunt: Zorg er voor dat velden en vooral labels vrij lang zijn.

Wat in het Nederlands een korte kreet is, is in het Duits zomaar twee keer zo lang.

Het valt vaak wel mee, maar soms krijg je onverwachte resultaten.

 

vertalingen.jpg

Link to comment
  • 0
Ik denk zelf aan een oplossing waarbij de gebruiker alleen de waarde ziet in de gekozen taal en dat ik een pop-up kan gebruiken om de gebruiker te forceren om beide talen in te voeren.

Gaat het hier nog over jouw race-database of ben je met nog iets anders bezig? Wat je hier wilt lijkt me namelijk wat onzinnig voor een DB waar je race-geschiedenis in vastlegt. Het zou dus wel zo handig zijn als je even vertelt wat je exacte doel is. Ik zou iets als dit alleen gebruiken in bijvoorbeeld een orderverwerking, een handleidingen generator of iets anders professioneels.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...