我正在使用C#作为后端来全球化/本地化asp.net应用程序。我们正在将字符串提取到资源文件,并遇到了问题。我们试图将句子保持在一起,以便它们可以翻译,但链接不可能。例如:
<%= Strings.BeginningOfSentence %>
<asp:HyperLink id="exampleLink" runat="server"><%= Strings.MiddleOfSentence %></asp:HyperLink>
<%= Strings.EndOfSentence %>
字符串是资源文件。如果这是链接的正常html,我可以使用String.Format并将句子保持在一起,在html中添加两个参数,但这在这里打破了它。关于如何使这项工作的任何想法?
答案 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"));
然后你只需要将结果字符串插入页面。