データベースで ASP.NET ページのローカリゼーションを使用しています。
すべてが正常に機能しており、ViewBag に言語辞書があり、ViewModel の 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";
}
}
しかし、HTMLHelper 属性を渡すことができないため、これを ViewModel に使用することはできません。そして、次のような別のメソッドを書くことにした場合:
public static string Translate(Term term)
Viewbag はもう機能しません。用語は列挙型です。
Viewbag から ViewModel にデータを取得する方法がわかりません。