【问题标题】:Globalization and links in sentences全球化和句子中的链接
【发布时间】:2009-08-11 20:39:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# asp.net localization globalization hyperlink


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我发现参数化字符串极大地简化了与动态内容混合的翻译。例如,您可以在已翻译的字符串中包含可以插入 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"));
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 1970-01-01
        • 2011-06-07
        相关资源
        最近更新 更多