使用aspx页面中的Asp.Net WebForms上的“属性资源”本地化文本

时间:2017-02-21 11:30:38

标签: c# asp.net webforms localization resources

我试图翻译我的aspx页面中的按钮文本。我使用的是asp.net webforms,但我还没有实现。在MVC中,我可以完全按照自己的意愿行事,但在网络形式中,这对我来说是一种痛苦。

这是我的资源

My reources

我试图在aspx中使用它但没有成功。我可以使用此代码在代码中执行此操作

 protected void Page_Load(object sender, EventArgs e)
    {
        Button1.Text = Properties.Resources.BUTTON_SEND;
    }

但我真的想直接在页面

中进行
 <asp:Button ID="Button1" runat="server" Text="HERE_COMES_THE_LOCALIZABLE_TEXT" />

有人能帮助我吗?

3 个答案:

答案 0 :(得分:6)

这就是我在Visual Studio 2013,2015和2017上的表现:

  1. 对于全局资源,请右键单击Project并选择Add > Add ASP.NET Folder > App_GlobalResources
  2. 对于本地资源,右键单击要使用资源的文件所在的文件夹,然后选择Add > Add ASP.NET Folder > App_LocalResources

      

    对于标签和错误消息,我更喜欢使用LocalResources。这种做法使项目更有条理,更容易修改。这是一个link以获取更多详细信息。

  3. 创建资源文件并将其命名如下:

    Creation

      

    可以根据需要创建任意数量的 App_LocalResources 文件夹,但同样可以创建 App_LocalResources 文件夹,您可以在其中放置资源文件(.resx) ,必须与.aspx.Master.ascx文件位于同一文件夹中。

    Frontend.Master.resx用于标签和消息的默认语言
    巴西葡萄牙语标签和消息的前端.Master。 pt-br .resx。

      

    如果用户将其浏览器的语言更改为pt-BR,则该页面将使用pt-br.resx

  4. 创建资源项。 名称 =键, =显示文字

    Editing

  5. 使用本地或全局资源文件:

    <head>
         <title><%= GetGlobalResourceObject("Labels", "HelloWorld") %></title>
    </head>
    <body>
        <button type="button">
            <span><%= GetLocalResourceObject("Header_NavButton_Sr") %></span>
            <asp:Literal runat="server" Text="<%$ resources:Header_NavButton_Sr %>"></asp:Literal>
        </button>
        <a href="index.html"><%= GetLocalResourceObject("Header_TextLogo") %></a>
        <asp:TextBox ID="tb1" runat="server" Text="<%$ resources:Navbar_Home %>"></asp:TextBox>
    </body>
    
  6.   

    GlobalResources文件生成.designer.cs文件。这个文件生成   一个名为'Labels'的静态类,如果资源文件的名称是   'Labels.pt-br.resx',位于名为namespace的全球Resources中。对此负责的是资源文件属性中定义的“自定义工具”GlobalResourceProxyGenerator,您可以访问写Resources.Labels.ResourceKey的全局资源。

    要使LocalResources文件像GlobalResources一样进行静态访问,您可以执行以下操作:

    1. 选择本地资源文件
    2. 按F4或右键单击并选择“属性”
    3. Custom Tool上输入'PublicResXFileCodeGenerator'
    4. 点击Build Action选择Embedded Resource
    5. 在此之后,重建您的应用程序或网站。现在您可以看到VisualStudio生成一个嵌套了资源文件的.designer.cs文件。
    6. 如何使用?

      按照我在此答案中创建的结构,我们在MasterPages文件夹中有一个LocalResource,生成名称空间WebFormsProject2.MasterPages.App_LocalResources。 如果在另一个文本编辑器上打开'.designer.cs',在本例中为Frontend.Master.designer.cs,您将看到它在命名空间Frontend_Master上生成一个名为WebFormsProject2.MasterPages.App_LocalResources的类,并且有一些静态与您在资源文件中创建的资源键同名的属性。 现在,您只需要创建对此命名空间的引用并访问Frontend_Master.Header_TextLogo等属性。

      实施例:

      <%@ Import Namespace="WebFormsProject2.MasterPages.App_LocalResources" %>
      
      <!DOCTYPE html>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
      
          <title><%= Frontend_Master.Header_TextLogo %></title>
      
      </head>
      <body>...</body>
      

答案 1 :(得分:2)

在&#34; App_GlobalResources &#34;中创建资源文件文件夹如下:

enter image description here

然后在资源文件中添加按钮文本,如下所示: enter image description here

为要将按钮文本传输到

的每种语言创建资源文件

在源代码中更改按钮文本如下: enter image description here

希望这有帮助

答案 2 :(得分:1)

你应该做更多的研究......
看看this

1)创建一个文件夹&#34; App_GlobalResources&#34;
2)在上面的文件夹中创建一个资源文件&#34; ResourceStrings&#34;以及名称为&#34; Key1&#34;

的记录

然后:

<asp:Button ID="Button1" runat="server"  Text="<%$ Resources:ResourceStrings, Key1 %>" />