6

多言語エンタープライズ Web サイトを開発しており、ローカリゼーションをデータベースに保存したいと考えています。

私は非常に良い次の記事を読みましたが、個人的にはそれはオーバーヘッドであり、同じことを非常に簡単に達成できると思います:

ASP.NET 2.0 リソース プロバイダー モデルの拡張

私はすでにいくつかの地面をセットアップしていますが、私のアプローチがうまくいくかどうかはわかりません. 基本的に、DIに登録するサービスを作成しました。

public interface ILocalizedStringProvider
{
    string GetLocalizedString(string key);

    string GetLocalizedString(string key, string deafultValue);
}

また、このようなHtmlヘルパーを作成しました

public static MvcHtmlString LocalizedString(this HtmlHelper helper, string key, string defaultValue)
    {            
        if (string.IsNullOrEmpty(defaultValue)) return new MvcHtmlString("");
        if (string.IsNullOrEmpty(key)) return new MvcHtmlString(defaultValue);

        ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();

        if (localizedStringProvider == null)
        {
            return MvcHtmlString.Create(defaultValue);
        }

        string val = localizedStringProvider.GetLocalizedString(key, defaultValue);

        if (string.IsNullOrEmpty(val))
        {
            return MvcHtmlString.Create(defaultValue);
        }

        return MvcHtmlString.Create(val);
    }

その後、ヘルパーはビューから呼び出されます。

まず、このアプローチが優れているかどうか、アンチパターンではないかどうかを知りたいです。

次に私の懸念は次の行です。

ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();

コントローラー内のサービス ILocalizedStringProvider をコンストラクター インジェクションで解決し、コントローラーが ViewBag にローカリゼーションを設定する方がよいでしょうか?

ありがとう!

4

2 に答える 2

2

私のGriffin.MvcContribプロジェクトを使用できます。これには、データベースにローカリゼーションを格納するためのすぐに使用できるMSSqlServer実装が含まれています。

はじめに:http://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri

管理

ローカリゼーションを管理するために使用できる管理領域もあります。

ここに画像の説明を入力してください

SQLServerのセットアップ

https://github.com/jgauffin/griffin.mvccontrib/wiki/SqlServer

ソースコード

プロジェクトはgithubで入手できます:https ://github.com/jgauffin/griffin.mvccontrib

于 2012-11-12T10:33:01.293 に答える