Hoe meertalige waardelijsten instellen in FileMaker
Deze techniek verwijst naar FM Starter en FrankCRM, waar deze al is geïmplementeerd.
Er zijn meerdere technieken om een meertalige interface voor uw FileMaker-oplossing te maken. Welke oplossing je ook maakt, je vraagt je misschien af hoe je waardelijsten meertalig maakt? Dit artikel geeft je een route om dat te bereiken.
Om een meertalige waardenlijst te maken, is een generieke meertalige aanpak nodig. Voor de eenvoud houd ik het bij een oplossing zoals gepresenteerd op deze site, waarbij tekstlabels worden bijgehouden in een specifieke tabel met een enkel herhalingsveld waarin de tekstlabels worden opgeslagen. Elke herhaling staat voor een taal.
Meertalige tekstlabels in FileMaker
Een voorbeeld van het beheren en weergeven van meertalige tekstlabels in FileMaker
Tabel voor meertalige teksten
In het bovenstaande voorbeeld heeft de tabel met tekstlabels alle talen. Bij het activeren van een taal worden alle labels van de geselecteerde kolom geladen in de herhalingen van een enkel globaal veld. Hierdoor zijn de tekstlabels overal in de oplossing bruikbaar, zonder dat je relaties hoeft aan te maken.
Een meertalige waardelijst maken
Waardenlijsten kunnen op verschillende manieren worden aangemaakt. Om een meertalige waardenlijst te maken, moeten we één tabel maken voor elke waardenlijst. Het is eenvoudig om een waardenlijst te maken op basis van een bepaald veld. Dus, als je een tabel hebt voor een specifieke waardenlijst, wijs dan gewoon naar een veld van een willekeurige tabel en je hebt alle waarden van dat veld.
In de tabel voor de nieuwe waardenlijst wil je meerdere velden hebben. De reden hiervoor is dat je wilt kunnen verwijzen naar een vertaling. Stel dat je de oplossing voor meertalige tekstlabels gebruikt zoals hierboven voorgesteld, dan geef je deze labels weer via een verwijzing. Alle labels van de actieve taal worden opgeslagen in de herhalingen van een globaal tekstveld. De tabel voor de labels heeft een doorlopend nummer in een ander veld, dat niet verandert, of je nu een nummer verwijdert of overslaat. Dit betekent dat u een unieke referentie hebt naar elk label, gebaseerd op dat doorlopende nummer. Als je de tekstlabels in een globaal herhalingsveld laadt, gebruik je het nummerveld om naar dat herhalingsnummer te verwijzen. Zo blijven alle labels op die positie staan en kan er gemakkelijk naar worden verwezen.
Het zou eruit kunnen zien als: L::gT[289], waarbij “L” de tabel is voor alle labels, “gT” het globale tekstveld is, waarin de labels worden geladen, en “[289]” het herhalingsnummer is waarnaar je verwijst.
De structuur van deze definitie is altijd hetzelfde. Het is: Table::Field[repetition number]. Alleen het herhalingsnummer verandert, de rest blijft hetzelfde voor elk label. In een meertalige waardenlijst wil je 1 veld hebben voor het gekozen nummer en een tekstveld om de volledige referentie op te bouwen. Kies geen rekenveld, maar een tekstveld met een berekening bij invoer.
Het zou er zo uit kunnen zien:
Het screenshot is van FM Starter en hetzelfde voorbeeld maakt ook deel uit van FrankCRM. De tabel UserGroups_VL kan gebruikt worden als voorbeeld. Doe het volgende om een nieuwe waardelijst te maken:
- Dupliceer de tabel UserGroups_VL. Hernoemen.
- Dupliceer de lay-out UserGroups_VL. Hernoemen.
- Werk de tabel en velden op de gedupliceerde lay-out bij zodat ze overeenkomen met je gedupliceerde tabel en lay-out.
- Maak een nieuwe waardenlijst, gebaseerd op je gedupliceerde tabel
- Neem de nieuwe lay-out op in de “Script MTL Waardelijst Vertalingen” om de waarden automatisch te verversen wanneer dat nodig is.
De tabel voor de meertalige waardenlijst heeft verschillende velden, waaronder:
- nummerveld “TranslationID” voor de referentie
- tekstveld voor de vertaling met berekening “Evaluate ( “Table::GlobalField[” & TranslationID & “]” )” of vergelijkbaar
Het tekstveld met de berekening wordt ververst wanneer het veld TranslationID, waarop het is gebouwd, wordt ververst. Als je een taal laadt, bijwerkt of wijzigt, moet je ervoor zorgen dat dit veld “TranslationID” wordt vernieuwd in elke tabel die wordt gebruikt voor meertalige waardenlijsten.
De vertalingen van de waardenlijst vernieuwen
Als je van taal wisselt, worden je waardenlijsten niet automatisch bijgewerkt, omdat dit geen rekenvelden zijn, maar gewone tekstvelden waarop een berekening wordt uitgevoerd bij gegevensinvoer. We moeten die gegevensinvoer nabootsen om de berekende waarde bij te werken.
Hiervoor gebruik ik een script waaraan ik alle tabellen met waardenlijsten toevoeg, waarin ik de waarde in het veld “TranslationID” vervang door zichzelf. Hierdoor wordt de taal bijgewerkt. Na deze verversing zal de meertalige waardenlijst moeiteloos werken.
Script om waardelijsten te verversen
Elke waardenlijst met deze meertalige opstelling moet de volgende verversingsmodus hebben:
# Je waardenlijst
Ga naar Layout [ “[YourValueListLayout]” ([ValueListTable]) ; Animatie: Geen ]
Toon alle records
Veldinhoud vervangen [ Met dialoog: Uit ; [ValueListTable]::TranslationID ; [ValueListTable]::TranslationID ]
Herhaal deze opzet voor elke waardenlijst. Zo krijg je een script dat alle waardenlijsten bijwerkt met de huidige taal. Wanneer je van taal wisselt, voeg dan dit script toe na de wisseling om de waarde van je waardenlijsten te vernieuwen.
FM Starter en FrankCRM hebben dit inbegrepen
Alle basisideeën voor het maken van een meertalige set-up van je oplossing zijn gratis beschikbaar op deze website. Je zult het echter zelf moeten bouwen. Als je het proces wilt versnellen, kijk dan eens naar FM Starter en FrankCRM, die deze mechanismen al hebben ingebouwd.
In ons topproduct FrankCRM worden overal meertalige waardelijsten gebruikt. De volgende video toont enkele implementaties in de gebruikersinterface. Zowel de interface als de waardenlijsten zijn meertalig.