Integrering af FBT + Crowdin + GitHub

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

I en (forrige artikel) skitserede jeg hvordan man integrerer FBT (Facebook Translation) -rammen med din React Native-applikation. Jeg konkluderede den artikel, der forklarede, hvordan vi havde et hul i oversættelsesprocessen: selve oversættelsen.

Lad os se på oversættelsesprocessen lidt nærmere:

  1. Skriv kode mens du indpakker dine strenge i fbt tags
  2. Uddrag alle strengene fra kildekoden, og få dem klar til oversættelse. Dette administreres af et simpelt script i fbt-biblioteket
  3. GAP: Send strengene til oversættelse
  4. GAP: Når oversættelser er inde, har vi brug for en måde at sætte dem tilbage i appen så hurtigt som vi kan
  5. tjene penge!

Indtast Crowdin . Crowdin er en skybaseret løsning, der strømliner lokaliseringsstyring for dit team. Det er et værktøj til at styre dine strenge, ansætte oversættere og sørge for, at oversættelser er nøjagtige og inden for rammen af ​​din app.

I denne artikel forklarer jeg, hvordan du integrerer din GitHub-repo med Crowdin for automatisk at uploade nye strenge til oversættelser og hvordan man automatisk opretter en Pull Request (PR), når dine oversættelser er klar.

Når du bruger FBT, kan du udtrække alle strenge fra din kildekode ved at køre to enkle scripts:

  1. fbt-manifest: Dette script finder alle kildefiler med fbt() opkald eller tags i dem

  2. fbt-collect: Dette script modtager input fra fbt-manifest scriptet, gennemgår alle filerne i det og udtrækker strengene og beskrivelsen i en separat fil, lad os kalde det .source\_strings.json

På dette tidspunkt skal du fortælle Crowdin, hvor din .source\_strings.json -fil bor, den læser derefter ud fra det på en tidsplan, der er indstillet af dig, skal du tilføje disse strenge til platformen og advare oversættere om de nye strenge klar til oversættelse.

Trin til integration af Crowdin med din GitHub repo

  1. Integrer din GitHub repo med Crowdin : Dette tillader Crowdin til r læs fra din repo og indsend derefter PRer til gennemgang. Bemærk: Hvis du ikke bruger GitHub, se andre Crowdin-integrationer
  2. Opret en crowdin.yml konfigurationsfil i roden af ​​dit projekt. Her fortæller du Crowdin, hvor kildestrengene skal hentes, og hvor de skal placeres, når de er i. Et eksempel på filindholdet nedenfor:
files:
- source: /i18n/fbt/.source\_strings.json
translation: /i18n/fbt/translations/\%two\_letters\_code\%/translation.json

For mere information om denne konfigurationsfil, se Crowdins dokumentation .

På dette tidspunkt, når din .source\_strings.json filen opdateres ved at køre fbts scripts, nye strenge importeres til Crowdins platform afhængigt af den synkroniseringsplan, der er indstillet, når den integreres med GitHub.

Du kan derefter bestille professionelle oversættelsestjenester gennem platformen eller vælg at bruge maskinoversættelser , uanset hvad, når nye oversættelser tilføjes, Crowdin vil oprette en PR tilbage i din repo. På dette tidspunkt kan du manuelt acceptere og flette ændringerne eller oprette en GitHub-handling for automatisk at acceptere og flette ændringerne!

Konvertering af Crowdin-output til et FBT-læsbart format

Det sidste trin før du kan bruge oversættelserne til at køre fbt-translate script. Dette script genererer en fil, som FBT-platformen forstår og er den fil, du til sidst indstiller i koden.

fbt-translate :

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

Brug i React :

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

Brug i React Native:

  • For React Native / Android vi er nødt til at konvertere output fra fbt-translate scriptet til en Android-strengressourcefil. Et script hjælper dig med dette trin:

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

Når du har kørt dette, er du klar til at køre din Android-applikation.

  • For React Native / iOS er vi nødt til at konvertere output fra fbt-translate script til en iOS-strengressourcefil .Der er ikke noget script til at opnå dette, men vi er altid åbne for bidrag 🙂

Afsluttende tanker

På dette tidspunkt skal du være i stand til at udtrække strenge fra din app automatisk upload dem til Crowdin, og få derefter en PR, når oversættelserne er klar. Som du måske har bemærket, er et par trin i denne proces manuelle. Et par forslag:

Opret GitHub-handlinger, CircleCI-trin (eller hvad du end bruger til CI / CD) til at udføre:

  • fbt-manifest og fbt-collect hver gang du fletter en PR
  • Flet PR oprettet af Crowdin automatisk
  • Kører fbt-translate efter at Crowdin PRer er slået sammen
  • For Android skal du køre generate-android-localizables-executor.js efter fbt-translate scrip

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *