6

我正在开发一个多语言企业网站,我想将本地化存储在数据库中。

我已经阅读了以下非常好的文章,但我个人认为这是一个开销,我可以很容易地实现同样的目标:

扩展 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 项目。它包含一个现成的 MS SqlServer 实现,用于在数据库中存储本地化。

简介: http: //www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri

行政

还有一个管理区域,您可以使用它来管理本地化:

在此处输入图像描述

SQL Server 设置

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

源代码

该项目在 github 上可用:https ://github.com/jgauffin/griffin.mvccontrib

于 2012-11-12T10:33:01.293 回答
-1

这是一个非常好的: http ://west-wind.com/westwind.globalization/

它提供 :

  • 数据库存储
  • Resx 导入/导出
  • 强类型类生成

它通过 Nuget 快速添加到您的项目中,并且您拥有完整的源代码.. 很棒的东西

于 2015-07-08T10:39:40.813 回答