Cómo hace i18n Astro

Por
Yan Thomas
Sarah Rainsberger

Bienvenido, mundo.

“Astro is for everyone” es un dicho común en nuestro equipo. Comenzó como un dicho para ayudarnos a diseñar APIs y relacionarnos con nuestros usuarios. Pero a medida que Astro ha evolucionado, este valor fundamental de accesibilidad se ha abierto camino en más que solo el desarrollo de features.

Astro es para todos

Si Astro está realmente hecho para todos, ¡entonces debes incluir a la mayoría del planeta (83%) que no habla inglés! Hace 18 meses, decidimos tomárnoslo en serio e invertir en revisar por completo nuestra documentación, y esto incluyó una iniciativa mayor de internacionalización (i18n).

Hoy, los docs de Astro han sido traducidos oficialmente a 12 idiomas diferentes con más de 1000 páginas traducidas en total. Incluso nuestro tutorial introductorio completo (32 páginas en total) ha sido traducido a seis idiomas diferentes. Estos idiomas cubren miles de millones de personas en más de 50 países, abriendo la puerta a muchos que de otra manera lucharían para usar Astro de forma fiable.

Homepage de Astro docs con el menú desplegable de language picker de idiomas disponibles

Nuestras traducciones están casi enteramente compuestas por contribuciones open-source, enviadas por voluntarios de todo el mundo. Estamos tan, tan agradecidos con todos los que han contribuido hasta ahora.

Hoy es nuestra celebración oficial del Community Day, así que queríamos compartir cómo construimos este motor de internacionalización en Astro. Tenemos la suerte de tener una de las mejores comunidades en open-source, y queríamos compartir algunos de nuestros éxitos — y desafíos — contigo en este post.

Reconociendo contribuciones non-code

A menudo, los proyectos open-source se enfocan demasiado en contribuciones de código (issues, pull requests, bug fixes, new features) e ignoran otras formas de apoyo. Una de las decisiones más importantes y tempranas que tomamos con Astro fue cambiar esto, y específicamente destacar y reconocer las contribuciones non-code desde el día uno.

Esto fue escrito explícitamente en nuestro documento GOVERNANCE.md, que establecía que alguien podía convertirse en maintainer de Astro por cualquier medida y forma de contribución, no solo líneas de código.

Hoy, algunos de nuestros mejores nuevos maintainers empiezan a través de contribuciones non-code:

  • Documentación
  • Traducciones
  • Soporte
  • Community-building y advocacy

Onboarding de contributors

Completar con éxito tu primera contribución open-source es a veces la parte más difícil. Con eso en mente, construimos cuidadosamente el journey de nuestros i18n contributors con la menor fricción y barreras de entrada posibles.

No todos los contributors potenciales estarán familiarizados con el workflow de GitHub que involucra git, branching, merge conflicts, etc. Puede parecer una elección extraña meter a contributors non-code en un entorno tan code-heavy. Sin embargo, con nuestro código almacenado en GitHub, podemos mantener nuestro contenido en una plataforma abierta, mientras también mantenemos el contenido traducido cerca del código del propio sitio de docs.

Esto significa que cada contributor, para cada tipo de contribución, usa la misma plataforma y tiene la misma experiencia de contribución. En lugar de pensar en la internacionalización como algo “aparte”, es parte de la documentación. Nuestra lista de PRs abiertos incluye traducciones junto con actualizaciones de contenido y fixes de código de infraestructura del sitio.

Una selección de PRs abiertos de Astro docs en GitHub, mostrando PRs de traducción junto a un PR para añadir nuevo contenido de guía CMS.

Para ayudar a la gente a sentirse cómoda participando, y darles una dirección clara sobre cómo empezar, creamos una Translation Guide completa además de nuestro CONTRIBUTING.md habitual. Esto contiene no solo los detalles técnicos sobre cómo funcionan nuestras traducciones sino que también está lleno de consejos y tips para cualquier principiante que pueda sentirse abrumado ante la perspectiva de contribuir.

Comunicación

Nuestros traductores no solo están totalmente integrados en nuestro proceso de “docs as code”, sino también en las discusiones más amplias de la comunidad, y la toma de decisiones.

Nuestros traductores coordinan y conspiran en el servidor de Discord de Astro en su propio canal #docs-i18n y hilos dedicados específicos para cada idioma. Es un lugar especial donde son libres de hablar en (o sobre) su propio idioma mientras trabajan en las traducciones.

Al mismo tiempo, nuestros traductores son una parte activa y comprometida de la comunidad y discusión más amplia de Astro, participando en conversaciones generales o off-topic. También a menudo los encontrarás en canales más específicos como #dev o #docs, donde gracias a su participación, hemos podido entregar varias mejoras de internacionalización tanto a nuestros docs como a nuestro producto core a partir de su feedback.

Y por supuesto, también los encontrarás dejando links de docs y respondiendo preguntas en nuestros hilos de #support ¡porque conocen los docs tan bien por haberlos traducido!

Automatización y Tooling

