【发布时间】:2011-01-10 12:06:24
【问题描述】:
在 Sitecore 6.2 中使用多语言网站我希望 Sitecore 能够用连字符替换 URL 中的“”(空白,传统上用 %20 替换)。
例如www.MySite.com/Hello World > www.MySite.com/Hello-World
到目前为止没问题,我们只是在 encodeNameReplacements 中添加另一个条目
<replace mode="on" find=" " replaceWith="-" />
然后,为了防止我们的内容作者创建名称中带有连字符的项目(Sitecore 会在读取其 URL 时将其理解为有空格,从而导致 404 Not Found),我们可以将连字符添加到禁止的字符列表中在项目名称中,使用
<setting name="InvalidItemNameChars" value="\/:?"<>|[]-"/>
这一切都很好 - 直到我尝试创建一个新的语言定义。 Sitecore 中的语言可以使用简单的语言代码(例如 en、da、de 等)或语言和区域代码 (ISO),例如 en-GB、da-DK、de-DE 等。对于我们的网站,我们需要区域代码,因为我们打算支持区域语言变化(例如瑞士法语和瑞士德语)。但当然,我现在已经禁止项目名称中的连字符(并且语言,就像 Sitecore 中的其他所有内容一样,都被定义为项目)。事实上,Sitecore 要求将语言名称正确地构造为文化标识符,因此我无法使用模板的 ISO 代码字段中指定的 iSO 代码为语言分配描述性名称(例如美式英语)。
任何人都可以提出一个合适的解决方案吗?我是否应该从 InvalidItemNameChars 节点中删除连字符并编写一个自定义代码 sn-p 来捕获尝试创建带连字符的项目名称 i?如果是这样,我应该如何拦截创建事件?
我不愿意在不必要的地方自定义界面,尤其是我担心这可能会给 Sitecore 版本更新带来问题,所以如果有其他解决方案,我很想听听。
提前致谢。
【问题讨论】:
标签: c# web-config sitecore sitecore6