Le applicazioni per Windows Phone possono essere pubblicate attraverso il Marketplace e grazie a questo strumento è possibile rendere visibile le proprie app in più paesi o addirittura in tutto il mondo. In questo scenario è importante che un'app supporti la maggior parte delle lingue, così da renderla più fruibile e user friendly.
Per sviluppare un'applicazione che supporti più lingue esistono diverse strade, ma tra le più semplici c'è sicuramente quella basate sulle risorse. Da non confondere con quelle XAML, le risorse sono file .resx che vengono inclusi nel pacchetto di deployment, attraverso i satellite assembly possono essere specifiche per una culture, e godono di un meccanismo automatico per il caricamento in base alla lingua del device Windows Phone.
Si parte quindi dalla voce Add->New Item per selezionare la tipologia Resources file, dando un nome che rappresenti l'intero set di informazioni che si vogliono localizzare a seconda della lingua dell'utente, nell'esempio Resource.resx. Premendo OK si presenta una form di Visual Studio che permette di inserire più voci stringa identificate da un nome.
Facendo attenzione a cambiare la voce Access modifier in Public, come nell'immagine, si procede riempiendo questo file con la lista di chiavi e valori per la lingua predefinita o principale della propria applicazione. Una volta salvato il file è possibile trovare una classe di nome Resource con proprietà statiche, ognuna per ogni chiave inserita. A questo punto è possibile ripetere l'operazione di inserimento dei file di risorsa utilizzando lo stesso nome, ma ponendo il suffisso della culture: per esempio Resource.it-IT.resx per supportare l'italiano. Creato il file occorre poi riempirlo con le stesse chiavi, ma valorizzando i testi in italiano; in questo modo si crea un set di chiavi localizzate in una lingua predefinita e in italiano. Per utilizzare queste informazioni è necessario aprire il file di progetto csproj o vbproj attraverso un programma di editor di testo, come notepad. In questo file va localizzato il tag SupportedCultures e valorizzato con la lista delle lingue supportate, come nello snippet seguente.
<SupportedCultures>en-US;it-IT</SupportedCultures>
Salvato il file, Visual Studio chiederà se ricaricare il progetto, a cui occorre rispondere di sì. Non resta quindi che usare le risorse. Per farlo ci sono due strade: la prima più semplice si basa sul codice. Laddove serve è possibile leggere la stringa localizzata e valorizzare le proprietà di proprio interesse:
PageTitle.Text = Resource.Title;
Se invece si vuole utilizzare le chiavi di risorse all'interno dello XAML, sfruttando il Binding, è necessario instanziare la classe Resource e usarla come risorsa XAML a livello di Page o di App.
<phone:PhoneApplicationPage xmlns:local="clr-namespace:MyPhoneApp"> <phone:PhoneApplicationPage.Resources> <local:Resource x:Key="resource" /> </phone:PhoneApplicationPage.Resources>
Dichiarata la risorsa è possibile usarla come sorgente dati e sfruttare il binding per interrogare le proprietà, ognuna per ogni chiave dichiarata.
<TextBlock Text="{Binding Title,Source={StaticResource resource}}"/>
Non occorre fare altro, perché il motore di caricamento delle risorse si occupa in autonomia di caricare il file it-IT o quello predefinito, a seconda che la lingua del device sia in italiano o in un'altra lingua.
Per una lista completa delle culture si veda:
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.95)
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Usare le variabili per personalizzare gli stili CSS
Utilizzare i primary constructor in C#
Utilizzare un service principal per accedere a Azure Container Registry
Gestire undefined e partial nelle reactive forms di Angular
Creare alias per tipi generici e tuple in C#
Utilizzare i primary constructor di C# per inizializzare le proprietà
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
I più letti di oggi
- C# 4
- Spaziatura tra i caratteri in Silverlight 5
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Segui in tempo reale il TechEd 2004
- da oggi è possibile fare login velocemente con LinkedIn e Google. a questi si aggiunge il supporto già attivo per Facebook, Twitter, Microsoft Account, Windows Hello e OpenID, per darvi sempre più possibilità di accedere semplicemente alla nostra community! #aspitalia
- Migrare una service connection a workload identity federation in Azure DevOps
- Evitare postback multipli in un UpdatePanel