Es una cosa saber cómo empezar. Pero, los traductores también necesitan saber dónde empezar.

Liderado por el querido maintainer de Astro Hippo, nuestro equipo de docs construyó un Translation Tracker personalizado, ¡la joya de la corona de nuestra automatización i18n! Trackea cada página de docs marcada como “available to translate” por idioma e informa su propio estado actual:

  • totalmente traducido y actualizado;
  • necesitando una actualización para coincidir con la documentación en inglés;
  • o, aún no traducido.
La tabla del Translation Tracker, mostrando idiomas en la parte superior, páginas individuales en el lateral, y varios símbolos en cada celda, como una X para contenido faltante o un check verde para actualizado.

Internamente, usa el git history para comparar cambios entre idiomas, define el estado de cada página a través de algunos checks, y también genera un link de GitHub con todos los commits que una página necesita para estar sincronizada con la versión en inglés. Está potenciado por GitHub Actions, directamente desde nuestro docs repo.

Una pequeña selección del resumen del Translation Tracker por idioma, mostrando un idioma expandido para listar las traducciones necesarias para ese idioma.

Nuestro Translation Tracker también usa datos de GitHub para listar PRs de traducción abiertos que necesitan reviews de native speakers, ¡lo cual es una gran forma de empezar sin la presión de abrir tu propio PR!

Una lista de PRs abiertos que necesitan reviews, por ejemplo 'i18n(ko) translate rss.mdx'

Con una imagen clara de cuáles son nuestras necesidades de traducción, podemos dar rápidamente la bienvenida y onboarding a nuevos contributors de i18n que ya saben qué contribuciones se necesitan.

Impulsando decisiones a través de datos

Inicialmente, tomamos decisiones de traducción (ej. qué idiomas soportar en los docs) basándonos únicamente en la emoción y disponibilidad de nuestra comunidad para ayudarnos. Esto resultó ser una buena estrategia cuando estábamos empezando. Pero a medida que los docs de Astro crecieron, necesitábamos tomar decisiones más informadas.

Una de las decisiones difíciles que tuvimos que tomar al principio fue decidir qué idiomas soportaríamos oficialmente con traducciones. O más bien, cuáles no. Soportar oficialmente un idioma es un compromiso bastante grande, lo que desafortunadamente significa que no podemos aceptar todos los idiomas que se nos proponen. Nuestro goal era encontrar un balance entre idiomas más fáciles de mantener para nosotros y los que tendrían mayor impacto. El acceso a información y educación de calidad no es el mismo en todas partes — y como nosotros somos los que tenemos el privilegio de la proficiencia en inglés, estamos en una posición de fuerza para abordar estas inequidades y abogar por las comunidades que más necesitan traducciones.

Para ayudarnos a tomar estas decisiones difíciles, analizamos varios data points como el número de miembros de cada idioma en nuestro Discord, una lista de países por idioma, demografía de varias encuestas de desarrolladores, y el EF’s English Proficiency Index. Empezando con goals claros, pudimos elegir idiomas que nos ayudaran a mantenernos enfocados en satisfacer las necesidades de la comunidad global de desarrolladores.

Apoyando a nuestros contributors

Los últimos meses en particular se han centrado en apoyar y reconocer el trabajo masivo hecho por nuestros equipos de internacionalización. Mientras que Astro Docs siempre ha tenido un “Face Pile” con los avatares de GitHub de cada contributor del repositorio, ahora mostramos un face pile dedicado a traductores en cada versión traducida del sitio. Nuestros populares Astro Badges comunitarios ahora también muestran contribuciones únicas de i18n para reconocer tanto las traducciones como las revisiones de traducciones.

Cuatro Astro badges, mostrando varios niveles de logro para miembros de la comunidad, como Universal Translator por mergear 40 i18n PRs o Rosetta Stone por revisar 40 i18n PRs

Gracias a que el proyecto open-source de Astro tiene tantos sponsors y backers generosos, podemos emitir Community Awards monetarios regulares. Al momento de publicar, ya hemos dado más de $4000 en fondos de Open Collective directamente a nuestra comunidad internacional. Otras formas de recompensas incluyen items de swag de edición limitada del Astro Swag Shop (todos los ingresos van directamente de vuelta a nuestro Open Collective), stipends, y sponsorships.

Mirando al futuro

Estamos encantados con los resultados de nuestro enfoque intencional en la internacionalización (i18n) de nuestra documentación, y tan humildes y agradecidos por el entusiasmo y aprecio que hemos recibido. Sabemos que el éxito de cualquier proyecto open-source depende de apoyar a cada miembro de tu comunidad.

Esto es solo el principio, ¡y estamos súper emocionados de compartir más sobre nuestra historia de internacionalización con la comunidad open-source más amplia! En particular, esperamos generalizar y empaquetar nuestras herramientas home-grown como nuestro Translation Tracker para que puedan ser usadas por otros proyectos open-source. ¡Así que estad atentos, y únete a nosotros, mientras construimos una nueva era para la internacionalización open-source!