0

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

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

字符串是资源文件。如果这是链接的普通 html,我可以使用 String.Format 并将句子放在一起,将 html 作为两个参数添加,但这会破坏它。关于如何进行这项工作的任何想法?

4

2 回答 2

4

您不必为此使用超链接控件吗?如果您需要动态链接,则可以将锚标记存储在参数化字符串中,并使用 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" />
于 2009-08-11T20:55:07.047 回答
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"));

然后您只需要将生成的字符串插入到页面中。

于 2009-08-11T20:59:14.760 回答