422 messaggi dal 11 febbraio 2013
Ciao a tutti,
mi hanno chiesto di impostare 3 lingue al sito che è già in produzione.

Come posso risolvere ?
Ho visto esempi tipo questo

https://www.aspsnippets.com/Articles/ASPNet-Multilingual-website-Support-and-display-Multiple-Languages-English-French-in-ASPNet.aspx

Mi chiedevo come fare invece quando attingo a tabelle nel database. Esempio ho un pannello dei filtri dove ho famiglia prodotto, collezione... ecc.

come faccio in questi casi?
Conviene usare una Session per filtrare la colonna giusta (Famiglia_it, Famiglia_en...ecc) ?

grazie come sempre per l'aiuto
Modificato da jjchuck il 04 settembre 2017 09.39 -
10.225 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la session scade dopo un periodo di inattività. Potrebbe essere fastidioso per l'utente dover riselezionare la lingua ad ogni login.
Ti conviene scrivere la lingua dell'utente in un cookie persistente, che sopravvivrà anche al riavvio del browser.
https://msdn.microsoft.com/it-it/library/78c837bd%28v=vs.100%29.aspx?f=255&MSPPError=-2147217396

Il cookie ti viene rispedito ad ogni richiesta quindi sarà facile leggerlo per recuperare la lingua. Prima di utilizzarlo nelle tue query SQL, ricordati però di "sanitizzarlo", ovvero verificare che sia compreso tra le lingue che supporti (es. "it", "en" o "fr"). Se fosse diverso da uno di quei valori, vuol dire che probabilmente l'utente ha manomesso il cookie e perciò il suo valore va ignorato, altrimenti saresti suscettibile di SQL injection.

ciao,
Moreno
Modificato da BrightSoul il 07 settembre 2017 20.20 -

Enjoy learning and just keep making
422 messaggi dal 11 febbraio 2013
Grazie per la risposta

La selezione della lingua è al Login perchè il sito è protetto da password.

Suggerisci ugualmente un cookie ?

grazie

 scrive
protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
    {          
        HttpCookie language = new HttpCookie("UserLanguage");

        switch (ddlLanguage.SelectedValue)
        {
            case "Inglese":               
                   language.Values["UserLanguage"] = "en-US";
                 break;
            case "Spagnolo":             
                    language.Values["UserLanguage"] = "es-AR";
                 break;
        }
       
        language.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(language);
    }

 legge

protected void Page_Load(object sender, EventArgs e)
    {
        String userLang = "";
        if (Request.Cookies["UserLanguage"] != null)
        {
            HttpCookie CookieKey = Request.Cookies["UserLanguage"];
            String cookieValue = CookieKey.Value.Split('=')[1];
            switch (cookieValue)
            {
                case ("en-US"):
                      userLang = cookieValue;                 
                      break;
                case ("es-AR"):
                      userLang = cookieValue;
                      break;
            }
          
            UserLanguage.Text = userLang.ToString();
        }
    }

Modificato da jjchuck il 08 settembre 2017 12.18 -
10.225 messaggi dal 09 febbraio 2002
Contributi

La selezione della lingua è al Login perchè il sito è protetto da password.
Suggerisci ugualmente un cookie ?

Sì, è una preferenza dell'utente, non c'è motivo di tenergliela segreta (è stato lui stesso a sceglierla).
L'importante è che verifichi che il valore che vai a rileggere dal cookie sia uno di quelli ammessi, dato che utenti malintenzionati possono alterare il contenuto dei cookie a loro piacimento.

ciao,
Moreno

Enjoy learning and just keep making
422 messaggi dal 11 febbraio 2013
scusate
ho notato che se entro con una lingua e poi esco per rientrare con la prima lingua
non riesco a modificare il cookie ovvero rientro con l'ultimo cookies

<asp:DropDownList ID="ddlLanguages"  runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlLanguages_SelectedIndexChanged">
                  <asp:ListItem Text="Ita" Value="it-IT" /> 
                  <asp:ListItem Text="Eng" Value="en-US" />
                  <asp:ListItem Text="Esp" Value="es-AR" />
               </asp:DropDownList>


se invece faccio questo tentativo con le lingue all 'indice 1 e 2 è tutto ok

come posso fare?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.