将单个标签.Net的两个资源键组合在一起

时间:2013-12-18 06:06:54

标签: c# asp.net sql visual-studio-2010

为了使现有网站使用多语言,我遵循全球化技术,我为不同的内容创建了3个资源文件,如label&标题文本文件,网格标题文本文件等... 现在我在不同的资源文件中有两个密钥,即电子邮件和消息,在第三个地方我想要同时显示这些关键字,即电子邮件消息。我是否需要创建第三个键,或者我可以连接已有的键。目前我正在使用以下两个代码

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页面。

提前致谢

5 个答案:

答案 0 :(得分:4)

使用&lt;%$ Something:Something Else%&gt;的ASP.NET标记属性值是一种称为ASP.NET Expressions的特殊语法。使用它们作为属性值几乎是全有或全无;没有办法在ASPX文件中添加任何代码来操纵那些表达式评估的内容。您必须在代码隐藏中执行此操作。

答案 1 :(得分:1)

您应该为“电子邮件”创建单独的资源条目,而不是连接“电子邮件”和“邮件”。要理解原因,请看西班牙语:

  • 电子邮件= Correotlectrónico
  • 消息= Mensaje

简单连接为您提供CorreotlectrónicoMensaje这是错误的。正确的翻译是:

  • 电子邮件= Mensaje decorreotlectrónico

请注意,在翻译中,“电子邮件”和“消息”的顺序已被颠倒,并且在它们之间插入了一个新单词( de ,表示“of”)。< / p>

另一方面,请查看“新消息”和“最后消息”的翻译:

  • 新消息= Mensaje nuevo
  • 最后留言= Últimomenaje

正如您所看到的,有一些复杂的规则可以控制何时反转单词的顺序以及何时插入 de 。当然,这些规则在其他语言中是不同的。

所以一般来说,你不应该将本地化的单词或短语连接起来形成一个更长的短语 始终为每个词组提供单独的资源条目。

答案 2 :(得分:1)

我遇到了同样的问题,我通过使用此选项解决了这个问题:

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

对于本地资源,请使用GetLocalResourceObject方法代替GetGlobalResourceObject

答案 3 :(得分:0)

如果经常使用这个值,那么为它做第三个键,否则在运行时连接

答案 4 :(得分:0)

尝试使用以下代码

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

不使用Text内部属性,而是使用上面的方法