2012-01-07 3 views
0

CurrentCultureCurrentUICultureを変更しても、関連する文字列は.resxファイルから取り込まれないので、既定のカルチャから取得するコードがあります。MVCとグローバリゼーション

<map id="langs" name="langselect"> 
      <area shape="rect" coords="0,0,18,11" alt="en-GB" onmouseover="tooltip.show('en-GB', 60);" onmouseout="tooltip.hide();" onclick="setCulture('en-GB');" /> 
      <area shape="rect" coords="25,1,41,11" alt="fi-FI" onmouseover="tooltip.show('fi-FI', 48);" onmouseout="tooltip.hide();" onclick="setCulture('fi-FI');" /> 
     </map> 

function setCulture(culture) { 

    $.post('/Gameplan/MainGP/SetCulture', { culture: culture }, function (result) { 

    }); 

} 

public void SetCulture(string culture) 
    { 
     Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

    } 

EDIT:誰が助けることができ、これは私のコードである私は、次のコードを追加しているが、私はまだ同じ問題があります。

public void SetCulture(string culture) 
    { 
     Session["Culture"] = culture; 
     Thread.CurrentThread.CurrentCulture = new CultureInfo(Session["Culture"].ToString()); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["Culture"].ToString()); 
    } 

protected void Application_AcquireRequestState(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = new CultureInfo(Session["Culture"].ToString()); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["Culture"].ToString()); 
    } 
+0

これはほぼ正確に私の作品です - あなたのリソースファイルは正しいものです(私は愚かな質問のようですが、簡単な間違いはしばしば見つけるのが最も難しいことを知っています) –

+0

私は 'web.config'システムでこれも持っています。 web'セクション ''を使用していますが、これはブラウザから優先言語を取得するためです。 –

+0

これは上記のコードを使って動作させることができますが、ページを更新した後でしか動作しません。ブラウザでリフレッシュをクリックするのではなく、上記のコードでフラグ画像をクリックすると言語を変更する必要があります。 – user517406

答えて

0

あなたはどこの文化を保存する必要があります(クッキー/セッション/どんなものであれ)、すべての要求に適用します。

Global.asaxのASP.Net MVCでは、AquireRequestStateは、文化を適用するためのコードを入れるのに適しているようです。

関連する問題