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;
}
}
でも動作しません。私は私の誤りを見つけることができません。
あなたはイーグルアイを持っているのでこれは仕事をしたいからです:) –
ありがとう。小さな提案は定数を使用することです。あなたはその定数を使うことができます。入力エラーからあなたを救うことができます(または、修正する場所が1つしかない場合)。 –