Internationalization Silverstripe:从页脚模板链接到正确的I18N URL
我的网站有两种语言,我的页脚链接有问题 在重新设计之前,我包含了不同的文件。一个文件的链接指向/en/privacy/或/en/contact/等,另一个文件的链接像/datenschutz/或/kontakt/Internationalization Silverstripe:从页脚模板链接到正确的I18N URL,internationalization,silverstripe,Internationalization,Silverstripe,我的网站有两种语言,我的页脚链接有问题 在重新设计之前,我包含了不同的文件。一个文件的链接指向/en/privacy/或/en/contact/等,另一个文件的链接像/datenschutz/或/kontakt/ <% if Locale == en_GB %> <% include Footer_en_GB %> <% else %> <% include Footer %> <% end_if %> 这使得它很难维持
<% if Locale == en_GB %>
<% include Footer_en_GB %>
<% else %>
<% include Footer %>
<% end_if %>
这使得它很难维持
有更好的办法吗?是否可以获取页面的propper I18N链接
差不多
<a href="i18nlink('/datenschutz/')">i18ntitle('/datencshutz/')</a>
因此,EN-footer看起来像
<a href="/en/privacy/">Privacy</a>
<a href="/datenschutz/">Datenschutz</a>
页脚的样式如下所示
<a href="/en/privacy/">Privacy</a>
<a href="/datenschutz/">Datenschutz</a>
如果您使用的是CMS,并且页面实际上是链接在CMS中的,您可以简单地使用$Link?Locale=en_US
或者更确切地说是/datenschutz/?Locale=en_US
然后,当您访问
/datenschutz/?Locale=en_US
时,SilverStripe将以重定向到en链接的方式进行响应
或者在PHP中,您可以使用:
if ($page->hasTranslation('en_US')) {
$link = $page->getTranslation('en_US')->Link();
}
PS:这个要点可能也会让你感兴趣:我认为SS中有一些简单的解决方案,但找不到 这就是我现在所做的 模板:
<ul class="vertical menu">
<li><a href="$LanguageURL('homepage')">Startseite</a></li>
<li><a href="$LanguageURL('unternehmen')">Über uns</a></li>
<li><a href="$LanguageURL('kontakt')">Kontakt</a></li>
</ul>
你的德国网站输出
<li><a href="/kontakt/">Kontakt</a></li>
…和您的英语网站输出
<li><a href="/en/contact/">Contact</a></li>
实际输出取决于您的配置,但关键是为当前语言环境输出正确的URL
也许任何人都需要类似的东西,或者有更好的解决方案:-)你可以尝试使用类似的模块,我不知道,但我会看看。目前我坚持使用可翻译页面。如何在页脚中指定链接到的页面?您只是将它们添加到模板标记中吗?我通常在SiteConfig部分有这些可编辑的,这使得每种语言的页脚链接也很容易指定…我主要把它们放在模板中,因为有更复杂的用于模态、表单等的HTML。我想有干净的链接,没有?地区添加。PHP代码也没有帮助。我需要输出默认URL(德语)或(基于当前语言环境)英语URL。无论如何,感谢您的帮助这只在有人意外更改URLSEMENT之前有效:(