Login Register
martedì 7 febbraio 2012
 
Forums
I Forum di WPF Tips & Tricks
"Localizzazione" dell'applicazione runtime
Last Post 07 dic 2010 07:48 by Nicola Gallo. 3 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages Not Resolved
Jotric
Basic Member
Basic Member
Posts:8
Avatar

--
21 lug 2010 04:38  
Buonasera a tutta la ML; come da oggetto vorrei capire come funziona la localizzazione di un applicazione WPF.

In particolare ho trovato questo articolo su codeproject che è fantastico: http://www.codeproject.com/KB/WPF/I...izard.aspx

Sfortunatamente però gli autori prendono in considerazione solo la parte di localizzazione all'atto dell'esecuzione dell'applicazione, quindi usando la cultureinfo, attraverso i file di risorse (un pò come per winform).
Questa tecnica l'ho sempre odiata perchè bisogna aggiornare tutti i files delle lingue uno a uno, ma sopratutto non consente il cambio della lingua in runtime, costringendo quindi l'utente a chiudere e riaprire l'applicazione.

Se invece si volesse cambiare lingua runtime?
Allora chiedo, visto che WPF usa in modo massiccio il binding, esiste un modo per avere in un unico file tutte le lingue e in base ad un indice segliere quale stringa associare alla proprietà del controllo?
Alessandro Del Sole [MVP]
Team
Team
Posts:121
Avatar

--
22 lug 2010 01:01  
Ciao, tendenzialmente ci sono 3 metodi per localizzare le applicazioni WPF. Quello di ricorrere alla CultureInfo è probabilmente il meno indicato, come giustamente rilevi anche tu. Il problema, però, è che l'articolo che segnali parla di un approccio Model-View-ViewModel, per cui in quel particolare contesto è più adatto (e, credimi, ho conosciuto di persona i due autori e sono forse i 2 guru di MVVM più forti al mondo). Dipende, poi, anche dalle esigenze nel senso che probabilmente l'applicazione MVVM dell'articolo è diversa da quella che devi fare tu.

Detto questo, l'approccio che ti consiglio io è questo di cui ho parlato nel mio blog:
http://community.visual-basic.it/al...25425.aspx

Dai un'occhiata anche ai feedback del post per le precisazioni. Tieni conto che quel codice e la versione di LocBaml utilizzata si riferiscono a .NET 3.5. Se lavori con .NET 4 e VS 2010, la versione aggiornata di LocBaml la puoi scaricare da qui:
http://code.msdn.microsoft.com/Proj...oadId=9333

Infine, ti segnalo la pagina MSDN dedicata alla tematica:
http://msdn.microsoft.com/en-us/library/ms788718.aspx

Alessandro Del Sole (WPF T&T Team)
Microsoft MVP - Visual Basic: Development
http://community.visual-basic.it/Alessandro
http://community.visual-basic.it/AlessandroEnglish
Jotric
Basic Member
Basic Member
Posts:8
Avatar

--
22 lug 2010 02:43  
Il grande Alessandro Del Sole....mi inchino...Ho letto (quasi) tutti i suoi articoli e le sue pubblicazioni. Ha un modo di scrivere davvero semplice ed esaustivo. Lei è il mio punto di riferimento in questo momento...Cmq non vorrei andare ot e quindi...

Gli articoli segnalati li avevo già presi in esame, il problema è che l'applicazione dovrebbe cambiare lingua runtime senza dover essere ricaricata. Si tratta di un configuratore e memorizzre le scelte fatte dall'utente fino al punto in cui è richiesto il cambio lingua, può diventare davvero fastidioso(anche perchè non è una cosa data a sapere a priori..inoltre per esigenze dell'operatore potrebbe essere ripetuta n volte....).
L'aritcolo che avevo segnalato, riferendosi alla tecnica MVVM, mi sembrava il più indicato per il cambio al volo della lingua, non tanto per la culture info, quanto per la tecnica del MVVM appunto. In più i file di risorse, prevedono la coppia chiave valore, io invece vorrei ottenere (per questioni di manutenzione del sw) una tabella chiave-valori, riuscendo magari ad avere un file separato che contenga anche i costi di traduzione, potendo standardizzare le applicazione con lo stesso tipo di traduzioni (tutti conosciamo l'italiano e discretamente l'inglese, ma vorrei evitare di scrivere stupidaggini in russo o spagnolo ).

Ho preso in esame due soluzioni relativa al cambio della lingua in run time per la precisione:
http://www.wpftutorial.net/Localize...nsion.html
http://wpflocalizeextension.codeplex.com/

Se ho capito bene, dai suoi articoli riguardanti la tecnica del MVVM,
- la view si limita alla mera visualizzazione, non avendo necessità di sapere cosa visualizzerà ma solo come (quindi impostando le stringhe da tradurre in binding)
- il MV dovrebbe essere dedicato all'interfacciamento bidirezionale con la view e con il model
- il model dovrebbe contenere i dati della mia tabella (anche un banale file xml come quello negli esempi dei suoi articoli: nodo=chiave, figlio1=lingua1,figlio2=lingua2,ecc)

Al cambio dell'indice della lingua (changepropertyid) dovrebbe innescarsi il meccanismo del binding. L'applicazione della tecnica del MVVM, premetterebbe di non dover riavviare l'applicazione.

Ovviamente posso aver fatto degli errori nel mio ragionamento e sono pronto ad incassare critiche/suggerimenti.
Nicola Gallo
New Member
New Member
Posts:1
Avatar

--
07 dic 2010 07:48  
Ciao,
se sei ancora interessato puoi dare uno sguardo alla libreria LocalizationLibrary ( http://localizationlibrary.codeplex.com ) che sto sviluppando su codeplex.
La libreria ti permette di usare StaticResource e DynamicResource. Nel tuo caso potresti usare le DynamicResource e decorare il tuo assembly, da caricare on demand, con attributi di tipo ResourceLocalizedAttribute.


[assembly: ResourceLocalized("surenameKey", "en", "Surename.")]
[assembly: ResourceLocalized("surenameKey", "it", "Cognome")]
You are not authorized to post a reply.

Active Forums 4.2
  
hd porn
 
© 2009-2011 WPF Tips&Tricks Team - Visual Basic Tips&Tricks Network
 
porno izleporno izle