云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式存储_药智数据库_学生机

小七 141 0

Sitecore使管理多语言/多文化网站变得容易

Sitecore使管理多语言/多文化网站变得容易:一个网站可以在任意数量的区域性中进行管理(例如,美式英语)。模板上的每个字段都可以标记为特定语言的唯一字段,也可以跨所有语言共享。例如,一个公司徽标对所有语言都是通用的,在同一个项目上,不同的字段在任何语言中都是唯一的。每种语言都有自己的版本历史记录。可以通过工作流推送项目来合并翻译过程。当正确实现时,站点将不需要更改软件来支持新语言。这种模式可以很容易地根据不同的语言和市场定制站点内容。然而,有些组织可能没有资源将每一页翻译成每一种语言文化,尤其是在文化差异没有或几乎没有差异的情况下。例如,公司的英文历史可能只有美国、加拿大和英国版本的拼写差异,以及美国、墨西哥的公司历史卡斯蒂利亚语西班牙语在这三种语言中可能是相同的。人们可能会倾向于使用语言而不是文化来简化内容管理。但考虑一家在每个市场都有区域管理的公司,美国经理人的简历可能会用美式英语和美式西班牙语呈现,而在其他市场,则会出现完全不同的经理人名单。这表明需要一组语言区域性的"基础语言",如果缺少特定于区域性的版本(es MX或es PR;en CA或en UK),系统可以从该语言的基本区域性中返回版本(es es;这甚至可以级联到全局基础语言:如果没有特定于区域性或语言的页面可用,请返回英语。我们可以使用Sitecore的可扩展API来开发解决方案:1.语言层次结构的数据模型。a.简单模型是语言区域性项(en-US)的树。语言区域性项将有一个基础语言区域性的字段,该字段是项同级的下拉列表。此方法确保区域性只能有一种基本语言。b、 默认语言可以存储在.config文件中。2.当当前语言没有版本时,生成指向"基本语言项"的链接并检索"基本语言项"的机制。3.在不存在其他版本时生成指向"默认语言项"的链接并检索该项链接的机制。4.只有在您不进行编辑和查看WEB数据库时,此功能才能"生效"。这将在编辑期间保护主数据库的完整性,并允许编辑器在需要时创建特定于区域性的版本。实现此逻辑的一个地方是在ItemProvider中。这里是一些伪代码,它显示了一个轻量级的示例。为了简洁起见,我们没有展示如何查找合适的默认语言。总体而言,该功能可以在不限制灵活性的情况下为您的客户节省时间和金钱,满足多语言网站的需求。Revereve已在多个网站上使用此方法,通过简化语言版本的创建来支持我们客户的全球存在。公共类DefaultLanguageItemProvider:ItemProvider///注意,我们建议将其放在.config文件中,但为了简洁起见///在图中,我们对其进行了硬编码,即private Language defaultLanguage=语言。解析("en-US");//////替换ItemProvider的GetItem///我们的版本检查缺少的语言版本,并替换为默认语言。///受保护重写项GetItem(ID itemId、语言语言、版本版本、数据库数据库){Assert.ArgumentNotNull(itemId,"itemId")Assert.ArgumentNotNull(语言,"语言")Assert.ArgumentNotNull(版本,"版本");        Assert.ArgumentNotNull(database,"database");//照常获取item item=base.GetItem(itemId,language,version,database);//如果item不为null,并且我们不处于编辑状态if(item!=空&&(Sitecore.Context.PageMode.是正常的| |Sitecore.Context.PageMode.IsPreview)){//没有此语言的版本,并且上下文语言不是默认的(item.Versions.Count==0语言(&&L)!=defaultLanguage){//替换为默认语言项=base.GetItem(itemId,默认语言,最新版本,数据库);}}返回项;}}