diff --git a/README.md b/README.md index 1722bb7..f4d205f 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,13 @@ hugo server --buildFuture --buildDrafts ``` Then open http://localhost:1313 + +## Shortcode: Language badge + +Use the `lang` shortcode to mark whether a tour is in German, English or bilingual. It renders a small superscript badge next to the text, with details when hovered over or parsed by a screenreader. + +- German: `{{< lang de >}}` +- English: `{{< lang en >}}` +- Bilingual: `{{< lang deen >}}` + +For usage references check the [German](/content/de/39c3/_index.md) and [English](/content/en/39c3/_index.md) tour overview. \ No newline at end of file diff --git a/content/de/39c3/_index.md b/content/de/39c3/_index.md index 8d9d928..0da2ca4 100644 --- a/content/de/39c3/_index.md +++ b/content/de/39c3/_index.md @@ -14,28 +14,28 @@ cascade: Diese Touren bieten wir zum 39C3 Chaos Communication Congress an: -**Tag 0 (26.12.)**: [Miniatur Wunderland](./miwula/) um 12:25 und 17:15. +**Tag 0 (26.12.)**: [Miniatur Wunderland](./miwula/) um 12:25 {{< lang deen >}} und 17:15 {{< lang deen >}}. -| Zeit | Tag 1 (27.12.) | Tag 2 (28.12.) | Tag 3 (29.12.) | -| ----- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| 10:00 | | 10:30 [Rote Flora](./flora/) | 09:30 [Feuerwehr eHLF](./firestation/) | -| 11:00 | - | - | - | -| 12:00 | 12:00 [Stadtrundgang](./city-walk/) | 12:00 [Stadtrundgang](./city-walk/) | 12:00 [Stadtrundgang](./city-walk/) | -| | | 12:15 [Eisenbahnmuseum](./eisenbahnmuseum/) | | -| | | 12:30 [Rote Flora](./flora/) | | -| 13:00 | 13:00 [Retro Spiele Museum](./retro-games-museum/) | | | -| | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) | -| | 13:45 [Freies Sender Kombinat](./fsk/) | | | -| 14:00 | 14:00 [Stadtrundgang](./city-walk/) | 14:00 [Stadtrundgang](./city-walk/) | 14:00 [Stadtrundgang](./city-walk/) | -| | 14:15 [Miniatur Wunderland](./miwula/) | 14:15 [Miniatur Wunderland](./miwula/) | 14:15 [Miniatur Wunderland](./miwula/) | -| | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) | | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) | -| | | | 14:45 [Freies Sender Kombinat](./fsk/) | -| 15:00 | 15:45 [Congress Lounge](./lounge/) | | | -| 16:00 | | | | -| 17:00 | 17:15 [Miniatur Wunderland](./miwula/) | 17:15 [Miniatur Wunderland](./miwula/) | 17:15 [Miniatur Wunderland](./miwula/) | -| | | 17:30 [Alsterdampfer](./alsterdampfer/) | 17:30 [Alsterdampfer](./alsterdampfer/) | -| | 17:45 [Tour der Giganten](./tour-der-giganten/) | 17:45 [Tour der Giganten](./tour-der-giganten/) | 17:45 [Tour der Giganten](./tour-der-giganten/) | -| 18:00 | | | | -| 19:00 | 19:00 [Alsterdampfer](./alsterdampfer/) | | | +| Zeit | Tag 1 (27.12.) | Tag 2 (28.12.) | Tag 3 (29.12.) | +|-------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------| +| 10:00 | | 10:30 [Rote Flora](./flora/) {{< lang de >}} | 09:30 [Feuerwehr eHLF](./firestation/) {{< lang de >}} | +| 11:00 | - | - | - | +| 12:00 | 12:00 [Stadtrundgang](./city-walk/) {{< lang de >}} | 12:00 [Stadtrundgang](./city-walk/) {{< lang de >}} | 12:00 [Stadtrundgang](./city-walk/) {{< lang de >}} | +| | | 12:15 [Eisenbahnmuseum](./eisenbahnmuseum/) {{< lang deen >}} | | +| | | 12:30 [Rote Flora](./flora/) {{< lang deen >}} | | +| 13:00 | 13:00 [Retro Spiele Museum](./retro-games-museum/) {{< lang deen >}} | | | +| | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) {{< lang de >}} | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) {{< lang de >}} | 13:30 [Alternative Hafenrundfahrt](./alternative-harbor-cruise/) {{< lang en >}} | +| | 13:45 [Freies Sender Kombinat](./fsk/) {{< lang de >}} | | | +| 14:00 | 14:00 [Stadtrundgang](./city-walk/) {{< lang en >}} | 14:00 [Stadtrundgang](./city-walk/) {{< lang en >}} | 14:00 [Stadtrundgang](./city-walk/) {{< lang en >}} | +| | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | +| | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) {{< lang de >}} | | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) {{< lang en >}} | +| | | | 14:45 [Freies Sender Kombinat](./fsk/) {{< lang de >}} | +| 15:00 | 15:45 [Congress Lounge](./lounge/) {{< lang deen >}} | | | +| 16:00 | | | | +| 17:00 | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | +| | | 17:30 [Alsterdampfer](./alsterdampfer/) {{< lang de >}} | 17:30 [Alsterdampfer](./alsterdampfer/) {{< lang de >}} | +| | 17:45 [Tour der Giganten](./tour-der-giganten/) {{< lang de >}} | 17:45 [Tour der Giganten](./tour-der-giganten/) {{< lang en >}} | 17:45 [Tour der Giganten](./tour-der-giganten/) {{< lang de >}} | +| 18:00 | | | | +| 19:00 | 19:00 [Alsterdampfer](./alsterdampfer/) {{< lang de >}} | | | Wir haben keine Touren an Tag 4 (30.12.). \ No newline at end of file diff --git a/content/en/39c3/_index.md b/content/en/39c3/_index.md index 916a81c..41b8f7f 100644 --- a/content/en/39c3/_index.md +++ b/content/en/39c3/_index.md @@ -13,28 +13,28 @@ cascade: These are the tours on offer for 39C3 Chaos Communication Congress: -**Day 0 (26.12.)**: [Miniatur Wunderland](./miwula/) at 12:25 and 17:15. +**Day 0 (26.12.)**: [Miniatur Wunderland](./miwula/) at 12:25 {{< lang deen >}} and 17:15 {{< lang deen >}}. -| Time | Day 1 (27.12.) | Day 2 (28.12.) | Day 3 (29.12.) | -| ----- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| 10:00 | | 10:30 [Rote Flora](./flora/) | 09:30 [Electric Firetruck](./firestation/) | -| 11:00 | - | - | - | -| 12:00 | 12:00 [City Walk](./city-walk/) | 12:00 [City Walk](./city-walk/) | 12:00 [City Walk](./city-walk/) | -| | | 12:15 [Train Museum](./eisenbahnmuseum/) | | -| | | 12:30 [Rote Flora](./flora/) | | -| 13:00 | 13:00 [Retro Games Museum](./retro-games-museum/) | | | -| | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) | -| | 13:45 [Freies Sender Kombinat Radio](./fsk/) | | | -| 14:00 | 14:00 [City Walk](./city-walk/) | 14:00 [City Walk](./city-walk/) | 14:00 [City Walk](./city-walk/) | -| | 14:15 [Miniatur Wunderland](./miwula/) | 14:15 [Miniatur Wunderland](./miwula/) | 14:15 [Miniatur Wunderland](./miwula/) | -| | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) | | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) | -| | | | 14:45 [Freies Sender Kombinat Radio](./fsk/) | -| 15:00 | 15:45 [Congress Lounge](./lounge/) | | | -| 16:00 | | | | -| 17:00 | 17:15 [Miniatur Wunderland](./miwula/) | 17:15 [Miniatur Wunderland](./miwula/) | 17:15 [Miniatur Wunderland](./miwula/) | -| | | 17:30 [Alster Steamer](./alsterdampfer/) | 17:30 [Alster Steamer](./alsterdampfer/) | -| | 17:45 [Tour der Giganten](./tour-der-giganten/) | 17:45 [Tour der Giganten](./tour-der-giganten/) | 17:45 [Tour der Giganten](./tour-der-giganten/) | -| 18:00 | | | | -| 19:00 | 19:00 [Alster Steamer](./alsterdampfer/) | | | +| Time | Day 1 (27.12.) | Day 2 (28.12.) | Day 3 (29.12.) | +|-------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------| +| 10:00 | | 10:30 [Rote Flora](./flora/) {{< lang de >}} | 09:30 [Electric Firetruck](./firestation/) {{< lang de >}} | +| 11:00 | - | - | - | +| 12:00 | 12:00 [City Walk](./city-walk/) {{< lang de >}} | 12:00 [City Walk](./city-walk/) {{< lang de >}} | 12:00 [City Walk](./city-walk/) {{< lang de >}} | +| | | 12:15 [Train Museum](./eisenbahnmuseum/) {{< lang deen >}} | | +| | | 12:30 [Rote Flora](./flora/) {{< lang deen >}} | | +| 13:00 | 13:00 [Retro Games Museum](./retro-games-museum/) {{< lang deen >}} | | | +| | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) {{< lang de >}} | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) {{< lang de >}} | 13:30 [Alternative Harbour Cruise](./alternative-harbor-cruise/) {{< lang en >}} | +| | 13:45 [Freies Sender Kombinat Radio](./fsk/) {{< lang de >}} | | | +| 14:00 | 14:00 [City Walk](./city-walk/) {{< lang en >}} | 14:00 [City Walk](./city-walk/) {{< lang en >}} | 14:00 [City Walk](./city-walk/) {{< lang en >}} | +| | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 14:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | +| | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) {{< lang de >}} | | 14:15 [Alter Elbtunnel](./alter-elbtunnel/) {{< lang en >}} | +| | | | 14:45 [Freies Sender Kombinat Radio](./fsk/) {{< lang de >}} | +| 15:00 | 15:45 [Congress Lounge](./lounge/) {{< lang deen >}} | | | +| 16:00 | | | | +| 17:00 | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | 17:15 [Miniatur Wunderland](./miwula/) {{< lang deen >}} | +| | | 17:30 [Alster Steamer](./alsterdampfer/) {{< lang de >}} | 17:30 [Alster Steamer](./alsterdampfer/) {{< lang de >}} | +| | 17:45 [Tour of the Giants](./tour-der-giganten/) {{< lang de >}} | 17:45 [Tour of the Giants](./tour-der-giganten/) {{< lang en >}} | 17:45 [Tour of the Giants](./tour-der-giganten/) {{< lang de >}} | +| 18:00 | | | | +| 19:00 | 19:00 [Alster Steamer](./alsterdampfer/) {{< lang de >}} | | | There are no tours on day 4 (30 December). \ No newline at end of file diff --git a/content/en/39c3/tour-der-giganten/index.md b/content/en/39c3/tour-der-giganten/index.md index 401ffa7..40f3c31 100644 --- a/content/en/39c3/tour-der-giganten/index.md +++ b/content/en/39c3/tour-der-giganten/index.md @@ -44,7 +44,7 @@ Hansaport is Germany's largest seaport terminal for iron ore and coal. Inconspic ## Details * Tours: * Day 1 (27 December) **17:45** German - * Day 2 (28 December) **17:45** German + * Day 2 (28 December) **17:45** English * Day 3 (29 December) **17:45** German * Duration: about 3.5 hours including a short (toilet) break * Language: German diff --git a/layouts/shortcodes/lang.html b/layouts/shortcodes/lang.html new file mode 100644 index 0000000..d3a1a63 --- /dev/null +++ b/layouts/shortcodes/lang.html @@ -0,0 +1,16 @@ +{{- $code := .Get 0 | lower -}} +{{- $validCodes := slice "de" "en" "deen" -}} +{{- if not (in $validCodes $code) -}} + Warning: Invalid or missing language code '{{ $code }}'. Use 'de', 'en', or 'deen'. +{{- else -}} + {{- $label := cond (eq $code "de") "DE" (cond (eq $code "en") "EN" (cond (eq $code "deen") "DE/EN" "")) -}} + {{- $title := "" -}} + {{- if eq $code "deen" -}} + {{- $title = cond (eq .Site.Language.Lang "de") "Diese Tour wird zweisprachig stattfinden (Deutsch und Englisch)" "This tour will be bilingual (German and English)" -}} + {{- else if eq $code "de" -}} + {{- $title = cond (eq .Site.Language.Lang "de") "Diese Tour wird auf Deutsch stattfinden" "This tour will be held in German" -}} + {{- else if eq $code "en" -}} + {{- $title = cond (eq .Site.Language.Lang "de") "Diese Tour wird auf Englisch stattfinden" "This tour will be held in English" -}} + {{- end -}} + {{ $label }} +{{- end -}} \ No newline at end of file