Bonsoir,
Je tente de traduire mon site en plusieurs langues grâce au système de Culture et UICulture avec des LocalResource et GlobalResource (fichier .resx), jusque la tout fonctionne à merveille.
J'ai cependant ajouté dans mon menu deux LinkButton "français" et "anglais", pour changer de culture quand l'utilisateur clique sur ceux-ci qui se trouvent dans ma MasterPage.
Quand on clique sur un des deux LinkButton pour changer de langue, j'excécute ce code-ci :
Protected Sub lnkFr_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkFr.Click
Session("user-language") = "fr-BE"
Response.Redirect("~/Default.aspx?Redir=" & Request.ServerVariables("URL"))
End Sub
Et dans ma page d'accueil j'ai ceci :
Protected Overrides Sub InitializeCulture()
If Session("user-language") IsNot Nothing Then
Dim lang As String = Session("user-language").ToString()
Dim selectedLanguage As String = lang
UICulture = lang
Culture = lang
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)
Thread.CurrentThread.CurrentUICulture = New CultureInfo(lang)
End If
MyBase.InitializeCulture()
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Redirection vers la page en cours de naviguation après changement de la culture
If Not Request.QueryString("Redir") Is Nothing Then
InitializeCulture()
Response.Redirect(Request.QueryString("Redir"))
End If
End Sub
Quand je suis sur ma page Default.aspx, tout fonctionne parfaitement, il change bien la Culture de ma page.
Seulement, quand je suis sur une autre page, autre que Default.aspx, que je clique sur mes LinkButton pour changer de langue, il exécute bien mon code qui se trouve sur ma page Default.aspx, puis il me redirige bien sur ma page sur laquelle j'ai cliquer sur le LinkButton de ma langue. Seul problème est qu'il ne prend pas en compe ma nouvelle Culture définie via ma page Default.aspx... Par contre si après je retourne sur ma page Default.aspx, il est bien dans la Culture que j'avais choisie.. En gros il ne perd pas ma culture, c'est juste qu'il ne l'applique pas sur mes autres pages.
Pourquoi n'ais-je pas mis le code de changement de Culture dans ma MasterPage ? Tout simplement car je n'y suis pas parevenu. Il ne voulais pas de mon Protected Overrides Sub InitializeCulture()...
Comment faire pour contourner ce problème plus facilement ? Comment changer ma Culure depuis ma MasterPage ? Ce serait nettement moin bricolage...
Vos propositions sont les bienvenues :-)
Merci à vous.
A++ 
Fabien Schenkels (alias fabienfs)