Internationalization 重定向Hugo站点上丢失的翻译

Internationalization 重定向Hugo站点上丢失的翻译,internationalization,translation,hugo,toml,Internationalization,Translation,Hugo,Toml,我有一个雨果网站和一些翻译的网页。并不是所有的页面都被翻译,因为我并不总是有志愿者用每种语言翻译每一页 在菜单中,我有一些页面的链接,如果没有本地翻译,我想重定向到英语页面(因此总是有链接,但可能没有翻译) #强制具有/en/my page和/fr/my page路由,即使对于默认语言也是如此。 DefaultContentLanguageInPubDir=true #英语是默认语言 defaultContentLanguage=“en” #此页面存在于en和fr中,但不存在于de中 [[菜单.

我有一个雨果网站和一些翻译的网页。并不是所有的页面都被翻译,因为我并不总是有志愿者用每种语言翻译每一页

在菜单中,我有一些页面的链接,如果没有本地翻译,我想重定向到英语页面(因此总是有链接,但可能没有翻译)

#强制具有/en/my page和/fr/my page路由,即使对于默认语言也是如此。
DefaultContentLanguageInPubDir=true
#英语是默认语言
defaultContentLanguage=“en”
#此页面存在于en和fr中,但不存在于de中
[[菜单.快捷方式]]
name=“许可证”
url=“/license”
[语文]
[语文]
languageName=“英语”
[语文]
languageName=“Français”
[语文]
languageName=“德国”
在英文和法文页面上,这很好,菜单链接转到
/en/license
/fr/license
。但在德语页面上,它会转到
/de/license
,这是一个404


有没有办法用默认语言将丢失的页面重定向到相应的页面?

实际上没有默认的hugo解决方案。 我花了很多时间来弄清楚如何达到这一目标,不要总是复制所有语言的数据内容,因为这是一种很难控制不同版本的方法

因此,我只需检查它是否是一个内部链接,并且当前语言下的页面是否存在,如果存在,那么我为该语言创建一个链接。如果没有,那么我只需指定一个默认链接

{{ $link := .link }}
{{ if and ( $.Site.GetPage ( substr ( $link ) 0 -1 ) ) ( ne ( $.Site.BaseURL | relLangURL ) "/" ) ( not ( in $link "://" ) ) }}
    {{ $link = ( print ( $.Site.BaseURL | relLangURL ) $link ) }}
{{ end }}
我所有的链接最后都有
/
符号,因此如果你的链接看起来像
/blog
而不是
/blog/
,那么只需将
(substr($link)0-1)
更改为
$link


我是雨果新手,如果这不是一个优雅的解决方案,很抱歉,但到目前为止,它对我很有效。

你找到合适的解决方案了吗?