Herramientas para multilingüismo en rOpenSci

Maëlle Salmon, rOpenSci

Lo que teniamos al principio

  • Un guía como libro Quarto;

  • Interés por usar DeepL API;

  • Uso de Git y GitHub para colaborar.

https://babel-es.netlify.app/

papél con las palabras 'TO DO'

Lo que nos faltaba

  • Manera de publicar un libro Quarto multilingüe;

  • Manera de usar DeepL API para traducir Markdown.

Picture by Miro Vrlik on Pexels.

herramientas como tijeras

Libro Quarto multilingüe: babelquarto

Primero nos aseguramos que no seria nativo a Quarto muy pronto: https://github.com/quarto-dev/quarto-cli/issues/275

Picture by Anna Shvets on Pexels.

'?' dibujado con perlas

Nuestro primero libro Quarto multilingüe

https://devdevguide.netlify.app/

Captura de pantalla del dev guide rOpenSci, versión de desarrollo

Libros multilingües con babelquarto

Cada capítulo: filepath.qmd y filepath.es.qmd.

  • babelquarto::register_main_language("en")

  • babelquarto::register_further_languages(c("es", "pt"))

  • babelquarto::render_book()

_quarto.yml

Con la ayuda de babelquarto::register_,

babelquarto:
  mainlanguage: en
  languages: ['es', 'pt']
title-es: title in es
description-es: description in es
author-es: author in es
title-pt: title in pt
description-pt: description in pt
author-pt: author in pt

Sitios web multilingües: Quarto

https://www.joelnitta.com/

Captura de pantalla del sitio web de Joel Nitta en japonés

Cómo funciona babelquarto

  • Construye los dos sitios.

  • Añade los enlaces con {xml2}: XPath para modificar HTML.

Cómo traducir Markdown

  • Traducir Markdown desde cero? 😭

  • Copiar y pegar en DeepL o Google Translate? 😭

  • Usar babeldown y después revisión por humanos! 🎉

Traducir Markdown con babeldown

  • Respecta el formato Markdown.

  • Envia texto a la API de DeepL.

Picture by Heiner on Pexels.

buzón

Usar babeldown

  • Registra con DeepL.

  • Hello World.

Sys.setenv(DEEPL_API_KEY = keyring::key_get("deepl"))
Sys.setenv("DEEPL_API_URL" = "https://api.deepl.com")
babeldown::deepl_translate_markdown_string(
  "Je suis contente d'être à **Barcelone**",
  source_lang = "fr",
  target_lang = "es",
  formality = "less"
)
[1] "Me alegro de estar en **Barcelona**"

Cómo funciona babeldown

  • Transforma Markdown en XML usando {tinkr} ({commonmark} + {xml2} + {xslt}).
  • Protege algunas cosas (Hugo shortcodes).
  • Envia XML a la API de DeepL.
  • Envia también fragmentos de YAML a la API de DeepL.
  • Crea Markdown de nuevo.

Usar babeldown, con git y GitHub (1/3)

Diagrama de dos partes. A la izquierda una carpeta de hojas de Hugo en la rama new-post con el artículo en español con el texto 'Hola' y una imagen; a la derecha la carpeta de hojas de Hugo en la misma rama con el post en español con el texto 'Hola', el post con el nombre de archivo de destino en inglés con el texto 'Hola', y la imagen.

Usar babeldown, con git y GitHub (2/3)

Diagrama con dos partes. A la izquierda la carpeta de hojas de Hugo en la rama de auto-translate con el artículo en español con el texto 'Hola', el post con el nombre de archivo de destino en inglés con el texto 'Hola', y la imagen; a la derecha lo único que cambió es que el contenido del post con el nombre de archivo de destino en inglés es ahora 'Hello'.

Usar babeldown, con git y GitHub (3/3)

Dibujo del pull request de la rama auto-translate a la rama new-post donde la diferencia es que ahora se ha traducido al inglés el contenido de la entrada con el nombre de archivo de destino en inglés.

Lo que queda por hacer

  • Mejor soporte de sitios web multilingües con babelquarto;

  • Uso de git diff con babeldown.

Lo que podéis ya probar