2009-08-11 21 views
0

Je travaille sur la globalisation/localisation d'une application asp.net avec C# comme backend. Nous sommes en train d'extraire des chaînes dans un fichier de ressources et nous avons rencontré un problème. Nous essayons de garder les phrases ensemble pour qu'elles soient traduisibles, mais ce n'est pas possible avec des liens. Par exemple:Globalisation et liens dans les phrases

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

La chaîne est le fichier de ressources. Si c'était le code html normal pour le lien, je pourrais utiliser String.Format et garder la phrase ensemble, en ajoutant le html comme deux paramètres, mais cela le casse ici. Des idées sur la façon de faire ce travail?

Répondre

4

Vous n'avez pas besoin d'utiliser un contrôle HyperLink pour cela? Si vous avez besoin d'un lien dynamique, vous pouvez stocker la balise d'ancrage dans une chaîne paramétrée et ajouter les valeurs d'attribut nécessaires à l'aide de string.Format, comme vous l'avez suggéré. Quelque chose comme ceci:

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

bien sûr! le code-derrière! – avaleske

1

j'ai trouvé que les chaînes paramétrées simplifie considérablement les traductions mélangées avec du contenu dynamique. Par exemple, vous pouvez avoir des espaces réservés dans la chaîne traduite dans laquelle link-html peut être inséré. Cela peut exclure l'utilisation de contrôles de lien hypertexte côté serveur. chaînes Exemple:

Anglais:

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

suédoise:

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

Notez comment le lien est déplacé dans la phrase par rapport au lien (il n'y a pas de texte avant que le lien dans le suédois version).

Si vous ne souhaitez pas inclure le balisage dans la traduction, je suppose que peut être utilisé comme un modèle paramétrés en lui-même:

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

Vous pouvez ensuite analyser des morceaux traduits dans le code HTML de lien, puis insérer cette pièce dans la dernière chaîne:

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

Ensuite, il suffit d'insérer la chaîne résultante dans la page.