Integrering av FBT + Crowdin + GitHub

(Jorge Dalmendray) (22. des. , 2020)

I en (forrige artikkel) skisserte jeg hvordan du integrerer FBT (Facebook Translation) -rammeverket med React Native-applikasjonen din. Jeg konkluderte med den artikkelen som forklarte hvordan vi hadde et gap i oversettelsesprosessen: selve oversettelsen.

La oss se på oversettelsesprosessen litt nærmere:

  1. Skriv kode mens du pakker inn strengene dine i fbt -koder
  2. Trekk ut alle strengene fra kildekoden og ha dem klare for oversettelse. Dette administreres av et enkelt skript i fbt-biblioteket
  3. GAP: Send strengene til oversettelse
  4. GAP: Etter at oversettelsene er inne, trenger vi en måte å sette dem tilbake i appen så raskt som vi kan
  5. Profitt!

Skriv inn Crowdin . Crowdin er en skybasert løsning som effektiviserer lokaliseringsadministrasjon for teamet ditt. Det er et verktøy for å administrere strengene dine, ansette oversettere og sørge for at oversettelsene er nøyaktige og innenfor rammen av appen din.

I denne artikkelen forklarer jeg hvordan du integrerer GitHub-repoen din med Crowdin for automatisk å laste opp nye strenger. for oversettelser og hvordan du automatisk oppretter en Pull Request (PR) når oversettelsene dine er klare.

Når du bruker FBT, kan du trekke ut alle strengene fra kildekoden din ved å kjøre to enkle skript:

  1. fbt-manifest: Dette skriptet finner alle kildefiler med fbt() samtaler eller -koder i seg

  2. fbt-collect: Dette skriptet mottar inngangen til fbt-manifest skriptet, går gjennom alle filene i det og trekker ut strengene og beskrivelsen til en egen fil, la oss kalle det .source\_strings.json

På dette punktet må du fortelle Crowdin hvor .source\_strings.json -filen din bor, den vil da lese fra den etter en tidsplan du har valgt, legg til strengene på plattformen og varsle oversetterne om de nye strengene som er klare for oversettelse.

Trinn for å integrere Crowdin med din GitHub repo

  1. Integrer GitHub repo med Crowdin : Dette vil tillate Crowdin til r ead fra repoen, og send deretter PR-er for gjennomgang. Merk: Hvis du ikke bruker GitHub, kan du se andre Crowdin-integrasjoner
  2. Opprett en crowdin.yml konfigurasjonsfil i roten til prosjektet. Her vil du fortelle Crowdin hvor du skal hente kildestrengene og hvor du skal sette oversettelser når de er i. Et eksempel på filinnholdet nedenfor:
files:
- source: /i18n/fbt/.source\_strings.json
translation: /i18n/fbt/translations/\%two\_letters\_code\%/translation.json

For mer informasjon om denne konfigurasjonsfilen, se Crowdins dokumentasjon .

På dette tidspunktet når .source\_strings.json -filen oppdateres ved å kjøre fbts skript, nye strenger vil bli importert til Crowdins plattform avhengig av synkroniseringsplanen som er satt når den integreres med GitHub.

Du kan da bestille profesjonelle oversettelsestjenester gjennom plattformen eller velg å bruke maskinoversettelser , uansett når nye oversettelser blir lagt til, Crowdin vil skape en PR tilbake i repoen din. På dette tidspunktet kan du manuelt godta og slå sammen endringene eller opprette en GitHub-handling for automatisk å godta og slå sammen endringene!

Konvertering av Crowdin-utdata til et FBT-lesbart format

Det siste trinnet før du kan bruke oversettelsene til å kjøre fbt-translate skript. Dette skriptet genererer en fil som FBT-plattformen forstår og er filen du til slutt vil sette i koden.

fbt-translate :

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

Bruk i React :

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

Bruk i React Native:

  • For React Native / Android vi trenger å konvertere utdata fra fbt-translate skript til en Android-ressursfil. Et skript vil hjelpe deg med dette trinnet:

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

Etter å ha kjørt dette, er du klar til å kjøre Android-applikasjonen.

  • For React Native / iOS må vi konvertere utdata fra fbt-translate skript til en iOS-strengressursfil .Det er ikke noe manus for å oppnå dette, men vi er alltid åpne for bidrag 🙂

Avsluttende tanker

På dette tidspunktet bør du kunne trekke ut strenger fra appen din automatisk last dem opp til Crowdin og få deretter en PR når oversettelsene er klare. Som du kanskje har lagt merke til, er noen få trinn i denne prosessen manuelle. Noen få forslag:

Opprett GitHub-handlinger, CircleCI-trinn (eller hva du bruker for CI / CD) for å utføre:

  • fbt-manifest og fbt-collect hver gang du slår sammen en PR
  • Slår sammen PR-er opprettet av Crowdin automatisk
  • Kjører fbt-translate etter at Crowdin PRs er slått sammen
  • For Android kjører du generate-android-localizables-executor.js etter fbt-translate -skriptet

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *