1

コードビハインド:

 ResourceManager rm;
    CultureInfo ci;
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            Session["Flag"] = null;
            Session["Language"] = null;
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            rm = new ResourceManager("Resources.Language",
                     System.Reflection.Assembly.Load("App_GlobalResources"));
            ci = Thread.CurrentThread.CurrentCulture;
            LoadLanguage(ci);

        }
    }
    private void LoadLanguage(CultureInfo ci) 
    {
        lblHindi.Text = rm.GetString("Hindi", ci);
        lblTelugu.Text = rm.GetString("Telugu", ci);

    }

App_GlobalResourcesフォルダーに次のファイルがあります

ここに画像の説明を入力

デザイン :

   <center>




        <a href="Default.aspx"><asp:Label ID="lblHindi" runat="server" Text="Hindi"></asp:Label></a>
        <br />
 <br />

        <a href="Default.aspx"><asp:Label ID="lblTelugu" runat="server" Text="Telugu"></asp:Label></a>
  <br />
        </center>

しかし、それはうまくいきません。

助けてください

4

2 に答える 2

0

あなたが書いたコードはまったく問題ありません。問題は、リソース ファイルから文字列にアクセスする方法にあるようです。値は異なる言語に翻訳されますが、各リソース ファイルで同じキーを維持する必要があります。Language.resx ファイルに英語の値を持つキー「SOME_KEY1」を作成するとします。他の resx ファイルで、他の言語に翻訳された異なる値を持つ同じキーを作成します。その後、次のように翻訳された文字列にアクセスできます。

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["Flag"] = null;
                Session["Language"] = null;

                rm = new ResourceManager("Resources.Language",
                         System.Reflection.Assembly.Load("App_GlobalResources"));

                LoadLanguage();
            }
        }

        private void LoadLanguage()
        {
            lblHindi.Text = rm.GetString("SOME_KEY1", new CultureInfo("hi-IN"));
            lblTelugu.Text = rm.GetString("SOME_KEY1", new CultureInfo("te-IN"));
        }
于 2013-04-22T10:08:41.410 に答える
0

このコードを追加して試すことはできますか?

"protected override void InitializeCulture()" -> アプリケーション層のカルチャーをオーバーライドするメソッドを呼び出す

protected override void InitializeCulture()
{
    //...
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
    base.InitializeCulture();
    ci = Thread.CurrentThread.CurrentCulture;
    //...
}

private void LoadLanguage(CultureInfo ci) 
{
    lblHindi.Text = rm.GetString("Hindi", ci);
    lblTelugu.Text = rm.GetString("Telugu", ci);

}
于 2013-04-22T09:48:05.827 に答える