Ind*_*oad 5 translation internationalization hugo toml
我有一个 Hugo 网站,其中有一些翻译的页面。并非所有页面都被翻译,因为我并不总是为每种语言的每个页面都有志愿者。
\n\n在菜单中,我有一些页面的链接,如果本地翻译不存在,我想将这些页面重定向到英语(因此总是有一个链接,但可能不会翻译)。
\n\n# Force to have /en/my-page and /fr/my-page routes, even for default language.\ndefaultContentLanguageInSubdir= true\n\n# English is the default language\ndefaultContentLanguage = "en"\n\n# This page exists in en and fr, but not de\n[[menu.shortcuts]]\nname = "Licence"\nurl = "/licence"\n\n[Languages]\n[Languages.en]\nlanguageName = "English"\n\n[Languages.fr]\nlanguageName = "Fran\xc3\xa7ais"\n\n[Languages.de]\nlanguageName = "Deutsch"\nRun Code Online (Sandbox Code Playgroud)\n\n在英语和法语页面上,这工作正常,菜单链接转到/en/licence和/fr/licence。但在德语页面上,它会转到/de/licence,这是一个 404。
有没有办法将缺失的页面重定向到默认语言的相应页面?
\n实际上没有默认的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 }}
Run Code Online (Sandbox Code Playgroud)
我所有的链接/最后都有符号,所以如果你的链接看起来像/blog而不是/blog/那么只需更改( substr ( $link ) 0 -1 )为$link。
我是一个雨果新手,很抱歉,如果这不是优雅的解决方案,但到目前为止它对我有用。
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |