Add support for multilingualism (#40)

This commit is contained in:
Tomasz Wąsiński 2018-07-09 01:12:36 +02:00 committed by Luiz F. A. de Prá
parent c7cae007a6
commit f18b8c4e8e
2 changed files with 86 additions and 7 deletions

View File

@ -54,6 +54,9 @@ disqusShortname = "yourdiscussshortname" # Enable or disable Disqus
# 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 @@ disqusShortname = "yourdiscussshortname" # Enable or disable Disqus
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 @@ Coder is licensed under the [MIT license](https://github.com/luizdepra/hugo-code
- [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

View File

@ -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>