我开发一个多语言的企业网站,我想存储在数据库中的定位。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与定位的?
谢谢!
你为什么要存储本地化数据库? –
这是一个要求,翻译团队有一个单独的申请 –
@weirdo - 他们为什么需要申请?为什么他们不能编辑html并给你本地化的意见?毕竟,您通常必须更改字段的大小以适应不同大小的单词。 –