Localization Umbraco 5在Surface Controller中本地化文本

Localization Umbraco 5在Surface Controller中本地化文本,localization,umbraco,Localization,Umbraco,我使用Surface Controller在Umbraco 5中创建了一份时事通讯订阅表单。控制器为用户呈现带有输入字段的表单。当我在视图中翻译文本时,一切都正常。我可以使用: Umbraco.GetDictionaryItem("newslettertitle") 或 当我处理表单提交时,我需要发送一封本地化的电子邮件。但是本地化文本不起作用: 例如: 邮件的主题=(Umbraco.Cms.Web.newslettessuccess)。没有本地化。当我使用GetDictionaryItem(

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

Umbraco.GetDictionaryItem("newslettertitle")

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


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

您可以在需要Umbraco.GetDictionaryItem的视图中推送Umbraco帮助程序。 创建了BaseSurfaceController,如:

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

    [ChildActionOnly]
    public PartialViewResult ContactForm()

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

        return PartialView(model);

    }

资料来源:

我认为你没有把问题读对。请再读一遍。这与访问Umbraco Helper类无关。使用诸如GetDictionaryItem或.Localize()之类的转换在控制器中不起作用,只在视图中起作用。另外,你的答案是我放在翁布拉科论坛上的一篇帖子的副本。好的,对不起。我甚至没查过主人的名字。我让它实际工作,但只在控制器类Init函数上工作。我还没有测试同一控制器类的post表单句柄函数。我很快就会遇到与您相同的问题,需要发送本地化邮件。我还感觉到了与我的模型属性本地化相关的另一个问题:[显示(名称=”,[必需(错误消息=””等…我无法获得由Umbraco dictionary发布的它们…您是如何处理这一点的?谢谢,这很好。我认为不可能直接根据您的模型属性使用Umbraco helper,因为它取决于服务或http请求。我猜您将不得不求助于普通资源文件或使用Umbraco本地化框架工作(使用LocalizationEntries.xml文件)。请参阅:目前,我求助于在我的视图中直接进行翻译
public class BaseSurfaceController : SurfaceController    {
    public UmbracoHelper Umbraco{
        get {
           IRenderModelFactory modelFactory = DependencyResolver.Current.GetService<IRenderModelFactory>();
            return new UmbracoHelper(this.ControllerContext, this.RoutableRequestContext, modelFactory);
        }
    }
} 
    public class BaseViewModel
    {
        public UmbracoHelper Umbraco { get; set; }
    }
    [ChildActionOnly]
    public PartialViewResult ContactForm()

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

        return PartialView(model);

    }