フレームワーク4を使用したWebサイトがあります。グローバルリソースを使用して言語を変更しました。ボタンの後ろにあるコードをクリックすると、これらのコードを使用します。
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
デフォルトの言語は問題なく動作しますが、どうすれば英語とロシア語に変更できますか?私の間違いはどこにありますか?
私は長い検索の後にそれを解決します。これが答えであり、必要なすべてのコードです。Visual Studio2010のマスターページ用に作成します。
ページの読み込みで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;
}
}
その後、ボタンクリックとCookieを追加できます
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");
}
}
//*
.netタグの代わりにhtmlタグを使用している場合は、これらを使用してテキストコントロールを追加できます。
<a><asp:Literal ID="Literal1" runat="server" Text="<%$Resources: PB, Home %>" /></a>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加