about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2024-02-20 20:02:36 +0000
committerAlan Pearce2024-02-20 20:02:36 +0000
commit333e97f135264c3c220063b2b64bf4dc0b508f34 (patch)
treefda555ec02ad606d42d089b01107cbfead01f68d
parent5a936b5c413b541c5523da6b4ebdc46f996f7360 (diff)
parentfa345b1d1e11cc66ed92605382887fd4367ef97a (diff)
downloadzola-bearblog-333e97f135264c3c220063b2b64bf4dc0b508f34.tar.lz
zola-bearblog-333e97f135264c3c220063b2b64bf4dc0b508f34.tar.zst
zola-bearblog-333e97f135264c3c220063b2b64bf4dc0b508f34.zip
Merge pull request 'Basic multilingual site' (#10) from multilingual into main
Reviewed-on: https://codeberg.org/alanpearce/zola-bearblog/pulls/10
-rw-r--r--config.toml33
-rw-r--r--content/_index.de.md23
-rw-r--r--content/bear.de.md15
-rw-r--r--content/blog/_index.de.md3
-rw-r--r--content/zola.de.md36
-rw-r--r--netlify.toml2
-rw-r--r--templates/footer.html2
-rw-r--r--templates/header.html1
-rw-r--r--templates/language_switcher.html12
-rw-r--r--templates/nav.html16
-rw-r--r--templates/section.html8
-rw-r--r--templates/taxonomy_list.html2
-rw-r--r--templates/taxonomy_single.html2
13 files changed, 145 insertions, 10 deletions
diff --git a/config.toml b/config.toml
index bd675af..92637f3 100644
--- a/config.toml
+++ b/config.toml
@@ -13,6 +13,29 @@ taxonomies = [
   {name = "tags", feed = true},
 ]
 
+default_language = "en"
+
+[translations]
+no_posts = "No posts yet"
+remove_filter = "Remove filter"
+filtering_for = "Filtering for"
+made_with = "Made with"
+
+[languages.de]
+title = "Zola ʕ•ᴥ•ʔ Bear Blog"
+description = "Ein Zola-theme basiert auf Bear Blog."
+
+taxonomies = [
+  {name = "categories", feed = true},
+  {name = "tags", feed = true},
+]
+
+[languages.de.translations]
+no_posts = "Keine Einträge"
+remove_filter = "Filter entfernen"
+filtering_for = "Filtern nach"
+made_with = "Erstellt mit"
+
 [markdown]
 # Whether to do syntax highlighting
 # Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
@@ -21,19 +44,29 @@ highlight_code = true
 [extra]
 date_format="%d %b, %Y"
 webserver_sends_csp_headers=true
+language_switcher=true
+
+translations = [
+  { code="en", name="English" },
+  { code="de", name="Deutsch" },
+]
 
 [[extra.main_menu]]
 name = "Home"
+name_de = "Startseite"
 url = "/"
 
 [[extra.main_menu]]
 name = "Bear"
+name_de = "Bear"
 url = "@/bear.md"
 
 [[extra.main_menu]]
 name = "Zola"
+name_de = "Zola"
 url = "@/zola.md"
 
 [[extra.main_menu]]
 name = "Blog"
+name_de = "Blog"
 url = "@/blog/_index.md"
diff --git a/content/_index.de.md b/content/_index.de.md
new file mode 100644
index 0000000..cdcad42
--- /dev/null
+++ b/content/_index.de.md
@@ -0,0 +1,23 @@
++++
++++
+# Eine himmlische Verbindung
+
+Es gibt eine Krise der Website-Fettleibigkeit. Aufgeblähte Websites voller Skripte, Werbung und Tracker bremsen deine Leser jedes Mal aus, wenn sie versuchen, deine gut gestalteten Inhalte zu lesen.
+
+Zola Bear Blog ist alles, was du brauchst, um eine fantastische und optimierte Website oder einen Blog zu erstellen. Es funktioniert perfekt auf **jedem** Anzeigegerät. Alles, worauf du dich konzentrieren müssen, ist das Schreiben guter Inhalte.
+
+[Zum ursprünglichen Bear-Blog](https://bearblog.dev/).
+
+---
+
+Was passiert, wenn du den weltweit schnellsten und leichtesten Generator für statische Websites mit einem Design-Theme kombinieren, das dir kostenlose, unkomplizierte und superschnelle Blogging-Funktionen bietet?
+
+**Benutze dieses Theme und finde es heraus!**
+
+Erstellt mit 💚 von [Alan Pearce](https://alanpearce.eu).
+
+---
+
+Veröffentliche einfach deine Inhalte online, bau ein Publikum auf und halte deine Seiten klein, schnell und **für Suchmaschinen optimiert**.
+
+Jede Seite ist ~5kb groß, und du kannst dein Blog selbst **hosten**.
diff --git a/content/bear.de.md b/content/bear.de.md
new file mode 100644
index 0000000..b9a1f3e
--- /dev/null
+++ b/content/bear.de.md
@@ -0,0 +1,15 @@
++++
+title = "Bear"
++++
+
+Webseite: [https://bearblog.dev](https://bearblog.dev)
+
+Es gibt eine Krise der Website-Fettleibigkeit. Aufgeblähte Websites voller Skripte, Werbung und Tracker bremsen deine Leser jedes Mal aus, wenn sie versuchen, deine gut gestalteten Inhalte zu lesen.
+
+Zola Bear Blog ist alles, was du brauchst, um eine fantastische und optimierte Website oder einen Blog zu erstellen. Es funktioniert perfekt auf **jedem** Anzeigegerät. Alles, worauf du dich konzentrieren müssen, ist das Schreiben guter Inhalte.
+
+Bear macht es einfach, Inhalte online zu veröffentlichen und ein Publikum aufzubauen, während die Seiten klein, schnell und **für Suchmaschinen optimiert** bleiben.
+
+Jede Seite ist ~5kb.
+
+Weitere Informationen und Beiträge unter [GitHub](https://github.com/HermanMartinus/bearblog).
diff --git a/content/blog/_index.de.md b/content/blog/_index.de.md
new file mode 100644
index 0000000..34651ab
--- /dev/null
+++ b/content/blog/_index.de.md
@@ -0,0 +1,3 @@
++++
+title = "Blog"
++++
diff --git a/content/zola.de.md b/content/zola.de.md
new file mode 100644
index 0000000..204f790
--- /dev/null
+++ b/content/zola.de.md
@@ -0,0 +1,36 @@
++++
+title = "Zola"
++++
+## Keine Abhängigkeiten
+
+Zola wird als einzelne ausführbare Datei mit Sass-Kompilierung, Syntax
+Syntaxhervorhebung, Inhaltsverzeichnis und vielen anderen Funktionen, die
+die normalerweise das Einrichten einer Entwicklungsumgebung oder das Hinzufügen einiger
+JavaScript-Bibliotheken zu deiner Website.
+
+## Rasend schnell
+
+Die durchschnittliche Website wird in weniger als einer Sekunde erstellt, einschließlich
+Sass-Kompilierung und Syntaxhervorhebung.
+
+## Skalierbar
+
+Zola rendert deine gesamte Website als statische Dateien, was es trivial macht
+jede Art von Datenverkehr zu bewältigen, ohne dass du dich um die
+ohne sich um die Verwaltung eines Servers oder einer Datenbank kümmern zu müssen.
+
+## Einfach zu bedienen
+
+Von der CLI bis zur Template-Engine ist alles so konzipiert, dass es
+intuitiv. Verlasse dich jedoch nicht auf mein Wort, sondern schaue in die Dokumentation
+und überzeug dich selbst.
+
+## Flexibel
+
+Zola geht dir aus dem Weg, damit du dich auf deine Inhalte konzentrieren kannst, sei es ein
+Blog, eine Wissensdatenbank, eine Landing Page oder eine Kombination aus beidem.
+
+## Erweitertes Markdown
+
+Zola verfügt über Shortcodes und interne Links, die das Schreiben von
+deine Inhalte zu schreiben.
diff --git a/netlify.toml b/netlify.toml
index 59e0094..dc69016 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -22,4 +22,4 @@ command = "zola build --base-url $DEPLOY_PRIME_URL"
     X-XSS-Protection = "1; mode=block"
     Referrer-Policy = "strict-origin-when-cross-origin"
     Strict-Transport-Security = "max-age=63072000; includeSubdomains"
-    Content-Security-Policy = "default-src 'none'; img-src 'self'; object-src 'none'; script-src 'none'; style-src 'sha256-PfqYdfojK4X5lEpBXpUr/pJgf8BZ0tVvD+shnG3tM/E='; form-action 'none'; base-uri 'self'; frame-ancestors 'none'"
+    Content-Security-Policy = "default-src 'none'; img-src 'self'; object-src 'none'; script-src 'none'; style-src 'sha256-5K5tkbXKXWE7Xcs3HIt98Y+XOWAAsdSyGzixGECKPcA='; form-action 'none'; base-uri 'self'; frame-ancestors 'none'"
diff --git a/templates/footer.html b/templates/footer.html
index c952a93..6d4f0f7 100644
--- a/templates/footer.html
+++ b/templates/footer.html
@@ -1,5 +1,5 @@
 <footer>
   {%- if not config.extra.hide_made_with_line %}
-    Made with <a href="https://codeberg.org/alanpearce/zola-bearblog">Zola ʕ•ᴥ•ʔ Bear</a>
+    {{ trans(key="made_with", lang=lang) }} <a href="https://codeberg.org/alanpearce/zola-bearblog">Zola ʕ•ᴥ•ʔ Bear</a>
   {%- endif %}
 </footer>
diff --git a/templates/header.html b/templates/header.html
index f92e903..6e56025 100644
--- a/templates/header.html
+++ b/templates/header.html
@@ -1,4 +1,5 @@
 <header>
+  {% include "language_switcher.html" %}
   <a href="{{ get_url(path="@/_index.md", lang=lang) }}" class="title">
     <h1>{{ config.title }}</h1>
   </a>
diff --git a/templates/language_switcher.html b/templates/language_switcher.html
new file mode 100644
index 0000000..3968c73
--- /dev/null
+++ b/templates/language_switcher.html
@@ -0,0 +1,12 @@
+{% if config.extra.language_switcher %}
+  <nav class="lang">
+    {%- set language_agnostic_path = current_path | default(value="/") | replace(from='/' ~ lang ~ '/', to = '/') | trim_start_matches(pat = '/') -%}
+    {%- for tr in config.extra.translations %}
+      {%- if tr.code == lang %}
+        <strong>{{ tr.name }}</strong>
+      {%- else %}
+          <a href="{{ get_url(path=language_agnostic_path, lang=tr.code) ~ "/" }}" hreflang="{{ tr.code }}">{{ tr.name }}</a>
+      {%- endif %}
+    {%- endfor %}
+  </nav>
+{% endif %}
diff --git a/templates/nav.html b/templates/nav.html
index a71652e..ba9f543 100644
--- a/templates/nav.html
+++ b/templates/nav.html
@@ -1,9 +1,21 @@
+{% set current_lang = config.default_language %}
+{% if page %}
+  {% set current_lang = page.lang %}
+{% elif section %}
+  {% set current_lang = section.lang %}
+{% endif %}
 {%- if config.extra.main_menu %}
   {%- for item in config.extra.main_menu %}
+    {% if current_lang == config.default_language %}
+      {% set title = item.name %}
+    {% else %}
+      {% set language_key = 'name_' ~ current_lang %}
+      {% set title = item[language_key] %}
+    {% endif %}
     {%- if item.url is matching("https?://") %}
-      <a href="{{ item.url }}">{{ item.name }}</a>
+      <a href="{{ item.url }}">{{ title }}</a>
     {%- else %}
-      <a href="{{ get_url(path=item.url, lang=lang )}}">{{ item.name }}</a>
+      <a href="{{ get_url(path=item.url, lang=lang )}}">{{ title }}</a>
     {%- endif %}
   {%- endfor %}
 {%- endif -%}
diff --git a/templates/section.html b/templates/section.html
index f3c218a..9560719 100644
--- a/templates/section.html
+++ b/templates/section.html
@@ -3,9 +3,9 @@
 {% block main %}
   <main>
     {%- if taxonomy.term %}
-      <h3 class="filter">Filtering for "{{ section.title }}"</h3>
+      <h3 class="filter">{{ trans(key="filtering_for",lang=lang)}} "{{ section.title }}"</h3>
       <small>
-        <a href="{{ get_url(path="@/blog/_index.md", lang=lang) }}">Remove filter</a>
+        <a href="{{ get_url(path="@/blog/_index.md", lang=lang) }}">{{ trans(key="remove_filter", lang=lang) }}</a>
       </small>
     {%- endif %}
     <ul class="blog-posts">
@@ -22,13 +22,13 @@
         </li>
         {% else %}
         <li>
-          No posts yet
+          {{ trans(key="no_posts", lang=lang) }}
         </li>
       {% endfor %}
     </ul>
     <small>
       <div>
-        {% set tags = get_taxonomy(kind="tags") %}
+        {% set tags = get_taxonomy(kind="tags", lang=lang) %}
         {% for post in tags.items %}
           <a href="{{ post.permalink }}">#{{ post.name }}</a>&nbsp;
         {% endfor %}
diff --git a/templates/taxonomy_list.html b/templates/taxonomy_list.html
index 98b8fc9..4b4e08a 100644
--- a/templates/taxonomy_list.html
+++ b/templates/taxonomy_list.html
@@ -5,7 +5,7 @@
     <h1>{{ taxonomy.name | capitalize }}</h1>
     <small>
       <div>
-        {% set tags = get_taxonomy(kind="tags") %}
+        {% set tags = get_taxonomy(kind="tags", lang=lang) %}
         {% for post in tags.items %}
           <a href="{{ post.permalink }}">#{{ post.name }}</a>&nbsp;
         {% endfor %}
diff --git a/templates/taxonomy_single.html b/templates/taxonomy_single.html
index 0f640a2..a8ca536 100644
--- a/templates/taxonomy_single.html
+++ b/templates/taxonomy_single.html
@@ -22,7 +22,7 @@
         </li>
       {% else %}
         <li>
-          No posts yet
+          {{ trans(key="no_posts", lang=lang) }}
         </li>
       {% endfor %}
     </ul>