2017-02-21 80 views
5

我試圖翻譯我的aspx頁面中按鈕的文本。我正在使用asp.net webforms,但我還沒有實現它。在MVC中,我可以做到我想要的,但在webforms中,這對我來說是一種痛苦。使用屬性本地化文本Asp.Net中的WebForms WebForms in aspx頁面

這裏是我的資源

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" /> 

頁有人可以幫我做這背後?

回答

1

你應該做一點更多的研究...
看一看this

1)裏面創建上面的文件夾的文件夾「App_GlobalResources文件」
2)創建資源文件「ResourceStrings」和名稱爲 「KEY1」

然後記錄:

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

爲什麼我不能使用屬性內的資源,就像我在MVC中做的那樣? –

3

這是我如何做到這一點上的Visual Studio 2013:

  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或位於同一文件夾中文件。

    Frontend.Master.resx的標籤和消息對默認語言
    Frontend.Master。 pt-br .resx for 巴西葡萄牙語標籤和消息。

    如果用戶將其瀏覽器的語言更改爲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> 
    

GlobalResources文件生成.designer.cs文件。如果資源文件的名稱爲 'Labels.pt-br.resx',則該文件在名爲Resources的全局namespace中生成名爲'Labels'的靜態類 。負責這一點的是在資源文件屬性中定義的'自定義工具'GlobalResourceProxyGenerator,您可以訪問編寫Resources.Labels.ResourceKey的全局資源。

爲了LocalResources文件等作爲GlobalResources靜態訪問,你可以做到以下幾點:

  1. 選擇本地資源文件
  2. 按F4鍵或右鍵單擊並選擇「屬性」
  3. Custom Tool type'PublicResXFileCodeGenerator'
  4. On Build Action select Embedded Resource
  5. 此後重建您的應用程序或網站。現在您可以看到VisualStudio生成一個嵌套在資源文件中的.designer.cs文件。

如何使用它?

按照我在此答案中創建的結構,我們在MasterPages文件夾中有一個LocalResource,用於生成名稱空間WebFormsProject2.MasterPages.App_LocalResources。 如果在另一個文本編輯器中打開'.designer.cs'(在本例中爲Frontend.Master.designer.cs),您將看到它在名稱空間WebFormsProject2.MasterPages.App_LocalResources上生成名爲Frontend_Master的類以及一些與您創建的資源鍵名稱相同的靜態屬性在資源文件中。 現在您只需創建對此名稱空間的引用並訪問屬性,如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> 
+0

爲什麼我不能像使用MVC那樣使用屬性內的資源? –

+0

@LeandroDeMelloFagundes請參閱我的答案**編輯**部分 –

2

在 「App_GlobalResources文件」 創建資源文件的文件夾,如下:

enter image description here

然後添加按鈕上的文字在資源文件內容如下: enter image description here

創建資源對於每個文件,並要在按鈕上的文字爲下面的按鈕文本傳輸到

和源代碼更改每語言: enter image description here

希望這有助於

+0

爲什麼我不能使用屬性內部的資源,就像我在MVC中那樣? –

+0

@LeandroDeMelloFagundes您可以使用隱式本地化,其中ASP.NET通過創建一個從.NET中檢索特定資源的表達式,從資源管理器基於資源鍵匹配控件的屬性或顯式本地化來填充屬性值框架資源管理器。請參閱:https://msdn.microsoft.com/en-us/library/ms228093(v=vs.80).aspx – SJPadikkoth