5

バックグラウンド

  • 多言語システムを構築しています
  • MVC 4 バンドル機能を使用しています
  • 右から左 (RTL) 言語と左から右 (LTR) 言語のファイルJavascriptsが異なりますStyles

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

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 つのファイルを呼び出すことだけです。

ビューにロジックを残す場合、各ビューでロジックを処理する必要があります。避けたい。

4

2 に答える 2

5

スイッチやマジック ストリングを使用する必要はありません。次のプロパティを使用して、Culture が RTL であるかどうかを確認できます。

Thread.CurrentThread.CurrentCulture.TextInfo.IsRightToLeft
于 2013-05-23T09:50:08.890 に答える
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";
        }
    }
}
于 2013-02-16T10:12:37.477 に答える