Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    34

    Multilingua MasterPage e Urlrewriting

    Salve a tutti, riapro un argomento gia trattato qui
    http://forum.html.it/forum/showthrea...readid=1431897

    Sto sviluppando un sito con le tecnologie menzionate nel titolo, il problema che si verifica riguarda l'indicizzazione: con questa configurazione ogni pagina può essere visualizzata in diverse lingue ma l'indirizzo è sempre lo stesso. Questo è un problema per essere indicizzati correttamente.

    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:
    ProtectedSub linkIta_Click(sender AsObject, e AsEventArgs)Session("Culture")=NewCultureInfo("it-IT")
    Session("UICulture")=NewCultureInfo("it-IT")


    Server.Transfer(Request.Path)
    EndSub

    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:
    ProtectedOverridesSubInitializeCulture()Dim c AsCultureInfo
    IfSession("Culture")IsNotNothingThen
    c
    =DirectCast(Session("Culture"),CultureInfo)
    Else
    c
    =NewCultureInfo("en-US")
    EndIf


    Thread.CurrentThread.CurrentCulture= c


    IfSession("UICulture")IsNotNothingThen
    c
    =DirectCast(Session("UICulture"),CultureInfo)
    Else
    c
    =NewCultureInfo("en-US")
    EndIf


    Thread.CurrentThread.CurrentUICulture= c
    MyBase.InitializeCulture()
    EndSub

    In questo modo si verifica il problema per cui è stato aperto questo post, una chiamata all'indirizzowww.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?

  2. #2
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Allora diciamo che hai una cosa del genere:

    Protected Sub EngFlag_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EngFlag.Click
    Session("Language") = 2
    Dim culture As String = "en-us"
    Session("Culture") = New CultureInfo(culture)
    Session("UICulture") = New CultureInfo(culture)
    Response.Redirect(Request.Path)
    End Sub

    Ora dove sta Request.Path dovresti abbinare una Sub che ti cambia il path e ti aggiunge la lingua /Eng/Tuapagina.aspx e poi tramite urlrewrite vedi dove redizionarla.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    34
    Grazie Mexican,

    il mio problema è proprio lato url rewriting, non so come gestire le richieste, forse dovrei anche elaborare la stringa?

  4. #4
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Beh si certo

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    34
    Nessuno sa aiutarmi?

  6. #6
    Non so se può funzionare, ma potresti usare Intelligencia.UrlRewriter e preparare un file rewriter con regole di questo tipo:

    codice:
    <rewriter>
       <rewrite url="~/en/(.+)" to="~/$1" />
       <rewrite url="~/it/(.+)" to="~/$1" />
       ...
    </rewriter>
    Non so darti dettagli, aiuti aggiuntivi o dirti se il codice è completamente corretto perché non lo conosco benissimo, l'ho usato in un progetto, ha funzionato e non me ne sono più preoccupato...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.