web-dev-qa-db-ja.com

ASP.Net MVC3のグローバリゼーション

MVC3アプリケーションでグローバリゼーション/ローカリゼーションを実現しようとしています。言語ごとに異なるビューは必要ありません。どうすれば進められるか提案してください。サポートされているリンク/ URLは非常に役立ちます。

27
Vivek

次のような他のアプリケーションと同じ方法でローカライズします。

  1. フォルダを作成し、それを呼び出します。リソース
  2. フォルダを右クリックしてクラスを追加...リソースファイルを選択します。好きな名前を付けてください。 Strings.resx
  3. ファイルのプロパティで、カスタムツールをPublicResXFileCodeGeneratorに変更します
  4. リソースファイルに翻訳キーと値のペアを入力します(これがデフォルトの翻訳になります)
  5. 対象となるカルチャの名前を使用して、他のリソースを次の形式で作成します:{name} .de.resx例: Strings.de.resx
  6. (これはRazor用です)Viewsフォルダーのweb.configをクラックして開き、これを/configuration/system.web.webPages.razor/pages/namespacesに追加します。<add namespace = "Resources" />(リソースが名前であると想定)リソースを作成したフォルダのうち、リソースファイル自体のデフォルトの名前空間を変更していません)。この手順は、翻訳を参照するたびに、ビュー内のリソースクラスを完全に修飾する必要がないことを意味します。
  7. 次のコードのように、ビューのテキストの代わりに翻訳を使用します。

    @Strings.MyString
    

文字列はCultureInfo.CurrentCultureに応じてビューで自動的に翻訳されますが、これは自動的に設定されません

CurrentCultureを変更する必要があります(Application_BeginRequestにある可能性があります)。これをどのように行うかはあなた次第です。それを設定するルート値である可能性があります。または、ユーザーのブラウザ言語を読み取ることができます。

HttpContext.Current.Request.UserLanguagesで、ユーザーの好みの言語のリストを(順番に)見つけることができます。

43
Martin Booth

Martin Boothのすばらしい答え (彼のMediaFireリンクが消える可能性がある場合)にいくつかの詳細を追加するには、次のようにします。

今のところ必要なのは英語とドイツ語( "de")だけなので、2つのファイルを使用しました。

enter image description here

各ファイルのプロパティについて、カスタムツールカスタムツール名前空間の値をそれぞれ手動で入力する必要がありました。ファイル:

enter image description here

enter image description here

そして最後に、ルートWeb.Configファイル内の<system.web>セクションの下に次のように入力しました。

<globalization uiCulture="auto" culture="auto" />

もちろん、Martinが説明しているように、Web.ConfigファイルのViewsフォルダー(つまり、ルートフォルダーではない)の下に名前空間ディレクティブも追加しました。

<add namespace="ViewResources" />

そして、ついに私の(部分的な)Razorビューで強く入力されたリソースにアクセスできるようになりました。

<h2>@ViewResources.Test1</h2>

ところで:これはMVC3だけでなくMVC4でも機能しました。

5
Uwe Keim

これはMVC3グローバリゼーション/国際化に関する非常に詳細な投稿です http://afana.me/post/aspnet-mvc-internationalization-part-2.aspx

5
user342552

必要な次のステップは、Javascriptライブラリをローカライズすることです。ここを見てください: MVC-JavaScript-localization-of-external-js-files

1