2009-08-11 7 views
0

Ich arbeite an der Globalisierung/Lokalisierung einer asp.net-Anwendung mit C# als Backend. Wir sind dabei, Zeichenfolgen in eine Ressourcendatei zu extrahieren und haben ein Problem festgestellt. Wir versuchen, Sätze zusammenzuhalten, so dass sie übersetzbar sind, aber dies ist nicht mit Links möglich. Zum Beispiel:Globalisierung und Links in Sätzen

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

Strings ist die Ressourcendatei. Wenn dies der normale HTML-Code für den Link wäre, könnte ich String.Format verwenden und den Satz zusammenhalten, indem ich den HTML-Code als zwei Parameter hinzufüge, aber das bricht hier ab. Irgendwelche Ideen, wie dies funktioniert?

Antwort

4

Sie müssen kein HyperLink-Steuerelement für diese verwenden? Wenn Sie eine dynamische Verknüpfung benötigen, können Sie das Anchor-Tag in einer parametrisierten Zeichenfolge speichern und die erforderlichen Attributwerte mithilfe von string.Format hinzufügen, wie Sie es vorgeschlagen haben. Etwas wie folgt aus:

Code:

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" /> 
+0

natürlich! der Code-hinten! – avaleske

1

Ich habe festgestellt, dass parametrisierte Saiten stark Übersetzungen mit dynamischen Inhalten gemischt vereinfacht. Zum Beispiel können Sie Platzhalter in der übersetzten Zeichenfolge haben, in die Link-HTML eingefügt werden kann. Dies kann jedoch die Verwendung serverseitiger Hyperlinksteuerelemente ausschließen. Beispiel Strings:

Englisch:

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

Schwedisch:

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

Hinweis, wie der Link im Satz in Bezug auf den Link bewegt hat (es gibt keinen Text vor dem Link in den schwedischen Ausführung).

Wenn Sie nicht das Markup in der Übersetzung enthalten sein sollen, ich denke, dass als parametrisierte Vorlage werden in selbst verwendet:

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

Dann können Sie übersetzte Stücke in den Link html analysieren, und dann Fügen Sie dieses Stück in die endgültige Zeichenfolge:

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

Dann müssen Sie nur die resultierende Zeichenfolge in die Seite einfügen.

Verwandte Themen