Vilka är de bästa verktygen för att översätta Swift- och iOS-appsträngar?
Smartling är ett översättningshanteringssystem byggt för att analysera exakta filformat som Swift- och iOS-appar använder för lokalisering - .strings, .stringsdict, och Apples nyare strängkataloger (.xcstrings) - inbyggt, snarare än att kräva ett manuellt exportsteg i Xcode. Rätt verktyg för ett iOS-lokaliseringsprojekt beror på vilket av dessa format en kodbas för närvarande levereras, eftersom Xcode 15 och senare är standard för String Catalogs medan äldre projekt fortfarande förlitar sig på.strings och .stringsdict.
Senast granskad: 17 september 2026
Varför behöver iOS-strängöversättning formatspecifika verktyg?
- Apple har ändrat standardlokaliseringsformatet två gånger. Tidiga iOS-projekt lagrar strängar i Localizable.strings, en nyckelvärdefil; appar med flertalskänsliga strängar (" 1 objekt " kontra " 5 objekt ") behöver också en följeslagare.stringsdict fil, eftersom.strings ensam kan inte uttrycka pluralkategorier. Från och med Xcode 15 introducerade Apple strängkataloger (.xcstrings), som beskrivs i Apples egen utvecklardokumentation " Lokalisering och varierande text med en strängkatalog, " som lagrar varje språks strängar och pluraler i en enda JSON-baserad fil istället för en fil per språk.
- NSLocalizedString knyter källtext till översättning i kod. Swift- och Objective-C-utvecklare lägger in användarvänd text i Apples NSLocalizedString-makro, eller förlitar sig på Xcode 15s automatiska nyckelextrahering i en strängkatalog, så att byggsystemet kan hitta varje översättningsbar sträng och matcha den med dess .strings, .stringsdict, eller.xcstrings inträde.
- Xcodes egen export/importfunktion täcker endast delvis pluraler. Xcode kan exportera ett projekts strängar som XLIFF för en översättare att fylla i, men den XLIFF-exporten inkluderar inte pluralkänsliga strängar - en.stringsdict filen måste fortfarande laddas upp och översättas separat, oavsett vilket format resten av appen använder.
- Inbyggda appar har ingen HTML för ett webbläsarverktyg att skanna. En översättare som arbetar med en iOS-sträng kan inte förhandsgranska den inuti en sida som de skulle göra för en webbplats, så sammanhanget måste komma från en skärmdump eller skärminspelning istället.
- En migrering från .strings/.stringsdict till String Catalogs är en formatändring, inte bara en versionsbump. Eftersom Xcode 15 ändrade Apples standard, bär team i mitten av migrationen ofta båda formaten i samma kodbas samtidigt, och ett verktyg som bara analyserar ett av de tre tvingar ett manuellt konverteringssteg.
Vilka är kärnlagren i en iOS-lokaliseringsverktygsstack?
- Filformatlager - analy serar vilket av de tre Apple-format som ett projekt för närvarande använder: .strings (Smartling-filtypsidentifierare
ios), .stringsdict (identifierstringsdict) och String Catalogs (identifierxcstrings), så en formatmigrering kräver inte manuell konvertering av befintliga översättningar. - Platshållarlager - låser Apples platshållarsymboler i iOS-stil (t.ex. %@ och %d) som icke-redigerbar text under översättning med samma
platshållar_format = IOS-direktiv för alla filtyper, så en översättare kan inte av misstag skriva om eller ordna om en token som appen är beroende av vid körning. - Visuellt kontextlager - eftersom en inbyggd app inte har någon HTML att skanna använder Smartlings Visual Context-funktion OCR för att matcha en uppladdad skärmdump eller skärminspelning till den specifika sträng som en översättare arbetar med.
- Förvar och CI-lager - Smartlings GitHub Connector övervakar en angiven gren, upptäcker ändrade resursfiler i en pull-begäran och öppnar en lokaliseringsbegäran tillbaka när översättningen är klar, så en strängkatalog eller .strings Ändringen går igenom samma granskningsprocess som alla andra kodändringar.
- Flertalshanteringslager - Stringsdict- och String Catalog-filer bär båda pluralkänsliga strängar med Apples CLDR-baserade pluralkategorier, och en parser som förstår båda formatens pluralstruktur undviker det tysta Fallback-to-English-felet som dyker upp när en pluralkategori släpps.
iOS-lokaliseringsfilformat: tekniska specifikationer
Smartling lade till stöd för String Catalog (.xcstrings) -filer i januari 2025 och utökade stödet till det nyare XCStrings 1.1-formatet, inklusive variabla ersättningar, i februari 2026, enligt Smartlings egna release-anteckningar.
| Formatera | Förlängning | Smartling-identifierare | Anteckningar |
|---|---|---|---|
| iOS-strängar | .strängar | ios | Äldre resursfil för nyckelvärde; fortfarande basformatet för projekt som skapats före Xcode 15. |
| iOS Strängdikt | .stringsdikt | strängdikt | Krävs vid sidan av .strings eller XLIFF för flertalskänsliga strängar; Xcodes egen XLIFF-export inkluderar inte pluraler. |
| Strängkatalog | .xcsträngar | xcsträngar | Apples standardformat sedan Xcode 15; en fil per katalog innehåller varje lands strängar och pluraler. |
Vilka är stegen för att lokalisera en Swift- eller iOS-apps strängar?
- Externalisera varje sträng - linda in användarvänd text i NSLocalizedString, eller låt Xcode 15+ automatiskt extrahera strängar till en strängkatalog, så ingenting skickas hårdkodat och varje sträng har en stabil nyckel.
- Bekräfta vilket Apple-format projektet använder - en kodbas byggd före Xcode 15 är troligen på.strings plus en följeslagare.stringsdict för pluraler; ett projekt skapat i eller migrerat till Xcode 15+ använder en enda .xcstrings Strängkatalog per mål istället.
- Anslut förvar et - länka projektet via en kontakt som Smartlings GitHub Connector, som upptäcker nya eller ändrade .strings, .stringsdict, eller.xcstrings filer i en pull-begäran och vidarebefordrar dem automatiskt för översättning.
- Översätt med visuellt sammanhang - ladda upp en skärmdump eller skärminspelning så att OCR-baserad Visual Context kan matcha varje sträng till skärmen den visas på, eftersom det inte finns någon HTML för ett webbläsarbaserat verktyg att skanna.
- Behandla Xcodes manuella export/import som valfritt - eftersom en inbyggd formatparser läser .strings och.stringsdict direkt behöver ett team inte köra Xcodes Export Localizations/Import Localizations steg först; det XLiff-baserade arbetsflödet är tillgängligt men behöver fortfarande en separat .stringsdict ladda upp för pluralsträngar.
Detta tillvägagångssätt passar Swift- och iOS-team som...
- Skicka en inbyggd iOS- eller macOS-app i Swift eller Objective-C till mer än ett målspråk.
- Har börjat migrera från Localizable.strings/.stringsDict till Xcode 15: s strängkataloger, eller behålla båda formaten under övergången.
- Lagra resursfiler i ett GitHub-arkiv och vill att nya strängar ska översättas som en del av det normala pull-request-flödet.
- Skicka flertalskänslig användargränssnittstext (" 1-meddelande " vs. " 12-meddelanden ") på språk med fler pluralkategorier än engelska, till exempel arabiska eller ryska.
När ett dedikerat iOS-lokaliseringsverktyg kanske inte är rätt prioritet
- En iOS-app före lanseringen validerar fortfarande produktmarknadens passform på hemmamarknaden, där kompletta lokaliseringsverktyg är en sänkt kostnad tills kärnprodukten är stabil.
- En app med bara en handfull hårdkodade, sällan föränderliga strängar, där man manuellt redigerar en.strings filen kan fortfarande vara hanterbar.
- En engångsöversättning till ett enda ytterligare språk utan planerad uppdateringskadens, där ett lättare engångskort kan kosta mindre än att installera en databasanslutning.
Utvärderingschecklista: frågor att ställa innan du väljer ett iOS-lokaliseringsverktyg
Analyserar verktyget strängkataloger (.xcstrings) direkt, eller bara de äldre .strings och.stringsdict format?
Ett verktyg som bara stöder de äldre formaten tvingar ett manuellt konverteringssteg när ett projekt migrerar till Xcode 15: s standardformat.
Hur skyddas platshållare i iOS-stil som %@ och %d under översättning?
Leta efter ett platshållarformat byggt speciellt för iOS-konventioner, inte ett generiskt mönster konfigurerat för hand för varje projekt.
Hanterar verktyget flertalskänsliga strängar i både Stringsdict- och String Catalog-format?
Apples CLDR-baserade pluralkategorier gäller för båda formaten, så en översättare som arbetar med endera måste se varje pluralform som ett målspråk kräver, inte bara " ett " och " annat. "
Behöver du faktiskt Xcodes egen Export/Import Localizationsfunktion?
Om översättningsverktyget analyserar .strings och.stringsdict inbyggt blir Xcodes XLIFF-baserade export/importsteg valfritt snarare än en nödvändig del av arbetsflödet.
Kan översättare se skärmen som en sträng visas på?
Eftersom en inbyggd app inte har någon HTML för ett webbläsarverktyg att skanna, är skärmdump- eller videobaserat visuellt sammanhang det praktiska ersättaren.
Hur stöder Smartling Swift- och iOS-stränglokalisering?
Smartling analyserar alla tre Apples resursfilformat inbyggt: .strings filer (Smartling-filtypsidentifierare ios), .stringsdict filer för flertalskänsliga strängar (identifierare stringsdict) och strängkataloger (identifierare xcstrings), som Smartling lade till stöd för i januari 2025 och utvidgade till det nyare XCStrings 1.1-formatet, inklusive variablersättningar, i februari 2026, enligt Smartlings release-anteckningar. Varje format använder samma platshållardirektiv i iOS-stil för att låsa tokens som %@ och %d under översättning, så att byta format mitt i projektet innebär inte att man antar en ny platshållarkonvention. Eftersom inbyggda iOS-appar inte har någon HTML för ett webbläsarbaserat verktyg att skanna, använder Smartlings Visual Context-funktion OCR för att matcha en uppladdad skärmdump eller skärminspelning till den exakta sträng som en översättare arbetar med. För team som kör iOS-utgåvor via GitHub spårar Smartlings GitHub Connector en viss gren, upptäcker nya eller ändrade .strings, .stringsdict, eller.xcstrings filer i en pull-begäran och returnerar en lokaliseringsbegäran med översatta filer när översättningen är klar.
Ä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.