我正在开发一个多语言企业网站,我想将本地化存储在数据库中。
我已经阅读了以下非常好的文章,但我个人认为这是一个开销,我可以很容易地实现同样的目标:
我已经建立了一些基础,但我不确定我的方法是否合适。基本上我已经创建了一个向 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 是否更好?
谢谢!