Arbeta med appresurser på Windows Phone

Vad du ska skapa

I tidigare tutorials lärde vi oss om programresurser, MAT (Flerspråkig App Toolkit) och hur man testar en lokal app. I den här handledningen samlar vi inte bara upp det på ett enklare sätt utan skapar också en lokaliserad programfält som du kan använda var som helst i din ansökan.

Utvecklare måste ofta använda samma applikationsfält på flera sidor i sitt projekt och de brukar sluta kopiera och klistra in XAML och C # -koden, vilket inte rekommenderas.

I den här handledningen lär du dig hur du använder appresurser och hur du lägger till lokalisering och globalisering i dina appar. Du lär dig också att använda App.xaml- och App.xaml.cs-filerna för att skapa en lokaliserad programfält som du kan använda var som helst i din Windows Phone-app.

1. Varför bygga en lokal app?

Windows Phone-användare är inte alla inbyggda engelska högtalare. Faktum är att endast 34% talar engelska. Det betyder att 66% pratar ett annat språk än engelska, och det är därför det är viktigt att bygga lokala appar.

En effektiv strategi för att öka appnedladdningar är att göra din app mer lämplig för Windows Phone-kunder som inte pratar engelska. Ju fler språk din app stöder desto fler hämtningar kommer det att bli och desto bättre blir appens betyg. Genom att stödja franska, tyska, arabiska och spanska, stöder du cirka 75% av Windows Phone-marknaden.

I denna handledning kommer vi att översätta alla våra appresurser till franska och arabiska. Här är några snabba tips att komma ihåg innan vi börjar:

  • Se till att namnge alla resurser du ska använda med meningsfulltnamn, för att vi kommer att hänvisa till strängresurser genom deras namn,inte deras värde. Försök att ge varje resurs en uniknamn som är meningsfullt.
  • Försök att samla alla dina strängresurser i AppResources.resx, inklusive knapptitlar och felmeddelanden.
  • Aktivera multilinalt stöd och textomslag i kontroller.
  • Spara alltid ditt arbete och se till att bygga upp ditt projekt ofta för att genomföra de förändringar du gör AppResources.resx.

2. Kultur och språkstöd

Valutor, siffror, datum, tid och regionformat skiljer sig från kultur till kultur. Lyckligtvis, den Culture klassen tar hand om dessa detaljer för varje språk. Egentligen kan du till och med hämta nuvarande kulturella data i telefonen och visa informationen i en Meddelandebox använder en enda kodrad:

MessageBox.Show (CultureInfo.CurrentCulture.Name);

Men InitializeLanguage () funktion i App.xaml.cs gör jobbet automatiskt varje gång appen startas och sätter in RootFrame.Language baserat på värdet av AppResources.ResourceLanguage resurs. Observera att om din app inte stöder något annat språk än en-US (Engelska, united states), appen använder neutral och standard AppResources.resx filen av projektet.

3. Lokalisera din app

Steg 1: Lägga till resurser och bindande textelement

I den här handledningen bygger vi en app på en sida som visar användaren några kloka, gamla ord. För att börja, i MainPage.xaml, vi lägger till några Textblock element utan att ange innehållet genom att lägga till följande två kodkod i föräldern ContentPanelrutnät:

 

Vi gör också följande ändringar i standardvärdet AppResources.resx fil:

  • ändra ApplicationTitle strängvärde
  • lägger till två strängar som visas i följande skärmdump

Låt oss nu gå tillbaka till MainPage.xaml. Efter att du har lagt till strängarna behöver vi i vår app, vi ställer in Text egenskapen hos Textblock kontroll för att ange innehålletav varje Textblock.

Istället för att visa "MY APPLICATION" som titel använder vi strängen "My Localized App". Vi kan åstadkomma detta genom att använda en bindning som refererar till appresurserna, bindande värdet på strängen. För att göra denna referens använder vi inte strängvärdet själv men dess attribut(namn), ApplicationTitle.

Text = "Bindande sökväg = LocalizedResources.ApplicationTitle, Source = StaticResource LocalizedStrings"

Var och en av de två Textblock element kommer också att säga. Vi använder bara samma kod, som ersätter ApplicationTitle attribut med vårt ordspråk attribut. Så här ska din kod se ut:

   

Så här ser resultatet ut:

Vi behöver nu bara lägga till andra språk och översätta.

Steg 2: Lägga till andra språk

För att lägga till ett annat språk, gå till projektets egenskaper genom att högerklicka på projektet i Lösningsutforskare fönster. Se till att du får tillgång till projektets egenskaper, inte egenskaperna hos lösningen.


I Applikationsflik du borde se Stödda språk sektion. Välj det språk du vill stödja. Som tidigare nämnts i denna handledning lägger vi till franska och arabiska. Som du kan se i listan kan du även välja kulturen beroende på region, som franska (frankrike), franska (belgiska). För denna handledning väljer vi bara den allmänna, ignorerar dialekt och region.

När du har sparat ändringarna märker du att Visual Studio automatiskt har genererat två nya .resx-filer:

  • AppResources.ar.resx för arabiska
  • AppResources.fr.resx för franska

Observera att de nybildade filerna har samma innehåll som AppResources.resx. Du bör inte ändra attributen (namn). Du behöver bara översätta värdena.

3. Använda flerspråkig App Toolkit

Den flerspråkiga App Toolkit är mycket användbar för att översätta strängresurser. Den är integrerad i Visual Studio, som ger stöd för att bygga lokaliserade Windows- och Windows Phone-appar och hjälper till att översätta appresurser. Det flerspråkiga App Toolkit gör det lättare att lägga till andra språk och du kan enkelt importera och exportera översättningsfiler.

Du kan hämta Multilingual App Toolkit som en Visual Studio-förlängning från Microsofts utvecklarwebbplats. När du har installerat verktygslådan, välj Aktivera Flerspråkig App Toolkit från Verktyg meny.

Efter att aktivera MAT genererar Visual Studio ny .XLF filer för vart och ett av de språk som du stödde tidigare. Det betyder att du kan generera maskinöversättningar genom att högerklicka på en .XLF fil och välja Generera maskin översättningar. Du kan också ändra de översatta strängresurserna i mål tagga i alla .XLF filer.


4. Hur man testar en lokal app?

Du kan testa en lokal app med hjälp av emulatorn.

  • Felsök ditt projekt och gå till Emulatorinställningar.
  • Navigera till Språk fliken och lägg till ett nytt språk. Det är viktigt att du inte startar om telefonen.
  • Navigera till Område fliken och välj din region.
  • Starta om telefonen.

När telefonen startar om kan Visual Studio kasta ett fel och förlora anslutningen till emulatorn. Efter att du har startat om telefonen, felsöker du projektet igen. Så här ser appen ut för arabiska:

Nu när vi är färdiga med strängresurser lägger vi till en lokaliserad programfält i vår app.

5. Skapa en lokaliserad programfält

Steg 1: Skapa programfältet

I det här steget skapar vi en applikationsfält som vi kan använda var som helst i vår app. För att göra så använder vi oss av App.xaml fil där vi definierar globala XAML-stilar och resurser som kommer att användas över hela applikationen.

I ApplicationResources tagga in App.xaml, Vi lägger till en applikationsfält med endast en ikon och ett menyalternativ. Glöm inte att ge ett namntill programfältet med hjälp av x: nyckel attribut så att vi kan referera det senare.

     

RateReview_Click händelsehanterare använder vi en av telefonuppgifterna för att navigera användare till affären om de vill lämna en recension eller betygsätta appen. När det gäller Help_Click händelsehanterare, lägger vi till en viss C # -kod för att navigera mellan de olika sidorna. Observera att jag lagt till en ny XAML-sida, AboutTheApp.xaml, där vi visar information om vår app.

App.xamls.cs, lägg till följande uttalande så att vi kan dra nytta av telefonens uppgifter klass:

använder Microsoft.Phone.Shell;

När användaren kränger kursen och granskar menyalternativet öppnar appen butiken på en sida där användaren kan betygsätta och / eller granska appen. Vi använder en MarketPlaceReviewTask så här:

MarketplaceReviewTask review = nya MarketplaceReviewTask (); review.Show ();

När det gäller Help_Click händelsehanteraren, tar följande kodbit för sig navigeringen mellan de två sidorna:

(Application.Current.RootVisual som PhoneApplicationFrame) .Navigate (new Uri ("/ AboutTheApp.xaml", UriKind.RelativeOrAbsolute)); 

Steg 2: Hänvisar till programfältet

Efter att du skapat applikationsfältet som vi vill använda lägger vi till en ny instans av programfältet med hjälp av nedanstående kodbit i MainPage.xaml.cs och då gör vi det till den som finns i App.xaml.

InitializeComponent (); ApplicationBar = nytt ApplicationBar (); ApplicationBar = ((ApplicationBar) Application.Current.Resources ["myAppBar"]);

Vi har inte använt AppResources alls för att bygga applikationsfältet, vilket innebär att textegenskaper redan är inställda oberoende av telefonens kultur. Egentligen kan vi inte riktigt använda bindningar när vi hanterar applikationsfält.

Därför hänvisar vi till den programfält vi skapade tidigare i App.xaml.cs och ändra strängvärdet, med ett enkelt block av en kod strax efter InitializeComponent () metod. De använda strängarna läggs också till i AppResources.resx.

// Standard XAML-initialisering InitializeComponent (); var appBar = App.Current.Resources ["myAppBar"] som ApplicationBar; ((ApplicationBarIconButton) appBar.Buttons [0]). Text = AppResources.AboutAppBarIconText; ((ApplicationBarMenuItem) appBar.MenuItems [0]). Text = AppResources.RateAppBarMenuItemText;

Efter att du har lagt till strängresurserna, översätt dem och bygga omprojektet. Slutligen lägg till informationen från AboutTheApp.xaml sida. Så här ser resultatet ut:

Slutsats

I denna handledning lärde vi oss om telefonkultur, hur man använder appresurser, hur man bygger en lokal applikations- och applikationsfält och hur man bygger en appbar som vi kan återanvända var som helst i vår applikation. Vi lärde oss också hur man hänvisar till ett strängvärde i AppResources-filerna med bindningar.

Och äntligen fick vi veta hur vi använder telefonuppgifter för att hjälpa användare att betygsätta och granska appen i butiken. Du kan ladda ner provprojektet och fråga eventuella frågor som passar dig i kommentarerna nedan.