Texte aus FileMaker übersetzen mit Google Translate oder deepl.com

Texte mit FileMaker in andere Sprachen übersetzenDank 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)

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

FileMaker Script für Google Translate und DeepL

Ü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.

 

Diesen Beitrag bewerten:

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Bisher keine Bewertungen.)
Loading...

Über den Autor

Markus Schall
Entwicklung von FileMaker-Datenbanken seit 1994, Modifikation und Erweiterung von FileMaker-Lösungen, Konvertierung von FileMaker-Datenbanken von .fm, .fp3, .fp5 (FileMaker 2-6) oder .fp7 (FileMaker 7-11) zu .fmp12 (FileMaker 12-17), Schnittstellen zu Drittsystemen wie Onlineshops, CMS oder andere Datenbanken. Entwicklung individueller FileMaker-Datenbanksysteme auf Basis des gFM-Business-Frameworks mit persönlicher Beratung aus Oldenburg. Betreiber des Online-Fachportals goFileMaker.de, Entwickler des CRM- und Warenwirtschaftssystems gFM-Business. Mitglied in der FileMaker Business Alliance, FileMaker Developers Subscription und FMM Experte. Gewinner eines FMM Award 2011, vergeben durch das FileMaker Magazin.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.