14

私のアプリケーションには、静的テキストと HTML の書式設定とリンクが混在する段落があります。リソースをマークアップから切り離したままにする、優れたローカリゼーション ソリューションを探しています。次の段落があるとします。

<p>Let's have a <a href="someURL">cup of coffee</a> and get <b>energized</b>.</p>

標準の resx ソリューションを使用すると、HTML マークアップとリンク先を resx 文字列に埋め込む必要があります。これは、マークアップ/CSS/アプリの構造をリソースと結びつけるため、良くありません。

次善の策は、ローカライズされたコンテンツにマークアップが含まれないように段落を分割することです。上記の例では、4 つのパラ フラグメントがあります。

このソリューションの問題点は、断片化によってリソースの保守が完全な悪夢になることと、すべての文化の文法に適合しない段落断片の特定の順序が強制されることです。たとえば、翻訳された言語では、適切な翻訳は次のようになります。

<p>Let's get <b>energized</b> with a <a href="someURL">cup of coffee</a>.</p>

マークアップをリソースに埋め込まないことで完全に逃れることはできないと思いますし、それは大したことではないかもしれません。適切なマークアップ/CSS (span、div、id、class) を使用して、カップリングの影響を軽減する抽象化を作成できます。

リンクの URL はどうすればよいですか。ありがとう、

ステファン

4

6 に答える 6

3

HTML を「フォーマット」としてではなく構造として表示し、すべてをリソース データ ストア (resx、データベース、xml ファイルなど) に保存します。そうすれば、段落内の小さなテキストについて心配する必要がなくなります。代わりに、ロケールごとに「paragraph_energized_with_coffee」などと呼ばれるリソースへの参照があり、リソースを編集するために使用するソフトウェアによって、エディターが各リソース内の html を構造化する際の柔軟性が決まります。

于 2009-03-08T23:45:54.490 に答える
1

次のようにします。

<%= String.Format("Resources.MyResource.mydata","someURL") %>

これをリソース文字列として使用します。

<p>Let's have a <a href="{0}">cup of coffee</a> and get <b>energized</b>.</p> 
于 2011-11-23T14:47:54.627 に答える
1

私は同じ問題を抱えていました。あなたの質問を正しく読んでいる場合、これは私がそれを解決するためにできたことです:

リソースに、次のテキストを追加しました。

<p>Let's get <b>energized</b> with a <a href="{0}">cup of coffee</a>.</p>

そして、ASP.NET ビュー (Razor ビューを使用) で、次を追加しました。

@Html.Raw(String.Format(ShopSavvy.Retailers.Web.Resources.Home.Index.perksReachShoppersBody1, "someURL"))

これを行うことで、適切な効果を得るために必要なすべての単語固有の書式設定が得られました。

于 2012-06-18T02:42:57.683 に答える
0

このグーグルでまったく同じ問題に遭遇しました。リソース ファイルを翻訳者に送信すると、翻訳者が HTML を理解できず、コードが破損する可能性があるため、これは意図的なものです。これも好きじゃない。

于 2009-03-09T22:32:30.303 に答える
-1

デフォルトの Visual Studio サンプル Web サイトには、以下が含まれています。

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" 
       AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>Welcome to ASP.NET!</h2>
    <p>To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET
          Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
</asp:Content>

これらをどのようにローカライズしますか:

  1. <h2>Welcome to ASP.NET!</h2>

  2. <p>To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.</p>

  3. <p>You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409" title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.</p>
于 2011-09-21T18:42:33.787 に答える