Traducir un documento a otro idioma automáticamente

Introducción

Google ofrece un servicio de traducción de idiomas con el que podemos traducir automáticamente cualquier texto desde uno de los idiomas disponibles a cualquier otro de ellos. Agregaremos esta funcionalidad a cualquier tipo de contenido que tenga un campo de texto específico.

Requisitos previos

Para agilizar el acceso al servicio de traducción, utilizaremos una librería de Python que envuelve el API de Google. Necesitamos agregar lo siguiente en la sección de eggs del buildout:

eggs =
    ...
    simplejson
    goopytrans
    ...

Además, requeriremos que el tipo de contenido utilizado tenga un campo de texto llamado text.

Vista Python

La vista es muy simple. Únicamente agregamos un método para traducir el texto utilizando goopytrans.

import goopytrans

from Products.Five import BrowserView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

class Traducir(BrowserView):

    template = ViewPageTemplateFile('traducir.pt')

    def __init__(self, context, request):
        self.context = context
        self.request = request

    def __call__(self):
        return self.template()

    def translate(self, src, dest):
        text = getattr(self.context,'getText',None)
        if text is None:
            return ''
        return goopytrans.translate(text(), source=src, target=dest)

Template ZPT

Por supuesto, el template es igual de sencillo, pues para este ejemplo solo nos interesa mostrar el texto traducido.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="plonetheme.cursoplone">
<body>
  <div metal:fill-slot="main">
    <h1 tal:content="here/title"></h1>
    <p tal:define="src request/src|string:es;
                   dest request/dest|string:en"
       tal:content="structure python:view.translate(src, dest)">
      Texto
    </p>
  </div>
</body>
</html>

Configuración

La configuración de la vista es la siguiente:

<browser:page
    for="*"
    name="traducir"
    class=".traducir.Traducir"
    permission="zope2.View"
/>

Referencia

los comentarios son proporcionados por Disqus

Editar este documento

El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.

  1. Vaya hacia el articulo Traducir un documento a otro idioma automáticamente en GitHub.
  2. Presione el botón Fork. Este creara su propia copia personal de la documentación.
  3. Edite los archivos usando el editor de texto de GitHub desde su navegador Web
  4. Rellene en la caja de texto Commit message al final de la pagina indicando por que usted realizo estos cambios. Presione el botón Propose file change próximo a ese cuando haya finalizado.
  5. Luego diríjase a la página Send a pull request (no será necesario rellenar ningún texto adicional). Sólo tiene que pulsar el botón Send pull request.
  6. Sus cambios serán consultados por un revisor dentro de la pestaña Pull requests del proyecto en Github.

Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.