Begrip lokalisatie en internationalisering

Het bouwen van een multi-taal ondersteuningssysteem in iOS begint met het begrijpen van het onderscheid tussen internationalisering en lokalisatie. Internationalisatie (i18n) is het proces van het ontwerpen van uw app zodat het kan worden aangepast aan verschillende talen en regio's zonder technische veranderingen. Lokalisatie (l10n) is de werkelijke vertaling en culturele aanpassing van de app inhoud en gebruikersinterface voor een specifieke locale. Apple frames behandelen veel van de zware heftrucks, maar een goed doordachte strategie aan het begin bespaart aanzienlijke inspanning later.

Apple biedt uitgebreide tools in Xcode, Foundation en UIKit om localisatie te ondersteunen. Het doel is om uw app zich in elke taal native te laten voelen, met respect voor leesrichting, datumformaten, nummeropmaak en culturele conventies. Dit artikel loopt door de praktische stappen om robuuste multi-taal ondersteuning te implementeren, van projectopstelling tot geavanceerde technieken.

Lokalisatie inschakelen in uw Xcode-project

De eerste stap is om Xcode te vertellen welke talen uw app ondersteunt. Open uw projectinstellingen, selecteer uw project in de Project Navigator en onder het tabblad Info, vind de sectie Localisaties. Klik op de knop ..+. om talen toe te voegen. Voor elke taal, Xcode automatisch resource bestanden (verhaalborden, XIB's, strings bestanden) die u kunt bewerken afzonderlijk.

Basisinternationalisering

Apple adviseert Base Internationalization. In uw project. Info tabblad, . Controleer .Use Base Internationalization . Deze slaat de originele UI layout in een basis localisatie (meestal Engels) en elke extra taal overschrijft alleen de strings, niet de layout. Dit vermindert duplicatie en zorgt voor consistentie op de lay-out. Als u het uitvind, moet u het hele storyboard dupliceren voor elke taal, die foutgevoelig is.

Lokalisaties toevoegen aan bestaande bestanden

Voor bestaande storyboards of XIBs, selecteer het bestand in de File Inspector, dan onder Localization, controleer de talen die u wilt lokaliseren. Xcode genereert taalspecifieke .strings bestanden voor storyboards. Voor code-gebaseerde interfaces, je zult vertrouwen op en aparte .strings bestanden.

Lokaliseerbare tekenreeksenbestanden aanmaken en beheren

De primaire manier om tekst van code te vertalen is door bestanden. Maak er een door naar Bestand > Nieuw > Bestand > Teksten Bestand (onder Resource) te gaan. Naam het . Dan in de Bestandsinspecteur, lokaliseer het: klik op Lokaliseren, selecteer vervolgens uw basistaal. Daarna verschijnt er voor elke extra taal een nieuw bestand in een submap.

Het formaat is sleutel = waardeparen:

Voor de Duitse lokalisatie:

Gebruik altijd beschrijvende toetsen, niet de Engelse string zelf, om toevallige wijzigingen te voorkomen die het opzoeken afbreken. Als u de Engelse string als de sleutel gebruikt, wordt het later problematisch om het te hernoemen.

Tekenreeksen met opmerkingen organiseren

Voeg opmerkingen toe om de context voor vertalers uit te leggen. Ze worden niet in de app gecompileerd. Voorbeeld:


Gebruik van NSLocalizedString in Code

De macro leest de string van het juiste bestand op basis van de apparaattaal van de gebruiker. De handtekening:

De meeste gesprekken gebruiken alleen de sleutel en commentaar:

Als er geen vertaling wordt gevonden, wordt de sleutel zelf teruggegeven (of de waarde parameter indien opgegeven). Geef altijd een betekenisvolle opmerking om vertalers te begeleiden.

Bediening van de tekenreeks met parameters

Voor dynamische inhoud, gebruik formaat specifiers zoals , , . Voorbeeld:

In code:

Dit stelt vertalers in staat om woorden correct te herschikken (bijvoorbeeld in het Japans kan de zinsstructuur het nummer na het zelfstandig naamwoord plaatsen). Nog beter, gebruik met een format argument:

Gebruik van .stringsdict voor meervoudsregels

Verschillende talen hebben complexe meervoudsregels. Engels heeft bijvoorbeeld enkelvoud/meervoud, maar Arabisch heeft zes vormen, en Pools heeft drie. Apple levert bestanden om pluralisatie en andere variabele tekst te verwerken. Maak een bestand aan met de naam in dezelfde lokalisatiemappen als ]. Het formaat is een plist met een sleutel per formaat. Voorbeeld:

