全球化和句子中的链接

时间:2009-08-11 20:39:33

标签: c# asp.net localization globalization hyperlink

我正在使用C#作为后端来全球化/本地化asp.net应用程序。我们正在将字符串提取到资源文件,并遇到了问题。我们试图将句子保持在一起,以便它们可以翻译,但链接不可能。例如:

<%= Strings.BeginningOfSentence %>
<asp:HyperLink id="exampleLink" runat="server"><%= Strings.MiddleOfSentence %></asp:HyperLink>
<%= Strings.EndOfSentence %>

字符串是资源文件。如果这是链接的正常html,我可以使用String.Format并将句子保持在一起,在html中添加两个参数,但这在这里打破了它。关于如何使这项工作的任何想法?

2 个答案:

答案 0 :(得分:4)

您不必使用HyperLink控件吗?如果需要动态链接,则可以将锚标记存储在参数化字符串中,并使用string.Format添加必要的属性值,如您所建议的那样。像这样:

代码:

myLiteral.Text = string.Format("{0} <a href=\"{1}\">{2}</a> {3}", Strings.BeginningOfSentence, myUrl, Strings.MiddleOfSentence, Strings.EndOfSentence);

ASPX:

<asp:Literal id="myLiteral" runat="server" />

答案 1 :(得分:1)

我发现参数化字符串极大地简化了与动态内容混合的翻译。例如,您可以在已翻译的字符串中包含可以插入link-html的占位符。这可能会排除使用服务器端超链接控件。示例字符串:

英文:

"The <a href=\"http://images.google.se/images?q=house&tab=wi\">house</a> in which we lived"

瑞典:

"<a href=\"http://images.google.se/images?q=hus&tab=wi\">huset</a> som vi bodde i"

请注意链接相对于链接在句子中的移动方式(瑞典语版本中的链接之前没有文字)。

如果您不想在翻译中包含标记,我想这可能会被用作参数化模板:

string googleSearchTemplate = "<a href=\"http://images.google.se/images?q={0}&tab=wi\">{1}</a>"

然后你可以将翻译的片段解析为链接html,然后将该片段插入到最终的字符串中:

string.Format("The {0} in which we lived", string.Format(googleSearchTemplate, "house", "house"));

然后你只需要将结果字符串插入页面。