Gracias a las interfaces API estandarizadas, los servicios de traducción como Google Translate o Deepl.com se pueden utilizar directamente con FileMaker para traducir textos a otros idiomas. En este breve artículo, le mostraremos cómo crear una traducción de este tipo directamente en FileMaker. Interfaz y así poder traducir cualquier texto.
Tanto Google Translate como Deepl.com son de pago. Un millón de caracteres enviados a la API cuestan 20 dólares y 20 euros respectivamente para ambos servicios, mientras que Deepl.com también cobra una cuota básica mensual de algo menos de cinco euros. Los textos traducidos de Deepl.com suelen considerarse ligeramente mejor traducidos que los de Google Translate, aunque probablemente esto también dependa del área temática. Descubra a continuación cómo funciona la traducción automática de textos en una aplicación FileMaker.Base de datos puede hacerse realidad.
Para realizar la traducción con Google Translate, es necesario disponer de una cuenta de Google válida y autorizada para utilizar la función API de traducción en la nube está activado.
Para traducir con Deepl.com se necesita una cuenta de desarrollador de pago para la API DeepL. Los costes mensuales son de 4,99 euros más los costes dependientes del uso (actualmente 1 céntimo por 500 caracteres, a partir de 03/2019).
Curso intensivo de FileMaker
FileMaker rápido y eficaz
aprendizaje en 20 capítulos.
Participe gratuitamente
Genérico Guión para la traducción
En primer lugar, creamos un script que acepta el idioma de origen, el idioma de destino y el texto a traducir mediante tres parámetros y los envía a la interfaz en consecuencia. En nuestro ejemplo, los parámetros están separados por saltos de línea (CR). Si desea enviar textos con separadores de línea a la interfaz, utilice un separador diferente para los parámetros, como un apóstrofo. En este caso, no utilice la función GetValue ()sino otra función (personalizada) que divide la cadena con su separador. En nuestro ejemplo, llamamos al script "ts.Translate". En el primer paso, los parámetros transferidos se convierten cada uno en un Variable escrito.
El script puede ser llamado desde otros scripts de la siguiente manera:
Ejecutar script [ Especificado: De lista ; "ts.Translate"; Parámetro: ""DE¶EN¶Hello World" ]
Visión general del script "ts.Translate
Transferencia de los parámetros del script
Establecer variable [ $quellsprache ; Valor: GetValue(Get(ScriptParameter); 1) ]
Establecer variable [ $argetLanguage ; Value: GetValue(Get(ScriptParameter); 2) ]
Establecer variable [ $quelltext ; Valor: GetValue(Get(ScriptParameter); 3) ]
Las variables 1TP4Source language y $arget language contienen el código ISO del idioma respectivo, por ejemplo DE o EN.
Establecer variable para la clave API
Establecer variable [ $api_key ; Valor: "hJghjjHJHGjkhjKJgÖLkjjjjhlkHkjFJKGkjjhlÄf" ]
Se necesita una clave de autenticación para utilizar tanto la API de traducción de Google Cloud como la API DeepL. Esta se puede recuperar en el área de administración de la API respectiva.
Llamar a la URL de la API
API de traducción de Google Cloud
Establecer variable [ $_url ; Valor: "https://www.googleapis.com/language/translate/v2?key=" & $api_key & "&q=" & ReadAsURLEncrypted ($source text) & "&source=" & $source language & "&target=" & $target language ]
DeepL API
Establecer variable [ $_url ; Valor: "https://api.deepl.com/v2/translate?auth_key=" & $api_key & "&source_lang=" & $source_lang & "&target_lang=" & $target_lang & "&text=" & ReadAsURLEncrypted ($source_text) ]
Dependiendo del proveedor que se vaya a utilizar, se debe utilizar aquí la línea de script correspondiente. En la variable $_url se genera en primer lugar la URL que se debe llamar para la traducción. A la dirección del servidor le siguen todos los demás valores guardados en las variables definidas anteriormente:
- $api_key (Clave de autenticación de la API)
- 1TP4Fuente_larga (lengua fuente como código ISO)
- 1TP4Objetivo_largo (lengua de destino como código ISO)
- $exto fuente (El texto pasado, se pasa con la función ReadAsURLEncrypted en la URL para evitar enviar saltos de línea reales, etc.)
Insertar desde URL [ Selección ; Con diálogo: Off ; $url_result ; $_url ]
Este comando llama a la URL y guarda el resultado en la variable $url_result.
Lectura del resultado y consulta de error
En primer lugar, el sistema consulta si el resultado devuelto a través de la URL contiene el término "errores". En caso afirmativo, debe aparecer el correspondiente cuadro de diálogo de errores, que contiene las variables $_url y $url_resultado en el texto.
En [ PatternNumber ( $url_result ; "errores" ) ]
Mostrar su propio cuadro de diálogo [ "Se ha producido un error" ; $_url & ", " & $url_result ]
En caso contrario
Establecer variable [ $_message_target ; Valor:
SetVar ( [
Texto = $url_result ;
StartTag = "\"text\":\"" ;
EndTag = "\"}]}" ;
StartPos = Position ( Text ; StartTag ; 1 ; 1 ) ;
StartPos = StartPos + Length ( StartTag ) ;
EndPos = Posición ( Texto ; EndTag ; StartPos ; 1 ) ;
LengthToKeep = EndPos - StartPos ;
Resultado = CharacterCentre ( Text ; StartPos ; LengthToKeep ) ] ;
Resultado & If(PatrónNúmero(Resultado; "|") > 0; "|")
)
Filtrado de entidades HTML
Si el texto devuelto contiene entidades HTML, éstas pueden eliminarse con una directiva Función personalizada pueden filtrarse. En este ejemplo, utilizamos la función HTMLencoded2Textde libre acceso.
En [ PatternNumber ( $_message_target ; "&#" ) ]
Establecer variable [ $_message_target ; Valor: HTMLencoded2Text ( $_message_target ) ]
Fin (si)
Fin (si)
Salir del script y entregar el resultado
El siguiente comando sale del script y devuelve el resultado que se muestra en el script padre tras la ejecución con el comando Get(ScriptResultado) puede leerse en voz alta.
Salir del script actual [ Resultado del texto: $_message_target ]
Separación de varios valores de texto con un separador
Utilizando las interfaces, también es posible asignar un separador a varias palabras por traducir para introducirlas después en distintas variables o campos de forma estructurada. Con la API DeepL, por ejemplo, se puede utilizar fácilmente un apóstrofo como separador, mientras que con Google Translate pudimos implementar con éxito un separador con uno o dos guiones bajos.


¿Hay alguna actualización para esto? El script no se puede introducir así. Me alegraría mucho.
Mfg
Burkhard Quenzler
Hola Burkhard, ¿qué es exactamente lo que no se puede introducir o lo que no funciona? No me consta que haya cambiado nada técnicamente en la API desde entonces. La función StringColumns corresponde a la función "GetValue", sólo que con apóstrofo como separador.
He intentado escribir el guión palabra por palabra, creo que tengo un problema con el apóstrofo. Lo intentaré de nuevo más tarde. Tal vez puedas enviarme el script ts.Translate. Te lo agradecería mucho.