2012-11-10 49 views
4

我开发一个多语言的企业网站,我想存储在数据库中的定位。ASP.NET MVC数据库本地化

我看了下面的文章,这是非常好的,但我个人认为这是一个开销,我可以达到同样多的方便:

Extending the ASP.NET 2.0 Resource-Provider Model

我已经安装了部分失地,但我我不确定我的方法是否正常。基本上我创建了一个注册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与定位的?

谢谢!

+0

你为什么要存储本地化数据库? –

+0

这是一个要求,翻译团队有一个单独的申请 –

+0

@weirdo - 他们为什么需要申请?为什么他们不能编辑html并给你本地化的意见?毕竟,您通常必须更改字段的大小以适应不同大小的单词。 –

回答

0

你可以用我Griffin.MvcContrib项目。它包含一个随时可用的MS SqlServer实现,用于在数据库中存储本地化。

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

管理

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

enter image description here

SQL Server安装

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

源代码

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

+0

感谢您的回放,但我之前找到您的项目并决定不使用它,因为核心实现需要我的控制器从您的基本控制器继承。由于MVC具有非常好的功能,因此动作过滤器我不想使用基本控制器概念。 –

+0

你搞错了。我不要求你继承一个基础控制器。 – jgauffin

0

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

提供:

  • DB存储
  • RESX导入/导出
  • 强类型类生成

它通过的NuGet迅速加入到你的项目,你有完整的源代码..真棒东西