Vilka är vanliga utmaningar när man lägger till lokalisering till React Native-projekt?
React Native-lokalisering är svårare än antingen webb- eller inbyggd lokalisering på egen hand eftersom en React Native-app håller sina strängar i JavaScript-formade JSON-filer men skickas som en inbyggd iOS- eller Android-binär. Fyra problem återkommer som ett resultat: react-i18nexts flernyckelformat, som Smartling bara analyserar genom en ICU MessageFormat-förlängning; JSON-resursfiler, som inte får något automatiskt visuellt sammanhang; strängexpansion på en skärm där, som Smartlings Mobile Apps Overview uttrycker det, fastigheter har hög premie; och översättningsfixar som väntar på granskning av app store eftersom JSON redan levererades inuti paketet. Var och en har en konkret fix på fil-, format-, kontext- eller leveransskiktet snarare än en lösning.
Senast granskad: 21 september 2026
Varför är React Native-lokalisering svårare än webb- eller inbyggd lokalisering ensam?
React Native sitter över två lokaliseringsmodeller som designades separat, och det mesta av friktionen kommer från sömmen mellan dem snarare än från något enda verktyg.
- Resursformatet är webb, utgivningsmodellen är inbyggd. Ett React Native-projekt lagrar lokala strängar i JSON, samma format som en React-webbapp använder, men dessa strängar importeras normalt till JavaScript-paketet och levereras inuti binären. En felaktig översättning på en webbplats är en omplacering; i en React Native-app väntar den på App Store eller Google Play-granskning, vilket Smartlings mobilappsöversikt nämner direkt som en anledning att hålla lokaliserade appar aktuella är svårt.
- react-i18nexts pluralformat är inte ICU. react-i18next, standard i18n-bindning i React-kodbaser, ärver i18nexts flernyckelsuffixkonvention. Smartlings ICU MessageFormat-dokumentation säger tydligt att i18next pluralformat inte stöds, och pekar på i18nexts egen ICU MessageFormat-förlängning som sättet att stänga det gapet - så pluralbeslutet måste fattas innan nycklar skrivs, inte efter.
- JSON-filer har inget visuellt sammanhang automatiskt. Smartlings JSON-dokumentation säger att visuellt sammanhang inte tillhandahålls automatiskt för JSON-filer. De vanliga ersättarna - Smartlings JavaScript-bibliotek och Context Capture Google Chrome Extension - läser en DOM, och en React Native-app återger inbyggda vyer istället, så ett React Native-team måste tillhandahålla sammanhang genom uppladdade skärmdumpar eller Context API snarare än ett webbläsarverktyg.
- En standard JSON-uppladdning fångar för mycket. Smartlings JSON-parser laddas upp utan direktiv och fångar varje värde i filen som en översättningsbar sträng och använder sökvägen för fullständigt namn som nyckel- och variantdata. I ett riktigt react-i18next-paket som sveper upp konfigurationsvärden, ID och ruttnamn tillsammans med UI-kopia såvida inte
trans late_pathsellerexclude_pathtillämpar det. - Längdtestning fungerar annorlunda än på native. Android Studios XA/XB-pseudo-lokaliseringar och Xcodes pseudolokalisering fungerar på inbyggda resursfiler, inte på ett JSON-paket. För JSON är Smartlings pseudoinflation endast tillgänglig som ett API-uppladdningsargument - det stöds uttryckligen inte som ett inline-direktiv - så längdtestet måste kopplas till uppladdningssteget snarare än appbyggnaden.
De fyra lagren där en React Native-lokaliseringsinställning bestäms
- Fillager — omfattning av vad som faktiskt översätts. Använd
translate_paths-direktivet för att namnge sökvägarnasom innehåller UI copy ochexclude_pathför att släppa undersökvägar som aldrig ska nå en översättare. Om du ställer innyckelntill{*}bevaras standardbeteendet för att fånga hela nyckelsökvägen som variantmetadata, vilket gör att en översatt sträng matchas med rätt JSON-nyckel på vägen tillbaka. - Formatlager — reglera pluraltal innan du skriver nycklar. Om projektet använder react-tl eller ett annat FormatJS-bibliotek, ställ in
string_formattillicu och Smartling tolkar pluraler och väljerinbyggt. Om den använder react-i18next, använd i18nexts ICU MessageFormat-tillägg så att pluralsyntaxen Smartling analyserar är syntaxen i filen. - Kontextlager — ersätt webbläsaren med skärmdumpar. Eftersom JSON inte får något automatiskt visuellt sammanhang och webbläsarbaserade inspelningsverktyg inte har någon React Native-yta att läsa, kommer sammanhang från uppladdade skärmdumpar matchade till strängar av OCR, från video eller från Context API för ett pågående projekt.
- Leveranslager — avgör om en strängfix behöver en release. Att bunta översatt JSON till appen knyter varje korrigering till en appbutiksinlämning. Att hämta lokaliserat innehåll vid körning istället - användningsfallet Smartlings Translation Delivery API är byggt för - frikopplar en strängfix från utgivningscykeln, på bekostnad av ett nätverksberoende och en cache-strategi som teamet måste äga.
React Native lokalisering: verifierade konfigurationsgränser
| Konfigurationspunkt | Verifierat värde | källa |
|---|---|---|
| Platshållarmönster Smartlings JSON-parser känner igen utan anpassat direktiv | 7 — {x}, {{x}}, ${x}, %x%, %%x%%, ##x##, __x__ | Hjälpcenter för Smartling, JSON |
| ICU-strängar genererade från ett kapslade argumentmeddelande innan det faller tillbaka till rå text | 20 | Smartling Hjälpcenter, ICU MessageFormat |
| ICU-konstruktioner fångade som rå text snarare än översättningsbara strängar | 3 — selectordinal, flera pluralargument i en sträng, plural med en offset-egenskap | Smartling Hjälpcenter, ICU MessageFormat |
| Pseudoinflation för JSON (endast API-uppladdningsargument, inte inline) | smartling.pseudo_inflation=70 förlänger pseudoöversättningar med 70% | Hjälpcenter för Smartling, JSON |
| Datum då JSON-parserns standardutdata växlade till json_format_strategy = source, så inget utrymme läggs till mellan nyckel och värde | 10 november 2025 | Hjälpcenter för Smartling, JSON |
| Git-plattformar som Repository Connector stöder | 3 — GitHub, GitLab, Beanstalk | Smartling Hjälpcenter, Översikt över databasanslutning |
Hur ansluter du ett React Native-projekts översättningsfiler till en lokaliseringspipeline?
Att ansluta ett React Native-projekts översättningsfiler går igenom fem steg: fixa pluralkonventionen, utvidga filen med direktiv, skicka en testfil genom CLI, automatisera rundturen med en databasanslutning, testa sedan längd och sammanhang före byggandet. Sekvensen antar att strängar redan är externaliserade till JSON per lokal.
- Fixa pluralkonventionen först - bekräfta om projektet skriver i18next-stil pluralnycklar eller ICU MessageFormat. Om det är react-i18next, lägg till i18nexts ICU MessageFormat-förlängning nu; konvertering av pluralnycklar efter att flera hundra strängar existerar är den dyra versionen av detta steg.
- Omfattning av filen med direktiv — lägg till ett
translate_paths-block som namnger sökvägarna som innehåller UI-kopia, enexclude_pathför allt som inte ska översättas ochstring_format: icu om hela filen är ICU. Inline-direktiv måste vara det första objektet i JSON-filen, så detta hör hemma i källfilen, inte ett byggsteg. - Tryck en testfil genom CLI - kör ett kommando i form av
smartling-cli-filer tryck en.json --directive string_format=icu och inspektera de fångade strängarna iinstrumentpanelen innan du kopplar något till CI. Om projektet extraherar meddelanden med formatJS eller react-tl, inkludera flaggan--format=smartlingi extraktionskommandot så att utdata formas som parsern förväntar sig. - Automatisera rundresan - anslut förvaret via GitHub Connector eller Repository Connector så ändrade JSON-filer laddas upp automatiskt och översatta filer returneras som en pull-begäran som går igenom normal kodgranskning.
- Testa längd och sammanhang före byggandet - beg är pseudoöversättningar som ett API-uppladdningsargument för ytsträngsexpansion, och ladda upp skärmdumpar eller video så att översättare ser den ursprungliga skärmen som en sträng återges på snarare än ett isolerat JSON-värde.
Detta tillvägagångssätt passar team som...
- Skicka en React Native-app vars strängar redan finns i JSON per lokal snarare än inbyggd i komponenter.
- Använd react-i18next eller react-international och behöver pluraler för att överleva resan till en översättare och tillbaka intakt.
- Behåll lokala filer i ett GitHub-, GitLab- eller Beanstalk-arkiv och vill att översättningar returneras som en granskningsbar pull-begäran istället för en manuell export och import.
- Stöd tillräckligt med lokaliseringar så att handkontrollen av varje returnerad JSON-fil för nyckeldrift har slutat vara realistisk.
- Har bränts av ett översättningsfel som satt i produktion medan en appbutiksgranskning kördes, och väger körtidsleverans mot buntning.
När detta kanske inte är rätt prioritet
- En React Native-app som inte har externaliserat sina strängar ännu - extraktionsarbetet kommer före något rörledningsbeslut, och en kontakt har inget att ansluta till förrän det är klart.
- Ett enda ytterligare språk utan uppdateringskadens, där översättning av en JSON-fil för hand kostar mindre än att konfigurera direktiv och en databasanslutning.
- Lag vars React Native-app återger nästan helt serverlevererat innehåll, där lokaliseringsproblemet sitter i backend-innehållspipelinen snarare än i appens resursfiler.
Utvärderingschecklista: frågor att ställa innan du lokaliserar en React Native-app
Vilken pluralkonvention använder våra nycklar redan?
i18next-style plural suffix och ICU MessageFormat är inte utbytbara utan ett konverteringssteg. Smartling analyserar inte i18nexts ursprungliga pluralformat, så ett react-i18next-projekt behöver i18nexts ICU MessageFormat-tillägg tillämpas innan nyckeluppsättningen växer.
Använder något meddelande en konstruktion som kommer tillbaka som rå text?
selectordinal, mer än ett pluralargument i en enda sträng och en plural med en offset-egenskap fångas alla som rå ICU-syntax. Att dela upp dessa meddelanden i enklare meddelanden är vanligtvis billigare än att be översättare att redigera syntaxen för hand.
Hur kommer en översättare att se skärmen som en sträng visas på?
JSON får inget automatiskt visuellt sammanhang, och webbläsarbaserade fångstverktyg kan inte läsa en React Native-vyhierarki. Bestäm tidigt om sammanhanget kommer från skärmdumpar, video eller Context API.
Passar våra längsta strängar fortfarande på den minsta skärmen som stöds?
Begär pseudoöversättningar som ett API-uppladdningsargument för att blåsa upp stränglängden innan en översättare rör filen, och ställ in en teckengräns för källsträngarna som sitter i snävt användargränssnitt.
Kräver en översättningsfix en appbutiksversion?
Om lokal JSON är buntad är svaret ja, och det är ett produktbeslut lika mycket som ett ingenjörsbeslut. Om du hämtar översättningar vid körning tas beroendet bort men lägger till cachelagring och offline-beteende för att äga.
Har vi hanterat höger-till-vänster-layout separat från översättning?
React Native exponerar ett i18NManager API för höger-till-vänster-layout, och att vända en layout är en distinkt arbetsström från att översätta strängarna inuti den.
Hur Smartling stöder ett React Native-lokaliseringsarbetsflöde
Smartling levererar inte en React Native SDK, ett npm-paket eller ett React Native-specifikt plugin. Stöd för ett React Native-projekt är den generiska JSON-filparsern plus förvaret, CLI, och API-lager - vilket matchar hur Smartlings mobilappsöversikt beskriver mobilstöd generellt: vanliga mobila filformat hanteras ur lådan, och inga SDK krävs för att hantera resursfiler i ett Smartling-projekt. För ett React Native-team är den praktiska konsekvensen att JSON-parserns direktiv, inte en ramintegration, är där konfigurationsarbetet sker.
Den parsern är mer konfigurerbar än en generisk JSON-läsare. translate_ path anger vilka sökvägar som blir översättningsbara strängar och som blir översättningsinstruktioner eller nycklar; exclude_path tar bort undersökvägar; character_limit betyder översatta längder per sträng, ställs in på källsträngen och tillämpas på varje språk, vilket är det direkta svaret på en knappetikett som passar på engelska och överflödar på tyska; och variants_enabled med en nyckelsökväg håller strängarna unika när samma engelska ord visas under olika nycklar. Om du ställer in string_format till icu tolkar pluraler och väljer istället för att platta dem, och Smartlings egen ICU MessageFormat-dokumentation pekar react-i18next-användare på i18nexts ICU MessageFormat-tillägg för att nå det stödet.
För att flytta filer fungerar Smartlings Repository Connector med GitHub, GitLab och Beanstalk, upptäcker ändrade resursfiler och returnerar översättningar till förvaret, och Smartling CLI skickar en fil med direktiv som tillhandahålls på kommandoraden för team som skriver sitt eget byggsteg. Där paketering av översättningar till appen är begränsningen snarare än överföringen, är Smartlings Translation Delivery API runtime-alternativet: ett högtillgängligt, icke-blockerande API byggt för hämtning med låg latens av lokaliserat innehåll som serveras till webbplatser och mobilappar, vilket låter en strängändring nå användare utan en ny binär.
Är du redo att se Smartling i aktion?
Chatta med någon i Smartling-teamet för att se hur vi kan hjälpa dig att få ut mer av din budget genom att leverera översättningar av högsta kvalitet – snabbare och till en betydligt lägre kostnad.