2011-11-19 7 views
1

私のプロジェクトでは、ツリーのグローバルローカリゼーションファイルを追加しました:Main.en-US.resx + Main.ru-Ru.resx + Main.uk-UA.resxをフォルダApp_GlobalResourcesに追加しました。マスターページでローカリゼーションの価値はどのように得られますか?

私はこのようなセッションに文化を設定します。

protected void SetUSA_Click(object sender, ImageClickEventArgs e) 
     { 
      Session["MyCulture"] = CultureInfo.CreateSpecificCulture("en-US"); 
      Server.Transfer(Request.Url.LocalPath); 
     } 

とソーンクラスで、私は文化をINIT:

public class BaseForm : System.Web.UI.Page 
    { 
     protected override void InitializeCulture() 
     { 
      SetCulture(); 
      base.InitializeCulture(); 
     } 

     private void SetCulture() 
     { 
      if (Session["myCulture"] != null) 
      { 
       CultureInfo culture = (CultureInfo)Session["myCulture"]; 
       Thread.CurrentThread.CurrentCulture = culture; 
       Thread.CurrentThread.CurrentUICulture = culture;     
      } 
     } 

いくつかのページの継承このクラス:

public partial class ProductType : WrapperObjects.BaseForm 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 

コード内で取得する値:

string ColumnName = CommonUtils.GetValueField("Main", "ProductTypeNameTitle", (CultureInfo)HttpContext.Current.Session["MyCulture"]); 


public static string GetValueField(string nameFileResources, string nameField, CultureInfo currentCulture) 
     { 
      try 
      { 
       if (currentCulture == null) currentCulture = new CultureInfo("ru-RU"); 
       object fieldValue = HttpContext.GetGlobalResourceObject(nameFileResources, nameField, currentCulture); 
       return fieldValue == null ? nameField : fieldValue.ToString(); 
      } 
      catch (Exception ex) 
      { 
       return nameField; 
      } 
     } 

でも動作しません。私は私の誤りを見つけることができません。

答えて

0

セッション変数名"myCulture""MyCulture"を混在させているようです。

+0

あなたはイーグルアイを持っているのでこれは仕事をしたいからです:) –

+0

ありがとう。小さな提案は定数を使用することです。あなたはその定数を使うことができます。入力エラーからあなたを救うことができます(または、修正する場所が1つしかない場合)。 –

関連する問題