1 votos

Copie el texto seleccionado, péguelo en la aplicación Google Translate (Fluid App) y tradúzcalo con Automater/Service

Tengo una aplicación de Google Translate creada con Fluid App. Quiero traducir cualquier seleccionado texto con este mi aplicación Google Translate Fluid .

Entonces, para este propósito, ¿cómo puedo crear un servicio con Automator/AppleScript?

1voto

user3439894 Puntos 5883

Aquí está el código AppleScript que utilizo en una acción Run AppleScript, en un flujo de trabajo de Automator Service junto con mi Google Translate Fluid App, que se llama Google Translate.

Cree un flujo de trabajo de Servicio de Automator con la configuración como se muestra en la imagen de abajo, mientras que la sustitución del código de AppleScript por defecto con el código de AppleScript que se encuentra debajo de la imagen de Automator. Ten en cuenta que lo he guardado como Traducir con Google Translate y esto es lo que se muestra en el menú Servicios y en el menú contextual cuando he seleccionado el texto que quiero traducir.

Automator Service workflow


Código AppleScript:

on run {input, parameters}

    set textToTranslate to item 1 of input as string
    set windowName to "Google Translate"
    set targetURL to "https://translate.google.com/"

    tell current application
        do shell script "open -a " & quoted form of windowName
    end tell

    tell application "Google Translate"
        repeat while (loading) of front browser window
            delay 0.5
        end repeat
        if (get title of front window) does not contain windowName then
            open location targetURL
            repeat while (loading) of front browser window
                delay 0.5
            end repeat
        end if
        tell front browser window
            activate
            try
                do JavaScript "document.getElementById('source').value = \"" & textToTranslate & "\";"
            on error
                set the clipboard to textToTranslate as string
                delay 1
                activate
                do JavaScript "document.getElementById('source').value = ''; document.getElementById('source').focus();"
                tell application "System Events"
                    keystroke "v" using command down
                end tell
            end try
        end tell
    end tell

end run

Nota: Mi Translate con Google Translate Automator Service intenta utilizar JavaScript para cambiar el valor del área de texto de origen, ya que esto es IMO un método mejor que literalmente programáticamente pegar el texto para traducir al área de texto de origen, sin embargo, si no puede, a continuación, copia el texto seleccionado en el portapapeles y luego lo pega en el área de texto de origen. Antes de pegar, a través de la pulsación programática de V, se utiliza JavaScript para borrar el área de texto de origen y establecer el foco en ella, por lo que la pasta se producirá como se pretende en la ubicación correcta.

El uso de do shell script "open -a " ... es necesario porque una Fluid App con Preferencias por defecto, una creada con Fluido , por defecto cuando se abre desde la interfaz de usuario de MacOS muestra su página de inicio. Sin embargo, cuando se abre mediante programación a través de AppleScript, caso de ejemplo, tell application "Google Translate" to activate sólo aparece el Dock Tile, no hay browser window Es decir, no se muestra ninguna página de inicio. Esta es en parte la razón por la que originalmente lo codifiqué como lo hice. Sin embargo, desde tu comentario, he descubierto que si abro mediante programación a través de AppleScript usando do shell script "open -a " ... se abre con una ventana del navegador, no sólo con el Dock Tile y como tal se pudo recodificar el Servicio de manera diferente porque el uso de do shell script "open -a " ... también haría que la ventana de minimización volviera a aparecer sin necesidad de tener en cuenta eso con una codificación adicional.

Esperemos que el nuevo código elimine la aparición de dos pestañas de Google Translate cuando se parte de un estado cerrado. (Aunque dependiendo de los tiempos, puede ocurrir ocasionalmente).

0 votos

Muchas gracias :) Ya funciona. Pero estoy usando este Google Translate Fluid App en la barra de estado de MacOS y si llamo a este servicio se abre en una nueva pestaña en la aplicación fluida ( este es el screencast ). ¿Hay alguna forma de abrir Google Translate en la ventana/pestaña actual?

0 votos

@fatihturan, he recodificado el Servicio para, con suerte, solucionar el problema de la doble pestaña. Por favor, utiliza el nuevo código y lee la información adicional presentada en los dos últimos párrafos de mi respuesta.

0 votos

No ha cambiado el comportamiento de Fluid App; así que sigue abriendo una nueva pestaña en lugar de la actual. Pero he arreglado este problema con esta configuración .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X