2017-01-01 130 views
0

我有两个资源文件Resource.resxResource.ar.resx 与下面的代码相同的密钥,但不同英语和阿拉伯数据在 的文本工作正常显示在下拉列表中的变化英语和阿拉伯数据同时保存按钮的文字总是显示英语不是阿拉伯语多种语言数据

 </tr> 
      <tr> 
     <td><span><%=Resources.Resource.Citations%></span></td> 
     <td> 
      <input runat="server" id="taCitations" type="number" style="width: 600px;" /></td> 
    </tr> 
</table> 
<asp:Button ID="btnSave" runat="server" Text="<%$Resources:Resource, Save%>" CssClass="btn" OnClick="btnSave_Click" /> 

我在母版页

<asp:DropDownList ID="ddlLang" runat="server" AutoPostBack="true"> 
           <asp:ListItem Text="English" Value="en-US"> 
           <asp:ListItem Text="Arabic" Value="ar-sa" /> 
          </asp:DropDownList> 

一个下拉列表,我的母版页的工作来改变语言是预渲染

protected void Page_PreRender(object sender, EventArgs e) 
{ 

    if (Request.Form["__EVENTTARGET"] != null && Request.Form["__EVENTTARGET"].Contains("ddlLang")) 
    { 
     //Set the Language. 
     Language = Request.Form[Request.Form["__EVENTTARGET"]]; 

    } 
    if (Language == "en-US") 
    { 
     Body.Attributes["dir"] = "ltr"; 
     tdAppParticulars.Attributes["align"] = "right"; 

    } 
    else 
    { 
     Body.Attributes["dir"] = "rtl"; 
     tdAppParticulars.Attributes["align"] = "left"; 

    } 
    Thread.CurrentThread.CurrentCulture = new CultureInfo(Language); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(Language); 
    List<ExtFormInstruction1> lefi = bal.ExtFormInstructionByType("External Reviewers"); 

    formInstructions = new Hashtable(); 
    formIDs = new Hashtable(); 
    string currentItemURL = ""; 
    foreach (ExtFormInstruction1 row in lefi) 
    { 
     string itemURL = row.Page; 
     formInstructions[row.Page] = Language == "ar-sa" ? "" : row.Instruction; 
     formIDs[row.Page] = row.FormID; 
     if (Language == "en-US") 
     { 
      lblPageTitle.Text = row.Title; 
     } 
     else if (Language == "ar-sa") 
     { 
      lblPageTitle.Text = bal.GetFormByPage(row.Page.Replace(".aspx", "Ar.aspx"))[0].Title; 

     } 
    } 

    MakeMenu(Language); 
    if (IsPostBack) 
    { 
     return; 
    } 
    lblApplicantEmail.Text = bal.GetApplicant(ApplicationID)[0].NameString; 
    lblEmployee.Text = erBAL.GetExtRevByID(ExtReviewerID)[0].Name; 
    /* printer friendly */ 
    if (Utils.IsPrintMode()) 
    { 
     tdLeftMenu.Visible = false; 
     lnkPrint.Visible = false; 
    } 
    lnkPrint.NavigateUrl = currentItemURL + "?print=1"; 

} 

语言是在母版页属性

public string Language 
{ 
    set 
    { 
     Session["Language"] = value; 
    } 
    get 
    { 
     if (Session["Language"] != null) 
     { 
      return Session["Language"].ToString(); 
     } 
     else 
     { 
      return "en-US"; 
     } 
    } 
} 

enter image description hereenter image description here

The resource files are added in the GlobalResources

+1

问题只是用'按钮? – Null

+0

是的没错! <%$ Resources:Resource,Save%>不支持多语言 – shomaail

+0

Resource.ar.resx没有'Save'键或值吗?另外,您可能拼错了键或资源文件的语法? – Null

回答

0

我宁愿做这样的:

<asp:Button ID="btnSave" runat="server" meta:resourceKey="SaveButton" CssClass="btn" OnClick="btnSave_Click" /> 

而在Resource.resx文件,条目就会像

Name: SaveButton.Text 
Value: Save 
Name: SaveButton.Tooltip 
Value: Click to Submit 

同样在Resource.ar.resx文件

Name: SaveButton.Text 
Value: حفظ 
Name: SaveButton.Tooltip 
Value: انقر فوق لتقديم 
+0

尽管我将Resource.resx和Resource.ar.resx文件放在App_LocalResources文件夹中 – shomaail