2010-11-24 21 views
9

私はASP.NET MVCアプリケーションを完全にローカライズしたいと思いますが、ASP.NET MVCローカリゼーションのさまざまな落とし穴に対処する記事が多数ありますが、そのうちのどれも対処したいことはありません。これは、コントローラ名やアクションを含むURLのローカライゼーションです。ASP.NET MVCアプリケーションでコントローラの名前とアクションをローカライズする方法は?

リソースファイルなどのURLにコントローラ名とアクション名の代わりに表示される文字列を指定する方法が必要です。

これはどのようにして正常に動作しますか?あなたの助けを前もってありがとう!

EDIT:
私はまだこれを行う方法を探しています。どんな助けも歓迎されるでしょう。
既にこれを実装しているフレームワークまたはlibはありますか?

答えて

7

これまでにこれまでに行ったことはありませんが、サポートしたいすべての言語のルートテーブルにエントリを追加できませんでしたか?ローカライズされたすべてのルートは、選択した言語のルートにリダイレクトできます。これらの関連の質問をチェックアウト:

Multi-lingual websites with ASP.NET MVC

How should I implement localization with ASP.NET MVC routes?

+0

ありがとう、これは実際に役立つ唯一の答えです。 :) – Venemo

4

短い答えた:ありません。

URLは普遍的でロケール不変であると考えられます。これは、モデルバインド中にコントローラ、アクション、またはクエリ文字列値のローカライズをサポートしない理由です。

+9

URLは確かにロケール不変ではありません。英語を話す人にとっては、英語が話せるかもしれませんが、英語を話すことがあまり一般的でない地域では、URLのローカライズが重要です。 – Venemo

+0

あなたが何かできることがあるからといって、あなたが何かをするべきではありません。 URLの正規化と不変性は、軽く投げ捨てられないようにする重要な原則です。 –

+10

申し訳ありませんが、私は同意しませんが、URLはリソースロケータとみなされます。リソースがスペイン語であれば1つのURLが必要です。リソースが英語であれば、別のものが必要ですが、それらは不変ですが異なる言語です。 –

0

アクション名とコントローラ名をローカライズした時点で終了していないことを考慮してください。 引き続きルーティングパラメータをローカライズする必要があります。それはenumのために特に痛いです。

です。www.seller.com/catalogue/list/winterclothing www.seller.com/catalogue/list/summerclothingここで、winterclothingsummerclothingはenumです。

私は言っている:それは可能だが実行できない。

3

は、この単純な解決策を見てみましょう:

Translating routes (ASP.NET MVC and Webforms)

あなたはまた、私はちょうど見つけ素晴らしいAttributeRoutingプロジェクトを試すことができます!あなたはNuGetを通してそれを得ることができます。

+0

ありがとう、私はそれをチェックアウトします! – Venemo