Lokaliseren van een iOS-applicatie in Xcode 6

Wat je gaat creëren

Het vertalen van een iOS-applicatie naar verschillende talen is een proces in twee stappen. Eerst moet je je app voorbereiden door alle tekst, afbeeldingen en andere bronnen die naar de gebruiker gericht zijn te scheiden van de rest van je code en storyboards. Dit proces wordt internationalisatie genoemd (I18N).

Nadat u klaar bent met het internationaliseren van uw app, bent u klaar om deze te lokaliseren. Hier exporteert u uw bronnen en stuurt u ze naar uw vertaler. Wanneer u de vertaalde bronnen terugkrijgt, importeert u ze gewoon terug in Xcode en staat uw app klaar om een ​​andere taal te ondersteunen.

1. Setup

We zullen een eenvoudige voorbeeld-app gebruiken om te experimenteren met lokalisaties. Maak een nieuw Xcode-project, gebruik Toepassing enkele weergave voor de sjabloon en bel het project LocalizationExample.

Vervolgens moeten we een eenvoudige gebruikersinterface maken zodat we onze lokalisaties in actie kunnen zien. In Main.storyboard, voeg een label en een beeldweergave toe. Verander de tekst van het label in "Hallo Wereld!". Download deze beeldbronnen, voeg toe nl / logo.png naar uw Xcode-project (zorg ervoor dat Kopieer items indien nodig is aangevinkt) en geef het weer in de afbeeldingsweergave door het te wijzigen Beeld veld naar logo.png. Zorg er ook voor om een ​​toe te voegen Centreer horizontaal in container lay-outbeperking voor beide elementen van de gebruikersinterface.

Je moet ook weten hoe je hard-coded strings kunt localiseren, dus ga je gang en voeg een consolebericht toe aan AppDelegate.m. Voeg de volgende loginstructie toe aan applicationDidFinishLaunching:.

- (BOOL) applicatie: (UIApplication *) applicatie didFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSLog (@ "Hello, World!"); terugkeer JA;  

Dit geeft ons drie bronnen om te lokaliseren, een afbeelding, een label en een hardcoded string. Houd er rekening mee dat het ontwikkelen van een gelokaliseerde app grotendeels hetzelfde is als het maken van een niet-gelokaliseerde app. U kunt weergaven configureren en aangepast gedrag definiëren zonder u echt zorgen te maken over lokalisatie. Het meeste gebeurt nadat u uw basisfunctionaliteit hebt gebruikt.

2. Internationalisering

Nu we een basistoepassing hebben om mee te werken, zijn we klaar om onze app te internationaliseren. Dit is waar we ons voorbereiden op het lokaliseren van bronnen door ze te isoleren van de rest van onze code. Xcode biedt uitgebreide I18N-mogelijkheden, waardoor het veel gemakkelijker wordt om een ​​app te lokaliseren.

Stap 1: Storyboards voorbereiden

Laten we eerst eens kijken naar de internationalisering van de gebruikersinterface van onze app. De eerste stap is om Xcode te vertellen welke regio's of landinstellingen u wilt ondersteunen. Klik op de LocalizationsExample project in de Project Navigator en selecteer het blauwe projectpictogram in de pop-uplijst linksboven.

De lokalisaties sectie is waar u locales aan uw app kunt toevoegen. We vertalen ons voorbeeldproject in het Spaans, dus klik op het plusteken en selecteer Spaans (es). Hierdoor wordt een dialoogvenster geopend waarin u wordt gevraagd wat u met uw bestaande bronnen wilt doen. Zorg ervoor dat Localizable Strings is geselecteerd voor beide Main.storyboard en LaunchScreen.xib zoals getoond in de volgende screenshot. Klik Af hebben doorgaan.

Je vindt nu twee items onder Main.storyboard, een baseren storyboard en a Main.strings het dossier. De eerste is je eigenlijke storyboard-bestand en de laatste is een strings-bestand dat alle tekst bevat die de gebruiker in het storyboard ziet. Dit stringsbestand zal uiteindelijk vertaald worden.

De Main.storyboard bestand is nu geïnternationaliseerd en klaar om te worden gelokaliseerd.

Stap 2: Hard-Coded Strings voorbereiden

Naar de gebruiker gerichte strings die hard gecodeerd zijn in uw Objective-C / Swift-klassen hebben een speciale verwerking nodig. Dit is een noodzakelijke stap, bijvoorbeeld als u de tekst programmeert voor elementen van de gebruikersinterface in uw storyboards.

Gelukkig is het internationaliseren van hardgecodeerde strings een eenvoudig proces. Het enige wat je hoeft te doen is ze in te pakken in een NSLocalizedString macro, zoals zo:

- (BOOL) applicatie: (UIApplication *) applicatie didFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSString * greeting = NSLocalizedString (@ "Hello, World!", @ "A friendly greeting"); NSLog (@ "% @", begroeting); terugkeer JA;  

Het eerste argument is een sleutel die verwijst naar de tekenreeks waarnaar u zoekt en het tweede (optionele) argument is een opmerking die wordt opgenomen in het geëxporteerde tekenreeksenbestand. U kunt abstracte, woordenboekachtige toetsen (bijv., @"groet"), maar ik merk dat die code leesbaarder is als je de daadwerkelijke tekenreeks als de sleutel gebruikt.

In de volgende sectie, elke NSLocalizedString oproepen worden automatisch uit onze code gehaald en toegevoegd aan de lijst met strings die moeten worden vertaald.

3. Lokalisatie

Zodra uw app is geïnternationaliseerd, bent u klaar om uw bronnen te lokaliseren. Lokalisatie is een vrij eenvoudig proces waarbij u alle tekenreeksen die moeten worden vertaald, exporteert, doorgeeft aan uw vertaler en ze weer in uw project importeert. Deze export- / vertaal- / importcyclus kan worden voortgezet terwijl u uw app ontwikkelt, maar het is meestal een goed idee om de meerderheid van uw gebruikersinterface te voltooien voordat u het lokalisatieproces start.

Stap 1: Strings exporteren

Xcode maakt het eenvoudig om al uw geïnternationaliseerde strings naar een single te exporteren XML Localization Interchange File Formaat (.xliff) document, het standaardformaat voor de lokalisatie-industrie.

Om dit bestand te genereren, selecteert u LocalizationExample in de Project Navigator, Kiezen Editor> Exporteren voor lokalisatie ... uit het Xcode-menu en selecteer een bestandspad buiten uw Xcode-project om mogelijke verwarring te voorkomen.

klikken Opslaan zal een nieuwe map maken met een es.xliff het dossier. Als u het opent, vindt u een heleboel XML met informatie over elke tekenreeks in uw app die moet worden gelokaliseerd.

Dit is het bestand dat u naar uw vertaler moet sturen. Ze hebben speciale hulpmiddelen voor het bewerken van de XML, maar laten we voor ons voorbeeld deze rechtstreeks gaan gebruiken en bewerken. Open es.xliff en zoek naar de tekst "Hallo Wereld!". Je zou er twee moeten vinden  elementen zoals hieronder getoond.

 Hallo Wereld! Hola, Mundo! Klasse = "IBUILabel"; text = "Hallo, Wereld!"; ObjectID = "Cns-Fc-27j";    Hallo Wereld! Hola, Mundo!