Links überspringen

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

Texte mit FileMaker in andere Sprachen übersetzen

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)

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.

 

Hinterlassen Sie einen Kommentar

  1. Gibt es hierfür Aktualisierungen? Das Script lässt sich so nicht eingeben. Ich würde mich darüber sehr freuen.

    Mfg

    Burkhard Quenzler

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

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

Diese Seite teilen:

ERP-Software so flexibel wie Ihr Unternehmen.
Wir beraten Sie gern.

Anpassbare ERP-Software für Mac, Windows und iOS.

Sie sind hier: Texte in FileMaker übersetzen mit Deepl.com und Google Translate