es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JupyterLab i18next: ¿Cómo extraer cadenas traducibles de los cuadernos de JupyterLab?

Me gustaría ofrecer mis cuadernos de JupyterLab en varios idiomas (de-de, en-us).

Para hacerlo, marqué algunas cadenas.

import gettext

domain = 'my_application_name'
localedir = '.'
translate = gettext.translation(domain, localedir, fallback=True)
_ = translate.gettext # using _ as name for the translation function is kind of standard in python
                      # do not confuse with private markers or underscore library
                      # https://github.com/serkanyersen/underscore.py

print(_('Hello World'))

print(_('another translation key'))

Luego descargué xgettext.exe para Windows desde https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-static-64.zip

e intenté extraer las cadenas con el siguiente comando de consola:

xgettext.exe my_notebook.ipynb

Obtuve la advertencia:

xgettext.exe: warning: file 'my_notebook.ipynb' extension 'ipynb' is unknown; will try C

y no se generó ningún archivo de salida.

==> ¿Cuál es la forma recomendada para extraer cadenas traducibles de los cuadernos de JupyterLab?

Preferiría una solución en la que no se requiera un binario adicional (como xgettext.exe) en Windows.

¿JupyterLab proporciona alguna característica/extensión de traducción (no para la interfaz de usuario, sino para los cuadernos)?

Como posible solución alternativa, el cuaderno podría convertirse primero en un archivo de Python con nbconvert y luego pasarse a xgettext.exe. Sin embargo, eso parece ser demasiado complicado. Debería haber una solución más elegante.

(La extracción de cadenas traducibles de archivos de Python sí funciona en Windows, por ejemplo:

xgettext.exe my_python_file.py

)

El flujo de trabajo aproximado para las traducciones parece ser:

  1. Marcar todas las cadenas que deben ser traducidas
  2. Generar un archivo de plantilla de traducción a partir de las cadenas (“lista maestra” o archivo Portable Object Template – POT)
  3. Traducir el archivo de plantilla de traducción
  4. Aplicar el archivo de traducción

Relacionado:

https://github.com/jupyterlab/jupyterlab/issues/11753
https://docs.python.org/3/library/i18n.html
https://www.mattlayman.com/blog/2015/i18n/

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Actualmente, no hay una solución incorporada en JupyterLab para la internacionalización de cuadernos. Sin embargo, existen algunas extensiones de terceros disponibles que agregan esta funcionalidad. Una de estas extensiones es jupyterlab-i18n, que te permite crear, gestionar y aplicar traducciones a tus cuadernos desde dentro de JupyterLab.

    Para usar jupyterlab-i18n, puedes seguir los siguientes pasos:

    1. Instala la extensión jupyterlab-i18n usando pip:
      pip install jupyterlab-i18n
      
    2. Habilita la extensión en JupyterLab ejecutando el siguiente comando:
      jupyter labextension install @jupyterlab/i18n
      
    3. Marca las cadenas que deseas traducir utilizando la función _() como se muestra en el ejemplo en la pregunta.
    4. Genera la plantilla del archivo de traducción (archivo .pot) ejecutando el siguiente comando:

      jupyter lab babel my_notebook.ipynb --output-dir=./translations --create-potfile
      

      Esto creará un archivo .pot en el directorio ./translations. Este archivo contiene una lista de todas las cadenas traducibles en tu cuaderno.

    5. Traduce el archivo .pot a los idiomas deseados utilizando una herramienta como Poedit o Lokalize.

    6. Aplica la traducción a tu cuaderno ejecutando el siguiente comando:

      jupyter lab babel my_notebook.ipynb --output-dir=./translations --locale=de_DE --merge
      

      Esto creará una versión traducida de tu cuaderno (my_notebook_de_DE.ipynb) en el directorio ./translations, con todas las cadenas traducidas reemplazadas.

    Ten en cuenta que el comando jupyter lab babel utiliza la biblioteca Babel internamente para extraer, gestionar y aplicar traducciones a tus cuadernos. Es posible que necesites instalar la biblioteca Babel por separado si aún no está instalada.

Comments are closed.