diff options
Diffstat (limited to 'layouts/partials/select-language.html')
| -rw-r--r-- | layouts/partials/select-language.html | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/layouts/partials/select-language.html b/layouts/partials/select-language.html new file mode 100644 index 0000000..752b605 --- /dev/null +++ b/layouts/partials/select-language.html @@ -0,0 +1,39 @@ +{{- /* +Selection of available languages. +Dynamically links to corresponding page/post if a translated version exists, otherwise to homepage of that language as fallback. + +Note: `$activeLang` and `$allTranslationsForPage` are technically unnecessary variables, their values could be called with `$.Lang` and `$.Translations` respectively. +These variables - together with the explicit naming of `.` context variables in other cases - were chosen for better readability and understandability of the code. +*/ -}} + +{{- if gt (len site.Languages) 1 }} +{{- $activeLang := .Lang }} +{{- $allTranslationsForPage := .Translations }} + <div class="language-select" style="background-color: yellow;"> + <ul> + {{- range site.Languages }} + {{- $currLangSlice := . }} + {{- if ne $currLangSlice.Lang $activeLang }} + {{- $targetPage := index (where site.Home.Translations "Lang" $currLangSlice.Lang) 0 }} + {{- $translatedPage := index (where $allTranslationsForPage "Lang" $currLangSlice.Lang) 0 }} + {{- if $translatedPage }}{{- $targetPage = $translatedPage }}{{- end }} + <li> + <a + href="{{ $targetPage.RelPermalink }}" + hreflang="{{ $targetPage.Lang }}" + aria-label="{{ $targetPage.LinkTitle }} ({{ or $targetPage.Language.LanguageName $targetPage.Lang }})" + > + <img + src="/flags/{{ $targetPage.Lang }}.svg" + class="icon icon-flag" + style="max-height: 32px" + alt="{{ $targetPage.LinkTitle }} ({{ or $targetPage.Language.LanguageName $targetPage.Lang }})" + aria-hidden="true" + /> + </a> + </li> + {{- end }} + {{- end }} + </ul> + </div> +{{- end }} |
