2009-08-11 18 views
0

私は、C#をバックエンドとしてasp.netアプリケーションのグローバリゼーション/ローカライズに取り組んでいます。文字列をリソースファイルに抽出する過程にあり、問題が発生しました。私たちは文章をまとめて翻訳できるようにしていますが、これはリンクでは不可能です。例:文章のグローバル化とリンク

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

文字列はリソースファイルです。これがリンクの通常のhtmlだったら、String.Formatを使用して、2つのパラメータとしてhtmlを追加して文章をまとめておくことができますが、ここではそれを壊してしまいます。どのようにこの作品を作るための任意のアイデアですか?

答えて

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

もちろん!コードビハインド! – avaleske

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")); 

次に、結果の文字列をページに挿入するだけです。