Å oversette et iOS-program til forskjellige språk er en to-trinns prosesser. Først må du forberede appen din ved å skille mellom alle tekstene, bildene og andre ressursene som brukeren skal oversettes fra resten av koden og storyboards. Denne prosessen kalles internasjonalisering (I18N).
Når du er ferdig med å internasjonalisere appen din, er du klar til å lokalisere den. Her eksporterer du ressursene dine og sender dem til oversetteren din. Når du får de oversatte ressursene tilbake, importerer du dem enkelt tilbake til Xcode, og appen din er klar til å støtte et annet språk.
Vi bruker et enkelt eksempelapp for å eksperimentere med lokaliseringer. Opprett et nytt Xcode-prosjekt, bruk Enkeltvisningsprogram for malen, og ring prosjektet LocalizationExample.
Deretter må vi opprette et enkelt brukergrensesnitt slik at vi kan se våre lokaliseringer i aksjon. I Main.storyboard, legg til en etikett og en bildevisning. Endre etikettens tekst til "Hei Verden!". Last ned disse bildene, legg til no / logo.png til Xcode-prosjektet ditt (sørg for Kopier elementer om nødvendig er merket), og vise den i bildevisningen ved å endre dens Bilde feltet til logo.png. Vær også sikker på å legge til en Senter horisontalt i beholderen Layoutbegrensning til begge brukergrensesnittelementene.
Du må også vite hvordan du lokaliserer hardkodede strenger, så fortsett og legg til en konsollmelding til AppDelegate.m. Legg til følgende loggoppføring til applicationDidFinishLaunching:
.
- (BOOL) søknad: (UIApplication *) søknad didFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSLog (@ "Hello, World!"); returnere JA;
Dette gir oss tre ressurser til å lokalisere, et bilde, en etikett og en hardkodd streng. Vær oppmerksom på at det å utvikle en lokal app er stort sett den samme som å opprette en ikke-lokalisert app. Du kan konfigurere visninger og definere tilpasset oppførsel uten å bekymre deg for lokalisering. Det meste skjer etter at du har den grunnleggende funksjonaliteten som jobber.
Nå som vi har en grunnleggende applikasjon for å jobbe med, er vi klar til å internasjonalisere vår app. Det er her vi forbereder oss for å lokalisere ressurser ved å isolere dem fra resten av koden vår. Xcode gir omfattende I18N-funksjoner, noe som gjør det mye enklere å lokalisere en app.
Først, la oss ta en titt på internasjonalisering av appens brukergrensesnitt. Det første trinnet er å fortelle Xcode hvilke regioner eller steder du vil støtte. Klikk på LocalizationsExample prosjekt i Prosjektnavigator og velg det blå prosjektikonet i popuplisten øverst til venstre.
De lokaliseringer delen er der du kan legge til lokaliteter i appen din. Vi oversetter vårt eksempelprosjekt til spansk, så klikk plustegnet og velg Spansk (es). Dette åpner et dialogvindu som spør deg hva du vil gjøre med eksisterende ressurser. Forsikre Localizable Strings er valgt for begge deler Main.storyboard og LaunchScreen.xib som vist i følgende skjermbilde. Klikk Bli ferdig å fortsette.
Du finner nå to elementer under Main.storyboard, en utgangspunkt storyboard og a Main.strings fil. Den tidligere er din faktiske storyboard-fil, og sistnevnte er en strengfil som inneholder all den brukervendte teksten i storyboardet. Denne strengfilen er hva som til slutt blir oversatt.
De Main.storyboard filen er nå internasjonalisert og klar til å bli lokalisert.
Brukervendte strenger som er hardkodede i Objective-C / Swift-klassene, trenger noen spesiell behandling. Dette er et nødvendig trinn, for eksempel hvis du programmerer inn teksten for brukergrensesnittelementer på storyboards.
Heldigvis er internasjonalisering av hardkodede strenge en enkel prosess. Alt du trenger å gjøre er å pakke dem inn i en NSLocalizedString
makro, slik som:
- (BOOL) søknad: (UIApplication *) søknad didFinishLaunchingWithOptions: (NSDictionary *) launchOptions NSString * greeting = NSLocalizedString (@ "Hei, Verden!", @ "En vennlig hilsen"); NSLog (@ "% @", hilsen); returnere JA;
Det første argumentet er en nøkkel som peker på strengen du leter etter, og det andre (valgfrie) argumentet er en kommentar som vil bli inkludert i den eksporterte strengfilen. Du kan bruke abstrakte ordliste-taster (f.eks., @"hilsen"
), men jeg finner at koden er mer lesbar hvis du bruker den faktiske strengen som skal oversettes som nøkkelen.
I neste avsnitt, noen NSLocalizedString
samtaler blir automatisk trukket ut av vår kode og lagt til i listen over strenger som må oversettes.
Når appen din er internasjonalisert, er du klar til å begynne å lokalisere ressursene dine. Lokalisering er en ganske enkel prosess der du eksporterer alle strengene som må oversettes, send dem til oversetteren din, og importer dem tilbake til prosjektet ditt. Denne eksport / oversetter / import syklusen kan fortsette mens du utvikler appen din, men det er vanligvis en god ide å fullføre flertallet av brukergrensesnittet ditt før du starter lokaliseringsprosessen.
Xcode gjør det enkelt å eksportere alle dine internasjonale strenger til en enkelt XML Localization Interchange File Format (.xliff) dokument, som er standardformatet for lokaliseringsindustrien.
For å generere denne filen, velg LocalizationExample i Prosjektnavigator, velge Redigerer> Eksporter for lokalisering ... fra Xcode-menyen, og velg en filsti utenfor Xcode-prosjektet for å unngå eventuell forvirring.
Klikker Lagre vil opprette en ny mappe som inneholder en es.xliff fil. Hvis du åpner den, finner du en hel del XML som inneholder informasjon om hver streng i appen din som må være lokalisert.
Dette er filen du må sende til oversetteren din. De har spesielle verktøy for redigering av XML, men for eksempel, la oss gå inn og redigere det direkte. Åpen es.xliff og søk etter teksten "Hei Verden!". Du bør finne to separate
elementer som vist nedenfor.
Hola, Mundo! Klasse = "IBUILabel"; text = "Hei, Verden!"; ObjectID = "Cns-Fc-27j"; Hola, Mundo!