Dankzij gestandaardiseerde API-interfaces kunnen vertaaldiensten zoals Google Translate of Deepl.com rechtstreeks met FileMaker worden gebruikt om teksten in andere talen te vertalen. In dit korte artikel laten we u zien hoe u een dergelijke vertaling rechtstreeks in FileMaker kunt maken. Interface en zo elke tekst kunnen vertalen.
Voor zowel Google Translate als Deepl.com worden kosten in rekening gebracht. Een miljoen tekens die naar de API worden gestuurd kosten respectievelijk 20 Amerikaanse dollar en 20 euro voor beide diensten, terwijl Deepl.com ook een maandelijks basisbedrag van iets minder dan vijf euro rekent. De vertaalde teksten van Deepl.com worden over het algemeen als iets beter vertaald beschouwd dan die van Google Translate, hoewel dit waarschijnlijk ook afhangt van het onderwerp. Ontdek hieronder hoe een automatische vertaling van teksten in een FileMaker toepassing werkt.Database kan worden gerealiseerd.
Om de vertaling met Google Translate uit te voeren, is een geldig Google-account vereist dat gemachtigd is om de Cloud vertaal-API is geactiveerd.
Een betaald ontwikkelaarsaccount voor de DeepL API is vereist voor vertaling met Deepl.com. De maandelijkse kosten zijn 4,99 euro plus gebruiksafhankelijke kosten (momenteel 1 cent per 500 tekens, per 03/2019)
FileMaker spoedcursus
Snel en effectief FileMaker
leren in 20 hoofdstukken.
Gratis deelname
Algemeen Script voor de vertaling
Eerst maken we een script dat de brontaal, doeltaal en de te vertalen tekst accepteert via drie parameters en deze dienovereenkomstig naar de interface stuurt. In ons voorbeeld worden de parameters gescheiden door regeleinden (CR). Als je teksten met regeleinden naar de interface wilt sturen, gebruik dan een ander scheidingsteken voor de parameters, zoals een apostrof. Gebruik in dit geval niet de functie GetValue ()maar een andere (aangepaste) functie die de string splitst met jouw scheidingsteken. In ons voorbeeld noemen we het script "ts.Translate". In de eerste stap worden de overgedragen parameters elk omgezet in een Variabele geschreven.
Het script kan als volgt vanuit andere scripts worden aangeroepen:
Script uitvoeren [Opgegeven: Uit lijst ; "ts.Translate"; Parameter: ""DE¶EN¶Hello World" ]
Overzicht van het "ts.Translate" script
Overdracht van de scriptparameters
Variabele instellen [$quellsprache ; Waarde: GetValue(Get(ScriptParameter); 1) ]
Variabele instellen [$argetLanguage ; Waarde: GetValue(Get(ScriptParameter); 2) ]
Variabele instellen [$quelltext ; Waarde: GetValue(Get(ScriptParameter); 3) ]
De variabelen 1TP4Brontaal en 1TP4Doeltaal bevatten de ISO-code van de respectievelijke taal, bijvoorbeeld DE of EN.
Variabele instellen voor de API-sleutel
Variabele instellen [ $api_key ; Waarde: "hJghjjHJHGjkhjKJgÖLkjjjhlkHkjFJKGkjjjhlÄf" ]
Er is een authenticatiesleutel nodig om zowel de Google Cloud Translation API als de DeepL API te gebruiken. Deze kan worden opgehaald in het beheergebied van de respectieve API.
API URL oproepen
Google cloud vertaal-API
Variabele instellen [$_url ; Waarde: "https://www.googleapis.com/language/translate/v2?key=" & $api_key & "&q=" & ReadAsURLEncrypted ($source text) & "&source=" & $source language & "&target=" & $target language ]
DeepL API
Variabele instellen [ $_url ; Waarde: "https://api.deepl.com/v2/translate?auth_key=" & $api_key & "&source_lang=" & $source_lang & "&target_lang=" & $target_lang & "&text=" & ReadAsURLEncrypted ($source_text) ]
Afhankelijk van welke provider wordt gebruikt, moet hier de overeenkomstige scriptregel worden gebruikt. In de variabele $_url wordt eerst de URL gegenereerd die moet worden opgeroepen voor de vertaling. Het serveradres wordt gevolgd door alle andere waarden die zijn opgeslagen in de eerder gedefinieerde variabelen:
- $api_sleutel (Authenticatiesleutel van de API)
- $bron_lang (brontaal als ISO-code)
- $target_lang (doeltaal als ISO-code)
- 1TP4Bron tekst (Doorgegeven tekst wordt doorgegeven met de functie ReadAsURLEncrypted in de URL om te voorkomen dat echte regeleinden enz. worden verzonden)
Invoegen vanaf URL [Selectie ; Met dialoog: Uit ; $url_result ; $_url ]
Deze opdracht roept de URL op en slaat het resultaat op in de variabele $url_result.
Resultaat en foutquery uitlezen
Ten eerste vraagt het systeem of het resultaat dat via de URL wordt geretourneerd de term "errors" bevat. Als dat het geval is, verschijnt er een bijbehorend foutendialoogvenster met de variabelen $_url en $url_result in de tekst.
Wanneer [PatternNumber ( $url_result ; "errors" ) ]
Je eigen dialoogvenster weergeven [ "Fout opgetreden" ; $_url & ", " & $url_result ]
Anders
Variabele instellen [$_message_target ; Waarde:
SetVar ( [
Tekst = $url_resultaat ;
StartTag = "tekst":\" ;
EndTag = "\"}]};
StartPos = Positie ( Tekst ; StartTag ; 1 ; 1 ) ;
StartPos = StartPos + Lengte ( StartTag ) ;
EndPos = Positie ( Tekst ; EndTag ; StartPos ; 1 ) ;
LengthToKeep = EndPos - StartPos ;
Resultaat = CharacterCentre ( Tekst ; StartPos ; LengthToKeep ) ] ;
Resultaat & Als(PatternNumber(Resultaat; "|") > 0; "|")
)
Filteren van HTML-entiteiten
Als de geretourneerde tekst HTML-entiteiten bevat, kunnen deze worden verwijderd met een Aangepaste functie kan worden uitgefilterd. In dit voorbeeld gebruiken we de functie HTML-gecodeerde2Tekstdie vrij verkrijgbaar is.
Wanneer [PatternNumber ( $_message_target ; "&#" ) ]
Variabele instellen [$_message_target ; Waarde: HTMLencoded2Text ( $_message_target ) ]
Einde (als)
Einde (als)
Script afsluiten en resultaat leveren
De volgende opdracht sluit het script af en geeft het resultaat terug dat in het bovenliggende script wordt weergegeven na uitvoering met de opdracht Get(ScriptResult) kan worden uitgelezen.
Huidig script afsluiten [Tekst resultaat: $_bericht_doel ]
Scheiding van verschillende tekstwaarden met een scheidingsteken
Met behulp van de interfaces is het ook mogelijk om een scheidingsteken toe te wijzen aan verschillende woorden die moeten worden vertaald om ze later op een gestructureerde manier in verschillende variabelen of velden in te voeren. Met de DeepL API kan bijvoorbeeld gemakkelijk een apostrof als scheidingsteken worden gebruikt, terwijl we met Google Translate met succes een scheidingsteken met één of twee underscores konden implementeren.

Markus Schall ontwikkelt sinds 1994 databases, interfaces en bedrijfstoepassingen op maat op basis van Claris FileMaker. Hij is Claris-partner, FMM Award-winnaar 2011 en ontwikkelaar van de ERP-software gFM-Business. Hij is ook auteur van boeken en oprichter van de M. Schall Uitgevers.


Zijn hier updates voor? Het script kan zo niet worden ingevoerd. Ik zou hier erg blij mee zijn.
Mfg
Burkhard Quenzler
Hallo Burkhard, wat kan er precies niet worden ingevoerd of wat werkt niet? Ik ben me er niet van bewust dat er sindsdien iets is veranderd in de API in puur technische termen. De functie StringColumns komt overeen met de functie "GetValue", alleen met apostrof als scheidingsteken.
Ik heb geprobeerd het script woord voor woord in te typen, ik denk dat ik een probleem heb met de apostrof. Ik zal het later nog eens proberen. Misschien kun je me het ts.Translate script sturen. Ik zou u zeer dankbaar zijn.