Dank standardisierter API-Schnittstellen können Übersetzungsdienste wie Google Translate oder Deepl.com direkt mit FileMaker genutzt werden, um Texte in andere Sprachen zu übersetzen. In diesem kurzen Artikel zeigen wir, wie Sie direkt in FileMaker eine solche Schnittstelle ansprechen und damit beliebige Texte übersetzen können.
Sowohl Google Translate als auch Deepl.com sind kostenpflichtig. Eine Million an die API gesendete Zeichen kosten bei beiden Diensten 20 US-Dollar bzw. 20 Euro, Deepl.com verlangt außerdem eine monatliche Grundgebühr in Höhe von knapp fünf Euro. Die übersetzten Texte von Deepl.com gelten allgemein als etwas besser übersetzt als von Google Translate, wobei es hier vermutlich auch auf den Fachbereich ankommt. Erfahren Sie im folgenden, wie eine automatische Übersetzung von Texten in einer FileMaker-Datenbank umgesetzt werden kann.
Um die Übersetzung mit Google Translate durchzuführen, ist ein gültiges Google-Konto erforderlich, das für die Nutzung der Cloud Translation API freigeschaltet ist.
Für die Übersetzung mit Deepl.com ist ein kostenpflichtiges Entwicklerkonto der DeepL-API erforderlich. Die monatlichen Kosten betragen 4,99 Euro zzgl. nutzungsabhängiger Kosten (z. Zt. 1 Cent pro 500 Zeichen, Stand 03/2019)
FileMaker Crashkurs
Schnell und effektiv FileMaker
lernen in 20 Kapiteln.
Kostenlos teilnehmen
Generisches Script für die Übersetzung
Zunächst erstellen wir ein Script, das über drei Parameter die Quellsprache, Zielsprache und den zu übersetzenden Text annimmt und entsprechend an die Schnittstelle sendet. Die Parameter sind in unserem Beispiel mit Zeilenumbrüchen (CR) getrennt. Wenn Sie Texte mit Zeilentrennzeichen an die Schnittstelle senden möchten, verwenden Sie ein anderes Trennzeichen für die Parameter wie z.B. einen Hochstrich. Verwenden Sie dann bei der Übergabe der Parameter nicht die Funktion HoleWert (), sondern eine andere (eigene) Funktion, die den String mit Ihrem Trennzeichen aufspaltet. In unserem Beispiel nennen wir das Script „ts.Translate“. Im ersten Schritt werden die übergebenen Parameter jeweils in eine Variable geschrieben.
Das Script kann aus anderen Scripten heraus wie folgt aufgerufen werden:
Script ausführen [ Angegeben: Aus Liste ; „ts.Translate“; Parameter: „“DE¶EN¶Hallo Welt“ ]
Script „ts.Translate“ in der Übersicht
Übergabe der Script-Parameter
Variable setzen [ $quellsprache ; Wert: HoleWert(Hole(ScriptParameter); 1) ]
Variable setzen [ $zielsprache ; Wert: HoleWert(Hole(ScriptParameter); 2) ]
Variable setzen [ $quelltext ; Wert: HoleWert(Hole(ScriptParameter); 3) ]
Die Variablen $quellsprache und $zielsprache enthalten den ISO-Code der jeweiligen Sprache, also z.B. DE oder EN.
Variable für den API-Key setzen
Variable setzen [ $api_key ; Wert: „hJghjjHJHGjkhjKJgÖLkjjhlkHkjFJKGkjjhlÄf“ ]
Sowohl für die Nutzung der Google Cloud Translation API als auch der DeepL-API ist ein Authentifizierungsschlüssel erforderlich. Dieser kann im Administrationsbereich der jeweiligen API abgerufen werden.
API-URL aufrufen
Google Cloud Translation API
Variable setzen [ $_url ; Wert: „https://www.googleapis.com/language/translate/v2?key=“ & $api_key & „&q=“ & LiesAlsURLVerschlüsselt ($quelltext) & „&source=“ & $quellsprache & „&target=“ & $zielsprache ]
DeepL API
Variable setzen [ $_url ; Wert: „https://api.deepl.com/v2/translate?auth_key=“ & $api_key & „&source_lang=“ & $quellsprache & „&target_lang=“ & $zielsprache & „&text=“ & LiesAlsURLVerschlüsselt ($quelltext) ]
Je nach dem, welcher Anbieter genutzt werden soll, ist hier die entsprechende Scriptzeile zu verwenden. In der Variable $_url wird zunächst die URL erzeugt, die für die Übersetzung aufgerufen werden soll. Auf die Serveradresse folgen alle weiteren Werte, die in den vorher definierten Variablen gespeichert wurden:
- $api_key (Authentifizierungsschlüssel der API)
- $source_lang (Quellsprache als ISO-Code)
- $target_lang (Zielsprache als ISO-Code)
- $quelltext (Übergebener Text, wird mit der Funktion LiesAlsURLVerschlüsselt in der URL übergeben, um keine echten Zeilenumbrüche usw. mitzusenden)
Aus URL einfügen [ Auswahl ; Mit Dialog: Aus ; $url_ergebnis ; $_url ]
Mit diesem Befehl wird die URL aufgerufen und das ausgegebene Ergebnis in der Variable $url_ergebnis gespeichert.
Ergebnis auslesen und Fehlerabfrage
Zunächst wird abgefragt, ob das über die URL gelieferte Ergebnis den Begriff „errors“ enthält. Wenn ja, soll ein entsprechender Fehlerdialog erscheinen, der im Text die Variablen $_url und $url_ergebnis enthält.
Wenn [ MusterAnzahl ( $url_ergebnis ; „errors“ ) ]
Eigenes Dialogfeld anzeigen [ „Fehler aufgetreten“ ; $_url & „, “ & $url_ergebnis ]
Sonst
Variable setzen [ $_message_target ; Wert:
SetzeVar ( [
Text = $url_ergebnis ;
StartTag = „\“text\“:\““ ;
EndTag = „\“}]}“ ;
StartPos = Position ( Text ; StartTag ; 1 ; 1 ) ;
StartPos = StartPos + Länge ( StartTag ) ;
EndPos = Position ( Text ; EndTag ; StartPos ; 1 ) ;
LengthToKeep = EndPos – StartPos ;
Result = ZeichenMitte ( Text ; StartPos ; LengthToKeep ) ] ;
Result & Wenn(MusterAnzahl(Result; „|“) > 0; „|“)
)
Filterung von HTML-Entities
Sollte der zurückgelieferte Text HTML-Entities enthalten, können diese mit einer Custom Function herausgefiltert werden. In diesem Beispiel verwenden wir die Funktion HTMLencoded2Text, die frei verfügbar ist.
Wenn [ MusterAnzahl ( $_message_target ; „&#“ ) ]
Variable setzen [ $_message_target ; Wert: HTMLencoded2Text ( $_message_target ) ]
Ende (wenn)
Ende (wenn)
Script verlassen und Ergebnis liefern
Mit dem folgenden Befehl wird das Script verlassen und liefert dabei das Ergebnis, das im übergeordneten Script nach der Ausführung mit dem Befehl Hole(ScriptErgebnis) ausgelesen werden kann.
Aktuelles Script verlassen [ Textergebnis: $_message_target ]
Trennung mehrerer Textwerte mit einem Trennzeichen
Über die Schnittstellen ist es auch möglich, mehrere zu übersetzende Wörter mit einem Trennzeichen zu versehen, um diese später strukturiert in verschiedene Variablen oder Felder einzutragen. Mit der DeepL-API kann als Trennzeichen z.B. problemlos ein Hochstrich verwendet werden, bei Google Translate konnten wir eine Trennung mit einem oder zwei Unterstrichen erfolgreich umsetzen.

Markus Schall entwickelt seit 1994 individuelle Datenbanken, Schnittstellen und Geschäftsanwendungen auf Basis von Claris FileMaker. Er ist Claris-Partner, FMM-Award-Gewinner 2011 und Entwickler der ERP-Software gFM-Business. Zudem ist er Buchautor und Gründer des M. Schall Verlags.
Verwandte Beiträge
-
FileMaker veröffentlicht FileMaker Go 1.2 mit neuen Funktionen.
Am heutigen Tag hat FileMaker die Datenbank-App FileMaker Go für das Apple iPhone und iPad aktualisiert. Die neue Version 1.2 unterstützt nun auch Linien-, Balken-, Flächen- und Tortendiagramme aus FileMaker 11 direkt auf dem iPhone oder iPad. Auf diese Weise können Geschäftsdaten auch grafisch unterwegs ausgetauscht und analysiert werden. Mit...
-
FileMaker TechNet mit kostenlosen Trainingsmodulen
Pressemitteilung: FileMaker stellt den Mitgliedern seines Technical Networks ein weiteres FileMaker Trainingsmodule-Starterkit kostenlos zur Verfügung. Es besteht aus drei bereits bisher gern genutzten Einheiten der FileMaker Trainingsmodule zu FileMaker 12. Das Technical Network ist eine kostenfreie Community, mit der Entwickler ihr FileMaker-Fachwissen erweitern und sich gegenseitig austauschen können. Das Trainingsmodule-Starterkit umfasst...
-
Sansibar auf Sylt "macht alles" mit FileMaker.
Auch auf Sylt sollte der heutige Tag sehr sonnig ausgefallen sein, was in diesem Fall einmal nichts mit FileMaker zu tun hat. Umso mehr ist das jedoch bei der Sansibar auf Sylt der Fall - seit mehr als 35 Jahren ist das Unternehmen in der Gastronomie und im Handel bundesweit...





Gibt es hierfür Aktualisierungen? Das Script lässt sich so nicht eingeben. Ich würde mich darüber sehr freuen.
Mfg
Burkhard Quenzler
Hallo Burkhard, was genau läßt sich denn nicht eingeben bzw. was funktioniert nicht? Mir ist nicht bekannt, dass sich seitdem rein technisch irgendwas an der API verändert haben sollte. Die Funktion StringSpalten entspricht der Funktion „HoleWert“, nur mit Hochkomma als Trennzeichen.
Ich hab versucht das Script Wort für Wort einzutippen, Ich glaube bei dem Hochkomma gibt es bei mir das Problem. Ich versuch es nachher nochmal. Villeicht kannst Du mir das Script ts.Translate mal zusenden. Ich wäre dir sehr dankbar dafür.