Diskuze: ASP.NET Redirect podle jazyku

C# .NET .NET (C# a Visual Basic) ASP.NET Redirect podle jazyku American English version English version

Avatar
BlugW
Redaktor
Avatar
BlugW:

Hoj,

chci poprosit jestli mi někdo neporadí.

Zkouším udělat redirect stránky podle jazyka návštěvníka.
Mám script, ale nějak mi nefunguje, můžete mi někdo poradit v čem je problem?

switch (HttpUtility.HtmlEncode(Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]))
{

    case "cs-CZ":
    Response.Redirect("http://www.seznam.cz");
    break;

    case "en-EN":
    Response.Redirect("http://www.google.com");
    break;

}

Díky

Odpovědět 27.2.2014 16:57
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
BlugW
Redaktor
Avatar
BlugW:

Tak tohle mi funguje:

if (HttpUtility.HtmlEncode(Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]) == HttpUtility.HtmlEncode ("cs-CZ"))
    {
        Response.Redirect ("http://www.seznam.cz");
    }
else
    {
        Response.Redirect ("http://www.google.com");
    }

Ale nevím jak udělat pomoci switche nebo if když chci např. 3, nebo 5 jazyku.

5x stejnou podminku asi dělat je blbost.

Nahoru Odpovědět 27.2.2014 17:35
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
exyi
Redaktor
Avatar
exyi:

Zkus se debuggerem podivat co je v te variable a podle toho to napsat do switche. Jinak to zkusim az se dostanu k pocitaci.

 
Nahoru Odpovědět 27.2.2014 17:39
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na BlugW
Zdeněk Pavlátka:

Zkus tohle:

switch (Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"])
{

    case "cs-CZ":
    Response.Redirect("http://www.seznam.cz");
    break;

    case "en-EN":
    Response.Redirect("http://www.google.com");
    break;

}

Podle mě je problém v tom, že hodnotu z Request.Server­Variables["HTTP_AC­CEPT_LANGUAGE"] proháníš metodou HttpUtility.HtmlEn­code(), ale pak jí porovnáváš s "běžnými" stringy. U podmínky, která ti funguje máš HttpUtility.HtmlEn­code ("cs-CZ"), kdežto ve switchi máš jen "cs-CZ".

Nahoru Odpovědět  +1 27.2.2014 17:41
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
BlugW
Redaktor
Avatar
BlugW:

Už jsem to našel.

Možná někomu pomůže :)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ViewSwitcher
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string sLang = Request.UserLanguages[0];
            sLang = sLang.Substring(0, 2);

            switch (sLang)
            {
                case "en":
                    Response.Redirect("http://www.google.com/");
                    break;
                case "cs":
                    Response.Redirect("http://www.seznam.cz/");
                    break;
        }
    }
}
Nahoru Odpovědět 27.2.2014 17:48
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na BlugW
Zdeněk Pavlátka:

To je prakticky totéž, co jsem psal.

Nahoru Odpovědět 27.2.2014 17:51
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
BlugW:

Já jsem to sem dál dřív než přečetl odpovědi :D

Nahoru Odpovědět  +1 27.2.2014 17:54
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.