Díky standardizovaným rozhraním API lze překladatelské služby, jako je Google Translate nebo Deepl.com, používat přímo s FileMakerem k překladu textů do jiných jazyků. V tomto krátkém článku vám ukážeme, jak takový překlad vytvořit přímo ve FileMakeru. Rozhraní a tím i možnost překládat jakýkoli text.
Překladač Google i Deepl.com jsou zpoplatněny. Jeden milion znaků odeslaných do API stojí u obou služeb 20 amerických dolarů, respektive 20 eur, zatímco Deepl.com si rovněž účtuje základní měsíční poplatek ve výši necelých pěti eur. Přeložené texty z Deepl.com jsou obecně považovány za o něco lépe přeložené než texty z Překladače Google, i když to pravděpodobně závisí také na oboru. Níže se dozvíte, jak funguje automatický překlad textů v aplikaci FileMaker.Databáze lze realizovat.
K provedení překladu pomocí Překladače Google je zapotřebí platný účet Google, který je oprávněn používat. Cloud Translation API je aktivován.
Pro překlad pomocí Deepl.com je vyžadován placený vývojářský účet pro rozhraní API DeepL. Měsíční náklady činí 4,99 eur plus náklady závislé na používání (v současné době 1 cent za 500 znaků, od 03/2019).
Rychlokurz FileMakeru
Rychlý a efektivní FileMaker
učení ve 20 kapitolách.
Zúčastněte se zdarma
Obecné Skript pro překlad
Nejprve vytvoříme skript, který přijme zdrojový jazyk, cílový jazyk a text, který má být přeložen, prostřednictvím tří parametrů a podle toho je odešle do rozhraní. V našem příkladu jsou parametry odděleny zalomením řádku (CR). Pokud chcete do rozhraní odesílat texty s oddělovači řádků, použijte pro parametry jiný oddělovač, například apostrof. V tomto případě nepoužívejte funkci GetValue ()ale jinou (vlastní) funkci, která řetězec rozdělí pomocí vašeho oddělovače. V našem příkladu nazveme skript "ts.Translate". V prvním kroku se každý z přenášených parametrů převede do tvaru Variabilní napsáno.
Skript lze volat z jiných skriptů následujícím způsobem:
Spuštění skriptu [ Zadáno: Ze seznamu ; "ts.Translate"; Parametr: ""DE¶EN¶Hello world" ]
Přehled skriptu "ts.Translate"
Přenos parametrů skriptu
Nastavení proměnné [ $quellsprache ; Hodnota: GetValue(Get(ScriptParameter); 1) ]
Nastavení proměnné [ $argetLanguage ; Hodnota: GetValue(Get(ScriptParameter); 2) ]
Nastavení proměnné [ $quelltext ; Hodnota: GetValue(Get(ScriptParameter); 3) ]
Proměnné 1TP4Source language a $arget language obsahují ISO kód příslušného jazyka, např. DE nebo EN.
Nastavení proměnné pro klíč API
Nastavení proměnné [ $api_key ; Value: "hJghjjHJHGjkhjKJgÖLkjjjhlkHkjFJKGkjjhlÄf" ]
K použití rozhraní API pro překlad Google Cloud i rozhraní API DeepL je vyžadován ověřovací klíč. Ten lze získat v oblasti správy příslušného rozhraní API.
Volání API URL
Rozhraní API pro překlad Google Cloud
Nastavení proměnné [ $_url ; Hodnota: "https://www.googleapis.com/language/translate/v2?key=" & $api_key & "&q=" & ReadAsURLEncrypted ($source text) & "&source=" & $source language & "&target=" & $target language ]
DeepL API
Nastavení proměnné [ $_url ; Hodnota: "https://api.deepl.com/v2/translate?auth_key=" & $api_key & "&source_lang=" & $source_lang & "&target_lang=" & $target_lang & "&text=" & ReadAsURLEncrypted ($source_text) ]
V závislosti na tom, který zprostředkovatel má být použit, je třeba použít odpovídající řádek skriptu. V proměnné $_url se nejprve vygeneruje adresa URL, která má být pro překlad vyvolána. Za adresou serveru následují všechny ostatní hodnoty, které byly uloženy v dříve definovaných proměnných:
- $api_key (Ověřovací klíč rozhraní API)
- $source_long (zdrojový jazyk jako kód ISO)
- $target_long (cílový jazyk jako kód ISO)
- 1TP4Zdrojový text (Předávaný text se předává s funkcí ReadAsURLEncrypted v adrese URL, aby se zabránilo odesílání skutečných zlomů řádků atd.)
Vložení z adresy URL [ Výběr ; S dialogem: Vypnuto ; $url_result ; $_url ]
Tento příkaz zavolá adresu URL a výsledek uloží do proměnné $url_result.
Vyčtení výsledku a chybového dotazu
Nejprve se systém dotáže, zda výsledek vrácený prostřednictvím adresy URL obsahuje výraz "chyby". Pokud ano, měl by se zobrazit příslušný dialog o chybách, který v textu obsahuje proměnné $_url a $url_result.
Když [ PatternNumber ( $url_result ; "errors" ) ]
Zobrazení vlastního dialogového okna [ "Chyba nastala" ; $_url & ", " & $url_result ]
Jinak
Nastavení proměnné [ $_message_target ; Hodnota:
SetVar ( [
Text = $url_result ;
StartTag = "\"text\":\"" ;
EndTag = "\"}]}" ;
StartPos = Pozice ( Text ; StartTag ; 1 ; 1 ) ;
StartPos = StartPos + Length ( StartTag ) ;
EndPos = pozice ( Text ; EndTag ; StartPos ; 1 ) ;
LengthToKeep = EndPos - StartPos ;
Výsledek = CharacterCentre ( Text ; StartPos ; LengthToKeep ) ] ;
Výsledek & If(PatternNumber(Výsledek; "|") > 0; "|")
)
Filtrování entit HTML
Pokud vrácený text obsahuje entity HTML, lze je odstranit pomocí příkazu Vlastní funkce lze odfiltrovat. V tomto příkladu použijeme funkci HTMLencoded2Textkterý je volně k dispozici.
Když [ PatternNumber ( $_message_target ; "&#" ) ]
Nastavení proměnné [ $_message_target ; Value: HTMLencoded2Text ( $_message_target ) ]
Konec (if)
Konec (if)
Ukončení skriptu a doručení výsledku
Následující příkaz ukončí skript a vrátí výsledek, který se zobrazí v nadřazeném skriptu po provedení příkazem Get(ScriptResult) lze přečíst.
Ukončení aktuálního skriptu [ Výsledek textu: $_message_target ]
Oddělení několika textových hodnot oddělovačem
Pomocí rozhraní je také možné přiřadit oddělovač několika slovům, která mají být přeložena, aby bylo možné je později strukturovaně zadat do různých proměnných nebo polí. Pomocí rozhraní API DeepL lze například jako oddělovač snadno použít apostrof, zatímco u překladače Google jsme mohli úspěšně implementovat oddělovač s jedním nebo dvěma podtržítky.


Jsou k tomu nějaké aktualizace? Skript nelze takto zadat. Byl bych za to velmi rád.
Mfg
Burkhard Quenzler
Dobrý den, Burkharde, co přesně nelze zadat nebo co nefunguje? Nejsem si vědom, že by se od té doby v API něco změnilo z čistě technického hlediska. Funkce StringColumns odpovídá funkci "GetValue", pouze s apostrofem jako oddělovačem.
Zkoušel jsem napsat skript slovo od slova, myslím, že mám problém s apostrofem. Zkusím to později. Možná mi můžete poslat skript ts.Translate. Byl bych vám velmi vděčný.