Lokalisere en Windows Phone 8-applikasjon

Nylige butikk trender viser at tilby appen din på engelsk, vil dekke bare rundt 25% av Windows Phone-kundene. Å legge til spansk, fransk, mandarin, russisk og tysk kan øke dekning til mer enn 75% av Windows Phone-kundene.

Introduksjon

I denne veiledningen vil jeg lære deg hvordan du lokaliserer en Windows Phone 8-app for å nå flere potensielle kunder. Jeg vil vise deg hvordan du konfigurerer Windows Phone 8-prosjektet ditt slik at hele brukergrensesnittet, inkludert feilmeldinger, kan bli lokalisert. På slutten av opplæringen har du lært hvordan du klargjør appen din slik at den kan oversettes til flere språk. 

Vurder følgende beste praksis for å bygge en app som lett kan lokaliseres:

  • Opprett separate ressursfiler for strenge, bilder og videoer for å gjøre kodespråket ditt uavhengig. Dette sikrer at det kan støtte forskjellige språk.
  • Aktiver multilinje støtte og tekst innpakning i kontroller. Dette gir deg mer plass til å vise strenge.
  • Lokaliser setninger i stedet for ord. Dette kan virke som ekstra arbeid, men det er den beste løsningen. Det vil sikre at feilmeldinger for eksempel blir oversatt på alle språk.
  • Ikke anta at hvert språk bruker parametere i samme rekkefølge.
  • Ikke bruk strenger, da det kan forårsake lokaliseringsproblemer hvis konteksten til strengen endres. For eksempel kan en streng som "tekst" og "faks" brukes som både et verb og et substantiv på engelsk, noe som kan komplisere oversettelsesprosessen. Lag en egen streng for hver kontekst.
  • Bruk unike attributter for å identifisere ressursene dine. Du kan bare få tilgang til en ressurs ved å bruke sin unike verdi, som ikke endres, heller enn ved å bruke den faktiske verdien av ressursen.

Vi vil først diskutere kultur- og språkstøtten som tilbys av Windows Phone 8 og deretter diskutere trinnene som er involvert i å utarbeide en app for lokalisering. Deretter vil vi se hvordan du bygger en lokal applikasjonslinje. Vi vil endelig diskutere hvordan du skal teste en lokalisert app.  

1. Kultur og språkstøtte

Tall, valutaer, dato og klokkeslett er formatert forskjellig i ulike kulturer. Hver støttet kultur er oppført i Culture klasse. De Culture Klassen avslører egenskaper for å få tilgang til regionformatdata for en bestemt kultur. Du kan også bruke Culture klasse med en kulturkode for å få tilgang til innebygde formaterings- og sorteringsregler for den kulturen.

Skjermspråket bestemmer standard brukergrensesnitt skrift. Windows Phone 8.1 brukergrensesnittet er lokalisert på 50 språk, men appen din kan vise et mye større utvalg av språk. Når du legger til støtte for appen din for flere språk, genererer Visual Studio en .ResX fil for hvert språk.

De InitializeLanguage fungere i App.xaml.cs filen setter appen RootFrame.Language basert på verdien av AppResources.ResourceLanguage ressurs.

2. Standard lokaliseringstrinn

Nye prosjekter og maler for Windows Phone 8 XAML-apper gir flere nyttige nye funksjoner:

  • En nøytral språkressursfil, AppResources.resx, Som standard legges til hvert nytt prosjekt.
  • De LocalizedStrings hjelperklasse er allerede konfigurert for å gi enkel tilgang til ressursene som samsvarer med dagens kultur av en app.
  • En ny ressursfil med lokalspesifikke navn og appsproginitialiseringsparametere på plass opprettes når du legger til en Støttet kultur fra Prosjektegenskaper i Visual Studio.

La oss se hvordan alt dette fungerer ved å lage en prøveapp, med engelsk som basisspråk.

Trinn 1: Binding XAML Tekstelementer

Vi knytter først XAML-tekstelementene til strengressurser. 

Kopier hver hardkodede streng i appens XAML som må lokaliseres til en ny rad i strengbordet til din AppResources.resx fil.

Deretter henviser XAML-elementene til denne strengenes ressurs ved å legge til det unike navnet og en standard bindende klausul i stedet for den hardkodede verdien. 

De TextBlock vist nedenfor er bundet ved hjelp av strengressursen i stedet for den hardkodede teksten.

Søk gjennom prosjektets kodebag for steder der koden endrer et tekstattributt for et brukergrensesnittelement. Erstatt den hardkodede verdien med en referanse til strengressursen for hvert element.

ApplicationBarMenuItem about_appBarMenuItem = nytt ApplicationBarMenuItem (AppResources.AppBarAboutMenuItem);

Trinn 2: Legge til språk

Å legge til språk i et Windows Phone 8-prosjekt i Visual Studio er enkelt. Naviger til prosjektets eiendomsside og velg språkene du vil støtte fra Støttede kulturer liste.

I prøveprosjektet har jeg lagt til Forenklet kinesisk) og Spansk (spania), hvis lokale koder er zh-Hans og es-ES, henholdsvis. Velg språkene du vil at appen skal støtte i Støttede kulturer boks på prosjektets Eiendommer side.

Når du lagrer prosjektet, oppretter Visual Studio en AppResources.resx fil for hver lokalitet. Den nyopprettede ressursfilen er forhåndsbefolket med eksisterende ressurser fra hovedmenyen AppResources.resx fil.

Hver ressursfil inneholder to spesielle ressurser kalt ResourceLanguage og ResourceFlowDirection. Disse to ressursene brukes når InitializeLanguage Metoden kalles fra App.xaml.cs konstruktør. Deres verdier blir sjekket automatisk for å sikre at de samsvarer med kulturen i ressursfilen lastet på kjøretid.

De ResourceLanguage verdien initialiseres med lokalnavnet til ressursfilen og brukes til å angi RootFrame.Language verdi. De ResourceFlowDirection verdien er satt til den tradisjonelle retningen til ressursspråket.

Noter det ResourceLanguage og ResourceFlowDirection kan endres for å tilpasse seg appens designstil.

Trinn 3: Bruke flerspråklig App Toolkit for oversettelse

De Flerspråklig App Toolkit (MAT), som er integrert i Visual Studio, tilbyr oversettelsesstøtte, oversettelse filbehandling og lokalisering verktøy for å lage Windows Phone og Windows Store apps. Her er noen fordeler ved å bruke Multilingual App Toolkit:

  • Det sentraliserer strengressurs og metadatahåndtering.
  • Verktøyet gjør det enkelt å lage, importere og eksportere oversettelsesfiler i XLIFF-formatet, en standard i bransjen.
  • Det er ikke nødvendig å bytte frem og tilbake mellom ressursfiler.
  • Det er enkelt å legge til nye oversatte språk rett fra prosjektets kontekstmeny.

For å begynne å bruke Multilingual App Toolkit for Windows Phone-prosjektet, last ned og installer Visual Studio-utvidelsen fra MSDN. Med verktøysettet installert, velg prosjektet og velg Aktiver Multilingual App Toolkit fra Verktøy menyen som vist nedenfor.

Merk at lokaliserte ressurser er definert per prosjekt, ikke per løsning. Dette betyr at Visual Studio fokus skal være innenfor prosjektet for Aktiver Multilingual App Toolkit alternativ å være tilgjengelig fra Verktøy Meny.

Etter at du har aktivert Multilingual App Toolkit, vil Visual Studio legge til filer i Ressurs mappe av prosjektet ditt, en av dem har en ny type og navn, AppResources.qps.ploc.xlf. De .XLF utvidelse refererer til XLIFF standard filformat jeg nevnte tidligere.

Flere språk kan legges til via Multilingual App Toolkit. Dette resulterer i at en ny støttet kultur blir lagt til i prosjektet ditt. Det medfører også tillegg av et støttet språk i prosjektets WMAppManifest.xml.

Å oversette ressursene til Forenklet kinesisk) og Spansk (spania), høyreklikk på .XLF fil og velg Generer maskinoversettelser fra den kontekstuelle menyen. Bruk oversettelsene og gjenoppbygg prosjektet for å se endringene som reflekteres i .ResX filer for de to ytterligere språkene.

3. Bygg en lokalisert applikasjonslinje

Du kan legge til en applikasjonslinje på en side i appen din, enten på siden XAML eller ved å bruke C # i sidekoden. ApplicationBar er ikke en DependencyObject og støtter ikke bindinger. Dette betyr at hvis du trenger å lokalisere det, bygg deretter ApplicationBar fra kode bak C #.

Når et nytt Windows Phone 8 eller et Windows Phone 8.1 Silverlight-prosjekt er opprettet, legges noen kommentert kode for lokalisering av programfeltet til MainPage.xaml.cs som standard. Uansett metode BuildLocalizedApplicationBar og legg til knappene, menyelementene og tilhørende ressurser du vil bruke i appen din.

privat tomrom BuildLocalizedApplicationBar () // Still inn sidens ApplicationBar til en ny forekomst av ApplicationBar. ApplicationBar = nytt ApplicationBar (); // Opprett en ny knapp og sett tekstverdien til lokalisert streng fra AppResources. ApplicationBarIconButton appBarButton = ny ApplicationBarIconButton (ny Uri ("/ Assets / Check.png", UriKind.Relative)); appBarButton.Text = AppResources.AppBarButtonText; appBarButton.Click + = appBarButton_Click; ApplicationBar.Buttons.Add (appBarButton); // Opprett et nytt menyelement med lokalisert streng fra AppResources. ApplicationBarMenuItem zh_appBarMenuItem = nytt ApplicationBarMenuItem ("中文"); ApplicationBar.MenuItems.Add (zh_appBarMenuItem); zh_appBarMenuItem.Click + = ny EventHandler (zh_appBarMenuItem_Click); ApplicationBarMenuItem en_appBarMenuItem = nytt ApplicationBarMenuItem ("engelsk"); ApplicationBar.MenuItems.Add (en_appBarMenuItem); en_appBarMenuItem.Click + = ny EventHandler (en_appBarMenuItem_Click); ApplicationBarMenuItem es_appBarMenuItem = nytt ApplicationBarMenuItem ("español"); ApplicationBar.MenuItems.Add (es_appBarMenuItem); es_appBarMenuItem.Click + = ny EventHandler (es_appBarMenuItem_Click); 

