为了使现有网站使用多语言,我遵循全球化技术,我为不同的内容创建了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页面。
提前致谢
答案 0 :(得分:4)
使用&lt;%$ Something:Something Else%&gt;的ASP.NET标记属性值是一种称为ASP.NET Expressions的特殊语法。使用它们作为属性值几乎是全有或全无;没有办法在ASPX文件中添加任何代码来操纵那些表达式评估的内容。您必须在代码隐藏中执行此操作。
答案 1 :(得分:1)
您应该为“电子邮件”创建单独的资源条目,而不是连接“电子邮件”和“邮件”。要理解原因,请看西班牙语:
简单连接为您提供CorreotlectrónicoMensaje。 这是错误的。正确的翻译是:
请注意,在翻译中,“电子邮件”和“消息”的顺序已被颠倒,并且在它们之间插入了一个新单词( de ,表示“of”)。< / p>
另一方面,请查看“新消息”和“最后消息”的翻译:
正如您所看到的,有一些复杂的规则可以控制何时反转单词的顺序以及何时插入 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内部属性,而是使用上面的方法