這是翻譯頁面的不同方法。這並不意味着本地化。 我創建了TransModel類,我所有的ViewModel都繼承自它。 該類從數據庫中提取與當前ViewModel相關的字符串對,並將它們存儲在「標籤」字典中。該對的關鍵字是字符串的值「用戶名」,值是翻譯的值。如何操作標籤的值?
[Display(Name = "User Name")]
public string UserName { get; set; }
而是在查看使用Html.LabelFor的我用的是分機呼叫它TransLabelFor
public static MvcHtmlString TransLabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression,TransModel model)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
string trans = "";
model.labels.TryGetValue(metadata.DisplayName, out trans);
if (trans == null)
{
trans = metadata.DisplayName;
}
return MvcHtmlString.Create(String.Format("<label for='{0}'>{1}</label>", metadata.DisplayName, trans));
}
現在我想更換什麼,我被它回來。我想要原始標籤作爲返回這個:
MvcHtmlString originalTag = System.Web.Mvc.Html.LabelExtensions.LabelFor(html, expression);
但與我的翻譯。
是否有任何干淨的方法來代替字符串查找/替換?我不喜歡我必須通過模型,任何更好的想法?
你可以只顯示TransModel類和它的一個實現(你的ViewModel之一繼承它)?因爲我認爲有一個更簡單的方法,但我需要更多的信息... –
@RaphaëlAlthaus TransModel類是有點不相關atm,因爲它沒有完全實現。目前它不從數據庫獲取數據,它只是初始化標籤爲'labels = new Dictionary(){{「User Name」,「Translated User Name」}}'你應該明白了。 –
ergot
標籤是公共財產,我猜? –