2017-01-09 13 views
0

У меня есть веб-сайт с использованием фреймворка 4. Я изменил язык с помощью глобальных ресурсов. на кодах щелчка кнопки за мной я использую эти коды.изменение культуры (язык) при нажатии кнопки

protected void Button2_Click(object sender, EventArgs e) 
{ 
    dil = "en-US"; 
    var ci = new CultureInfo(dil); //TO_DO Route culture 
    Thread.CurrentThread.CurrentUICulture = ci; 
    Thread.CurrentThread.CurrentCulture = ci; 
    Session["culture"] = ci; 

} 

А.Н. также мои RESX файлы:

-PB.resx

-PB.en-US.resx

-PB.ru-RU.resx

по умолчанию язык отлично работает, но как я могу перейти на английский и русский? где моя ошибка?

ответ

0

я решить ее после долгих поисков. это ответ и все необходимые коды. Я делаю это для главной страницы в visual studio 2010.

Вы можете использовать ispostback в загрузке страницы.

protected void Page_Load(object sender, EventArgs e) 
{ 

    //only does it on non-postback because otherwise the selected 
    //value will not reach event handler correctly 
    if (!Page.IsPostBack) 
    { 
     dil = Thread.CurrentThread.CurrentCulture.Name; 
    } 


} 

после после этого мы можем добавить кнопку мыши и печенье

protected void Button2_Click(object sender, EventArgs e) 
{ 


    dil = "en-US"; 
    //var ci = new CultureInfo(dil); //TO_DO Route culture 
    //Thread.CurrentThread.CurrentUICulture = ci; 
    //Thread.CurrentThread.CurrentCulture = ci; 
    //Session["culture"] = ci; 

    //Sets the cookie that is to be used by Global.asax 
    HttpCookie cookie = new HttpCookie("CultureInfo"); 
    cookie.Value = dil; 
    Response.Cookies.Add(cookie); 

    //Set the culture and reload the page for immediate effect. 
    //Future effects are handled by Global.asax 
    Thread.CurrentThread.CurrentCulture = 
        new CultureInfo(dil); 
    Thread.CurrentThread.CurrentUICulture = 
        new CultureInfo(dil); 
    Server.Transfer(Request.Path); 

} 

и последний файл global.asax помогает решить эту проблему.

//* 
Public void Application_BeginRequest(Object sender, EventArgs e) 
{  
// Code that runs on application startup                
HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"]; 
if (cookie != null && cookie.Value != null) 
{ 
System.Threading.Thread.CurrentThread.CurrentUICulture = new 
System.Globalization.CultureInfo(cookie.Value); 
System.Threading.Thread.CurrentThread.CurrentCulture = new  
System.Globalization.CultureInfo(cookie.Value); 
} 
else 
{ 
System.Threading.Thread.CurrentThread.CurrentUICulture = new 
System.Globalization.CultureInfo("tr-TR"); 
System.Threading.Thread.CurrentThread.CurrentCulture = new 
System.Globalization.CultureInfo("tr-TR"); 
} 
} 
//* 

Если вы используете теги html вместо тегов .net, вы можете использовать их для добавления текстового контроля.

<a><asp:Literal ID="Literal1" runat="server" Text="<%$Resources: PB, Home %>" /></a> 
0

Сначала вы должны хранить данные языка в cookie. Чтобы задать язык страницы, переопределите метод InitializeCulture.

protected override void InitializeCulture() 
    { 
     var currentLanguage= HttpContext.Current.Request.Cookies["dil"]; 
     string defaultLanguage="tr"; 
     if(currentLanguage==null) 
     { 
     //set cookie to defaultLanguage 
     } 
     else{ 
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(currentLanguage.Value); 
     Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
     } 
    } 

Чтобы изменить язык, нажав кнопку

protected void Button2_Click(object sender, EventArgs e) 
{ 
    dil = "en-US"; 
    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(dil); 
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
    HttpCookie hc = new HttpCookie("dil"); 
    hc.Expires=DateTime.Now.AddDays(30); 
    hc.Value=dil; 
    HttpContext.Current.Response.Cookies.Add(hc); 
} 
+0

Как установить язык по умолчанию в cookie. Я не знаю, как использовать cookie! – Handelika

+0

// установить cookie на defaultLanguage HttpCookie hc = new HttpCookie ("dil"); hc.Expires = DateTime.Now.AddDays (30); hc.Value = "tr"; HttpContext.Current.Response.Cookies.Add (hc); –

+0

К сожалению, мой C# не поддерживает. Я использую C# 4th version = ( – Handelika

Смежные вопросы