首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC数据库本地化

ASP.NET MVC数据库本地化
EN

Stack Overflow用户
提问于 2012-11-10 19:41:12
回答 2查看 4.7K关注 0票数 6

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

我读过以下文章,这篇文章很好,但我个人认为这是一种开销,我可以很容易地做到这一点:

扩展ASP.NET 2.0资源提供程序模型

我已经建立了一些基础,但我不确定我的方法是否好。基本上,我已经创建了一个在DI中注册的服务。

代码语言:javascript
复制
public interface ILocalizedStringProvider
{
    string GetLocalizedString(string key);

    string GetLocalizedString(string key, string deafultValue);
}

此外,我还创建了一个Html助手,如下所示

代码语言:javascript
复制
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);
    }

然后简单地从视图调用助手。

首先,我想知道这种方法是否好,是否是反模式。

第二,我担心的是这句话:

代码语言:javascript
复制
ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();

是否最好用构造函数注入来解决控制器中的服务ILocalizedStringProvider,并让控制器用本地化的方法填充ViewBag呢?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-11-12 10:33:01

您可以使用我的Griffin.MvcContrib项目。它包含一个准备使用MS SqlServer实现在数据库中存储本地化。

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

Administration

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

Server安装

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

源代码

该项目可在github:https://github.com/jgauffin/griffin.mvccontrib上查阅。

票数 2
EN

Stack Overflow用户

发布于 2015-07-08 10:39:40

这里有一个非常好的例子:http://west-wind.com/westwind.globalization/

它提出:

  • 数据库存储
  • Resx进出口
  • 强类型类生成

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13325438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档