.NET Framework
ASP.NET用のスマートな国際化を使用したASP.NET MVCのグローバリゼーション
サーチ…
備考
このアプローチの利点は、コントローラや他のクラスを.resxファイルから値を参照するコードで混乱させる必要がないことです。 HttpModule
は.poファイルの翻訳を探して区切られたテキストを置き換えます。変換が見つかった場合、 HttpModule
は変換を置き換えます。翻訳が見つからない場合は、三角括弧が削除され、翻訳されていない元のテキストがページに表示されます。
.poファイルは、アプリケーションの翻訳を提供するための標準的な形式であるため、それらを編集するために利用できるいくつかのアプリケーションがあります。 .poファイルを技術者以外のユーザーに送信して、翻訳を追加することは簡単です。
基本的な設定とセットアップ
- MVCプロジェクトにI18Nナゲットパッケージを追加します。
- web.configで、
<httpModules>
<modules>
セクションまたは<modules>
セクションにi18n.LocalizingModule
を追加します。
<!-- IIS 6 -->
<httpModules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</httpModules>
<!-- IIS 7 -->
<system.webServer>
<modules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</modules>
</system.webServer>
- "locale"という名前のフォルダをサイトのルートに追加します。サポートする各カルチャーのサブフォルダを作成します。たとえば、
/locale/fr/
ます。 - 各カルチャー固有のフォルダに
messages.po
という名前のテキストファイルを作成しmessages.po
。 - テストの目的で、
messages.po
ファイルに次のテキスト行を入力します。
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- プロジェクトに変換するテキストを返すコントローラを追加します。
using System.Web.Mvc;
namespace I18nDemo.Controllers
{
public class DefaultController : Controller
{
public ActionResult Index()
{
// Text inside [[[triple brackets]]] must precisely match
// the msgid in your .po file.
return Content("[[[Hello, world!]]]");
}
}
}
- MVCアプリケーションを実行し、 http:// localhost:[yourportnumber] / defaultなどのコントローラアクションに対応するルートを参照します 。
URLがデフォルトのカルチャを反映するように変更されていることを確認してください。
http:// localhost:[yourportnumber] / en / default 。 - URLに
/en/
を/fr/
(またはあなたが選択した文化)と置き換えます。ページには翻訳されたテキストが表示されます。 - ブラウザの言語設定を変更して別のカルチャを優先し、
/default
再度参照してください。代替カルチャーを反映するようにURLが変更され、翻訳されたテキストが表示されることを確認してください。 - web.configでは、ユーザーが
locale
フォルダを参照できないようにハンドラを追加します。
<!-- IIS 6 -->
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
</system.web>
<!-- IIS 7 -->
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
</handlers>
</system.webServer>
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow