Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Sito asp.net Multilanguage
martedì 21 maggio 2013 - 16.36
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 4.0
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 21 mag 2013 - 16:36
1874_WebSite3.zip
Salve ragazzi e buon pomeriggio a tutti.
Sto, con l'aiuto di un tutorial su internet, cercando di capire come poter creare una applicazione web multilinguaggio utilizzando i resource locali e globali.
Fermo restando che Vi chiedo (per avere una maggiore sicurezza su quello che ho inteso) che differenza passa tra i resources locali e globali; Vi rendo noto il mio problema.
Per facilitarvi il tutto ho inserito il progettino zip della web application. di seguito i passi del mio lavoro:
1) Ho due pagine ASPX (Default e Default3) ognuna delle quali ha un resource locale in ita e inglese
211x204
9Kb
2) Imposto il culture e UICulture su Auto per ogni pagina
3) Imposto come al punto 2 anche sul webconfig
594x47
4Kb
4) Imposto sulla dropdown della pagina Default il codice necessario per variare la culture del browser (applicando lingue differenti)
il mio problema è questo:
Impostando la lingua inglese (per esempio) sulla dropdown della pagina default come posso fare affinchè tutte le pagine che vedrò d'ora in avanti siano sempre visualizzate in inglese?
Impostando infatti la lingua inglese sulla pagina Default dalla dropdown list mi viene correttamente impostata la lingua di quella pagina, ma se poi navigo il sito sul Default3 mi viene visualizzata la pagina in italiano, per quale motivo??? :)
Spero come sempre nel vostro aiuto... Grazieeee :)
Allego in attach il progetto
mexico77
Profilo
| Junior Member
96
messaggi | Data Invio:
mar 21 mag 2013 - 16:51
Allora la differenza tra risorse locali e globali come stesso le parole indicano è che le prime si riferiscono alla singola pagina mentre le seconde a tutte le occorrenze del sito a cui si riferiscono.
Poi per il tuo problema devi impostare:
Questo codice:
Protected Overrides Sub InitializeCulture()
Dim c As CultureInfo
' Culture
If (Not (Session("Culture")) Is Nothing) Then
c = CType(Session("Culture"), CultureInfo)
Else
c = New CultureInfo("it-it")
End If
Thread.CurrentThread.CurrentCulture = c
' UI Culture
If (Not (Session("UICulture")) Is Nothing) Then
c = CType(Session("UICulture"), CultureInfo)
Else
c = New CultureInfo("it-it")
End If
Thread.CurrentThread.CurrentUICulture = c
MyBase.InitializeCulture()
End Sub
Che viene eseguito all'inizio di ogni pagina. L'ideale è metterlo in una classe e richiamarla nella pagine per pura pulizia di codice.
Poi ovviamente quando hai la funzione che ti fa cambiare lingua devi impostare il cambio della CultureInfo etc
Session("Language") = 1
Dim culture As String = "it-it"
Session("Culture") = New CultureInfo(culture)
Session("UICulture") = New CultureInfo(culture)
Server.Transfer(Request.Path)
Spero ti sia stato di aiuto.
www.setteweb.it
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 21 mag 2013 - 16:55
Ciao Mexico e grazie intanto per la risposta.
Quindi facendo cosi io sbagliavo?
717x249
12Kb
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 21 mag 2013 - 17:19
perchè per ogni pagina devi inizializzare la cultura:
in questo modo:
Protected Overrides Sub InitializeCulture()
Dim cultura As String = ""
Dim lingua As String = ""
cultura = HttpContext.Current.Request.Cookies("IlTuoSITO").Values("lingua")
'System.Web.HttpContext.Current.Response.Write("httpModule " & cultura)
'se l'utente non ha mai cliccato uno dei pulsantini della Lingua il cookie non c'è e la cultura non può essere definita, pertanto, IMPOSTO LA CULTURA iTALIANA
If cultura = "" Then
cultura = "it-IT"
End If
System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(cultura) '("en-gb")
MyBase.InitializeCulture()
End Sub
Come vedi il tipo di cultura lo leggo da un cookie:
cultura =
è stata la mia scelta per archiviare la vultura/lingua scelta dall'utente.
Quindi quando cliccki sul pulsante lingua it/ing./fr. etc.... scrivi nel kookie o se vuoi in un db la lingua correntemente scelta.
In ogni pagina piazzi la sub InitializeCulture, che ti ho messo sopra.
Con questa il sistema intercetta la cultura definita e ti legge le variabili giuste che contengono il testo scritto nella lingua scelta.
Ciao e fammi sapere
PS ti suggerisco di evitare l'uso di variabili di sessione per stivare la lingua scelta. Sono soggette allo scadere della sessione, e possono dare sgradite sorprese al navigatore ;-) E poi un uso assiduo di queste nello stesso progetto te ne fa perdere il controllo, con possibilità di sovrascritture inattese. Insomma Evitale
Riccardo D'Aria
mexico77
Profilo
| Junior Member
96
messaggi | Data Invio:
mar 21 mag 2013 - 17:20
Come fai tu ti richiami la lingua selezionata ogni volta. e al caricamento è la stessa per questo conviene impostare la session.
www.setteweb.it
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 21 mag 2013 - 17:26
Perfetto ragazzi! grazie
Provo e vi faccio sapere! Siete stati utilissimi. Grazuie ancora
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 21 mag 2013 - 17:27
.....
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !