Umbraco 5在Surface Controller中本地化文本

时间:2012-03-07 14:15:18

标签: localization umbraco

我使用Surface Controller在Umbraco 5中创建了一份简报订阅表。控制器呈现带有用户输入字段的表单。当我在视图中翻译文本时,一切正常。我可以用:

Umbraco.GetDictionaryItem("newslettertitle")

@("newslettertitle".Localize())

当我处理表单提交时,我需要发送本地化的电子邮件。但是本地化文本不起作用: 例如:

            var mail = new MailMessage();
        mail.From = new MailAddress(settings.Smtp.From);
        mail.To.Add(aSubscriber.Email);
        mail.Subject = "newslettersucces".Localize();

邮件的主题=(Umbraco.Cms.Web.newslettersucces)。没有本地化。当我使用GetDictionaryItem(“newslettersuccess”)时也会发生同样的情况。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在需要Umbraco.GetDictionaryItem的视图中推送Umbraco Helper。 创建了一个BaseSurfaceController,如:

public class BaseSurfaceController : SurfaceController    {
    public UmbracoHelper Umbraco{
        get {
           IRenderModelFactory modelFactory = DependencyResolver.Current.GetService<IRenderModelFactory>();
            return new UmbracoHelper(this.ControllerContext, this.RoutableRequestContext, modelFactory);
        }
    }
} 

还有基础ViewModel:

    public class BaseViewModel
    {
        public UmbracoHelper Umbraco { get; set; }
    }

示例:

    [ChildActionOnly]
    public PartialViewResult ContactForm()

    {
        var model = new ContactViewModel();
        model.Umbraco = this.Umbraco;

        return PartialView(model);

    }

来源:http://our.umbraco.org/forum/core/umbraco-5-general-discussion/29601-MVC-form-localization-ViewModel-plus-Umbraco-DictionaryItem