Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为单标签.Net合并两个资源键_C#_Asp.net_Sql_Visual Studio 2010 - Fatal编程技术网

C# 为单标签.Net合并两个资源键

C# 为单标签.Net合并两个资源键,c#,asp.net,sql,visual-studio-2010,C#,Asp.net,Sql,Visual Studio 2010,为了使现有的网站多语言,我遵循全球化技术,我已经为不同的内容创建了3个资源文件,如标签和标题文本文件,网格标题文本文件等。。。 现在我在不同的资源文件中有两个关键字,即Email和Message,在第三个位置,我想同时显示这两个关键字,即Email Message。我是否需要创建第三个键,或者我可以连接已有的键。目前我使用以下两个代码 For showing directly on page: HttpContext.GetGlobalResourceObject("ResourceLabelB

为了使现有的网站多语言,我遵循全球化技术,我已经为不同的内容创建了3个资源文件,如标签和标题文本文件,网格标题文本文件等。。。 现在我在不同的资源文件中有两个关键字,即Email和Message,在第三个位置,我想同时显示这两个关键字,即Email Message。我是否需要创建第三个键,或者我可以连接已有的键。目前我使用以下两个代码

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

For showing as text of any control like Textbox, label:
Text ="<%$ Resources:ResourceContent, Email %>"
用于直接显示在页面上:
HttpContext.GetGlobalResourceObject(“ResourceLabelButton”,“电子邮件”)
用于显示任何控件(如Textbox)的文本,标签:
Text=“”
我可以在.cs页面上连接两个资源字符串,但这会增加时间线,所以请建议我只能在.aspx页面上更改


提前感谢

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

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

  • 电子邮件=Correo Electroónico
  • 消息=Mensaje
简单的连接可以让您获得Correo Electroónico Mensaje这是错误的。正确的翻译是:

  • 电子邮件=Mensaje de correo electroónico
请注意,在翻译中,“Email”和“Message”的顺序颠倒了,并且在它们之间插入了一个新词(de,意思是“of”)

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

  • 新消息=Mensaje nuevo
  • 最后一条消息=阿尔蒂莫·门萨耶
如您所见,有一些复杂的规则控制何时颠倒单词顺序以及何时插入de。当然,这些规则在其他语言中是不同的

因此,一般来说,您不应该将本地化的单词或短语连接起来形成较长的短语。

始终为每个短语提供单独的资源条目。使用的ASP.NET标记属性值具有一种称为的特殊语法。将它们用作属性值几乎是全部或全部;无法向ASPX文件中添加任何代码来操作这些表达式的计算结果。您必须在代码隐藏中执行此操作。

我遇到了相同的问题,我使用此选项解决了此问题:

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


不使用内部文本属性,而是使用上述方式

如何在运行时连接?您可以在.cs中进行连接,但我不知道如何在全局资源的aspx页面中进行连接,不确定在何处,但我以前在某个地方读到过这是一个已知的全球化问题