Integración de FBT + Crowdin + GitHub

Publicado el

(Jorge Dalmendray) (22 de diciembre , 2020)

En un (artículo anterior) describí cómo integrar el marco FBT (traducción de Facebook) con su aplicación React Native. Concluí ese artículo explicando cómo tuvimos una brecha en el proceso de traducción: la traducción en sí.

Veamos el proceso de traducción un poco más de cerca:

  1. Escriba el código mientras ajusta sus cadenas en fbt etiquetas
  2. Extraiga todas las cadenas del código fuente y téngalas listas para traducir. Esto se administra mediante un script simple en la biblioteca fbt
  3. GAP: Envíe las cadenas para traducir
  4. GAP: Una vez que las traducciones están listas, necesitamos una forma de volver a colocarlas en la aplicación tan rápido como podemos
  5. ¡Beneficios!

Ingrese Crowdin . Crowdin es una solución basada en la nube que agiliza la gestión de la localización para su equipo. Es una herramienta para administrar sus cadenas, contratar traductores y asegurarse de que las traducciones sean precisas y estén dentro del contexto de su aplicación.

En este artículo, explicaré cómo integrar su repositorio de GitHub con Crowdin para cargar automáticamente nuevas cadenas para traducciones y cómo crear automáticamente una solicitud de extracción (PR) cuando sus traducciones estén listas.

Al usar FBT, puede extraer todas las cadenas de su código fuente ejecutando dos secuencias de comandos simples:

  1. fbt-manifest: esta secuencia de comandos encontrará todos los archivos de origen con fbt() llamadas o etiquetas en ellos

  2. fbt-collect: este script recibe la entrada del script fbt-manifest, revisa todos los archivos que contiene y extrae las cadenas y la descripción en un archivo separado, llamémoslo .source\_strings.json

En este punto, debe informar a Crowdin dónde se encuentra su archivo .source\_strings.json, luego leerá a partir de él en un horario establecido por usted, agregue esas cadenas a la plataforma y avise a los traductores sobre las nuevas cadenas listas para traducir.

Pasos para integrar Crowdin con su Repositorio de GitHub

  1. Integre su repositorio de GitHub con Crowdin : esto permitirá Crowdin ar Lea desde su repositorio y luego envíe los RP para su revisión. Nota: Si no usa GitHub, consulte otras integraciones de Crowdin
  2. Cree un archivo de configuración crowdin.yml en la raíz de su proyecto. Aquí es donde le dirá a Crowdin dónde buscar las cadenas de origen y dónde colocar las traducciones una vez que estén adentro. Un ejemplo del contenido del archivo a continuación:

files:
- source: /i18n/fbt/.source\_strings.json
translation: /i18n/fbt/translations/\%two\_letters\_code\%/translation.json

Para obtener más información sobre este archivo de configuración, consulte la documentación de Crowdin .

En este punto, cuando su se actualiza ejecutando los scripts de fbt, se importarán nuevas cadenas a la plataforma de Crowdin según el programa de sincronización establecido al integrarlo con GitHub.

Luego, puede solicitar servicios de traducción profesionales a través de la plataforma o elige usar traducciones automáticas , de cualquier manera, cuando se agregan nuevas traducciones, Crowdin creará un PR en su repositorio. En este punto, puede aceptar y fusionar manualmente los cambios o crear una acción de GitHub para aceptar y fusionar automáticamente los cambios.

Convertir la salida de Crowdin en un formato legible FBT

El paso final antes Puede utilizar las traducciones para ejecutar el script fbt-translate. Este script generará un archivo que la plataforma FBT entiende y es el archivo que eventualmente establecerá en el código.

fbt-translate :

"translate-fbts": "fbt-translate --translations translations/*.json --jenkins > src/translatedFbts.json"

Uso en React :

init({
translations: require("../translatedFbts.json"),
hooks: {
getViewerContext: () => viewerContext,
},
});

Uso en React Native:

  • Para React Native / Android necesitamos convertir la salida del script fbt-translate en un archivo de recursos de cadena de Android. Un script lo ayudará con este paso:

"generate-android-fbt": "babel-node i18n/scripts/generate-android-localizables-executor.js"

Después de ejecutar esto, estará listo para ejecutar su aplicación de Android.

  • Para React Native / iOS, necesitamos convertir la salida de fbt-translate secuencia de comandos en un archivo de recursos de cadena de iOS .No hay un script para lograr esto, pero siempre estamos abiertos a contribuciones 🙂

Reflexiones finales

En este punto, debería poder extraer cadenas de su aplicación, automáticamente cárguelos en Crowdin y luego obtenga un PR cuando las traducciones estén listas. Como habrá notado, algunos pasos de este proceso son manuales. Algunas sugerencias:

Cree acciones de GitHub, pasos de CircleCI (o lo que sea que use para CI / CD) para ejecutar:

  • fbt-manifest y fbt-collect cada vez que fusiona un PR
  • Fusionando los PR creados por Crowdin automáticamente
  • Ejecutando fbt-translate después de fusionar los PR de Crowdin
  • Para Android, ejecutar generate-android-localizables-executor.js después del fbt-translate scrip

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *