Skip to content

Commit d401c4c

Browse files
committed
Automatic language selection
1 parent c89e736 commit d401c4c

7 files changed

Lines changed: 107 additions & 128 deletions

File tree

config/_default/hugo.toml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ baseURL = "https://noscribe.de/"
22

33
theme = "hugo-book"
44

5-
defaultContentLanguage = "en"
6-
defaultContentLanguageInSubdir = true
5+
defaultContentLanguage = "und"
6+
defaultContentLanguageInSubdir = false
77
disableDefaultLanguageRedirect = true
88

9-
languageCode = "en-US"
9+
languageCode = "und"
1010

1111
title = "noScribe"
1212

@@ -46,6 +46,12 @@ enableRobotsTXT = false
4646
licenseUrl = "https://www.gnu.org/licenses/gpl-3.0.html"
4747

4848
[languages]
49+
[languages.und]
50+
languageName = "Language"
51+
languageCode = "und"
52+
weight = 0
53+
title = "noScribe"
54+
contentDir = "content/und"
4955
[languages.de]
5056
languageName = "Deutsch"
5157
languageCode = "de-DE"

content/de/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
title: "noScribe – Interviews mit KI transkribieren"
33
description: "Offizielle Projektseite der Open-Source-Transkriptionssoftware noScribe (GPL-3.0) – lokal, datenschutzfreundlich, ohne Cloud."
4+
translationKey: "home"
45
bookToC: true
56
---
67

content/en/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
title: "noScribe – Free Interview Transcription with AI"
33
description: "Official project site of the open-source transcription software noScribe (GPL-3.0) – local, privacy-friendly, no cloud."
4+
translationKey: "home"
45
bookToC: true
56
---
67

content/und/_index.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
title: "noScribe"
3+
description: "Choose your language"
4+
translationKey: "landing"
5+
robots: "noindex,follow"
6+
hideLanguageSwitcher: true
7+
bookToC: false
8+
---
9+
10+
# Choose your language
11+
12+
{{< button href="/en/" >}}English{{< /button >}}
13+
{{< button href="/de/" >}}Deutsch{{< /button >}}
14+
15+
Your browser language is used for an automatic redirect.
16+
You can change language on every page later.
17+
18+
<noscript>
19+
JavaScript is disabled; please choose a language above.
20+
</noscript>
21+
22+
<script>
23+
(function () {
24+
if (window.location.pathname !== "/") return;
25+
26+
// Add new languages by extending this map.
27+
var languagePaths = {
28+
en: "/en/",
29+
de: "/de/"
30+
};
31+
var fallback = "/en/";
32+
33+
var preferred = (navigator.languages && navigator.languages.length)
34+
? navigator.languages
35+
: [navigator.language || ""];
36+
37+
var target = null;
38+
for (var i = 0; i < preferred.length; i++) {
39+
var lang = String(preferred[i] || "").toLowerCase();
40+
if (!lang) continue;
41+
if (languagePaths[lang]) {
42+
target = languagePaths[lang];
43+
break;
44+
}
45+
var base = lang.split("-")[0];
46+
if (languagePaths[base]) {
47+
target = languagePaths[base];
48+
break;
49+
}
50+
}
51+
52+
if (!target) target = fallback;
53+
if (target && target !== window.location.pathname) {
54+
window.location.replace(target);
55+
}
56+
})();
57+
</script>

layouts/_partials/docs/html-head.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
{{- if $author }}
1212
<meta name="author" content="{{ $author }}">
1313
{{- end }}
14-
{{- if .Params.noindex -}}
14+
{{- if .Params.robots -}}
15+
<meta name="robots" content="{{ .Params.robots }}">
16+
{{- else if .Params.noindex -}}
1517
<meta name="robots" content="noindex, nofollow">
1618
{{- else -}}
1719
<meta name="robots" content="index, follow">
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{{ if .Params.hideLanguageSwitcher }}
2+
{{ else }}
3+
{{ $bookTranslatedOnly := default false .Site.Params.BookTranslatedOnly }}
4+
{{ $translations := dict }}
5+
{{ if (eq $bookTranslatedOnly false ) }}
6+
{{ range .Site.Home.Translations }}
7+
{{ $translations = merge $translations (dict .Language.Lang .) }}
8+
{{ end }}
9+
{{ end }}
10+
{{ range .Translations }}
11+
{{ $translations = merge $translations (dict .Language.Lang .) }}
12+
{{ end }}
13+
14+
<ul class="book-languages">
15+
<li>
16+
<input type="checkbox" id="languages" class="toggle" />
17+
<label for="languages" class="flex">
18+
<a role="button">
19+
<img src="{{ partial "docs/icon" "translate" }}" class="book-icon" alt="{{ partial "docs/text/i18n" "Languages" }}" />
20+
{{ $.Site.Language.LanguageName }}
21+
</a>
22+
<img src="{{ partial "docs/icon" "chevron-right" }}" class="book-icon" alt="{{ partial "docs/text/i18n" "Expand" }}" />
23+
</label>
24+
25+
<ul>
26+
{{ range .Site.Languages }}{{ with index $translations .Lang }}
27+
<li>
28+
<a href="{{ cond hugo.IsMultihost .Permalink .RelPermalink }}" class="flex flex-auto">
29+
{{ .Language.LanguageName }}
30+
</a>
31+
</li>
32+
{{ end }}{{ end }}
33+
</ul>
34+
</li>
35+
</ul>
36+
{{ end }}

static/index.html

Lines changed: 0 additions & 124 deletions
This file was deleted.

0 commit comments

Comments
 (0)