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

1

Tengo una aplicación Google Translate creada con la aplicación Fluid. Quiero traducir cualquier texto seleccionado con esta mi aplicación Google Translate Fluid .

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

    
pregunta fatihturan 03.04.2017 - 22:06

1 respuesta

1

Aquí está el código AppleScript que uso en una acción Ejecutar AppleScript, en un flujo de trabajo del Servicio Automator junto con mi aplicación Google Translate Fluid, que se llama Google Translate.

Cree un flujo de trabajo del Servicio Automator con la configuración que se muestra en la imagen a continuación, al mismo tiempo que reemplaza el código AppleScript predeterminado con el código AppleScript que se encuentra debajo de la imagen del Automator. Tenga en cuenta que lo guardé como Traductor con Google Translate y esto es lo que se muestra en el menú Servicios y en el menú contextual cuando seleccioné el texto que quiero traducir.

CódigoAppleScript:

onrun{input,parameters}settextToTranslatetoitem1ofinputasstringsetwindowNameto"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: My Translate con Google Translate Automator Service intenta usar JavaScript para cambiar el valor del área de texto de origen, ya que este es un mejor método de la OMI y luego, literalmente, pegar el texto para traducirlo al área de texto de origen, sin embargo, si no se puede, luego copia el texto seleccionado al portapapeles y luego lo pega en el área de texto de origen. Antes de pegar, presionando ⌘V mediante programación, se usa JavaScript para borrar el área de texto de origen y establecer el foco en él, por lo que la pegada se producirá en la ubicación correcta.

El uso de do shell script "open -a " ... es necesario porque una aplicación Fluid con preferencias predeterminadas, una creada con Fluid , se abre de forma predeterminada 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, en el caso de ejemplo, tell application "Google Translate" to activate , solo aparece el Dock Tile, no browser window , es decir, no se muestra la página de inicio. Esto es en parte por lo que originalmente lo codifiqué como lo hice. Sin embargo, desde su comentario, descubrí que si abría programáticamente a través de AppleScript usando do shell script "open -a " ... , se abría con una ventana del navegador, no solo el Dock Tile y, como tal, podía recodificar el Servicio de manera diferente porque el uso de do shell script "open -a " ... También traería una copia de seguridad de ventana minimizada sin la necesidad de tener en cuenta eso con codificación adicional.

Esperamos que el nuevo código elimine la aparición de dos pestañas de Google Translate cuando se inicie desde un estado cerrado. (Aunque, dependiendo de los horarios, puede suceder ocasionalmente).

    
respondido por el user3439894 06.04.2017 - 06:49

Lea otras preguntas en las etiquetas