none
Cookie для много язычного сайта. RRS feed

  • Общие обсуждения

  • Ни могу найти реализацию cookie для мульти язычного сайта.

    Нашёл только вот это. Но как это всё реализовать?


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Globalization;
    using System.Threading;
    
    public partial class _Default : System.Web.UI.Page 
    {
        public HttpCookie mycook;
        string lang = "en-US";
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
            }
        }
    
        protected override void InitializeCulture()
        {
            if (Request.Cookies["Language"] != null)
            {
                if (Request.Cookies["Language"].Value != null)
                    lang = string.Format(Request.Cookies["Language"].Value);
            }
            if (!System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLower().StartsWith(lang.ToLower()))
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
            }        
        }
    
        private void SetLang(string newLang)
        {
            
            // удаление cookie
            Response.Cookies["Language"].Value = null;
            Response.Cookies["Language"].Expires = DateTime.Now.AddMonths(-1);
    
            mycook = new HttpCookie("Language");
            mycook.Value = newLang;
            Response.Cookies.Add(mycook);
            
            Response.Redirect(Request.Url.AbsolutePath);        
        }
    
        protected void IbtnEnglish(object sender, ImageClickEventArgs e)
        {
            SetLang("en-US");
        }
    
        protected void IbtnFrench(object sender, ImageClickEventArgs e)
        {
            SetLang("fr");
        }
    
        protected void IbtnHebrow(object sender, ImageClickEventArgs e)
        {
            SetLang("he");
        }
    
    }
    
    

    17 марта 2013 г. 16:11

Все ответы

  • Данная реализация для Web Forms, для Web Page она не подойдёт.
    17 марта 2013 г. 19:00
    Модератор
  • Вот посмотрите это статью.
    18 марта 2013 г. 9:25
    Модератор
  • Привет,

    Есть вариант создания через php хедеры, если Вам подходит:

    Use cookies to remember the language version users visited last time

    19 марта 2013 г. 9:25
    Модератор
  • Привет,

    Есть вариант создания через php хедеры, если Вам подходит:

    Use cookies to remember the language version users visited last time

    Для считывания Куки PHP код немного изменил, а для записи Куки использую код ASP. Всё работает.

    Но вот хочется совсем отойти от PHP.

    Код для WebMatrix. Код разместил на главной странице.
    Код считывания cookie:

    @{

    if (Request.Cookies["lang"] != null) {string lang = Server.HtmlEncode(Request.Cookies["lang"].Value); switch(lang) { case "ru": Response.Redirect("~/ru/");break; case "en": Response.Redirect("~/en/");break;

    }

    }

    При запуске код работает, куки считывает и перенаправляет в нужную папку.
    Но при проверке на SEO выходит ошибка 500. Тоже самое происходит и на Гугле в PageSpeed Insights.
    В чём проблема ни как не пойму, но всё указывает на Request.Cookies.
    Может есть какой то другой код для Автоматического определения языка сайта с использованием Cookie?

    И ещё ни давайте ссылки на использование глобализации с файлами resx. Всё ведь можно сделать проще...

    30 марта 2013 г. 8:26
  • Да. Программисты в Майкрософт отличные...  Тема закрыта!!!
    2 апреля 2013 г. 5:55