【发布时间】:2016-04-22 17:47:03
【问题描述】:
我们有一个在内部开发服务器上运行的 Sitecore 7.5 (141003) 实例(我们正在慢慢完成升级过程)。
我们有一个奇怪的问题,当您以管理员身份发布项目时,您会在“发布语言”标题下看到以下内容:
- 全选
- 英语
- 英语
- 英语
在 sitecore > System > Languages 下,我们有一个“en”项目,但通过以下代码,我们看到我们有三个“en”项目(项目 ID 与 System > Languages 下的项目匹配)和两个“en-us” ' 项目(无项目 ID):
<%@ Page Language="C#" Debug="true" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
<script runat="server">
void Page_Load(object sender, System.EventArgs e)
{
if (HttpContext.Current == null || Sitecore.Context.Database == null)
{
Response.Write("No context.");
return;
}
var languages = Sitecore.Data.Managers.LanguageManager.GetLanguages(Sitecore.Context.Database);
foreach (var language in languages)
{
Response.Write(Sitecore.Data.Managers.LanguageManager.GetLanguageItemId(language, Sitecore.Context.Database) + "<br />");
Response.Write(language.CultureInfo + "<br />");
}
}
</script>
</div>
</body>
</html>
此外,如果我对 Master 数据库运行以下查询,我只会看到一项。
USE XXXSitecore_Master
SELECT TOP 10 *
FROM Items
WHERE ID = 'AF584191-45C9-4201-8740-5409F4CF8BDD'
由于这是一个开发服务器数据库备份和恢复已用于使其与另一台服务器保持同步,但我相信也使用了打包。
我很困惑为什么会有多个版本的“en”返回相同的项目 ID。
我们如何才能找到这些额外的英语语言的来源,以便我们最终能够检查并清理它们?
编辑 1
Publish Site 显示相同的三个英文选项。
查看版本选项卡中的语言部分,English: English 显示了 3 次,每个版本有 12 个版本(所有三个都突出显示),然后是 English(美国) : 英语(美国) 显示两次,各有 2 个版本。
查看版本,我们有 10 到 1,然后是 1 的两倍。更新日期和最后一个人是相同的。所以有 12 个版本,但版本 1 列出了 3 次。目前无法查看数据库,看看我能找到关于三个版本 1 实例的信息。
【问题讨论】:
-
确保所有数据库(除了包含客户端语言且不应触及的核心数据库)具有相同的语言集。您可以通过发布系统/语言来做到这一点。如果您进行站点发布(而不是项目发布)会发生什么。那么出现什么语言呢?我想知道您的项目是否没有以不再存在的语言进行版本控制。
-
好问题。我在原始问题的底部添加了一个编辑 1 部分,应该回答您的问题。还有一个奇怪的地方,因为一个项目基本上有三个版本 1。
-
首先,尝试清除缓存 (/sitecore/admin/cache.aspx)。 “LanguageProvider - Languages”键存储语言,因此可能存在问题。要检查的另一件事是您的配置文件(/sitecore/admin/showconfig.aspx)——检查
部分与普通安装。 Sitecore 可能会循环访问同一数据库的多个数据提供程序,或者正在使用有缺陷的自定义提供程序。最后,打开“sitecore/templates/System/Language”模板,然后从导航功能区中,单击链接以查看基于该模板的所有项目。 -
迟来的,这似乎是自定义数据提供程序的问题。现在与开发人员一起确定提供程序中的什么导致了问题。谢谢!
标签: sitecore