2016-12-02 8 views
0

私は、ローカルまたはグローバルのresxファイルを使用してWebサイトを翻訳する方法を読んできました。これはボタンや一般的なテキストの小さな部分には効果的ですが、テキストの大きな塊の翻訳に直面しているときは、長い文字列をresxファイルに格納してテキストを小さなキー私がちょうど書いたものを再読することができなくなります。例えばresxファイル以外のWebサイトを翻訳する方法はありますか?

<p> <%$ Resources:MyResources, Welcome %> <%$ Resources:MyResources, to %> <%$ Resources:MyResources, my %> <%$ Resources:MyResources, wonderful %> <%$ Resources:MyResources, Website %> , <%$ Resources:MyResources, Where %> <%$ Resources:MyResources, you %> <%$ Resources:MyResources, can %> <%$ Resources:MyResources, Find %> <%$ Resources:MyResources, amazing %> <%$ Resources:MyResources, information %> <%$ Resources:MyResources, about %> <%$ Resources:MyResources, this %><%$ Resources:MyResources, and %><%$ Resources:MyResources, that %> <p> 

または:

<%$ Resources:MyResources, WelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThat %> 

多言語サポートを処理するためのより良い方法はありますか?あなたはResourcesから直接レンダリングすることができ おかげで、

(私はVS2013を使用していますし、これは、ASPXとascxファイルとC#のWebフォームサイトのためのものであることを追加するのを忘れ)

+1

このプロジェクト[https://github.com/turquoiseowl/i18n](https://github.com/turquoiseowl/i18n)をチェックしてください。それにより、より読みやすいテンプレートを作成することができます。 –

+0

ありがとう@VitaliySmolyakov!私はこのプロジェクトを見てきましたが、確かにWelcomeToMyWonderfulWebsiteWhereYouCanFindAmazingInformationAboutThisAndThatの代わりに[[[この素晴らしい情報を見つけることができる素晴らしいWebサイトにようこそ]]]を使う方が良いでしょう。それを使った経験はありますか?一見、これを設定するのは複雑に見えます! – malarres

+1

ちょうどインストール、設定方法の追加、テストのためのいくつかのページの翻訳とそれが実行されている:)。 zzz.com/api/callのように、パスに2〜3文字の部分がある場合、明らかな問題はないかもしれません。 URLローカライザは、APIが未知の言語タグだと思ってURLから削除します。リクエストはzzz.com/callにあります。最後のバージョンでは/ api /が処理対象から除外するために追加されました。 –

答えて

1

は、あなたが<%$構文を使用しないでください。あなたが(代わりに、または自動エンコード<%:版)<%=を使用することができます。

Key: WelcomeMessage 
Value (in `Resources.resx`): "Welcome to my website where..." 
Value (in `Resources.de-DE.resx`): "Willkommen auf meiner Website..." 

あなたのケースでは、私は短いキーを持つようこそ宣伝文のエントリと私のプロジェクト内の単一Resources.resxファイルを、持っていますあなたは生のHTMLをレンダリングしたい場合<%:

<p><%: Resources.WelcomeMessage %> 

を使用するか、または<%=を使用して

そして、私の.aspxファイルで :

<p><%= Resources.WelcomeMessage %> 

カミソリ構文:

<p>@Resources.WelcomeMessage</p> 

または、読みやすくするために:

<p>@(Resources.WelcomeMessage)</p> 

Resourcesが現在のスレッドの文化値に基づいて正しいリソース値が存在すると、自動的に取得しstatic classである(そうですスレッドのカルチャを正しく変更するコードがあることを確認してください)、翻訳が適用されない場合はフォールバック値を返します。

Resxデザイナーによって生成されたXMLコメントにリソース文字列の最初の100文字が含まれているため、Visual Studioで元の値を表示するには、各プロパティ値にマウスを移動します。

+0

お返事ありがとうございます。コンパイラエラーメッセージ:CS0234:型または名前空間の名前 'WelcomeMessage'が名前空間 'Resources'に存在しません(アセンブリが不足していますか参照)? – malarres

+0

そしてRazorの構文では、単に@ Resources.WelcomeMessageと表示されています。 – malarres

+0

@malarres Razor構文は '.cshtml'ファイルでのみ機能します。 – Dai

0

最後に私はDaiの提案(「WelcomeMessage」の例にすべてを短縮)を使用しましたが、表記を使用して動作させることはできませんでした。とにかく私がしたのは、タイピング作業を簡単にするためのコードスニペットを作成することでした。 しかし、次回は、Vitaliyが指摘したプロジェクトを試してみるつもりです! ありがとうございます

関連する問題