2013-12-18 20 views
4

爲了使現有網站成爲多種語言,我遵循全球化技術,我已經爲不同的內容創建了3個資源文件,如標籤&標題文本文件,網格標題文本文件等... 現在我有兩個密鑰在不同的資源文件,即電子郵件和消息,在第三個地方,我想顯示這兩個關鍵字一起,即電子郵件。我需要創建第三個密鑰還是可以連接已有的密鑰?目前我使用下面的兩個代碼結合單個標籤的兩個資源密鑰.Net

For showing directly on page: 
HttpContext.GetGlobalResourceObject("ResourceLabelButton", "Email") 

For showing as text of any control like Textbox, label: 
Text ="<%$ Resources:ResourceContent, Email %>" 

我的.cs頁上連接兩個資源字符串,但它會增加的時間表,所以請建議所以我只能改變.aspx頁。

在此先感謝

回答

3

ASP。使用<%$ Something:Somese Else%>的NET標記屬性值具有稱爲ASP.NET Expressions的特殊語法。使用它們作爲屬性值幾乎是全有或全無;沒有辦法將任何代碼添加到ASPX文件來操縱這些表達式評估的內容。你必須在代碼隱藏方面做到這一點。

-1

試試這個:

Text ="<%$ Resources:ResourceContent, Email %>&nbsp;<%$ Resources:ResourceContent, Message %>" 
+0

我已經試過這個,它給出錯誤 'ResourceContent,Email%><%$ Resources:ResourceContent,Message'不是一個有效的表達式字符串。它需要使用以下語法:[className,] resourceKey。 –

0

如果正在使用這個值經常做出同樣的,其他連接一個第三個鍵在運行時

+0

如何在運行時連接? –

+0

你可以用.cs做到這一點,但是我不知道如何在aspx頁面上完成全局資源的工作,不知道在哪裏,但是我在某個地方讀過它是一個已知的全球化問題 –

1

你應該創建一個單獨的「電子郵件消息」的資源輸入,而不是串聯「電子郵件」和「消息」。要理解爲什麼,看看西班牙:

  • 電子郵件= 郵報electrónico
  • 消息= Mensaje

簡單連接,爲您提供了郵報electrónicoMensaje這是錯誤的。正確的翻譯是:

  • 電子郵件消息= Mensaje德郵報electrónico

注意,在翻譯,「電子郵件」和「消息」的訂單已經逆轉,新的單詞(de,意思是「of」)已插入到它們之間。

在另一方面,看翻譯的 「新郵件」 和 「最後的消息」:

  • 新郵件= Mensaje NUEVO
  • 最後留言= Ultimo的mensaje

正如你所看到的,有複雜的規則來控制何時顛倒單詞的順序以及何時插入de。當然,這些規則在其他語言中是不同的。

所以一般情況下,你不應該連接本地化的單詞或短語來形成一個更長的短語。
始終爲每個短語提供單獨的資源條目。

1

我有同樣的問題,我用這個選項,而不是解決它:

<asp:Label id="lbl1" runat="server" Text="Email: <%= HttpContext.GetGlobalResourceObject("ResourceContent", "Email") %>"> 

對於本地資源,使用GetLocalResourceObject方法,而不是GetGlobalResourceObject

0

與嘗試以下代碼

<asp:Label ID="lblNameAndNos" runat="server"> 
<%= ""+ Resources.Resources.Name + "/" + Resources.Resources.Nos %> 
</asp:Label> 

I不要使用裏面的Text屬性使用上面的方式