2025-02-08 01:55:48 +01:00
|
|
|
{{- $linkObject := "" }}
|
|
|
|
{{- $u := urls.Parse .url }}
|
|
|
|
{{- $path := strings.TrimPrefix "./" $u.Path }}
|
|
|
|
{{- $searchLocal := .searchLocal | default true }}
|
|
|
|
{{- $searchGlobal := .searchGlobal | default true }}
|
|
|
|
{{- $searchPage := .searchPage | default true }}
|
|
|
|
{{- $searchResource := .searchResource | default true }}
|
|
|
|
{{- $site := .page.Site }}
|
|
|
|
{{- $page := .page }}
|
|
|
|
{{- $transSite := "" }}
|
|
|
|
{{- $transPage := "" }}
|
|
|
|
{{- $lang := $u.Query.Get "lang" }}
|
|
|
|
{{- if and $site.Params.enableLegacyLanguageLinks (not $lang) }}
|
|
|
|
{{- /* is it a legacy link into another translation? */}}
|
|
|
|
{{- if strings.HasPrefix $path "/" }}
|
|
|
|
{{- range $site.Sites }}
|
|
|
|
{{- $lang = .Language.Lang }}
|
|
|
|
{{- $prefix := printf "/%s" $lang }}
|
|
|
|
{{- $suffix := strings.TrimPrefix $prefix $path | default "/" }}
|
|
|
|
{{- /* with the second check we check if the prefix was finished;
|
|
|
|
eg. /pir/index.html vs. /pirate/index.html, were the latter is
|
|
|
|
an external address outside of this site */}}
|
|
|
|
{{- if and (strings.HasPrefix $path $prefix) (strings.HasPrefix $suffix "/") }}
|
|
|
|
{{- $path = $suffix }}
|
|
|
|
{{- $transSite = . }}
|
|
|
|
{{- break }}
|
|
|
|
{{- end }}
|
|
|
|
{{- end }}
|
|
|
|
{{- end }}
|
|
|
|
{{- if not $transSite }}
|
|
|
|
{{ $lang = $site.Language.Lang }}
|
|
|
|
{{ $transSite = $site }}
|
|
|
|
{{- end }}
|
|
|
|
{{- else if $lang }}
|
|
|
|
{{- with where $site.Sites "Language.Lang" "eq" $lang }}
|
|
|
|
{{- with index . 0 }}
|
|
|
|
{{- $transSite = . }}
|
|
|
|
{{- end }}
|
|
|
|
{{- end }}
|
|
|
|
{{- else }}
|
|
|
|
{{ $lang = $site.Language.Lang }}
|
|
|
|
{{ $transSite = $site }}
|
|
|
|
{{- end }}
|
|
|
|
{{- if $transSite }}
|
|
|
|
{{- $transPage = $transSite.GetPage $page.Path }}
|
|
|
|
{{- if $path }}
|
|
|
|
{{- with or
|
|
|
|
(and $searchLocal $searchPage $transPage ($transPage.GetPage $path))
|
|
|
|
(and $searchLocal $searchPage $transPage ($transPage.GetPage (strings.TrimRight "/" $path)))
|
|
|
|
(and $searchGlobal $searchPage ($transSite.GetPage $path))
|
|
|
|
(and $searchGlobal $searchPage ($transSite.GetPage (strings.TrimRight "/" $path)))
|
|
|
|
(and $searchLocal $searchResource $transPage ($transPage.Resources.Get $path))
|
|
|
|
(and $searchGlobal $searchResource (resources.Get $path))
|
|
|
|
}}
|
|
|
|
{{- $linkObject = . }}
|
|
|
|
{{- end }}
|
|
|
|
{{- else if $searchPage }}
|
|
|
|
{{- $linkObject = $transPage }}
|
|
|
|
{{- end }}
|
|
|
|
{{- end }}
|
2025-02-05 23:39:23 +01:00
|
|
|
{{- return $linkObject }}
|