2013-02-16 16 views
5

背景は、私はMVC 4つのバンドルを使用しています</li> <li>多言語システムを構築しています(LTR/RTL)MVC 4

  • をバンドルするメカニズムを、言語を追加し、私は別のJavascriptsStylesファイルを持っている
  • を備えています右から左(RTL)言語と左から右(LTR)言語の場合

現在、このシナリオは次のように処理しています。

BundleConfigビューで

//Styles for LTR 
bundles.Add(new StyleBundle("~/Content/bootstarp").Include(
       "~/Content/bootstrap.css", 
       "~/Content/CustomStyles.css")); 

// Styles for RTL 
bundles.Add(new StyleBundle("~/Content/bootstrapRTL").Include(
      "~/Content/bootstrap-rtl.css", 
      "~/Content/CustomStyles.css")); 

//Scripts for LTR 
bundles.Add(new ScriptBundle("~/scripts/bootstrap").Include(
      "~/Scripts/bootstrap.js", 
      "~/Scripts/CmsCommon.js" 
      )); 

//Scripts for RTL 
bundles.Add(new ScriptBundle("~/scripts/bootstrapRTL").Include(
      "~/Scripts/bootstrap-rtl.js", 
      "~/Scripts/CmsCommon.js" 
      )); 

実装ファイル:

@if (this.Culture == "he-IL") 
{ 
    @Styles.Render("~/Content/bootstrapRTL") 
} 
else 
{ 
    @Styles.Render("~/Content/bootstrap") 
} 

質問:

それを実装するより良い方法がある場合、私は思っていました、私は望んでいた:

どのカルチャを検出し、ビュー内ではなくバンドル(コードビハインド)内の正しいファイルを引き出すかのロジックを処理します。

ビューでは、私がしなければならないことは1つのファイルを呼び出すことです。

ビューにロジックを残している場合は、各ビューでそれを処理する必要があることを意味します。私はそれを避けたい。

+0

ところでそれは、ブートストラップがbootstARPビット;) – abatishchev

+0

は、あなたの代わりにHTMLヘルパーを検討したことがありますか? – abatishchev

+0

HTMLヘルパーを使用してファイルの名前を取得することを意味しますか? – Silagy

答えて

3

は、カスタムHTMLヘルパーを試してみてください。

public static class CultureHelper 
{ 
    public static IHtmlString RenderCulture(this HtmlHelper helper, string culture) 
    { 
     string path = GetPath(culture); 
     return Styles.Render(path); 
    } 

    private static string GetPath(string culture) 
    { 
     switch (culture) 
     { 
      case "he-IL": return "~/Content/bootstarpRTL"; 
      default: return "~/Content/bootstarp"; 
     } 
    } 
} 
+0

@Ivan:ありがとう! – abatishchev

+0

こんにちは。ニースコード;)どこに置くの? – oCcSking

+1

@oCcSking:ありがとう:)通常MyMvcApp \ Helpers \ CultureHelper.csにあります。 – abatishchev

5

あなたは、スイッチと魔法の文字列を使用する必要はありません。文化は、このプロパティとRTLであるかどうかをチェックすることができます:

Thread.CurrentThread.CurrentCulture.TextInfo.IsRightToLeft 
関連する問題