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.
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:
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.
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.
Nye prosjekter og maler for Windows Phone 8 XAML-apper gir flere nyttige nye funksjoner:
LocalizedStrings
hjelperklasse er allerede konfigurert for å gi enkel tilgang til ressursene som samsvarer med dagens kultur av en app.La oss se hvordan alt dette fungerer ved å lage en prøveapp, med engelsk som basisspråk.
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);
Å 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.
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:
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.
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 ();
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.
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.
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.