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