diff options
| author | Nikita Shubin <nikita.shubin@maquefel.me> | 2026-08-24 10:52:09 +0300 |
|---|---|---|
| committer | Nikita Shubin <nikita.shubin@maquefel.me> | 2026-08-24 11:28:18 +0300 |
| commit | 2a06e0e8ccfea32dd8d4b7c9ba29ef82702586ea (patch) | |
| tree | d0d0999a5ed3b619486353e094df6e50d6a6e5a9 | |
| parent | de3ad8f3c46f3a93ade40d9d9f8076550a37c2b8 (diff) | |
| download | landau.one-2a06e0e8ccfea32dd8d4b7c9ba29ef82702586ea.tar.gz landau.one-2a06e0e8ccfea32dd8d4b7c9ba29ef82702586ea.zip | |
themes: landau-hacker: Add languadge switcher
Add languadge switcher to support switching between translations.
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
| -rw-r--r-- | themes/landau-hacker/layouts/_default/baseof.html | 15 | ||||
| -rw-r--r-- | themes/landau-hacker/layouts/partials/language-switcher.html | 36 | ||||
| -rw-r--r-- | themes/landau-hacker/static/css/hacker.css | 62 |
3 files changed, 107 insertions, 6 deletions
diff --git a/themes/landau-hacker/layouts/_default/baseof.html b/themes/landau-hacker/layouts/_default/baseof.html index 57080b5..1fa8cfb 100644 --- a/themes/landau-hacker/layouts/_default/baseof.html +++ b/themes/landau-hacker/layouts/_default/baseof.html @@ -20,11 +20,16 @@ </head> <body> <header> - <div class="container"> - <a id="a-title" href="{{ "/" | relURL }}"> - <h1>{{ site.Title }}</h1> - </a> - <h2>{{ site.Params.description }}</h2> + <div class="container header-flex"> + <div class="header-left"> + <a id="a-title" href="{{ "/" | relURL }}"> + <h1>{{ site.Title }}</h1> + </a> + <h2>{{ site.Params.description }}</h2> + </div> + <div class="header-right"> + {{ partial "language-switcher" . }} + </div> </div> </header> diff --git a/themes/landau-hacker/layouts/partials/language-switcher.html b/themes/landau-hacker/layouts/partials/language-switcher.html new file mode 100644 index 0000000..4c73ff5 --- /dev/null +++ b/themes/landau-hacker/layouts/partials/language-switcher.html @@ -0,0 +1,36 @@ +<div class="language-switcher"> + {{ range .Site.Languages }} + {{ $lang := .Lang }} + {{ $isCurrent := eq $lang $.Site.Language.Lang }} + {{ $flag := "" }} + {{ if eq $lang "ru" }}{{ $flag = "🇷🇺" }}{{ else if eq $lang "en" }}{{ $flag = "🇬🇧" }}{{ else }}{{ $flag = "🌐" }}{{ end }} + + {{ $translation := false }} + {{ if $.IsTranslated }} + {{ range $.Translations }} + {{ if eq .Language.Lang $lang }} + {{ $translation = . }} + {{ end }} + {{ end }} + {{ end }} + + {{ if $isCurrent }} + <span class="active" hreflang="{{ $lang }}" lang="{{ $lang }}"> + {{ $flag }} + <span class="code">{{ .LanguageName }}</span> + </span> + {{ else }} + {{ if $translation }} + <a href="{{ $translation.Permalink }}" hreflang="{{ $lang }}" lang="{{ $lang }}"> + {{ $flag }} + <span class="code">{{ .LanguageName }}</span> + </a> + {{ else }} + <a href="{{ relLangURL "" }}" hreflang="{{ $lang }}" lang="{{ $lang }}"> + {{ $flag }} + <span class="code">{{ .LanguageName }}</span> + </a> + {{ end }} + {{ end }} + {{ end }} +</div>
\ No newline at end of file diff --git a/themes/landau-hacker/static/css/hacker.css b/themes/landau-hacker/static/css/hacker.css index 736bb29..400f7d1 100644 --- a/themes/landau-hacker/static/css/hacker.css +++ b/themes/landau-hacker/static/css/hacker.css @@ -94,6 +94,66 @@ header h2 { margin: 0; } +/* Language switcher (LANDAU addition); not part of upstream pages-themes/hacker) */ +.language-switcher { + display: flex; + gap: 1rem; + align-items: center; + justify-content: flex-end; + font-size: 0.9rem; + margin-top: 5px; +} + +.language-switcher a, +.language-switcher .active { + display: inline-flex; + align-items: center; + gap: 0.3rem; + padding: 0.2rem 0.5rem; + border-radius: 4px; + text-decoration: none; + transition: background 0.2s, opacity 0.2s; +} + +.language-switcher a { + color: #b8b8b8; + background: transparent; +} + +.language-switcher a:hover { + background: rgba(255, 255, 255, 0.1); + color: #fff; +} + +.language-switcher .active { + color: #b5e853; + background: rgba(181, 232, 83, 0.1); + cursor: default; + font-weight: bold; +} + +.language-switcher .lang-code { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +@media (max-width: 600px) { + .language-switcher { + justify-content: center; + gap: 0.5rem; + flex-wrap: wrap; + } + .language-switcher a, + .language-switcher .active { + padding: 0.1rem 0.3rem; + font-size: 0.8rem; + } + .language-switcher .lang-code { + display: none; + } +} + /* Main Content */ #main_content { @@ -287,4 +347,4 @@ footer .version { .highlight .nt, .highlight .nn, .highlight .nc, .highlight .no { color: #f4bf75; } .highlight .na { color: #6a9fb5; } .highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx { color: #90a959; } -.highlight .ss { color: #90a959; } +.highlight .ss { color: #90a959; }
\ No newline at end of file |
