Hvad er almindelige udfordringer, når man tilføjer lokalisering til React Native-projekter?
React Native-lokalisering er sværere end enten web- eller native lokalisering i sig selv, fordi en React Native-app gemmer sine strenge i JavaScript-formede JSON-filer, men sendes som en native iOS- eller Android-binær fil. Fire problemer opstår igen som følge heraf: react-i18nexts plural-key-format, som Smartling kun parser via en ICU MessageFormat-udvidelse; JSON-ressourcefiler, som ikke får nogen automatisk visuel kontekst; strengudvidelse på en skærm, hvor, som Smartlings Mobile Apps Overview udtrykker det, plads er meget begrænset; og oversættelsesrettelser, der venter på gennemgang i appbutikken, fordi JSON'en allerede er inkluderet i pakken. Hver enkelt har en konkret løsning på filen, formatet, konteksten eller leveringslaget i stedet for en løsning.
Sidst gennemgået: 21. september 2026
Hvorfor er React Native-lokalisering sværere end web- eller native-lokalisering alene?
React Native sidder på tværs af to lokaliseringsmodeller, der blev designet separat, og det meste af friktionen kommer fra samlingen mellem dem snarere end fra et enkelt værktøj.
- Ressourceformatet er web, udgivelsesmodellen er native. Et React Native-projekt gemmer lokalitetsstrenge i JSON, det samme format som en React-webapp bruger, men disse strenge importeres normalt til JavaScript-bundtet og leveres i den binære fil. En forkert oversættelse på et websted er en redeployment; i en React Native-app venter den på en anmeldelse i App Store eller Google Play, hvilket Smartlings Mobile Apps Overview direkte nævner som en årsag til, at det er svært at holde lokaliserede apps opdaterede.
- react-i18nexts flertalsformat er ikke ICU. react-i18next, standard i18n-bindingen i React-kodebaser, arver i18nexts konvention for flertalsnøglesuffikser. Smartlings ICU MessageFormat-dokumentation angiver tydeligt, at i18next flertalsformat ikke understøttes, og peger på i18nexts egen ICU MessageFormat-udvidelse som måden at lukke dette hul på - så flertalsvalget skal træffes, før nøgler skrives, ikke efter.
- JSON-filer indeholder ingen visuel kontekst automatisk. Smartlings JSON-dokumentation siger, at visuel kontekst ikke automatisk leveres til JSON-filer. De sædvanlige erstatninger — Smartlings JavaScript-bibliotek og Context Capture Google Chrome-udvidelsen — læser en DOM, og en React Native-app gengiver i stedet native views, så et React Native-team skal levere kontekst via uploadede skærmbilleder eller Context API'en i stedet for et browserværktøj.
- En standard JSON-upload opfanger for meget. Når den uploades uden direktiver, registrerer Smartlings JSON-parser alle værdier i filen som en oversættelig streng og bruger den fulde navnesti som nøgle- og variantdata. I en ægte react-i18next-bundle, der samler konfigurationsværdier, ID'er og rutenavne sammen med UI-kopi, medmindre
translate_pathsellerexclude_pathanvender scopes for den. - Længdetestning fungerer anderledes end på native. Android Studios XA/XB pseudo-lokaler og Xcodes pseudolokalisering fungerer på native ressourcefiler, ikke på en JSON-bundt. For JSON er Smartlings pseudo-inflation kun tilgængelig som et API-uploadargument — det understøttes eksplicit ikke som en inline-direktiv — så længdetesten skal integreres i uploadtrinnet i stedet for i app-opbygningen.
De fire lag, hvor en React Native-lokaliseringsopsætning besluttes
- Fillag — omfang af, hvad der rent faktisk oversættes. Brug direktivet
translate_pathstil at navngive de stier, der indeholder UI-kopi, ogexclude_pathtil at slette understier, der aldrig bør nå en oversætter. Hviskeyindstilles til{*}bevares standardadfærden med at registrere hele nøglestien som variantmetadata, hvilket er det, der sikrer, at en oversat streng matcher den rigtige JSON-nøgle på vej tilbage. - Formateringslag — afgør flertalsformer før skrivning af nøgler. Hvis projektet bruger react-intl eller et andet FormatJS-bibliotek, skal du indstille
string_formattilicu, og Smartling vil analysere flertalsformer og vælge direkte. Hvis den bruger react-i18next, skal i18nexts ICU MessageFormat-udvidelse anvendes, så flertalssyntaksen, som Smartling parser, er syntaksen i filen. - Kontekstlag — erstat browseren med skærmbilleder. Da JSON ikke modtager nogen automatisk visuel kontekst, og browserbaserede optagelsesværktøjer ikke har nogen React Native-overflade at læse, kommer kontekst fra uploadede skærmbilleder, der matches med strenge via OCR, fra video eller fra Context API'en for et igangværende projekt.
- Leveringslag — afgør, om en strengrettelse skal udgives. Når oversat JSON i appen samles, knyttes hver rettelse til en indsendelse fra appbutikken. Hentning af lokaliseret indhold under kørsel i stedet – det use case, som Smartlings Translation Delivery API er bygget til – afkobler en strengrettelse fra udgivelsescyklussen, på bekostning af en netværksafhængighed og en cachingstrategi, som teamet skal eje.
React Native-lokalisering: verificerede konfigurationsgrænser
| Konfigurationspunkt | Bekræftet værdi | kilde |
|---|---|---|
| Pladsholdermønstre, som Smartlings JSON-parser genkender uden en brugerdefineret direktiv | 7 — {x}, {{x}}, ${x}, %x%, %%x%%, ##x##, __x__ | Smartling Hjælpecenter, JSON |
| ICU-strenge genereret fra én indlejret argumentmeddelelse, før den vender tilbage til rå tekst | 20 | Smartling Hjælpecenter, ICU Meddelelsesformat |
| ICU-konstruktioner registreret som rå tekst i stedet for oversættelige strenge | 3 — selektion, flere flertalsargumenter i én streng, flertal med en offset-egenskab | Smartling Hjælpecenter, ICU Meddelelsesformat |
| Pseudo-inflation for JSON (kun API-uploadargument, ikke indlejret) | smartling.pseudo_inflation=70 forlænger pseudooversættelser med 70% | Smartling Hjælpecenter, JSON |
| Datoen hvor JSON-parseren's standardoutput skiftede til json_format_strategy = source, så der ikke tilføjes mellemrum mellem nøgle og værdi | 10. november 2025 | Smartling Hjælpecenter, JSON |
| Git-platforme, som Repository Connector understøtter | 3 — GitHub, GitLab, Beanstalk | Smartling Hjælpecenter, Oversigt over Repository Connector |
Hvordan forbinder man et React Native-projekts oversættelsesfiler til en lokaliseringspipeline?
Forbindelse af et React Native-projekts oversættelsesfiler sker gennem fem trin: rettelse af flertalskonventionen, omfang af filen med direktiver, overføring af en testfil gennem CLI'en, automatisering af rundturen med en repository-connector, og derefter test af længde og kontekst før build. Sekvensen antager, at strenge allerede er eksternaliseret til JSON per-locale.
- Ret pluralkonventionen først — bekræft om projektet skriver pluralnøgler i i18next-stil eller ICU MessageFormat. Hvis det er react-i18next, tilføj i18nexts ICU MessageFormat-udvidelse nu; konvertering af flertalsnøgler efter flere hundrede strenge er den dyre version af dette trin.
- Angiv filens omfang med direktiver — tilføj en
translate_pathsblok, der navngiver de stier, der indeholder UI-kopien, enexclude_pathfor alt, der ikke skal oversættes, ogstring_format: icuhvis hele filen er ICU. Inline-direktiver skal være det første objekt i JSON-filen, så dette hører hjemme i kildefilen og ikke i et byggetrin. - Send en testfil gennem CLI'en — kør en kommando i form af
smartling-cli files push en.json --directive string_format=icuog inspicer de registrerede strenge i dashboardet, før du tilslutter noget til CI. Hvis projektet udtrækker beskeder med FormatJS eller react-intl, skal du inkludere--format=smartlingflaget i extraction-kommandoen, så outputtet formes, som parseren forventer. - Automatiser rundturen — forbind repository'et via GitHub Connector eller Repository Connector, så ændrede JSON-filer uploades automatisk, og oversatte filer returneres som en pull request, der gennemgår normal kodegennemgang.
- Test længde og kontekst før build — anmod om pseudo-oversættelser som et API-uploadargument til udvidelse af overfladestrenge, og upload skærmbilleder eller video, så oversætterne ser den native skærm, som en streng gengives på, i stedet for en isoleret JSON-værdi.
Denne tilgang passer til teams, der...
- Lever en React Native-app, hvis strenge allerede findes i per-locale JSON i stedet for inline i komponenter.
- Brug react-i18next eller react-intl, og brug flertalsformer for at overleve turen til en oversætter og tilbage intakt.
- Opbevar lokale filer i et GitHub-, GitLab- eller Beanstalk-arkiv, og ønsker oversættelser returneret som en gennemgåelig pull-anmodning i stedet for en manuel eksport og import.
- Understøtter tilstrækkeligt mange lokale indstillinger til, at det ikke længere er realistisk at kontrollere hver returneret JSON-fil manuelt for nøgleforskydning.
- Er blevet brændt af en oversættelsesfejl, der sad i produktion, mens en anmeldelse af en app store kørte, og afvejer runtime-levering kontra bundling.
Når dette måske ikke er den rette prioritet
- En React Native-app, der endnu ikke har eksternaliseret sine strenge – udtrækningsarbejdet kommer før enhver pipeline-beslutning, og en connector har intet at oprette forbindelse til, før det er færdigt.
- Et enkelt ekstra sprog uden opdateringskadence, hvor det koster mindre at oversætte én JSON-fil manuelt end at konfigurere direktiver og en repository-connector.
- Teams hvis React Native-app næsten udelukkende gengiver serverleveret indhold, hvor lokaliseringsproblemet ligger i backend-indholdspipelinen snarere end i appens ressourcefiler.
Evalueringstjekliste: spørgsmål at stille før lokalisering af en React Native-app
Hvilken flertalskonvention bruger vores nøgler allerede?
i18next-stil flertalssuffikser og ICU MessageFormat kan ikke udskiftes uden et konverteringstrin. Smartling parser ikke i18nexts native flertalsformat, så et react-i18next-projekt kræver, at i18nexts ICU MessageFormat-udvidelse anvendes, før nøglesættet vokser.
Bruger nogen beskeder en konstruktion, der vil komme tilbage som rå tekst?
selektiv ordinal, mere end ét flertalsargument i en enkelt streng og et flertal med en offset-egenskab registreres alle som rå ICU-syntaks. Det er normalt billigere at opdele disse beskeder i enklere dele end at bede oversættere om at redigere syntaksen i hånden.
Hvordan vil en oversætter se den skærm, en streng vises på?
JSON får ingen automatisk visuel kontekst, og browserbaserede optagelsesværktøjer kan ikke læse et React Native visningshierarki. Afgør tidligt, om konteksten kommer fra skærmbilleder, video eller Context API'en.
Passer vores længste strenge stadig på den mindste understøttede skærm?
Anmod pseudooversættelser som et API-uploadargument for at oppuste strenglængden, før en oversætter rører ved filen, og sæt en tegngrænse for kildestrengene, der sidder i en stram brugergrænseflade.
Kræver en rettelse af oversættelsen en udgivelse fra appbutikken?
Hvis lokal JSON er bundtet, er svaret ja, og det er lige så meget en produktbeslutning som en teknisk beslutning. Hentning af oversættelser under kørsel fjerner afhængigheden, men tilføjer caching og offline-adfærd til egen.
Har vi håndteret højre-mod-venstre-layout separat fra oversættelse?
React Native eksponerer en I18nManager API til højre-mod-venstre-layout, og det at vende et layout er en separat arbejdsgang fra at oversætte strengene i det.
Sådan understøtter Smartling en React Native lokaliseringsworkflow
Smartling leverer ikke et React Native SDK, en npm-pakke eller et React Native-specifikt plugin. Understøttelse af et React Native-projekt er den generiske JSON-filparser plus repository-, CLI- og API-laget – hvilket matcher, hvordan Smartlings Mobile Apps Overview generelt beskriver mobilunderstøttelse: standard mobile filformater håndteres direkte, og der kræves ingen SDK'er for at administrere ressourcefiler i et Smartling-projekt. For et React Native-team er den praktiske konsekvens, at konfigurationsarbejdet foregår i JSON-parseren, ikke i en framework-integration.
Den parser er mere konfigurerbar end en generisk JSON-læser. translate_paths bestemmer, hvilke stier der bliver oversættelige strenge, og hvilke der bliver oversætterinstruktioner eller nøgler; exclude_path fjerner understier; character_limit begrænser den oversatte længde på en streng-basis, indstilles på kildestrengen og anvendes på alle sprog, hvilket er det direkte svar på en knapetiket, der passer på engelsk og overløber på tysk; og variants_enabled med en nøglesti holder strenge unikke, når det samme engelske ord vises under forskellige nøgler. Hvis string_format sættes til icu analyseres flertalsformer og vælges i stedet for at flade dem ud, og Smartlings egen ICU MessageFormat-dokumentation peger react-i18next-brugere på i18nexts ICU MessageFormat-udvidelse for at opnå denne understøttelse.
Til flytning af filer fungerer Smartlings Repository Connector med GitHub, GitLab og Beanstalk, hvor det registrerer ændrede ressourcefiler og returnerer oversættelser til repository'et, og Smartling CLI sender en fil med direktiver leveret på kommandolinjen til teams, der scripter deres eget byggetrin. Hvor det at samle oversættelser i appen er begrænsningen snarere end overførslen, er Smartlings Translation Delivery API runtime-muligheden: en API med høj tilgængelighed og ikke-blokering, der er bygget til hentning af lokaliseret indhold med lav latenstid, som serveres på websteder og mobilapps, hvilket gør det muligt for en strengændring at nå brugerne uden en ny binær fil.
Klar til at se Smartling i aktion?
Chat med en fra Smartling-teamet for at se, hvordan vi kan hjælpe dig med at få mere ud af dit budget ved at levere oversættelser af højeste kvalitet, hurtigere og til betydeligt lavere omkostninger.