feat: new language switch behaviour, always listing all languages by weight but linking to translations if available

feat: if language switch shows language codes (instead of full language name), those codes are now uppercase
feat: translation list in post headers are replaced by links to translations in page headers - the old translation list in the post header can still be enabled using the boolean parameter "showTranslationListInPosts" (i.e. to turn it back on, add the parameter to your hugo.toml and set it to true)
This commit is contained in:
Haris Trgo 2023-02-13 21:32:40 +01:00
parent 25e5b4d298
commit a0016f50f6
4 changed files with 44 additions and 27 deletions

View File

@ -36,7 +36,7 @@
- Social Icons (home-info and profile-mode)
- Social-Media Share buttons on posts.
- Menu location indicator.
- Multilingual support. (with language selector)
- Multilingual support (with improved language selector)
- Taxonomies
- Cover image for each post (with Responsive image support).
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button).

View File

@ -13,10 +13,10 @@
{{ .Description }}
</div>
{{- end }}
{{- if not (.Param "hideMeta") }}
<div class="post-meta">
{{- partial "translation_list.html" . -}}
</div>
{{- if and (.Param "showTranslationListInPosts") (not (.Param "hideMeta")) }}
<div class="post-meta">
{{- partial "translation_list.html" . -}}
</div>
{{- end }}
</header>

View File

@ -15,7 +15,9 @@
{{- if not (.Param "hideMeta") }}
<div class="post-meta">
{{- partial "post_meta.html" . -}}
{{- partial "translation_list.html" . -}}
{{- if .Param "showTranslationListInPosts" }}
{{- partial "translation_list.html" . -}}
{{- end }}
{{- partial "edit_post.html" . -}}
{{- partial "post_canonical.html" . -}}
</div>

View File

@ -96,27 +96,42 @@
</button>
{{- end }}
{{- $lang := .Lang}}
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
{{- with site.Home.AllTranslations }}
<ul class="lang-switch">
{{- if $separator }}<li>|</li>{{ end }}
{{- range . -}}
{{- if ne $lang .Lang }}
<li>
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- .Language.LanguageName | emojify -}}
{{- else }}
{{- .Lang | title -}}
{{- end -}}
</a>
</li>
{{- end -}}
{{- end}}
</ul>
{{- end }}
{{/* LANGUAGE SELECTOR */}}
{{ if .Site.IsMultiLingual }}
{{/* set vars with page data */}}
{{ $currentLang := .Lang }}
{{ $allTranslations := .Translations }}
{{ $separator := or $label_text (not site.Params.disableThemeToggle)}}
<ul class="lang-switch">
{{ if $separator }}<li>|</li>{{ end }}
{{ range $anySiteLang := .Site.Home.AllTranslations }}
{{/* code here can only access page-related data via vars set above */}}
{{ if ne $currentLang $anySiteLang.Lang }}
{{ $translationLink := .Permalink }}
{{ range $translation := $allTranslations }}
{{ if eq $anySiteLang.Lang $translation.Lang }}
{{ $translationLink = $translation.Permalink }}
{{ end }}
{{ end }}
<li>
<a href="{{ $translationLink }}"
title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName ) | default (.Lang | upper) }}"
aria-label="{{ .Language.LanguageName | default (.Lang | upper) }}">
{{ if site.Params.DisplayFullLangName }}
{{ .Language.LanguageName }}
{{ else }}
{{ .Lang | upper }}
{{ end }}
</a>
</li>
{{ end }}
{{ end }}
</ul>
{{ end }}
</div>
</div>
{{- $currentPage := . }}