为单个标签.Net组合两个资源键

本文关键字:两个 资源 单个 标签 Net 组合 | 更新日期: 2024-10-23 00:45:57

为了使现有网站成为多语言网站,我遵循全球化技术,为不同的内容创建了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页面上更改。

提前感谢

为单个标签.Net组合两个资源键

使用<%$的ASP.NET标记属性值Something:SomethingElse%>是一种特殊语法,称为ASP.NET表达式。使用它们作为属性值几乎是要么全有要么全无;无法在ASPX文件中添加任何代码来操作这些表达式的计算结果。您必须在代码后面执行此操作。

您应该为"电子邮件"创建一个单独的资源条目,而不是串联"电子邮件"answers"消息"。要了解原因,请查看西班牙语:

  • 电子邮件=Correo electrónico
  • 消息=Mensaje

简单的串联为您提供Correo electrónico Mensaje这是错误的正确的翻译是:

  • 电子邮件=Mensaje de correo electrónico

请注意,在翻译中,"电子邮件"answers"消息"的顺序颠倒了,在它们之间插入了一个新词(de,意思是"的")。

另一方面,看看"新消息"answers"最后消息"的翻译:

  • 新消息=Mensaje nuevo
  • 最后一条消息=Último mensaje

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

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

我遇到了同样的问题,我用这个选项解决了它:

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

对于本地资源,请使用GetLocalResourceObject方法而不是GetGlobalResourceObject

如果经常使用此值,则为其生成第三个键,否则在运行时连接

尝试使用以下代码

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

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