Salve a tutti, mi trovo nella stessa situazione, qualcuno ha risolto? vi descrivo lo scenario e propongo la mia idea, anche se non so se è realizzabile: sito multilingua, masterpage con i link ad ogni lingua, sul click richiamo un metodo (uno per ogni lingua) della classe MasterPage che setta la variabile di sessione Session("Culture")con la cultura relativa al click
codice:
Protected Sub linkIta_Click(sender As Object, e As EventArgs) Session("Culture") = New CultureInfo("it-IT")
Session("UICulture") = New CultureInfo("it-IT")
Server.Transfer(Request.Path)
End Sub
Ho creato una classe che eredita dalla classe Page dove riscrivo il metodo InitializeCulture() in modo che setti la sessione ad inglese nel caso non sia settata e applichi la cultura nella sessione.
codice:
Protected Overrides Sub InitializeCulture() Dim c As CultureInfo
If Session("Culture") IsNot Nothing Then
c = DirectCast(Session("Culture"), CultureInfo)
Else
c = New CultureInfo("en-US")
End If
Thread.CurrentThread.CurrentCulture = c
If Session("UICulture") IsNot Nothing Then
c = DirectCast(Session("UICulture"), CultureInfo)
Else
c = New CultureInfo("en-US")
End If
Thread.CurrentThread.CurrentUICulture = c
MyBase.InitializeCulture()
End Sub
In questo modo si verifica il problema per cui è stato aperto questo post, una chiamata all'indirizzo www.miosito.it/pagina1.aspx può reindirizzare ad una pagina in tutte le lingue.
Ho pensato di risolvere cosi, prendiamo un'esempio:
- richiesta dell'indirizzo www.miosito.it/pagina1.aspx
vorrei intercettare la chiamata e sostituire l'url con questo
www.miosito.it/LinguaNellaSessione/pagina1.aspx
altro esempio:
- richiesta dell'indirizzo www.miosito.it
potrebbe diventare
www.miosito.it/LinguaNellaSessione/
in questo modo alla stessa pagina ci si può accedere con percorsi diversi a seconda della lingua, facili da indicizzare.
Che ne dite?