mirror of https://github.com/luizdepra/hugo-coder.git

Tomasz Wąsiński
09.12.2018 f18b8c4e8e757449b291dd3e7a8dbc4ebd26a3fc
Add support for multilingualism (#40)

2 files modified
93 ■■■■■ changed files
README.md 61 ●●●●● patch | view | raw | blame | history
layouts/partials/header.html 32 ●●●● patch | view | raw | blame | history
README.md
@@ -54,6 +54,9 @@
    # RTL support
    rtl = false
    # Multilingualism
    langseparator = "|" # Separates menus from language selectors when site is multilingual.
# Social links
[[params.social]]
    name = "Github"
@@ -79,8 +82,65 @@
    url = "/about/"
```
To support multilingualism the configuration above needs to be extended by parameters for the specific languages.
Each `language` section overrides default site's parameters when that language is chosen.
```toml
DefaultContentLanguage = "en" # needs to match one of the language sections, add this at the main section of the configuration
[params] # add this to theme params, do not duplicate tables
    LangSeparator = "|" # separates menus from language selectors
[languages]
    [languages.en]
    languagename = "English"
        [languages.en.params]
        author = "John Doe" # Author's name.
        info = "Full Stack DevOps and Magician" # Author's job title or info.
        description = "John Doe's personal website" # Site description.
        keywords = "blog,developer,personal" # Site keywords.
        [languages.en.menu]
        [[languages.en.menu.main]]
        name = "About"
        weight = 1.0
        url = "/about/"
        [[languages.en.menu.main]]
        name = "Blog"
        weight = 2.0
        url = "/posts/"
    [languages.pl]
        languagename = "Polski"
        title = "John Doe po polsku"
        [languages.pl.params]
        author = "John Doe"
        languagecode = "pl"
        description = "Strona domowa John'a Doe"
        keywords = "blog,developer,strona domowa"
        info = "Full Stack DevOps i Magik"
        weight = 2.0
        [languages.pl.menu]
            [[languages.pl.menu.main]]
            name = "O mnie"
            weight = 1.0
            url = "/pl/about/"
            [[languages.pl.menu.main]]
            name = "Blog"
            weight = 2.0
            url = "/pl/posts/"
```
You can look at full working [`config.toml`](https://github.com/luizdepra/hugo-coder/blob/master/exampleSite/config.toml) inside the [exampleSite](https://github.com/luizdepra/hugo-coder/tree/master/exampleSite) folder.
@@ -137,6 +197,7 @@
- [Harry Khanna](https://github.com/hkhanna)
- [rdhox](https://rdhox.io)
- [Chip Senkbeil](https://github.com/chipsenkbeil)
- [Tomasz Wąsiński](https://github.com/wasinski)
## Special Thanks
layouts/partials/header.html
@@ -1,16 +1,34 @@
<nav class="navigation">
  <section class="container">
    <a class="navigation-title" href="{{ .Site.BaseURL }}">
    <a class="navigation-title" href="{{ print "/" | absLangURL }}">
      {{ .Site.Title }}
    </a>
    {{ with .Site.Menus.main }}
    <ul class="navigation-list {{ if $.Site.Params.rtl }} float-left {{ else }} float-right {{ end }}">
      {{ range sort . }}
      <li class="navigation-item">
        <a class="navigation-link" href="{{ .URL }}">{{ .Name }}</a>
      </li>
      {{ with .Site.Menus.main}}
        {{ range sort . }}
          <li class="navigation-item">
            <a class="navigation-link" href="{{ .URL | absLangURL }}">{{ .Name }}</a>
          </li>
        {{ end }}
      {{ end }}
      {{ if .Site.IsMultiLingual }}
        {{ $node := . }}
        {{ .Scratch.Set "separator" true }}
        {{ range .Site.Home.AllTranslations }}
          {{ if ne $.Site.Language .Language }}
            {{ if $node.Scratch.Get "separator" }}
              <li>
                <p>{{ .Site.Params.LangSeparator }}</p>
              </li>
              {{ $node.Scratch.Set "separator" false }}
            {{ end }}
            <li>
              <a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
            </li>
          {{ end }}
        {{ end }}
      {{ end }}
    </ul>
    {{ end }}
  </section>
</nav>