我正在开发一个多语言的企业网站,我想将本地化存储在数据库中。
我读过以下文章,这篇文章很好,但我个人认为这是一种开销,我可以很容易地做到这一点:
扩展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呢?
谢谢!
发布于 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上查阅。
发布于 2015-07-08 10:39:40
这里有一个非常好的例子:http://west-wind.com/westwind.globalization/
它提出:
它通过Nuget快速添加到您的项目中,并且您有完整的源代码。很棒的东西
https://stackoverflow.com/questions/13325438
复制相似问题