feat: add multilingual support with German and English
Implement complete multilingual support using Hugo's multilingual mode with German (de) as default and English (en) as secondary language.
Changes:
- Configure Hugo multilingual mode with language-specific parameters
- Reorganize content using language suffix pattern (filename.de.md, filename.en.md)
- Translate all content to English (home page and CV page)
- Implement language switcher that maintains page context
- Add language-specific navigation menus
- Update templates to use language-aware URL functions (relLangURL)
- Fix navbar brand and Home links to respect current language
- Add translationKey to content frontmatter for explicit translation linking
URL Structure:
- German: /de/ (home), /de/cv/ (CV page)
- English: /en/ (home), /en/cv/ (CV page)
Key Implementation Details:
- Use filename.{lang}.md pattern instead of {lang}/filename.md subdirectories
- Always use relLangURL for internal navigation, never .Site.BaseURL
- Menu URLs must include language prefix when defaultContentLanguageInSubdir = true
- Added translationKey to frontmatter for proper translation discovery
Documented 5 critical bugs and their solutions in design.md for future reference.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<div class="container">
|
||||
<h1><a class="navbar-brand" href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h1>
|
||||
<h1><a class="navbar-brand" href="{{ "/" | relLangURL }}">{{ .Site.Title }}</a></h1>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
@@ -1,12 +1,30 @@
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link{{ if .IsHome }} active{{ end }}" aria-current="page" href="{{ .Site.BaseURL }}">Home</a>
|
||||
<a class="nav-link{{ if .IsHome }} active{{ end }}" aria-current="page" href="{{ "/" | relLangURL }}">Home</a>
|
||||
</li>
|
||||
{{ range .Site.Menus.main }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link{{ if $.IsMenuCurrent "main" . }} active{{ end }}" href="{{ .URL }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
|
||||
{{/* Language Switcher - Show only alternative language */}}
|
||||
{{ if .IsTranslated }}
|
||||
{{ range .Translations }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{/* Fallback to home page if no translation exists */}}
|
||||
{{ range .Site.Languages }}
|
||||
{{ if ne $.Language.Lang .Lang }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ .Lang | relLangURL }}">{{ .LanguageName }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user