Έτσι το έχω κάνει αλλά τα κείμενα δεν αλλάζουν. Συγκεκριμένα το ddl το έχω στη masterpage και περνάω την γλώσσα σαν querystring σε κάθε σελίδα. Συγκεκριμένα, όταν ο χρήστης διαλέγει γλώσσα τρέχει ο εξής κώδικας:
1 2 3 4 5 6 7 8 9 10 | Protected Sub LanguageDDL_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Select Case LanguageDDL.SelectedItem.Value Case 1 Response.Redirect(Request.Path & "?LangID=" & 1) Case 2 Response.Redirect(Request.Path & "?LangID=" & 2) Case 3 Response.Redirect(Request.Path & "?LangID=" & 3) End Select End Sub |
Όταν η εκάστοτε σελίδα παίρνει το query string, μέσα στη Page_Init τρέχει ο εξής κώδικας
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Select Case Request.QueryString("LangID") Case 1 Thread.CurrentThread.CurrentCulture = New CultureInfo("el-GR") Thread.CurrentThread.CurrentUICulture = New CultureInfo("el") Case 2 Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US") Thread.CurrentThread.CurrentUICulture = New CultureInfo("en")
Case 3 Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE") Thread.CurrentThread.CurrentUICulture = New CultureInfo("de") End Select |
Τα ονόμα των .resx αρχείων έχουν ως εξής
1. LanguageResource.resx (ελληνικά , fallback)
2. LanguageResource.en.resx (αγγλικά)
3. LanguareResource.de.resx (γερμανικά)
Και μία ερώτηση κ Καναβέ. Όταν λέτε ότι φορτώνει με τη γλώσσα του λειτουργικού φαντάζομαι ότι εννοείται την γλώσσα του λειτουργικού που χρησιμοποιείται ως web server υπολογιστή, γιατί αλλιώς διαβάζει τη γλώσσα του browser από τον τελικό χρήστη.