Sonntag, 12. September 2010

Wie verwende ich Resourcen für die Lokalisierung (Localisation) in Windows Phone 7 Seiten (Page) und Controls?

Resourcen für Lokalisierung in einer Windows Phone 7 Seite (Page - xaml)

1. In Visual Studio fügen Sie eine neue Datei vom Typ "Resource" hinzu, diese benennen Sie je nach Verwendung. In unserem Beispiel bleibt der vorgegebene Name "Resource1.resx". Zu dieser Resource wird automatisch eine Code-Behind-Datei erstellt. Daran erkennt man auch die Default-Resource, bei den anderen Sprachen wird keine Code-Behind-Datei erstellt bzw. benötigt.
 
2. In VS 2010 unter den Eigenschaften des Projekts bei "Application" - "Assembly Informationen" muß nun die Default-Sprache "Neutral Language" auf z.b. English (United States) besser noch nur "English" eingestellt werden. Besser da, da nur "English" noch neutraler ist.
 
 
 
3. Fügen Sie folgende Klasse "LocalizedStrings.cs" zu Ihrem Projekt hinzu:
 
 
 
Die Bezeichnungen müssen entsprechend dem Resource-Klassen-Namen angepasst werden. In diesem Fall heißt die Resource "Resource1" (siehe 4.).

4. In der Resource-Datei werden nun die Texte als Strings erfasst (Beispiel "Greetings"), desweiteren wird der "Access Modifier" auf Public gesetzt:

Name - der Resource, Zugriffsbezeichner.
Value - der Wert der Resource, in diesem Fall der Text der angezeigt werden soll.
Comment - ein optionaler Kommentar

Hinweis: Es können auch andere Resourcen wie Images, Icons, Audio, Files und Others hinzugefügt werden.

5. Auf der Windows Phone 7 Seite wird ein Verweis auf die zu verwendete Resource hinzugefügt - siehe Zeile 16-18 im Bild unter Punkt 6.

6. Nun wird z.b. ein TextBlock ("textBlock1") - siehe Zeile 35-38 im Bild - hinzugefügt.


7. Die Eigenschaft "Text" des TextBlocks wurde auf die Resource "{Binding Path=LocalizedResources.Greetings, Source={StaticResource LocalizedStringTest}}" gebunden.

Damit ist nun die Resource für die Standard-Sprache festgelegt.

8. Für andere Sprachen kann nun die "Resource1.resx" kopiert werden und je nach Sprache z.b. in "Resource.de-DE.resx" (besser "Resource.de.resx") umbenannt werden.

Die derzeit unterstützte Sprachen sind:
  • Englisch:
    en English, en-US English (United States), en-GB English (United Kingdom), en-AU English (Australia), en-CA English (Canada), en-NZ English (New Zealand), en-IE English (Ireland), en-ZA English (South Africa), en-JM English (Jamaica), en English (Caribbean), en-BZ English (Belize)
  • Deutsch:
    de German (Standard), de-CH German (Switzerland), de-AT German (Austria), de-LU German (Luxembourg), de-LI German (Liechtenstein)
  • Italienisch:
    it Italian (Standard), it-CH Italian (Switzerland)
  • Spanisch:
    es Spanish (Spain), es-MX Spanish (Mexico), es-GT Spanish (Guatemala), es-CR Spanish (Costa Rica), es-PA Spanish (Panama), es-DO Spanish (Dominican Republic), es-VE Spanish (Venezuela), es-CO Spanish (Colombia), es-PE Spanish (Peru), es-AR Spanish (Argentina), es-EC Spanish (Ecuador), es-CL Spanish (Chile), es-UY Spanish (Uruguay), es-PY Spanish (Paraguay), es-BO Spanish (Bolivia), es-SV Spanish (El Salvador), es-HN Spanish (Honduras), es-NI Spanish (Nicaragua), es-PR Spanish (Puerto Rico)
  • Französisch:
    fr French (Standard), fr-BE French (Belgium), fr-CA French (Canada), fr-CH French (Switzerland), fr-LU French (Luxembourg)
Die unterstützten Sprachen müssen im Projektfile (*.csproj) nun noch definiert werden, dies erfolgt mit folgendem XML-Tag. Die Standard-Sprache wird nicht aufgeführt:

Beispiel - Standardsprache: en-US
<supportedcultures>de-DE;es-ES;fr-FR;it-IT</supportedcultures>

Noch besser, da neutraler - ohne Gebiet:
<supportedcultures>de;es;fr;it</supportedcultures>

Einen Trick das Projekt-File zu edititeren finden Sie unter: Trick um ein Projekt-File zu bearbeiten

9. Nun folgt die Anpassung der Sprache, dabei darf nur der Wert/Value und der Kommentar/Comment verändert werden.
Hinweis: Der Name ist der Identifier und darf nicht verändert werden.

  
Während die App auf dem Windows Phone 7 läuft wird nun automatisch (Spracheinstellung des Telefons) die Sprachresource gewählt und die Texte, Bilder und andere Resourcen entspechend angezeigt.

Übersicht der Resourcenanbindung auf einer Windows Phone 7 Seite (Page)



Resourcen für Lokalisierung in einem Windows Phone 7 Control (Windows Phone Control - xaml)

Die Resourcenanbindung auf einem Control erfolgt ähnlich zur Page. Unterschiedlich ist nur der Verweis auf die Resource. Statt auf eine "phone:PhoneApplicationPage.Resources" wird auf eine "UserControl.Resources" verwiesen.

Übersicht der Resourcenanbindung auf einem Windows Phone 7 Control


2 Kommentare:

  1. geniales Tutorial, besten Dank!

    AntwortenLöschen
  2. Tolles tutorial, das gefällt mir! Ich benutze http://poeditor.com/ um Ressource-Dateien zu lokalisieren. Ich glaube, es ist die einfachste Methode, um kollaborative Software Uberseztung machen.

    AntwortenLöschen