feat: translation middleware

This commit is contained in:
2026-02-19 21:13:01 +01:00
parent bbae5b1c93
commit cbc2a1a803
35 changed files with 1500 additions and 82 deletions
+26 -3
View File
@@ -1,15 +1,38 @@
package layouts
import "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/translate"
import "strings"
import "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/templer"
templ Base(title string) {
<!DOCTYPE html>
<html lang="en">
<html lang={ translate.Language(ctx) }>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>{ title }</title>
<link rel="icon" type="image/png" href="/static/favicon.png"/>
<link rel="icon" type="image/png" href="/favicon.png"/>
<link href="/css/output.css" rel="stylesheet"/>
<script src="/js/htmx.min.js"></script>
</head>
<body>
<body class="bg-black" hx-boost="true" hx-target="main">
<header
class="fixed z-50 mix-blend-difference p-1 w-full flex justify-between items-start"
>
<a class="text-white text-2xl" href="/">schreifuchs.ch</a>
<nav class="flex gap-2 p-2">
for _, lang := range translate.SupportedLanguages(ctx) {
<a
href={ "/" + translate.PathForLang(ctx, lang, strings.Split(templer.Path(ctx), "/")...) }
hreflang={ lang }
data-no-translate
class="text-white hover:underline uppercase"
>
{ lang }
</a>
}
</nav>
</header>
<main>
{ children... }
</main>