Domanda

Sto avendo un po ' di difficoltà a raggiungere localizzati i file di risorse per funzionare su Windows Phone 7.Ecco quello che sto facendo:

  1. Creare un file di risorse, dire "Stringhe.resx" (Azione di compilazione:Compilare)
  2. Creare una chiave, dire "TestKey" con un valore predefinito di stringa vuota
  3. Aggiungere una risorsa in inglese file nella stessa cartella con un valore di "qualche stringa in inglese":Stringhe.en-us.resx (Build Azione:La Risorsa Incorporata)
  4. Aggiungere un file di risorse Giapponese nella stessa cartella con un valore di "un po' di Giapponese stringa":Stringhe.ja-jp.resx (Build Azione:La Risorsa Incorporata)

Nel mio PC Silverlight, WPF App che funziona bene quando si cambia il Filo.CurrentThread.CurrentCulture.Ma il telefono mi sembra sempre di ottenere il valore in Stringhe.file resx - una stringa vuota.

Ho provato ad usare il codice generato da progettazione e cablaggio del resource manager a mano e non sembra importante.Ecco il mio codice:

            Type t = typeof(Strings);

            _resourceManager = new ResourceManager(
                t.Namespace + "." + t.Name,
                t.Assembly);

            _resourceManager.GetString("TestKey");

Dimmi risorse localizzate sono supportate sul telefono...;> Che cosa sto facendo di sbagliato?Grazie!

Aggiornamento:Grazie Olivier per l'inoltro il link.Ho visto che bene, ma perdere un passo importante.Non ho aggiunto il "SupportedCultures" nodo alla mia csproj.Ha fatto la differenza - sperando che qualcun altro non perde due ore cercando di capire come ho fatto io.

<SupportedCultures>de-DE;es-ES;</SupportedCultures>
È stato utile?

Soluzione

Ho scritto un post sul blog che fornisce link a un sacco di Globalizzazione / Localizzazione guide per WP7. C'è un Windows Phone 7 in 7 video di Formazione che mi ha aiutato a capire le basi.Dopo che è stata semplicemente una questione di imparare a fare il databinding:

L'articolo di MSDN mostra come installazione dei file e di creare il LocalizedStrings classe, ma poi si supponga di sapere come utilizzare che classe per l'associazione dati.Visual Studio 2010 e Silverlight gestire i dati associazione in modo diverso rispetto a Winforms, e diventa ancora più confusa dal XAML ha anche una definizione di Risorse che sono differenti, il .NET le risorse che abbiamo appena creato.Silverlight usa anche il termine Risorse per fare riferimento ai file che uso la Build Action di "Contenuto”, come questi file vengono avvolti in .File XAP simile al modo in cui i file con Costruire l'Azione di "Risorsa” get incorporati nel .Dll assemblea (ex:il caricamento di un'immagine dal contenuto o i file di risorse).Ho trovato che invece di utilizzare il Text="{Binding Path=resourceFile.resourceName, Source={StaticResource Localizedresources }}" sintassi XAML è era più facile utilizzare i seguenti passaggi:

  1. Aprire il primario pagina XAML (di solito MainPage.xaml) in Visual Studio di progettazione

  2. Aprire le proprietà per il PhoneApplicationPage e impostare il DataContext essere Applicazione.Risorse –> LocalizedStrings.NOTA:se si è già utilizza un oggetto DataContext, quindi si dovrebbe integrare la LocalizedStrings classe in che oggetto in modo che ha di localizzazione il supporto.

  3. Una volta che la Pagina del DataContext è stato impostato, è possibile modificare i dati associazione per qualsiasi controllo sulla pagina semplicemente selezionando la proprietà (es:il testo, controllato, ecc), selezionare “Applica Dati Associazione...”, e impostare il Percorso per Localizedresources.BtnText o qualunque sia il nome desiderato il valore delle risorse è.

Altri suggerimenti

Naturalmente, le risorse localizzate sono supportate sul telefono:

Come:Costruire un'Applicazione Localizzata per Windows Phone

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top