Gebruik dan in code dezelfde sleutel: . iOS selecteert automatisch de juiste meervoudsvorm op basis van de lokale regels.

Verhalenborden en XIB's lokaliseren

Wanneer u een storyboard plaatst, krijgt elk label, knop en tekstveld een tegenhanger in het taalspecifieke stringsbestand. U kunt deze strings direct bewerken, of Interface Builder gebruiken om een voorbeeld te geven en per taalindelingen te wijzigen. Echter, voor meer dynamische UI, kunt u er de voorkeur aan geven om tekst programmamatisch in te stellen met en vervolgens de lay-out met Auto Layout te verwerken.

Locaties in Xcode bekijken

In Xcode kunt u een storyboard in verschillende talen bekijken zonder te bouwen: open het storyboard, dan in het menu Editor, selecteer Preview. Voeg een voorbeeldapparaat toe en verander de taal met de dropdown onderaan. Dit laat zien hoe strings uitzetten of samentrekken.

Lay-out aanpassen voor tekstuitbreiding

Duitse tekst is vaak 30% langer dan Engels. Gebruik Auto Layout met beperkingen die labels verticaal of horizontaal kunnen groeien. Stel het aantal regels in. Vermijd beperkingen met vaste breedte. Gebruik de prioriteiten van inhoud knuffelen en compressieweerstand. Voor knoppen, overwegen het gebruik van of het toestaan van dynamische breedte. Test met langste mogelijke vertalingen.

Arabisch, Hebreeuws, Perzisch, Urdu en anderen stromen rechts naar links. iOS ondersteunt RTL door de eigenschap op weergaven en het systeem ..automatisch flippen van afbeeldingen en lay-out op basis van de gebruikersinterface lay-out richting (van de taal van het apparaat).

Instellingen voor RTL

Zorg ervoor dat uw storyboard views gebruik maken van toonaangevende/trailing beperkingen in plaats van links/rechts. Xcode. Auto Layout ondersteunt correcte leading/trailing automatisch. Voor programmamatische lay-outs, gebruik en . Als u aangepaste tekening of transformaties, respecteer de gebruikersinterface lay-out richting van of controleer .

Afbeeldingen en RTL

Afbeeldingen die een richtingszin hebben (bijvoorbeeld een pijl naar voren wijzen) moeten in RTL-modus worden omgedraaid. In Asset Catalogus kunt u afbeeldingen instellen als

Tekstuitlijning

Voor labels en tekstweergaven, gebruik die automatisch links uitlijnt voor LTR en rechts voor RTL. Vermijd uitlijning van harde codering.

Data, getallen en valuta's lokaliseren

Eindgebruikers verwachten data en nummers geformatteerd volgens hun locale. Gebruik en met de locale gebruiker. Stel in (wat de standaard is) en gebruik vooraf gedefinieerde stijlen zoals , , of aangepaste patronen. Bijvoorbeeld:

Voor getallen, gebruik met stijl of . Het behandelt het groeperen scheidingstekens, decimale scheidingstekens en valutasymbool automatisch.

Lokaal gebruiken met opmaaktekens

Bij gebruik van met numerieke specifiers kan de locale invloed hebben op de groepering. Gebruik voor gebruikersgebonden tekenreeksen die de locale respecteren. Gebruik voor interne ontleden met een vaste locale als .

Lokalisatie testen

Een grondige test is cruciaal. Simuleer verschillende talen op de simulator door de instellingen van de programma's te bewerken. Ga naar Product > Scheme > Bewerkschema, dan onder Run > Opties, kies een andere toepassingstaal (bv. Duits) en regio (bv. Duitsland). Bouw en voer uit om alle lokale tekenreeksen te zien.

De Simulator gebruiken

U kunt ook de taal van de Simulator wijzigen: Instellingen > Algemeen > Taal & Regio. De schemamethode is echter sneller voor het testen van één taal.

