私はwritten a blog postは、多言語asp.net MVCアプリケーションの以下の側面をconveringました:
データベース:私は2つの部分、1含有する非翻訳可能なフィールドの翻訳を必要とする他の含むフィールドでテーブルを分割。
URLルート:私は通常、よく索引付けされたMLサイトを取得する方法でURLに文化を保持します。
routes.MapRoute(
name: "ML",
url: "{lang}/{controller}/{action}/{id}",
defaults: new { lang = "en-CA", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
ベースコントローラークラスから、{lang}パラメーターをコントローラーで使用できるようにすることができます。すべての詳細については、ブログの記事を参照してください。
データの照会:あなたのリポジトリまたはデータベースコンテキストにCultureを渡すだけです。アイデアは、翻訳用に分離した2つのテーブルをマージするビューモデルを作成することです。
public ActionResult Index(string id)
{
var vm = pages.Get(id, Language); // Language is the {lang} from the route
return View(vm);
}
あなたの閲覧数:一般的な2文字の言語コード、EXでファイル.NETのリソースを使用してください。HomePage.en.resx、HomePage.fr.resx。ロケールEN * -US *、EN * -CA *あなたのリソースファイルは、ほとんどがおそらく英語、米国、カナダで同じになります通貨、日付、数値などをフォーマットするために有用である、など
画像: imagename-en.png、imagename-fr.pngのような形式を使用してください。あなたのビューから拡張メソッドを介して利用{LANG}ルートのパラメータを作成し、このようなあなたの画像を表示:
<img src="/content/logos/[email protected]()" />
ます。また、サポート言語のための完全な別のフォルダを有することができます。例:/content/en/imagename.png、/content/fr/imagename.png。
JavaScript::私は通常、Lang-en.js、Lang-fr.jsという名前のLanguagePacksおよびJSファイルを作成します。JavaScriptのモジュール
から
<script type="text/javascript" src="/content/js/languagepacks/[email protected](this.CurrentLanguage()).js"></script>
正しい言語ファイルをロード
、あなたのビューに
// lang-en.js
var Lang = {
globalDateFormat = 'mm-dd-yy';
greeting: 'Hello'
};
:アイデアは、あなたが他のすべてのJSファイル上で使用することができます「静的」クラスを作成することです
// UI Module
var UI = function() {
function notify() {
alert(Lang.greeting);
}
return {
notify: notify
}
};
多言語Webアプリケーションを行う方法はありません。リソースを使用してテキストを翻訳すると、実行時にすばやくスワップできます。あなたは、翻訳者などに渡すことができるものを開くことができる複数のエディタを持っています。
あなたはブログ投稿を確認して、私がこれを行う方法の詳細な例を得ることができます。