Windows Phone 7 Globalisierung

Eine gute Anleitung zur Globalisierung von Windows Phone 7 Apps findet man in der MSDN Library. Für Schnell-über-leser hier das wichtigste zusammen gefast.

  1. Ressourcen Dateien der Solution hinzufügen (MyResources.resx, MyResources.resx.de-DE, MyResources.es-ES).
  2. Ressourcen Dateien öffnen und den AccessModifier auf Public stellen.
  3. Zum Test einen Eintrag erzeugen. Der Key muss dabei in allen Ressourcendateien der selbe sein. Der Value beinhaltet die Übersetzungen.
  4. Default Sprache in den Eigenschaften des Projektes unter Assembly Information –>Neutral Language einstellen. Dieses definiert die Sprache in der Ressourcen Datei ohne Culture-Zusatz (MyResources.resx)
  5. Die Projektdatei (.csproj) mit einem Editor öffnen und die zusätzlich unterstützten Sprachen dem Tag <SupportedCultures> hinzufügen. <SupportedCultures>de-DE;es-ES;<SupportedCultures>
  6. Ein Property erzeugen, dass MyResources bereitstellt:
  7. public class LocalizedStrings
    {
        public LocalizedStrings()
        {
        }
    
        private static var localizedResources = new MyNamespace.MyResources();
    
        public MyNamespace.MyResources LocalizedResources
        { get { return localizedResources; } }
    }
    

6. In der App.xaml die eben erstellte Klasse bereitstellen:

&lt;Application.Resources&gt;
   &lt;local:LocalizedStrings xmlns:local = &quot;clr-namespace:MyNamespace&quot; x:Key=&quot;LocalizedStrings&quot; /&gt;
&lt;/Application.Resources&gt;

7. Nun fehlt nur noch das Binding

&lt;TextBlock Text=&quot;{Binding Path=LocalizedResources.KeyInMyResources, Source={StaticResource LocalizedStrings}}&quot; /&gt;

Hinweis zur ApplicationBar:

Da die ApplicationBar keine Silverlight-Komponente ist, wird dynamisches DataBinding nicht unterstützt. Also nicht wundern warum beim Kompilieren eine XamlParseException “AG_E_PARSER_BAD_PROPERTY_VALUE” bekommt. Im Xaml wird die entsprechende Zeile markiert mit dem Hinweis “Text cannot be empty”. Die Lösung lautet: code behind…

public MainPage()
{
   InitializeComponent()
   BuildApplicationBar()
}
private void BuildApplicationBar()
{
   ApplicationBar = new ApplicationBar();
   var appBarButton = new ApplicationBarIconButton(new Uri(&quot;/Images/ApplicationIcon.png&quot;,UriKind.Relative)){Text = MyResources.MyAppBarButtonKey};
   ApplicationBar.Buttons.Add(appBarButton);

   var appBarMenuItem = new ApplicationBarMenuItem(MyResources.MyMenuItemTextKey);
   ApplicationBar.MenuItems.Add(appBarMenuItem);
}
Share and Enjoy:
  • Add to favorites
  • RSS
  • Twitter
  • DotNetKicks
  • DZone
  • email
Dieser Beitrag wurde unter Windows Phone 7 abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>