【问题标题】:App_GlobalResources not working for multilanguage support in asp.netApp_GlobalResources 不适用于 asp.net 中的多语言支持
【发布时间】:2013-04-22 09:32:31
【问题描述】:

后面的代码:

 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>

但是它不起作用我该怎么办

请帮忙

【问题讨论】:

    标签: c# asp.net app-globalresources


    【解决方案1】:

    您可以添加并尝试此代码吗?

    "protected override void InitializeCulture()" -> 待调用的方法覆盖应用层Culture

    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);
    
    }
    

    【讨论】:

    • 我在哪里调用我的 LoadLangauage 方法
    【解决方案2】:

    您编写的代码非常好。似乎问题在于您从资源文件访问字符串的方式。您必须在每个资源文件中维护相同的 Key,而 value 将被翻译成不同的语言。假设您将在 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"));
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 2022-09-18
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      相关资源
      最近更新 更多