0

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

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

文字列はリソースファイルです。これがリンクの通常のhtmlである場合、String.Formatを使用して文をまとめ、htmlを2つのパラメーターとして追加できますが、ここでは壊れます。これを機能させる方法について何かアイデアはありますか?

4

2 に答える 2

4

これにはハイパーリンクコントロールを使用する必要はありませんか?動的リンクが必要な場合は、アンカータグをパラメーター化された文字列に格納し、提案したように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" />
于 2009-08-11T20:55:07.047 に答える
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"));

次に、結果の文字列をページに挿入する必要があります。

于 2009-08-11T20:59:14.760 に答える