(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:
- Skriv kode mens du indpakker dine strenge i
fbt
tags - Uddrag alle strengene fra kildekoden, og få dem klar til oversættelse. Dette administreres af et simpelt script i fbt-biblioteket
- GAP: Send strengene til oversættelse
- 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
- 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:
-
fbt-manifest
fbt()
opkald eller
tags i dem -
fbt-collect
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
- 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
- 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.
"translate-fbts": "fbt-translate --translations translations/*.json --jenkins > src/translatedFbts.json"
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
ogfbt-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
efterfbt-translate
scrip