De BuildLocalizedApplicationBar Metoden skaper en ny forekomst av ApplicationBar. Knapper og menyelementer legges til og tekstverdien er satt til lokalisert streng fra AppResources. App-knappen har en binding til AppBarButtonText, som er definert i AppResouces.resx fil. Ring BuildLocalizedApplicationBar metode fra sidenes konstruktør for å laste inn ApplicationBar.

I eksempelappen kan brukerne velge sitt visningsspråk via ApplicationBar Meny. Som vist på skjermbildet under, forblir menyelementene konsekvente på skjermspråk, mens applikasjonslinjeknappen er lokalisert.

Når en bruker tapper et visningsspråk i ApplicationBar menyen, den SetUILanguage Metoden kalles. De SetUILanguage Metoden, med navnet på målspråket som er bestått som en parameter, brukes til å stille inn visningsspråket.

privat tomt SetUILanguage (String locale) CultureInfo newCulture = ny CultureInfo (lokal); Thread.CurrentThread.CurrentCulture = newCulture; Thread.CurrentThread.CurrentUICulture = newCulture; FlowDirection flow = (FlowDirection) Enum.Parse (typeof (FlowDirection), AppResources.ResourceFlowDirection); App.RootFrame.FlowDirection = flow; // Sett språket til RootFrame for å matche den nye kulturen. App.RootFrame.Language = XmlLanguage.GetLanguage (AppResources.ResourceLanguage); 

De SetUILanguage Metode først tilbakestiller CurrentUICulture av appen til lokalene som er levert i samtalen. Enhver ressursbunden tekst som gjengis av appen, vil bruke ressursene til den angitte lokaliteten etter denne samtalen.

Sett deretter inn Strømretning og Språk av RootFrame, som vil føre til at brukergrensesnittet som appen gjengir, følger de nye innstillingene.

De BuildLocalizedApplicationBar Metoden kalles fra sidens konstruktør etter samtalen til InitializeComponent å lokalisere ApplicationBar.

offentlig MainPage () InitializeComponent (); // kode for å lokalisere ApplicationBar BuildLocalizedApplicationBar (); 

4. Teste en lokalisert app

Windows Phone-emulatoren kan brukes til å teste den lokaliserte appen. Endre visningsspråket til språket som appen målretter mot for å kontrollere at innholdet blir riktig.

  • Klikk Start feilsøking fra Debug Meny.
  • Navigere til region og språk fra innstillinger i applisten.
  • Klikk Vis språk og velg ett av språkene. Bruk tabellen i Kartlegging av kulturnavn for å vise språk seksjon for å bestemme hvilken visningsspråk streng som skal velges.
  • Godta endringene og start emulatoren på nytt.
  • Start appen din ved å gå tilbake til applisten, og bekreft at språket for hver lokalisert streng samsvarer med innstillingene for visningsspråk som du valgte tidligere.

Slik endrer teksten når visningsspråket endres. Legg merke til at menyelementene forblir konsistente selv om skjermspråket endres.

Hvis du vil endre språket dynamisk, kan du ringe til SetUILanguage Metode med navnet på målspråket passert som en parameter.

I prøveappen, hvert brukergrensesnittelement av MainPage.xaml har allerede blitt gjengitt, slik at elementene som vises for øyeblikket, må oppdateres etter å ha endret språket. De updateUI Metoden oppdaterer brukergrensesnittelementene til MainPage.xaml.

privat ugyldig oppdateringUI () apptitle.Text = AppResources.ApplicationTitle; pagetitle.Text = AppResources.mainpagetitle; usermessage.Text = AppResources.displayMessage; checkbutton.Content = AppResources.checkEligibility; enterage.Text = AppResources.userMessage; 

Merk at plasseringen av hvert brukergrensesnittelement på skjermen er uendret, uavhengig av visningsspråket.

Konklusjon

I denne opplæringen har du lært hvordan du klargjør appen din for lokalisering. Hardkodede XAML og kode-bak strenger som må lokaliseres, plasseres i et ressursfilstrengbord og får en unik nøkkel.

Hver hardkodede verdi erstattes av en bindende klausul i XAML eller en ressursreferanse i kode ved hjelp av nøkkelen for den tilhørende strengressursen.

Du kan legge til flere visningsspråk og bruke Multilingual App Toolkit for å gjøre end-to-end-prosessen med å oversette appen din vesentlig enklere. Du er velkommen til å laste ned opplærings kildefiler for å bruke som referanse.