RTL testen

Stel het programma in op het Arabisch. Controleer of alle weergaven correct zijn. Let goed op aangepaste weergaven, scrollweergaven en webweergaven. Gebruik de Debug > Beeld Debugtools om de indeling te inspecteren.

Testen met Pseudolokalisatie

Xcode biedt pseudolokalisatie om lange strings of RTL te simuleren zonder echte vertalingen. In het schema . Opties , inschakelen . Double-Length Pseudo taal . of . .Rechts naar links Pseudo taal . Dit helpt om troncation en alignment problemen vroeg vangen .

Dynamische inhoud lokaliseren en Server-Gedriveerde UI

Als uw app inhoud downloadt van een server, kunt u niet alleen vertrouwen op . U moet de gebruiker de voorkeur geven aan de server en de vertaalde inhoud laten teruggeven. Gebruik de -koptekst of een aangepaste parameter. Aan de iOS-zijde kunt u de voorkeurstalen krijgen van of .

Voor servergestuurde UI weergegeven in native componenten, kunt u server-gezonde stringtoetsen in kaart brengen naar lokale vertalingen met een soortgelijk patroon maar met een andere tabel of bundel. Overweeg het opslaan van localisaties in een JSON-bestand dat na de lancering van de app is opgehaald om updates over-the-air mogelijk te maken zonder app-inzending.

Beste praktijken voor een duurzame lokalisatie

  • Houd sleutels beschrijvend en consistent .Binnen de naamruimtetoetsen gebruik je puntnotatie zoals .
  • Gebruik één bron van waarheid Vermijd het overhalen van vertalingen over bestanden. Gebruik basislokalisatie en verwijs naar dezelfde sleutel.
  • Automatiseer export/import
  • Versie bestuur je strings
  • Nooit lokaliseerbare tekst in code opnemen
  • Beschouw de string in acht . .Vertalers moeten begrijpen wat elke plaatshouder vertegenwoordigt. Gebruik de positionele argumenten () om herordening toe te staan.

Werken met SwiftUI-lokalisatie

SwiftUI vereenvoudigt de localisatie. Standaard zoekt de string op in met behulp van de sleutel

Gebruik voor geformatteerde tekenreeksen SwiftUI gebruikt automatisch het als u de sleutel hebt

werkt niet direct. Gebruik in plaats daarvan:

Of gebruik SwiftUI

Afbeeldingen lokaliseren in SwiftUI

Gebruik en geef activacataloguslokalisatie voor elke taal. Of gebruik met toegankelijkheidslabels die via zijn gelokaliseerd.

Vaak Pitfalls en hoe ze te vermijden

  • Vertalingen missen Gebruik met een parameter om een Engelse terugval te geven. Draai regelmatig de simulator in elke taal om onvertaalde snaren te spotten.
  • Hardgecodeerde indeling
  • Meervoudige regels negeren
  • Lokale vergeten voor datum/nummer ontleden
  • Niet testen op echte apparaten . . Simulator taal switching is betrouwbaar, maar het testen van apparaten bloot regio-specifieke gedrag zoals kalender, tijdzone en toetsenbord.
  • Opperzicht toegankelijkheid . . VoiceOver spreekt gelokaliseerde strings. Zorg ervoor dat de toegankelijkheid labels ook worden gelokaliseerd en gebruik op de juiste manier.

Externe middelen voor een dieper begrip

  • Apple
  • NSHipster
  • Objc.io

Conclusie

Het implementeren van multi-taal ondersteuning in iOS is meer dan vertaling: het impliceert zorgvuldige planning van strijkers, lay-outs, formaten, en culturele conventies. Door het gebruik van Apple... ingebouwde lokalisatie tools .Base Internationalization, , , en Auto Layout ..je kunt een app die voelt thuis in elke taal te creëren . Regelmatig testen met pseudolokalisatie en echte apparaten vangt problemen vroeg. De inspanning vooraf bespaart toekomstige hoofdpijnen en opent uw app voor miljoenen gebruikers wereldwijd . Begin met een solide internationalisering stichting , vervolgens uitbreiden talen als uw gebruikersbasis groeit .