我正在使用带有数据库的ASP.NET页面的本地化。
一切正常,语言词典在ViewBag中,它只适用于所有内容,但ViewModels中的DisplayName除外。
这就是我在视图中使用翻译的方式:
namespace Helpers
{
public static class LocalizationHelper
{
/// <summary>
/// Returns the translation for the term
/// </summary>
public static string Translate(this HtmlHelper helper, Term term)
{
Dictionary<string, string> dic = helper.ViewContext.Controller.ViewBag.LangDict;
Dictionary<string, string> fallbackDic = helper.ViewContext.Controller.ViewBag.StandardLangDict;
string trans = "";
if (dic.TryGetValue(term.ToString(), out trans))
return trans;
else if (fallbackDic.TryGetValue(term.ToString(), out trans))
{
return trans;
//exception trans not available for this lang
//return fallback language
}
else
return "Translation not set";
}
}
但我无法将此用于ViewModel,因为我无法传递HTMLHelper属性。 如果我决定写另一种方法,如:
public static string Translate(Term term)
Viewbag再也无法工作了。术语是枚举。
现在我不知道如何将Viewbag中的数据导入ViewModel。