概述
我们有一个内部CMS,我们最近添加了多语言支持。 CMS允许拖放各种面板(.net控件),一些面板显示通过富文本编辑器输入的动态内容。此外,某些字段是多语言的,因此某些面板内容将根据当前语言进行更改。
理想情况下,我们希望将语言添加到URL。因此/contact-us
变为/en/contact-us
。
然后我们的主要处理程序将设置语言,所有面板将显示相关副本。
目标
所以,理想情况下,我们希望能够:
注意:某些链接将通过.net HyperLink控件进行,但其他链接将通过富文本编辑器输入<a>
个标记。
我看过
的东西我已经浏览了谷歌,但没有发现任何符合我们需求的内容:
Html Agility Pack - 可用于获取URL并解析链接。但是我猜这个不能用在我们的主页面构建器的Pre_Render中。我猜想是刮刮的理想选择。
各种JS解决方案 - 找到链接并更新。很容易,但我担心使用JS更新URL客户端。
欢迎所有建议:)
答案 0 :(得分:0)
所以,会有动态内容和静态内容。 CMS用户应该能够编辑它们。你应该有一个语言数据库表,例如;对于&#34;关于我们&#34;页面,应该有关于我们的EN,关于我们的DE,关于我们在其他表格中的FR行。
你应该有另一个静态内容表。例如对于contacy us form。联系表格上有静态文本。姓名,电子邮件,消息等。
答案 1 :(得分:0)
这可以通过覆盖Page.Render()来完成,如下所示:
protected override void Render(HtmlTextWriter htmlWriter)
{
StringBuilder ThisSB = new StringBuilder();
StringWriter ThisSW = new StringWriter(ThisSB);
HtmlTextWriter RenderedPage = new HtmlTextWriter(ThisSW);
// pass our writer to base.Render to generate page output
base.Render(RenderedPage);
// get rendered page as a string
string PageResult = ThisSB.ToString();
// modify the page
string ModifiedPage = UpdatePage(PageResult);
// write modified page to client
htmlWriter.Write(ModifiedPage);
}
方法UpdatePage可以任意方式将页面操作为字符串 - 在我们的示例中,我们使用查找和更新所有链接和本地文件路径。