From 17caeb985f606a7df18dd508aa1d15b74e8bfcdd Mon Sep 17 00:00:00 2001
From: "C. Lente" <7017340+clente@users.noreply.github.com>
Date: Fri, 10 Feb 2023 16:31:47 -0300
Subject: [PATCH] Generalize translation menus

---
 .../content.pt/blog/markdown-syntax.md        |  1 +
 exampleSite/content/blog/not-translated.md    |  7 +++++
 layouts/partials/nav.html                     | 26 ++++++++++++-------
 3 files changed, 25 insertions(+), 9 deletions(-)
 create mode 100644 exampleSite/content/blog/not-translated.md

diff --git a/exampleSite/content.pt/blog/markdown-syntax.md b/exampleSite/content.pt/blog/markdown-syntax.md
index 59d8dd5..2e95a55 100644
--- a/exampleSite/content.pt/blog/markdown-syntax.md
+++ b/exampleSite/content.pt/blog/markdown-syntax.md
@@ -3,6 +3,7 @@ title: "Guia da sintaxe markdown"
 date: "2020-01-03"
 description: "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
 tags: ["markdown", "syntax"]
+slug: "sintaxe-markdown"
 ---
 
 For a quick cheatsheet, check out https://simplemde.com/markdown-guide.
diff --git a/exampleSite/content/blog/not-translated.md b/exampleSite/content/blog/not-translated.md
new file mode 100644
index 0000000..c7e0602
--- /dev/null
+++ b/exampleSite/content/blog/not-translated.md
@@ -0,0 +1,7 @@
+---
+title: "This File Was Not Translated"
+date: "2023-02-03"
+description: "An untranslated file"
+---
+
+Lorem ipsum.
diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html
index b7e9f79..8e2dd90 100644
--- a/layouts/partials/nav.html
+++ b/layouts/partials/nav.html
@@ -1,15 +1,23 @@
 {{ range .Site.Menus.main.ByWeight }}
-  <a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
+  <a href="{{ absLangURL .URL }}">{{ .Name }}</a>
 {{ end }}
-<a href='mailto:{{ .Site.Params.email }}?subject={{ i18n "email-subject" }}"{{ .Page.Title | default .Site.Title }}"'>Email</a>
+<a href='mailto:{{ .Site.Params.email }}?subject={{ i18n "email-subject" }}"{{ default .Site.Title .Page.Title }}"'>Email</a>
 <a href="/index.xml">RSS</a>
-{{ $pageLang := .Page.Lang }}
-{{ if .IsTranslated }}
-  {{ range .Translations }}
-    {{ if ne $pageLang .Lang }}
-      <a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
+
+<!-- Convert this page's translations into a dict -->
+{{ $translations := dict }}
+{{ range .Translations }}
+  {{ $translations = merge $translations (dict .Language.Lang .) }}
+{{ end }}
+
+<!-- Create a link to every translation -->
+{{ range where .Site.Languages "Lang" "!=" .Page.Lang }}
+  {{ with (index $translations .Lang) }}
+    <a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
+  {{ else }}
+    <!-- The complicated setup was necessary to make a grayed out link -->
+    {{ if not .Params.hideUntranslated }}
+      <a class="disabled" href="">{{ .LanguageName }}</a>
     {{ end }}
   {{ end }}
-{{ else if not .Site.Params.hideUntranslated }}
-  <a class="disabled" href="">{{ .Language.LanguageName }}</a>
 {{ end }}