From f18b8c4e8e757449b291dd3e7a8dbc4ebd26a3fc Mon Sep 17 00:00:00 2001
From: Tomasz Wąsiński <4nt45h@gmail.com>
Date: Sun, 08 Jul 2018 23:12:36 +0000
Subject: [PATCH] Add support for multilingualism (#40)
---
layouts/partials/header.html | 32 ++++++++++++---
README.md | 61 ++++++++++++++++++++++++++++++
2 files changed, 86 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index a4f352c..c52f839 100644
--- a/README.md
+++ b/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
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
index 1ec4fbf..e6bef86 100644
--- a/layouts/partials/header.html
+++ b/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>
--
Gitblit v1.10.0