在导航

时间:2016-05-23 19:19:18

标签: c# .net multilingual culture kentico

我目前正致力于在Kentico 8.2中推出韩国版网站,并与该网站的本地和开发版本合作。

我可以在韩语中加载页面,甚至可以在导航时使用韩语加载一些后续页面。通常我导航到的第三或第四页将恢复为英语。我可以重新添加查询字符串?lang = ko-kr或添加/ ko-kr /到URL(取决于我当时正在尝试的设置)以使该页面加载韩语(验证它存在) 。我开始访问哪个页面或导航到哪个页面似乎并不重要。

我尝试了以下设置的组合:

  • 在设置/网址和搜索引擎优化中强制域名文化(仅限)
  • 为网址使用语言前缀(包括和不包含允许网址) 设置/网址和搜索引擎优化中的语言前缀
  • 将访客文化更改为自动(网站/常规)

有了这些设置,我尝试添加?lang = ko-kr或使用domain / ko-kr / rest-of-url来获取以韩语加载的页面(匹配相应的设置)。

我尝试过其他事情,看看是否有干扰,例如:

  • 我的浏览器中的语言设置已更改为韩语,以查看是否覆盖了任何内容。
  • 以隐身模式运行并清除缓存/ Cookie以查看这些是否是可能的问题。
  • 更改设置后重新启动服务器。
  • 验证自定义网址没有干扰(未设置)

我一直在搜索Kentico论坛,在这里搜索,并搜索各种搜索词而没有运气。根据我发现的,这些设置都是需要的。解决这些问题并不多,因为大多数结果都会返回有关如何在网站上实现多种语言的常规文档。

我已经被困在这几天了,感觉我错过了一些非常明显的东西......它不应该是这么难,是吗?

3 个答案:

答案 0 :(得分:2)

我们最近遇到了其中一个网站的问题,它可能与您的问题有关,也可能与您无关,但可能值得一试。

如果您的默认文化文档定义的自定义路径与默认节点别名路径相同,则如果您仅在前端使用nodealiaspath网址,则其他文化的网址将无法正常工作。

要正确使用multilang网址,请使用以下方法:

您有 / page ,在英文版(默认文化版)中,必须检查使用自定义路径,但路径texbox应为空,或者具有与 / page <不同的内容

在葡萄牙语版本(我的示例)上,还会检查使用自定义路径,但路径文本框的翻译版本为 / pagina (您可以选中/取消选中使用自定义路径复选框,它将会为你生成翻译的路径。)

这样,如果您第一次浏览网址 / page ,则应转到 / en / page

但是,如果你去 / page 已经有葡萄牙语版的cookie,它将重定向到 / pt / pagina

您还应该能够导航到 / pagina ,它会重定向 / pt / pagina

这是我们发现使用和向客户解释如何处理和使用multilang网址的最佳方式。

答案 1 :(得分:1)

就我而言,我可以通过以下方法解决该问题:转到相关页面的 URL 标签,然后取消选中使用自定义URL路径复选框。

,并且还要从两个区域性版本中删除所有页面别名

答案 2 :(得分:0)

我能够通过设置(设置&gt; URL和搜索引擎优化 - 文化标题下的搜索引擎优化)解决此问题:

强制域名文化(未选中) 使用URL的语言前缀(选中) 允许没有语言前缀的网址(未选中)

每当我们检索NodeAliasPath时,URL都不包含文化代码。它将保留当前语言的几个页面加载,但最终将恢复为默认语言(英语)。在NodeAliasPath的使用周围添加以下功能解决了这个问题。

public static string GetCultureURL(string url)
{
  url = url.TrimStart('~');

  string output = url;

  if (CMS.Localization.LocalizationContext.CurrentCulture.CultureCode.ToLower() != "en-us")
    output = "/" + CMS.Localization.LocalizationContext.CurrentCulture.CultureCode + url;

  return output.ToLower();
}

CMS喜欢为使用链接选择器选择的链接插入波浪号(〜),因此我不得不从URL中修剪它。因为英语是默认语言(并且要求英语网址是普通的),所以我有一个if语句跳过将/ en-us添加到URL的前面。

也没必要小写URL,因此可以将功能进一步缩小。