Skip to content

tpl/lang: Add lang.Language template function #12212

@jmooring

Description

@jmooring

This is a pretty good idea from the forum, allowing you to get a translated language name from a language tag. One example (which may not be great) is a language switcher that displays "french" in three different languages on a three language site. For example:

Screencast.from.03-07-2024.12.32.25.PM.webm

Instead of using translation tables, use Go's language package that we already use for other things (no new dependencies).

Signature:

lang.LanguageName SOURCE [TARGET]

If TARGET is not provided, set to SRC.

{{ lang.LanguageName "pt-br" "en-US" }} → Brazilian Portuguese
{{ lang.LanguageName "pt" "en" }} → Portuguese
{{ lang.LanguageName "pt" }} → português

{{ lang.LanguageName "de-DE" "fr-FR" }} → allemand
{{ lang.LanguageName "de" "fr" }} → allemand
{{ lang.LanguageName "de" }} → Deutsch

A language switcher would look like this:

{{ if .Translations }}
  {{ $targetLang := .Language.LanguageCode }}
  <ul>
    {{ range .AllTranslations }}
      {{ $sourceLang := .Language.LanguageCode }}
      <li><a href="{{ .RelPermalink }}">{{ lang.LanguageName $sourceLang $targetLang }}</a></li>
    {{ end }}
  </ul>
{{ end }}

Reference: https://discourse.gohugo.io/t/get-a-translated-language-name-from-its-code/48697/8

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions