diff --git a/config.toml b/config.toml
index 2f7fd1ff408ad57eb4037b265bcaacd7d4450aad..ad32621e8f518db7bbbc7c8ffe24e7d981ac3f17 100644
--- a/config.toml
+++ b/config.toml
@@ -104,3 +104,117 @@ link = "https://bildung.social/@Teckids"
 icon = "fa-brands fa-git"
 rel = "me"
 link = "https://edugit.org/Teckids/"
+
+[languages.en]
+description = "A comprehensible (digital) world – together, for everyone."
+
+taxonomies = [
+  { name = "projekt", render = false, feed = true },
+  { name = "zielgruppe", render = false, feed = true },
+  { name = "aspekt", render = false, feed = false },
+  { name = "produkt", render = false, feed = false },
+
+  { name = "tags", render = false },
+]
+
+[languages.en.translations]
+impressum = "Imprint"
+not_found_header = "Page not found (404)"
+not_found_body = "The requested page can not be found."
+published_on = "Published on"
+word_count = "Number of words"
+words = "words"
+reading_time = "Reading time"
+minutes_short = "min"
+further_related_posts = "Further related posts"
+related_blog_posts = "Teckids blog posts on this topic"
+teckids_blog_posts = "Teckids blog posts"
+teckids_blog_page = "Teckids blog – page"
+pages_of = "of"
+previous_page = "Previous"
+next_page = "Next"
+page = "Page"
+more_teckids_blog_posts = "More Teckids blog posts"
+donation_account = "Bank account for donations"
+supporters_partners = "Supporters and partners"
+further = "Further information"
+channels_networks = "Channels and Networks"
+licensed_under = "Licensed under"
+created_using = "Created using"
+and = "and"
+or = "or"
+this_page_can = "This page can"
+edited_on_edugit = "be edited on EduGit"
+improvement_suggestion = "an improvement can be suggested"
+upcoming_events = "Upcoming events"
+projects = "Projects"
+our_projects = "Our projects"
+information_for = "Information for …"
+teckids_community = "Teckids community"
+page_missing = "This page is not yet finished"
+page_missing_explanation = "Due to the creation of our new website being elaborate, the information on this page unfortunately is not complete."
+event_cost_explanation = """It's important to us that everyone interested can take part in Hack’n’Sun.
+We are aware that our prices are high for some families for any reason. If this is the case for you, please mail us the amount you want to pay. There's no need to tell us why."""
+event_fully_booked = "The event is fully booked. For further registrations or a waiting list, one can contact us via e-mail."
+event_info_registration = "All information and registration"
+write_email = "Write an e-mail"
+call_us = "Call us"
+wiki = "Wiki"
+wiki_subtitle = "Informationen and assistance in the Teckids wiki"
+forum = "Forum"
+forum_subtitle = "Questions and discussions in the Teckids forum"
+chat = "Chat"
+chat_subtitle = "Chat about it"
+help_platforms = "Information about and assistance in using our platforms"
+
+[translations]
+impressum = "Imprint"
+not_found_header = "Seite nicht gefunden (404)"
+not_found_body = "Die gesuchte Seite wurde leider nicht gefunden."
+published_on = "Veröffentlicht am"
+word_count = "Anzahl Wörter"
+words = "Wörter"
+reading_time = "Lesezeit"
+minutes_short = "min"
+further_related_posts = "Weitere Posts dazu"
+related_blog_posts = "Verwandte Posts aus dem Teckids-Blog"
+teckids_blog_posts = "Aus dem Teckids-Blog"
+teckids_blog_page = "Teckids-Blog – Seite"
+pages_of = "von"
+previous_page = "Vorherige"
+next_page = "Nächste"
+page = "Seite"
+more_teckids_blog_posts = "Mehr aus dem Teckids-Blog"
+donation_account = "Spendenkonto"
+supporters_partners = "Unterstützer und Partner*innen"
+further = "Weiteres"
+channels_networks = "Kanäle und Netzwerke"
+licensed_under = "Lizensiert unter"
+created_using = "Erstellt mit"
+and = "und"
+or = "oder"
+this_page_can = "Diese Seite kann"
+edited_on_edugit = "auf EduGit editiert werden"
+improvement_suggestion = "eine Verbesserung vorgeschlagen werden"
+upcoming_events = "Nächste Veranstaltungen"
+projects = "Projekte"
+our_projects = "Unsere Projekte"
+information_for = "Informationen für …"
+teckids_community = "Teckids-Gemeinschaft"
+page_missing = "Diese Seite fehlt leider noch"
+page_missing_explanation = "Da der Aufbau unserer neuen Website sehr aufwändig ist, sind die Informationen auf dieser Seite leider noch nicht vollständig."
+event_cost_explanation = """Uns ist wichtig, dass alle Interessierten an unserer Freizeit teilnehmen können.
+Uns ist bewusst, dass die Kosten für viele Familien sehr hoch sind, ganz egal
+aus welchen Gründen. Sollte der Betrag zu hoch sein, schickt uns bitte einfach
+eine E-Mail mit eurem Wunschbetrag. Die Gründe dafür müsst ihr nicht nennen."""
+event_fully_booked = "Die Veranstaltung ist ausgebucht. Für weitere Anmeldungen oder Plätze auf der Warteliste können uns Interessierte per E-Mail kontaktieren."
+event_info_registration = "Alle Infos und Anmeldung"
+write_email = "E-Mail schreiben"
+call_us = "Anrufen"
+wiki = "Wiki"
+wiki_subtitle = "Informationen und Handreichungen im Teckids-Wiki"
+forum = "Forum"
+forum_subtitle = "Fragen und Diskussion im Teckids-Forum"
+chat = "Chat"
+chat_subtitle = "Darüber reden im Chat"
+help_platforms = "Informationen und Hilfe zu unseren Plattformen"
diff --git a/content/_index.en.md b/content/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..c9311dc412a55e2d84d8b0fc2f66cfe583cb9f4b
--- /dev/null
+++ b/content/_index.en.md
@@ -0,0 +1,30 @@
++++
+[extra.hero.message]
+class = "warning"
+title = "Translation is incomplete"
+content = "Please be aware that this translation of our website is incomplete. For any questions and for cooperations, please contact us."
+
+[[extra.claims]]
+title = "Challenging technology"
+content = "How devices and apps work, what they do and which intentions developers pursue: Everyone shall be able to critically scrutinise all of that – and everyone shall have the rights to do so!"
+image = "images/empathy.png"
+links = [
+    { url = "@/projekte/indiedact/verstehbarkeit/index.md", title = "More about comprehensibility" },
+]
+
+[[extra.claims]]
+title = "Self-determined decisions"
+content = "Whether the name, date of birth, or a photo should be passed on to some company, where data is stored, and what apps on a computer or smartphone are allowed to do – all of that shall be a free decision for everyone. Manufacturers, as well as schools and parents, msut respect that!"
+image = "images/decision-making.png"
+links = [
+    { url = "@/projekte/indiedact/digitale-muendigkeit/index.md", title = "More about digital responsibility" },
+]
+
+[[extra.claims]]
+title = "Actively co-create"
+content = "Those who own a device shall be allowed to do everything they want with it, instead of being limited by the vendor or third party. Technology is a tool for being creative. People of any age shall experience that hardware and software can be changed, invented and freely used by anyone!"
+image = "images/pencil.png"
+links = [
+    { url = "@/projekte/hack-n-fun/tinkering/index.md", title = "More about tinkering" },
+]
++++
diff --git a/content/blog/2025/01/2025-01-31_fosdem-junior-petition/index.en.md b/content/blog/2025/01/2025-01-31_fosdem-junior-petition/index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..f604c561ded1f6bdc7e099315718abdb784d2cb0
--- /dev/null
+++ b/content/blog/2025/01/2025-01-31_fosdem-junior-petition/index.en.md
@@ -0,0 +1,118 @@
++++
+title = "Join our call to make FOSDEM Junior free"
+authors = ["nik"]
+
+[taxonomies]
+tags = ["Ankündigung"]
+zielgruppe = ["Hacker und Maker", "Eltern"]
+aspekt = ["Digitale Mündigkeit"]
+
+[extra.depiction]
+image = "postcard.png"
+alt = "Postcard showing the theses explained in the post"
+credits = "Dominik George, CC-BY-SA"
++++
+
+Europe's biggest Free Software development conference,
+[FOSDEM](https://fosdem.org/), will be held in Bruxelles.
+Join our call to help make its junior programme free,
+open, and self-determined for everyone!
+
+<!-- more -->
+
+## FOSDEM Junior
+
+The [FOSDEM Junior](https://fosdem.org/2025/schedule/track/junior/) track is
+FOSDEM's programme for children between 7 and 17 years. Established in 2024,
+it offers a variety of workshops, mostly held by adult tutors for the young
+people who attend.
+
+Organised as part of the ["Code Club"](https://codeclub.org/) series, it is
+officially an offer by the Raspberry Pi Foundation. The FOSDEM Junior track
+thus shares the Code of Conduct, as well as some technical platforms, with
+the foundation.
+
+## Privacy concerns over Code Club platforms
+
+One major issue we see with how FOSDEM Junior is organised is that the platforms
+offered by the Raspberry Pi Foundation are governed by privacy policies that
+directly contradict many of the values we pursue when working with young people
+(and even with people in general). Opening the Code Club website that hosts
+the Code of Conduct alone requires consent to **72 "necessary" tracking cookies** of
+several providers, among which are Microsoft, Google, Solarwinds, Stripe, and
+Cloudflare.
+
+In their privacy policy, Raspberry Pi Foundation reserves the right to collect
+an enormous amount of personal information, including such things as physical
+addresses, birthdays, gender information, and even "CCTV images".
+The latter might arguably only aaply to physical visits to their offices, but the
+provacy policy, as it stands, states that every website visitor might be affected
+by such data processing.
+
+For "operational reasons", all data may be shared with Google Workspace, Amazon Web
+Services machines, and Salesforce. The Raspberry Pi Foundation claims that all these systems
+are operated within the UK, which left the European Union, thus posing even mroe dfficulties
+on GDPR-compliant data processing when children from within the EU are affected.
+
+## Closed platforms and GAFAM dependencies in workshops
+
+While most of the workshops offered in FOSDEM Junior are based on free and open source
+toosl and platforms, some stand out for requiring the use of closed platforms. For example,
+the MIT App Inventor workshop requires to have a Google account, and, while the workshop
+description claims that an "Android phone or tablet" is required, it turns out that using
+and Android-based phone will probably not suffice, as MIT App Inventor relies on
+Google Play Services.
+
+## Limited self-determination in FOSDEM Junior
+
+As a result of the above issues, FOSDEM Junior requires all participants to be accompanied
+by a parent or other adult guardian. With the privacy-unfriendly policies of the Raspberry
+Pi Foundation in place, children and adolescents essentially cannot decide to agree or
+disagree.
+
+While getting parental consent is not an issue in itself, the requirement to agree to (or have
+a guardian consent to) the extensive data collection, locks out children who are not willing
+to consent. What we regularly see at Teckids events is that many parents tend to put a high
+importance on fostering their children's coding activities, hence being very likely to agree
+to policies that the children themselves, after proper information and discussion, would
+probably not agree to. Children themselves, on the other hand, tend to agree to policies they
+would not normally agree to if put under the social pressure to do so.
+
+Therefore, we believe that programmes for children should carefully design their data processing,
+allowing children to fully understand policies and consequences, and making agreeing as
+easy as possible without compromising their self-determination.
+
+Requiring a Google phone or access to other commercial platforms normalises the use of comemrcial
+software. Children who would normally resist social pressure of their peer groups to join
+commercial platforms, like WhatsApp or other corporate social media, are more likely to give
+up such resistance in the future after experiencing that persons of authority have normalised
+their use.
+
+Commercial platforms, like Google Play, are prone to much stricter access restrictions due to
+their commercial chracter and their data processing principles. Hence, young people are
+often required to either depend on a parent to use such platforms, or use them illegally.
+
+At Teckids, we believe that programmes targeted at children and organised by free software
+activists should make normalisation of free, open, accessible platforms a priority.
+
+## Join our call to FOSDEM Junior
+
+At FOSDEM 2025, we present our "Charta of Comprehesibility" programme for the first time
+by reaching out to FOSDEM Junior and the FOSDEM team. Our goal is to convince FOSDEM
+Junior to revise their policies, making the freedom and self-determination of all
+participants a priority. In essence, we will be calling for the following principles:
+
+* Technology and tools should be free, open, and transparent.
+* Platforms should be privacy-friendly and accessible without age restrictions.
+* Participation should be free and self-determined for all groups and ages.
+* Children should have the last say concerning their data and privacy.
+* Commercial offerings and advertising should be avoided where at all possible.
+
+Just as we did in 2018 and 2019, we once again offer our experience and expertise
+in working with young people in the free software world to support FOSDEM Junior,
+allowing for a workshop programme that respects the children's free and self-determined
+participation to the maximum extent.
+
+![Postcard containing above claims](psotcard.png)
+
+**If you want to join our call, visit us at our stand in building F.**
diff --git a/content/blog/2025/01/2025-01-31_fosdem-junior-petition/postcard.png b/content/blog/2025/01/2025-01-31_fosdem-junior-petition/postcard.png
new file mode 100644
index 0000000000000000000000000000000000000000..21c5d15afdc352b61bb61f2bcbe1f53cad2e8f1d
Binary files /dev/null and b/content/blog/2025/01/2025-01-31_fosdem-junior-petition/postcard.png differ
diff --git a/content/blog/2025/01/_index.en.md b/content/blog/2025/01/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..7823f7647e69fce422d796b40c4f487eebc4fd85
--- /dev/null
+++ b/content/blog/2025/01/_index.en.md
@@ -0,0 +1,5 @@
++++
+transparent = true
+render = false
+in_search_index = false
++++
diff --git a/content/blog/2025/_index.en.md b/content/blog/2025/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..7823f7647e69fce422d796b40c4f487eebc4fd85
--- /dev/null
+++ b/content/blog/2025/_index.en.md
@@ -0,0 +1,5 @@
++++
+transparent = true
+render = false
+in_search_index = false
++++
diff --git a/content/blog/_index.en.md b/content/blog/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..ffd55c303cb799ac0767bda0fa6dde03d2e5c1c7
--- /dev/null
+++ b/content/blog/_index.en.md
@@ -0,0 +1,10 @@
++++
+title = "Teckids blog"
+
+template = "blog/overview.html"
+page_template = "blog/post.html"
+
+sort_by = "date"
+paginate_by = 15
+generate_feeds = true
++++
diff --git a/content/gemeinschaft/_index.en.md b/content/gemeinschaft/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..ac36e0622776b9ea3aff3dd3e2b43b1cdf833eed
--- /dev/null
+++ b/content/gemeinschaft/_index.en.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/gemeinschaft/offene-gemeinschaft/plattformen.en.md b/content/gemeinschaft/offene-gemeinschaft/plattformen.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..c3112d46a85179e7660543b345e5f4819fb12309
--- /dev/null
+++ b/content/gemeinschaft/offene-gemeinschaft/plattformen.en.md
@@ -0,0 +1,3 @@
++++
+title = "Online platforms and services"
++++
diff --git a/content/projekte/_index.en.md b/content/projekte/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..ac36e0622776b9ea3aff3dd3e2b43b1cdf833eed
--- /dev/null
+++ b/content/projekte/_index.en.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/projekte/hack-n-fun/_index.en.md b/content/projekte/hack-n-fun/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..0412583d47d9ea6fb0dbef53a993b2445e629b29
--- /dev/null
+++ b/content/projekte/hack-n-fun/_index.en.md
@@ -0,0 +1,28 @@
++++
+title = "Hack'n'Fun"
+template = "project.html"
+
+weight = 10
+
+[extra]
+logo = "artwork/logo-hacknfun.svg"
+project_slug = "hack-n-fun"
+list_icon = "images/soldering.png"
+title_icon = "images/camping-tent.png"
+theses = [
+    "We show that technology can be designed and made by everyone",
+    "Everyone can learn together and from each other",
+    "Trial and error, breaking things, and repairing things are the best learning methods"
+]
+
+[[extra.products]]
+name = "Hack'n'Sun"
+link = "https://hacknsun.camp"
++++
+
+In the Hack'n'FUn project, children, adolescents and adults join in experiments on disvoering
+technological topics. Everyone can propose topics, thus announcing to demonstrate something,
+ask for a demonstration by others, or calling for others to experiment and discover something
+together.
+
+Active project members organise weekend and holiday camps, building on the results.
diff --git a/content/projekte/hack-n-fun/tinkering/index.en.md b/content/projekte/hack-n-fun/tinkering/index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..e7e40c307aa2dd12369e71bef721d63645de83af
--- /dev/null
+++ b/content/projekte/hack-n-fun/tinkering/index.en.md
@@ -0,0 +1,82 @@
++++
+title = "Tinkering"
+
+[extra.platforms]
+wiki = "de/Projekte/Hack'n'Fun/Tinkering"
+forum = "hacknfun/tinkering/9"
+chat = "#teckids/meßdorfer-feld:matrix.teckids.org"
+
+[taxonomies]
+projekt = ["Hack'n'Fun"]
+zielgruppe = ["Kinder und Jugendliche"]
++++
+
+Unter dem Begriff "Tinkering" (auf deutsch eigentlich "Basteln") versteht man
+das kreative Erschaffen von technischen Dingen. Im Projekt Hack'n'Fun bei
+Teckids gehórt das basteln an eigenen Technik-Projekten zu den dauerhaften
+Aktivitäten, die in der Gemeinschaft stattfinden.
+
+## Mit eigenen Ideen zum Verstehen
+
+Alle Tinkering-Themen beginnen mit einer Idee von jemandem aus der Gemeinschaft.
+Uns ist sehr wichtig, dass es dabei zunächst einmal keine Grenzen gibt. Von
+vergleichswesie kleinen, einfachen Ideen bis hin zu sehr komplexen Projekten
+ist alles möglich. Am Ende kann ein fertiges Projekt stehen, oder auch einfach
+neue Erfahrungen oder neues Wissen.
+
+{% teckids_related() %}
+### Idee einreichen
+
+Eine Idee kann jede\*r in unserem Forum posten. Wer dabei Hilfe benötigt, kann
+sich auch vorher in unserem Chat melden und seine Idee ganz formlos einbringen.
+Sobald die Idee im Forum gepostet wurde, weisen wir eine\*n Themenpat\*in zu.
+Zusammen wird die Idee dann so weit ausgearbeitet, dass wir wissen, in welchem
+Format die umgesetzt wird, wer als Expert\*in dabei helfen kann, usw.
+
+### Gemeinsam an der Idee arbeiten
+
+Danach können alle, die sich auch für das vorgeschlagene Thema interessieren,
+mitmachen. Ob das einfach nur im Chat und Forum passiert, bei einem oder
+mehreren Online-Treffen oder bei persönlichen Treffen an einem passenden Ort,
+entscheiden Initator\*in und Themenpat\*in.
+{% end %}
+
+{% photo_section(title="Aktuelles Beispiel: Kalle Käseecke", img="kalle.jpg", alt="Kalle Käseecke am Teckidsstand", credit="Dominik George, CC-BY-SA", align="right") %}
+Ein Projekt, bei dem sich diese technische Kreativität sehr gut abzeichnet, ist Kalle Käseecke.
+Kalle ist ein Käse aus Plüsch, der beim [Hack’n’Sun](@/projekte/hack-n-fun/freizeiten/hacknsun/index.md)
+2022 verschwunden und mit LEDs ausgestattet wieder aufgetaucht war –
+Eine Gruppe Kinder hatte ihn gefunden und die Idee, dass es cool sei, ihn
+mit Elektronik auszustatten.. 
+
+In den letzten zwei Jahren hat Kalle viele weitere Modifizierungen bekommen,
+sodass er jetzt beispielsweise eine [Website](https://kalle.lol/) hat,
+mit der man seine Farben steuern kann, und verschiedene Modi, wie die sogenannte "Käseparty".
+Außerdem  sind die kurzschlussanfälligen LEDs durch einfach steuerbare WLEDs ausgetauscht worden.
+
+Aktuell wird nun [eine Fernbedienung](https://forum.teckids.org/t/fernbedienung-fuer-kalle-kaeseecke/3185)
+für Kalle gebaut.
+{% end %}
+
+
+{% photo_section(title="Aktuelles Beispiel: Roboter-Gleithörnchen", img="skizze.jpg", alt="Skizze des Gleithörnchens", credit="Florian Kroker, CC-BY-SA") %}
+Ein weiteres, sehr neues Beispiel ist das "Roboter-Gleithörnchen". Auch zu diesem Projekt fiel der
+Startschuss bei Hack’n’Sun. Eine Kind, das zum ersten Mal bei Hack'n'Sun war,
+kam mit der Idee, ein Roboter-Flughorn, das fliegen oder gleiten und laufen kann, zu bauen zu
+Hack’n’Sun und stieß bei einigen anderen, die bereits Mitglieder waren, auf Begeisterung.
+
+Ursprünglich ging es um ein fertiges Modell, das sich mit Servomotoren bewegen können
+sollte. Bei Hack’n’Sun entwickelten sie schon einen groben Aufbau und die Idee einer
+Fernbedienung. 
+
+Nach Hack’n’Sun entwickelte sich die Idee mit Hilfe der Initiatoren weiter. Das Hörnchen soll
+nun zusätzlich zum Gleiten und Laufen auch Bäume hochklettern und an Bäumen landen können.
+Für den Aufbau und konkret für die Muskeln liegen jetzt detaillierte Aufbau-Skizzen vor.
+
+Da die Idee insgesamt sehr komplex ist, kann es sein, dass nur ein Teil davon umgesetzt wird.
+Außerdem werden wir versuchen, Expter\*innen aus der Robotik oder auch Biologie einzuladen,
+die mit Fachwissen aushelfen können.
+
+Das Thema kann man [im Forum verfolgen](https://forum.teckids.org/t/roboter-gleithoernchen/3952).
+{% end %}
+
+<!-- hier noch einen further-Block, z.B. mit einer Verlinkung zu buchbaren Workshops -->
diff --git a/content/projekte/indiedact/_index.en.md b/content/projekte/indiedact/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..9b394fa0417e6d1c4da9a8a03b4ad6d116fdc336
--- /dev/null
+++ b/content/projekte/indiedact/_index.en.md
@@ -0,0 +1,21 @@
++++
+title = "Indiedact"
+template = "project.html"
+
+weight = 30
+
+[extra]
+logo = "artwork/logo-leopard.svg"
+project_slug = "indiedact"
+list_icon = "images/pencil.png"
+title_icon = "images/reading.png"
+theses = [
+    "A self-chosen topic and a self-determined speed are motivator no. 1",
+    "Pedagogic personnel support in a sensitive way and account for the needs of learners",
+    "Digital platforms are tools for individual support of learners – not an end unto themselves",
+]
+
+products = []
++++
+
+This project is currently being re-designed.
diff --git a/content/projekte/indiedact/_index.md b/content/projekte/indiedact/_index.md
index ef8941fd71a556b3744a5b1ec86c3e428223b2fb..7e81705cd9f6267a4162a2e523109f4912eecf6e 100644
--- a/content/projekte/indiedact/_index.md
+++ b/content/projekte/indiedact/_index.md
@@ -18,6 +18,4 @@ theses = [
 products = []
 +++
 
-Lernen und zusammenarbeiten nach Fähigkeiten und Zielen
-
-Die Konzepte, die das Projekt LEOPARD erarbeitet und erprobt, ermöglichen dezentrales und asynchrones, gemeinsames oder selbstständiges, Lernen für jung und alt. Kern des Konzepte ist die Befähigung von Menschen dazu, sich ihre Lernziele und Aufgaben nach Fähigkeiten und Interessen auszusuchen. Begleitet durch Online- und Offline-Barcamps stellt LEOPARD den Rahmen für die Partizipation in allen Vereinsprojekten und darüber hinaus.
+Dieses Projekt wird gerade neu gestaltet.
diff --git a/content/projekte/indiedact/digitale-muendigkeit/index.en.md b/content/projekte/indiedact/digitale-muendigkeit/index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..040d6a3e62009549c6f98d4073be6baf73cebe85
--- /dev/null
+++ b/content/projekte/indiedact/digitale-muendigkeit/index.en.md
@@ -0,0 +1,94 @@
++++
+title = "Digital responsibility"
+
+[taxonomies]
+projekt = ["Indiedact"]
+zielgruppe = ["Eltern", "Lehrkräfte und Schulen"]
+
+[extra.platforms]
+#wiki = ""
+#forum = ""
+chat = "#teckids/meßdorfer-feld:matrix.teckids.org"
+
+[[extra.further.muendigkeit]]
+image = "muendigkeit_dc.jpg"
+alt = "Zeichnung von Schulkindern, die über Kopfhörer mit dem Inhalt von Büchern beschallt werden"
+title = "Digitale Mündigkeit für Erwachsene bei Digitalcourage"
+link = "https://digitalcourage.de/digitale-selbstverteidigung/digitale-muendigkeit"
+description = "TBA"
++++
+
+Wenn wir von "Mündigkeit" reden, [meinen wir meist](https://www.bpb.de/kurz-knapp/lexika/das-junge-politik-lexikon/320816/muendigkeit/)
+die Fähigkeit, selber Verantwortung für sein eigenes Handeln zu übernehmen.
+Das setzt allerdings voraus, dass man überhaupt weiß, was man tut und welche
+Konsequenzen eine Entscheidung mit sich bringt. Man muss also die Rahmenbedingungen
+verstehen, selbstbestimmt entscheiden können und auch eine gewisse Urteilsfähigkeit
+haben, um sich überhaupt eine Meinung bilden zu können.
+
+Diese Fähigkeit sollte so früh wie möglich erlernt werden, selbstverständlich
+unter dem notwendigen Schutz, den (junge) Menschen, die gerade noch in vielen
+Bereichen Erfahrungen sammeln, benötigen.
+
+Deshalb sollten Erwachsene Kinder **vor gefährlichen Entscheidungen schützen**,
+aber umgekehrt niemals stellvertretend für sie Entscheidungen mit **potentiell schädlichen
+Konsequenzen** treffen.
+
+
+## Mein Gerät, meine Daten!
+
+Smartphones, Laptops, Chat, soziale Netzwerke, Spiele – viele digitale
+Geräte und Medien, die wir jeden Tag nutzen, sind schon lange ein
+fester Bestandteil unseres Privatlebens. Früher hat man oft zwischen
+der "digitalen Welt" und dem realen Leben unterschieden, doch das ist
+nicht richtig. Oft ohne darüber nachzudenken, vertrauen wir die persönlichsten
+Geheimnisse unseren digitalen Begleitern an, und dabei fast immer auch
+fremden Firmen und Menschen.
+
+Weil Apps, Websites und digitale Geräte ein so essentieller Standteil
+unseres Lebens geworden sind, ist es wichtig, dass wir bei ihrer Nutzung
+die gleichen Maßstäbe verwenden wie in unserem restlichen Privatleben. Und
+das bedeutet vor allem: **Privatsphäre steht Allen zu** und **Alle dürfen
+frei und selbstbestimmt entscheiden**, was sie zulassen und was nicht.
+
+{{ further(category="muendigkeit") }}
+
+## Kinder dürfen Nein sagen
+
+Viele junge Menschen können ihr erstes Smartphone kaum erwarten. Endlich
+Bilder mit den Freund\*innen hin- und herschicken, die Lieblings-
+Influencer\*innen im sozialen Netzwerk verfolgen und jederzeit Spiele in
+der Tasche zu haben, ist verlockend. Und sobald in der Schule und im
+sozialen Umfeld mehr Wert auf Eigenverantwortung gelegt wird, ist es
+sogar schon ein praktischer Helfer.
+
+Doch häufig kommt der Wunsch, dass ihre Kinder ein Smartphone benutzen,
+auch viel früher schon von den Eltern: Man kann das Kind jederzeit erreichen,
+und dank der vielversprechenden Angebote der Smartphone-Hersteller sogar
+seine Sicherheit fördern. Das Verfolgen des Standorts und das Mitlesen von
+Chats sind nur zwei bei vielen Eltern beliebte Funktionen von Angeboten wie
+Google Famillylink.
+
+Und in der Schule? Fotos vom Musicalauftritt oder der Projektwoche, Einführung
+von Cloud-Diensten oder die Installation von Tracking-Apps der Schule auf
+den privaten Geräten der Schüler\*innen sind Beispiele für Situationen, in
+denen meistens nur die Eltern nach ihrer Meinung gefragt werden. Tatsächlich
+ist das rechtlich erlaubt – Eltern dürfen frei darüber entscheiden, was mit
+den Daten ihrer Kinder passiert. Nicht nur Verbote dürfen sie aussprechen,
+sondern auch im Namen ihrer Kinder einwilligen. So landen Fotos auf Websites
+und in sozialen Netzwerken, von denen die Kinder vielleicht gar nichts wissen.
+
+Doch Kindern steht ebenso wie Erwachsenen ein Recht auf digitale Mündigkeit und
+informationelle Selbstbestimmung zu: Eltern sollten ihre Kinder **schützen**,
+aber nicht **an ihrer Stelle Einwilligungen erteilen**. Lehrkräfte sollten
+auch **Schüler\*innen selber nach ihrer Meinung fragen**, selbst, wenn das
+rechtlich nicht notwendig ist. Und sie sollten ihre Entscheidungen respektieren,
+wenn es um ihre persönlichen Daten geht!
+
+{% teckids_related() %}
+Bei Teckids leben wir vor, dass Kinder, Jugendliche und Erwachsene die gleichen
+Rechte haben, über ihre Daten und die Verwendung ihrer Geräte zu entscheiden.
+
+Beispielsweise achten wir bewusst darauf, bei unseren Treffen und Veranstaltungen
+allen Beteiligten eien fundierte Entscheidung darüber zu ermöglichen, ob sie auf
+Fotos im Internet zu sehen sein möchten oder nicht.
+{% end %}
diff --git a/content/projekte/indiedact/verstehbarkeit/index.en.md b/content/projekte/indiedact/verstehbarkeit/index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..33174ae0ac9c229c195b05e2fc7586fcced2dec4
--- /dev/null
+++ b/content/projekte/indiedact/verstehbarkeit/index.en.md
@@ -0,0 +1,102 @@
++++
+title = "Comprehending over consuming"
+
+[taxonomies]
+zielgruppe = ["Eltern"]
+
+#[[extra.further.verstehbarkeit]]
+#image = ""
+#alt = ""
+#title = ""
+#link = ""
+#description = ""
+
+[extra.platforms]
+wiki = ""
+forum = "hacknfun/tinkering/9"
+chat = "#teckids/meßdorfer-feld:matrix.teckids.org"
++++
+
+Einfach mal schnell ein Computerspiel spielen? Das war bis in die
+1990er Jahre gar nicht so selbstverständlich. Bevor es Spiele auf
+[Datasetten](https://de.wikipedia.org/wiki/Datasette) oder
+[Disketten](https://de.wikipedia.org/wiki/Diskette) zu kaufen gab,
+musste man vor dem Spielen noch etwas anderes erledigen:
+Der Code des Spiels musste erst aus der aktuellen Ausgabe der
+Computerzeitschrift abgetippt werden. Ach ja – aber worein
+eigentlich eintippen? Auch für den Computer, auf dem man das
+Spiel spielen wollte, gab es zwei Möglichkeiten: sehr viel Geld
+ausgeben oder selber bauen.
+
+Das ist heute unvorstellbar, und doch hatte es etwas Gutes.
+
+## Der große Süßigkeitenladen
+
+Wie man Apps und Spiele installiert, weiß heute jede\*r. Einfach
+im App Store anklicken, einen Moment warten, fertig. Und das
+passende Gerät dazu liegt passend auf dem Geburtstagstisch.
+
+Schlimm ist das gar nicht – vielmehr ist es sehr erfreulich,
+dass der Zugang zu digitalen Medien für immer mehr Menschen
+möglich wird (obwohl wir das tatsächlich nicht als selbstverständlich
+betrachten sollten). Doch das einfache, jederzeit verfügbare
+Angebot von Hard- und Software trägt eben auch dazu bei, dass
+es doch als selbstverständlich hingenommen wird und immer
+weniger hinterfragt wird.
+
+
+## Der Weg einer Chatnachricht
+
+Wass passiert eigentlich, wenn wir jemandem eine Nachricht über
+eine Messenger-App schreiben? Und ist das sicher? Wer kann mitlesen,
+und was macht der Anbieter mit den Daten?
+
+**Medienpädagog\*innen** warnen oft davor, soziale Netzwerke und
+Messenger zu benutzen, und dass viele Unternehmen, wie Meta (Facebook)
+oder Google, ein großes Interesse an den Daten ihrer Nutzer\*innen
+haben, ist auch den meisten bekannt. **Anbieter** hingegen betonen
+regelmäßig, dass ihre Apps sicher seien, zum Beispiel weil sie
+sichere Verschlüsselungen verwenden.
+
+Statt den einen oder den anderen nur zu glauben, kann man auch versuchen,
+die zugrundeliegende Technik zu verstehen und zu hinterfragen, wie
+das App oder der Dienst denn funktioniert. Was ist eine Text- oder
+Sprachnachricht technisch, wann und wie wird sie verschlüsselt, und
+welchen Weg nimmt sie durch Server im Internet, bis sie am Ziel
+ankommt? Mit diesem Wissen kann man dann selber urteilen und entscheiden.
+
+
+## Frei, offen und verstehbar
+
+Leider finden es viele Hersteller gar nicht so gut, wenn man die
+Funktionsweise ihrer Geräte und Programme zu genau duchschauen kann.
+Wie ein Gerät aufgebaut ist, wie man es repariert oder was genau
+eine App tut, welche Daten sie überträgt, usw. soll geheim bleiben.
+Durch Nutzungsbedingungen, Lizenzen und Gesetze ist es verboten,
+dagegen zu verstoßen.
+
+Anders ist das bei freier und offener Hard- und Software. Das sind
+Geräte oder Programme, bei denen alle das Recht haben, ihre Funktionsweise
+zu verstehen, sie zu verändern, selber nachzubauen, und vieles mehr.
+Deshalb ist freie Software, oft auch "Open Source" genannt, perfekt
+geeignet, um zu lernen, wie Technik funktioniert, statt sie einfach
+nur so, wie sie ist, zu benutzen.
+
+{% teckids_related() %}
+### Tinkering und Workshops
+
+Kinder, Jugendliche und Erwachsene treffen sich bei uns, offline oder
+online, und beschäftigen sich mit technsichen Themen. Dabei werden
+eigene Programme und Spiele programmiert, Hardware auseinandergenommen
+oder selber gebaut oder herausgefunden, wie existierende Technologien
+funktionieren.
+
+### Verstehbare Hard- und Software für Alle
+
+Freie Software und offene Hardware sind unabdingbare Voraussetzungen,
+damit man Technik wirklich hinterfragen und verstehen kann. Deshalb zeigen
+wir, wie man auf seinem Laptop doer Smartphone freie Software benutzt,
+nutzen selber bei unseren Workshops offene Hard- und Software und
+arbeiten mit Schulen und Hackspaces zusammen, um jungen Menschen auch
+dort verstehbare Technik anbieten zu können.
+{% end %}
diff --git a/content/projekte/schul-frei/_index.en.md b/content/projekte/schul-frei/_index.en.md
new file mode 100644
index 0000000000000000000000000000000000000000..1008af5def308c976438ff6e82d45b70508f309f
--- /dev/null
+++ b/content/projekte/schul-frei/_index.en.md
@@ -0,0 +1,33 @@
++++
+title = "schul-frei"
+template = "project.html"
+
+weight = 20
+
+[extra]
+logo = "artwork/logo-schul-frei.svg"
+project_slug = "schul-frei"
+list_icon = "images/chalks.png"
+title_icon = "images/school-bag.png"
+theses = [
+    "Software in schools ahs to be open and comprehensible",
+    "Schools and parents must respect and strengthen the rights of students and staff",
+    "Thanks to free software, sustainable projects can be used for learning in class",
+]
+
+[[extra.products]]
+name = "AlekSIS"
+link = "https://aleksis.org/en/"
+
+[[extra.products]]
+name = "EduGit"
+link = "https://edugit.org"
++++
+
+The schul-frei project is a curatorium for free software in education.
+
+The software developers, teachers, schools, students, and IT companies engaged
+in the project jointly offer a huge and comprehensive collection of software
+solutions for children and for schools – as a community, and as a service for
+schooles and decision makers. Furthermore, the project supports young contributors
+while finding their way into the world of free software.
diff --git a/templates/404.html b/templates/404.html
index 5e5f90f7704f3f17c3dbbc42cf228c99d6ae5003..3766236c08036b74119dcbc5dcc8b15608917b0b 100644
--- a/templates/404.html
+++ b/templates/404.html
@@ -5,11 +5,11 @@
     <div class="container">
       <div class="message is-danger">
         <div class="message-header">
-          <p>Seite nicht gefunden (404)</p>
-          <a class="button delete" href="{{ get_url(path="@/_index.md") }}"></a>
+          <p>{{ trans(key="not_found_header", lang=lang) }}</p>
+          <a class="button delete" href="{{ get_url(path="@/_index.md", lang=lang) }}"></a>
         </div>
         <div class="message-body">
-          Die gesuchte Seite wurde leider nicht gefunden.
+          {{ trans(key="not_found_body", lang=lang) }}
         </div>
       </div>
     </div>
diff --git a/templates/base.html b/templates/base.html
index bb9257eb249817cc7cee0f845c9d8159866cd7ab..dfe0d3add4cbe3aac21352e9d72b2ca219b2f028 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -12,7 +12,7 @@
 
         {% block meta %}
             <meta name="description" content="{{ thing.description | default(value=config.description) }}" />
-            <link rel="alternate" type="application/atom+xml" href="{{ get_url(path="atom.xml", trailing_slash=false) }}" />
+            <link rel="alternate" type="application/atom+xml" href="{{ get_url(path="atom.xml", trailing_slash=false, lang=lang) }}" />
         {% endblock %}
 
         {% block meta_extra %}{% endblock %}
diff --git a/templates/blog/meta_line.html b/templates/blog/meta_line.html
index 09b900d5393d5b12d0abda8791a8f3436e7da6fe..052f2efc023d3a6081f742385f48955c694a7cd6 100644
--- a/templates/blog/meta_line.html
+++ b/templates/blog/meta_line.html
@@ -1,5 +1,5 @@
 <p class="subtitle is-7 py-2">
-  <span title="Veröffentlicht am"><i class="fa-solid fa-calendar-days"></i> <time datetime="{{ post.date }}" property="schema:datePublished">{{ post.date }}</time></span> ·
-  <span title="Anzahl Wörter"><i class="fa-solid fa-ruler"></i> <span property="schema:wordCount">{{ post.word_count }} Wörter</span></span> ·
-  <span title="Lesezeit"><i class="fa-solid fa-hourglass-start"></i> {{ post.reading_time }} min</span>
+  <span title="{{ trans(key="published_on", lang=lang) }}"><i class="fa-solid fa-calendar-days"></i> <time datetime="{{ post.date }}" property="schema:datePublished">{{ post.date }}</time></span> ·
+  <span title="{{ trans(key="word_count", lang=lang) }}"><i class="fa-solid fa-ruler"></i> <span property="schema:wordCount">{{ post.word_count }} {{ trans(key="words", lang=lang) }}</span></span> ·
+  <span title="{{ trans(key="reading_time", lang=lang) }}"><i class="fa-solid fa-hourglass-start"></i> {{ post.reading_time }} {{ trans(key="minutes_short", lang=lang) }}</span>
 </p>
diff --git a/templates/blog/overview.html b/templates/blog/overview.html
index 9598470f5c1bb4ad7182e61095355426c9990350..fc8ff63dcb2ba965398b06c32bfc526917014a29 100644
--- a/templates/blog/overview.html
+++ b/templates/blog/overview.html
@@ -3,17 +3,17 @@
 {% block rdfa_type %}schema:Blog{% endblock %}
 
 {% block main %}
-  {% set title = "Teckids-Blog – Seite " ~ paginator.current_index ~ " von " ~ paginator.number_pagers %}
+  {% set title = trans(key="teckids_blog_page", lang=lang) ~ paginator.current_index ~ " " ~ trans(key="pages_of", lang=lang) ~ " " ~ paginator.number_pagers %}
   {% set posts = paginator.pages %}
   {% set count = paginator.paginate_by %}
   {% include "blog/section.html" %}
 
   {% if paginator.number_pagers > 1 %}
     <nav class="pagination is-centered section" role="navigation" aria-label="pagination">
-      <a href="{{ paginator.previous }}" class="pagination-previous">Vorherige</a>
-      <a href="{{ paginator.next }}" class="pagination-next">Nächste</a>
+      <a href="{{ paginator.previous }}" class="pagination-previous">{{ trans(key="previous_page", lang=lang) }}</a>
+      <a href="{{ paginator.next }}" class="pagination-next">{{ trans(key="next_page", lang=lang) }}</a>
       <ul class="pagination-list">
-        <li><a href="{{ paginator.first }}" class="pagination-link {% if paginator.current_index == 1 %}is-current{% endif %}" aria-label="Seite 1">1</a></li>
+        <li><a href="{{ paginator.first }}" class="pagination-link {% if paginator.current_index == 1 %}is-current{% endif %}" aria-label="{{ trans(key="page", lang=lang) }} 1">1</a></li>
         {% set range_start = paginator.current_index - 3 %}
         {% if range_start < 2 %}{% set range_start = 2 %}{% endif %}
         {% set range_end = paginator.current_index + 3 %}
@@ -22,12 +22,12 @@
           <li><span class="pagination-ellipsis">&hellip;</span></li>
         {% endif %}
         {% for pn in range(start=range_start, end=range_end + 1) %}
-          <li><a href="{{ paginator.base_url ~ pn ~ "/" }}" class="pagination-link {% if pn == paginator.current_index %}is-current{% endif %}" aria-label="Seite {{ pn }}">{{ pn }}</a></li>
+          <li><a href="{{ paginator.base_url ~ pn ~ "/" }}" class="pagination-link {% if pn == paginator.current_index %}is-current{% endif %}" aria-label="{{ trans(key="page", lang=lang) }}" {{ pn }}">{{ pn }}</a></li>
         {% endfor %}
         {% if range_end < paginator.number_pagers - 1 %}
           <li><span class="pagination-ellipsis">&hellip;</span></li>
         {% endif %}
-        <li><a href="{{ paginator.last }}" class="pagination-link {% if paginator.current_index == paginator.number_pagers %}is-current{% endif %}" aria-label="Seite {{ paginator.number_pagers }}">{{ paginator.number_pagers }}</a></li>
+	<li><a href="{{ paginator.last }}" class="pagination-link {% if paginator.current_index == paginator.number_pagers %}is-current{% endif %}" aria-label="{{ trans(key="page", lang=lang) }}" {{ paginator.number_pagers }}">{{ paginator.number_pagers }}</a></li>
       </ul>
     </nav>
   {% endif %}
diff --git a/templates/blog/post.html b/templates/blog/post.html
index 3d78ea53bd6c72968b9bec8c22ac9febf3628f9a..6b08e72fe67de83dd0869c1318c23393bb055d00 100644
--- a/templates/blog/post.html
+++ b/templates/blog/post.html
@@ -10,7 +10,7 @@
 {% endblock %}
 
 {% block content %}
-  {% set blog_section = get_section(path="blog/_index.md") %}
+  {% set blog_section = get_section(path="blog/_index.md", lang=lang) %}
   {% set post = page -%}
   <div class="columns mt-4">
     <meta property="schema:isPartOf" href="{{ blog_section.permalink }}" />
@@ -45,10 +45,10 @@
         </div>
       </div>
       <nav class="panel is-light mt-6">
-        <p class="panel-heading">Weitere Posts dazu</p>
+        <p class="panel-heading">{{ trans(key="further_related_posts", lang=lang) }}</p>
         {% for kind, terms in page.taxonomies %}
           {% for term in terms %}
-            {% set taxonomy = get_taxonomy_term(kind=kind, term=term) %}
+            {% set taxonomy = get_taxonomy_term(kind=kind, term=term, lang=lang) %}
             {% set posts = taxonomy.pages | filter(attribute="date") %}
             {% if posts %}
               <p class="panel-block subtitle is-7">{{ kind | title }}: {{ term }}</p>
diff --git a/templates/blog/section.html b/templates/blog/section.html
index 0342704c3ea5b99d41b9d8587bd0f281523d25a2..5b81a761b7af0f1940fbaba95a36472af4b6b67e 100644
--- a/templates/blog/section.html
+++ b/templates/blog/section.html
@@ -1,11 +1,11 @@
-{% set main_blog_section = get_section(path="blog/_index.md") %}
+{% set main_blog_section = get_section(path="blog/_index.md", lang=lang) %}
 {% if not posts is defined %}
   {% set posts = main_blog_section.pages %}
 {% endif %}
 <section class="section" resource="{{ main_blog_section.permalink }}" typeof="schema:Blog">
   <meta property="schema:publisher" href="https://teckids.org/" />
   <div class="container">
-    <h2 class="title is-2">{{ title | default(value="Aus dem Teckids-Blog") }}</h2>
+    <h2 class="title is-2">{{ title | default(value=trans(key="teckids_blog_posts", lang=lang)) }}</h2>
     <div class="columns is-multiline is-same-height mt-4">
       {% for post in posts | slice(end=count|default(value=6)) %}
         <div class="column is-one-third">
diff --git a/templates/footer.html b/templates/footer.html
index 78d3fd8a25cea9bf09241bde23a85b6aa241f40d..4accca90a5fa046b1d2a34c8bb99883a43015311 100644
--- a/templates/footer.html
+++ b/templates/footer.html
@@ -11,12 +11,12 @@
       <span property="schema:addressLocality">{{config.extra.footer.address.city|safe}}</span>
     </address>
     <aside class="mt-5">
-      <p class="title is-6">Spendenkonto</p>
+      <p class="title is-6">{{ trans(key="donation_account", lang=lang) }}</p>
       <p>{{config.extra.footer.bank|safe}}</p>
     </aside>
   </div>
   <div class="column is-half">
-    <p class="title is-5">Unterstützer und Partner*innen</p>
+    <p class="title is-5">{{ trans(key="supporters_partners", lang=lang) }}</p>
     <div class="columns is-centered is-vcentered is-multiline">
       {% for sponsor in config.extra.footer.sponsor %}
         <div class="column is-one-quarter" property="schema:sponsor" typeof="schema:Organization">
@@ -31,7 +31,7 @@
     </div>
   </div>
   <div class="column is-onw-fourth">
-    <p class="title is-5">Weiteres</p>
+    <p class="title is-5">{{ trans(key="further", lang=lang) }}</p>
     <aside class="menu">
       {% for menu in config.extra.footer.menu %}
         <p class="menu-label">{{menu.label}}</p>
@@ -42,7 +42,7 @@
         </ul>
       {% endfor %}
     </aside>
-    <p class="title is-5 mt-5">Kanäle und Netzwerke</p>
+    <p class="title is-5 mt-5">{{ trans(key="channels_networks", lang=lang) }}</p>
     <aside class="columns is-centered is-vcentered is-multiline is-mobile">
       {% for social in config.extra.footer.social %}
         <div class="column is-one-third">
@@ -55,7 +55,7 @@
   </div>
 </div>
 <aside class="section has-text-centered is-size-7">
-  © {{ config.author }} · Lizenziert unter <a property="schema:license" href="{{ config.extra.footer.license.url }}">{{ config.extra.footer.license.name }}</a><br/>
-  Erstellt mit <a href="https://www.getzola.org/">Zola</a> und <a href="https://bulma.io/">Bulma</a><br/>
-  {% if thing.path %}Diese Seite kann <a href="{{ config.extra.repo.web.tree }}/{{ thing.relative_path }}">auf EduGit editiert werden</a> oder <a href="{{ config.extra.repo.web.issues }}">eine Verbesserung vorgeschlagen werden</a>.<br/>{% endif %}
+  © {{ config.author }} · {{ trans(key="licensed_under", lang=lang) }} <a property="schema:license" href="{{ config.extra.footer.license.url }}">{{ config.extra.footer.license.name }}</a><br/>
+  {{ trans(key="created_using", lang=lang) }} <a href="https://www.getzola.org/">Zola</a> {{ trans(key="and", lang=lang) }} <a href="https://bulma.io/">Bulma</a><br/>
+  {% if thing.path %}{{ trans(key="this_page_can", lang=lang) }} <a href="{{ config.extra.repo.web.tree }}/{{ thing.relative_path }}">{{ trans(key="edited_on_edugit", lang=lang) }}</a> {{ trans(key="or", lang=lang) }} <a href="{{ config.extra.repo.web.issues }}">{{ trans(key="improvement_suggestion", lang=lang) }}</a>.<br/>{% endif %}
 </aside>
diff --git a/templates/frontpage/blog.html b/templates/frontpage/blog.html
index 5eec390146804659fd5766826e6d99380388d0c2..a870a54f775e2d5a73c1822d67961ebd27b87ddf 100644
--- a/templates/frontpage/blog.html
+++ b/templates/frontpage/blog.html
@@ -1,10 +1,10 @@
-{% set blog_section = get_section(path="blog/_index.md") %}
+{% set blog_section = get_section(path="blog/_index.md", lang=lang) %}
 {% set count = 3 %}
 {% include "blog/section.html" %}
 <nav class="section pt-0">
   <div class="container">
-    <a href="{{ get_url(path="@/blog/_index.md") }}" class="button is-large is-fullwidth is-link is-rounded">
-      Mehr aus dem Teckids-Blog
+    <a href="{{ get_url(path="@/blog/_index.md", lang=lang) }}" class="button is-large is-fullwidth is-link is-rounded">
+      {{ trans(key="more_teckids_blog_posts", lang=lang) }}
     </a>
   </div>
 </nav>
diff --git a/templates/frontpage/claim.html b/templates/frontpage/claim.html
index 8969298cb43080407f595af1060c19eeded50fff..2f66b0664efb7add0dabfe8e630c312d676d335f 100644
--- a/templates/frontpage/claim.html
+++ b/templates/frontpage/claim.html
@@ -5,6 +5,16 @@
 >
   <div class="hero-body">
     <div class="container">
+      {% if section.extra.hero.message %}
+       <aside class="message is-{{ section.extra.hero.message.class }} section">
+        <div class="message-header">
+         <p>{{ section.extra.hero.message.title }}</p>
+        </div>
+        <div class="message-body">
+         {{ section.extra.hero.message.content }}
+        </div>
+       </aside>
+      {% endif %}
       <p class="title is-1 has-text-centered" property="schema:slogan">{{ config.description }}</p>
       <div class="columns is-same-height mt-4">
         {% for claim in section.extra.claims %}
@@ -23,7 +33,7 @@
               </div>
               <footer class="card-footer">
                 {% for link in claim.links %}
-                  <a href="{{ get_url(path=link.url) }}" class="card-footer-item">
+                  <a href="{{ get_url(path=link.url, lang=lang) }}" class="card-footer-item">
                     <span class="icon-text">
                       <span>{{ link.title }}</span>
                       <span class="icon"><i class="fa-solid fa-arrow-right"></i></span>
diff --git a/templates/frontpage/events.html b/templates/frontpage/events.html
index cb4f72070a2efb74f15144f7d5bcb04f76bf4002..cec012d950e872a8aa82d1877efcfdc9ad4b904d 100644
--- a/templates/frontpage/events.html
+++ b/templates/frontpage/events.html
@@ -1,4 +1,4 @@
 {# FIXME generate dynamically #}
-{% set title = "Nächste Veranstaltungen" %}
+{% set title = trans(key="upcoming_events", lang=lang) %}
 {% set slug = "hacknsun-2025-bn" %}
 {% include "shortcodes/event_section.html" %}
diff --git a/templates/frontpage/projects.html b/templates/frontpage/projects.html
index 50ac2f20d78e1ae8ab97bbded26cc7b9087008f0..22caedf420ed55073209d66986bf614acd4c691d 100644
--- a/templates/frontpage/projects.html
+++ b/templates/frontpage/projects.html
@@ -1,8 +1,8 @@
-{% set projects_section = get_section(path="projekte/_index.md") %}
+{% set projects_section = get_section(path="projekte/_index.md", lang=lang) %}
 
 <section class="section" resource="https://teckids.org/">
   <div class="container">
-    <h2 class="title is-2">Unsere Projekte</h2>
+    <h2 class="title is-2">{{ trans(key="our_projects", lang=lang) }}</h2>
     <div class="columns is-same-height mt-4">
       {% for project_section_path in projects_section.subsections %}
         {% set project_section = get_section(path=project_section_path) %}
diff --git a/templates/menu.html b/templates/menu.html
index f93974c8ec2aa573047f9b206630c2af963f7235..a17816ab376338e6f5db13fbb15930a5e2463b69 100644
--- a/templates/menu.html
+++ b/templates/menu.html
@@ -1,7 +1,7 @@
 <nav class="navbar is-fixed-top is-boxed" role="navigation" aria-label="main navigation" id="main-navbar">
     <input type="checkbox" id="burger-toggle" role="button" class="navbar-toggle" aria-label="menu" aria-expanded="false" data-target="main-menu" />
     <div class="navbar-brand">
-        <a href="{{ get_url(path="@/_index.md") }}" class="navbar-item">
+        <a href="{{ get_url(path="@/_index.md", lang=lang) }}" class="navbar-item">
             <figure class="image" id="navbar-logo">
                 <img src="{{ get_url(path="artwork/logo-teckids-orange.svg") }}" alt="Logo Teckids" />
             </figure>
@@ -18,28 +18,28 @@
     <div class="navbar-menu" id="main-menu">
         <div class="navbar-start">
             <div class="navbar-item has-dropdown is-hoverable is-mega">
-                <a href="#" class="navbar-item">Projekte</a>
+                <a href="#" class="navbar-item">{{ trans(key="projects", lang=lang) }}</a>
                 <div class="navbar-dropdown is-boxed">
                     {% include "menu/projects.html" %}
                 </div>
             </div>
 
             <div class="navbar-item has-dropdown is-hoverable is-mega">
-                <a href="#" class="navbar-item">Informationen für…</a>
+                <a href="#" class="navbar-item">{{ trans(key="information_for", lang=lang) }}</a>
                 <div class="navbar-dropdown is-boxed">
                     {% include "menu/infos.html" %}
                 </div>
             </div>
 
             <div class="navbar-item has-dropdown is-hoverable">
-                <a href="#" class="navbar-item">Teckids-Gemeinschaft</a>
+                <a href="#" class="navbar-item">{{ trans(key="teckids_community", lang=lang) }}</a>
                 <div class="navbar-dropdown is-boxed">
                     {% include "menu/gemeinschaft.html" %}
                 </div>
             </div>
 
             {% for item in config.extra.main_menu_item %}
-                <a href="{{ get_url(path=item.path) }}" class="navbar-item is-hoverable">{{ item.title }}</a>
+                <a href="{{ get_url(path=item.path, lang=lang) }}" class="navbar-item is-hoverable">{{ item.title }}</a>
             {% endfor %}
         </div>
     </div>
diff --git a/templates/menu/gemeinschaft.html b/templates/menu/gemeinschaft.html
index 0ccbabfd797144dd95f689cb1f9f7ea4bd0ccdb6..9dc0e540c2fa85365532c7dfb5532cfd14b1e478 100644
--- a/templates/menu/gemeinschaft.html
+++ b/templates/menu/gemeinschaft.html
@@ -1,9 +1,9 @@
-{% set gemeinschaft_section = get_section(path="gemeinschaft/_index.md") %}
+{% set gemeinschaft_section = get_section(path="gemeinschaft/_index.md", lang=lang) %}
 
 <div class="container is-fluid">
   <div class="columns">
     {% for gemeinschaft_section_path in gemeinschaft_section.subsections %}
-      {% set gemeinschaft_subsection = get_section(path=gemeinschaft_section_path) %}
+      {% set gemeinschaft_subsection = get_section(path=gemeinschaft_section_path, lang=lang) %}
       <section class="column">
         <div class="card p-0 m-0 is-shadowless is-radiusless is-overlay is-flex is-flex-direction-column is-fullheight is-justify-content-space-between">
           <div class="card-content p-0 m-0">
diff --git a/templates/menu/infos.html b/templates/menu/infos.html
index 0e634d386a60f7bc483d2a671a4e34c915665329..c85f01afcce5769d5f260d4cc8812cd5961b2b71 100644
--- a/templates/menu/infos.html
+++ b/templates/menu/infos.html
@@ -1,4 +1,4 @@
-{% set zielgruppen = get_taxonomy(kind = "zielgruppe") %}
+{% set zielgruppen = get_taxonomy(kind = "zielgruppe", lang=lang) %}
 
 <div class="container is-fluid">
   <div class="columns">
diff --git a/templates/menu/projects.html b/templates/menu/projects.html
index dbd5d91b043084c816555b4752d0b7ea05932a0c..7b775b8ea5f7dc93bf1739e4dcb7cbf7d41e8a6a 100644
--- a/templates/menu/projects.html
+++ b/templates/menu/projects.html
@@ -3,7 +3,7 @@
 <div class="container is-fluid">
   <div class="columns">
     {% for project_section_path in projects_section.subsections %}
-      {% set project_section = get_section(path=project_section_path) %}
+      {% set project_section = get_section(path=project_section_path, lang=lang) %}
       <section class="column menu-project-section" id="menu-project-section-{{ project_section.components[1] }}">
         <div class="card p-0 m-0 is-shadowless is-radiusless is-overlay is-flex is-flex-direction-column is-fullheight is-justify-content-space-between">
           <div class="card-content p-0 m-0">
diff --git a/templates/pages/content.html b/templates/pages/content.html
index 19059e6ecc822cc4532f3a586e6268092912ed9d..372b52a37dda36292f471aef5f34bc0e2c08a7f9 100644
--- a/templates/pages/content.html
+++ b/templates/pages/content.html
@@ -10,19 +10,19 @@
             {{ page.content | safe }}
           </div>
         {% else %}
-          {% set title = "Diese Seite fehlt leider noch" -%}
-          {% set body = "Da der Aufbau unserer neuen Website sehr aufwendig ist, sind die Informationen auf dieser Seite leider noch nicht vollständig." -%}
+          {% set title = trans(key="page_missing", lang=lang) -%}
+          {% set body = trans(key="page_missing_explanation", lang=lang) -%}
           {% include "shortcodes/message.html" %}
         {% endif %}
       {% endblock content %}
     </div>
   </section>
-  {% set blog_taxonomy = get_taxonomy_term(kind="aspekt", term=page.title, include_pages=true, required=false) %}
+  {% set blog_taxonomy = get_taxonomy_term(kind="aspekt", term=page.title, include_pages=true, required=false, lang=lang) %}
   {% if blog_taxonomy and blog_taxonomy.pages %}
     {% set posts = blog_taxonomy.pages | filter(attribute="date") %}
     {% if posts %}
       <aside>
-        {% set title="Verwandte Posts aus dem Teckids-Blog" %}
+        {% set title=trans(key="related_blog_posts", lang=lang) %}
         {% include "blog/section.html" %}
       </aside>
     {% endif %}
diff --git a/templates/shortcodes/button.html b/templates/shortcodes/button.html
index 5af33cb4f863b301c06c6db7016a19948a921032..55ad650ed3f2b4c58c95ba71a5b682519c0d8070 100644
--- a/templates/shortcodes/button.html
+++ b/templates/shortcodes/button.html
@@ -1,5 +1,5 @@
 {% if url is starting_with("@/") -%}
-  {% set url = get_url(path=url) -%}
+  {% set url = get_url(path=url, lang=lang) -%}
 {% endif %}
 <a class="button {{ class | default(value="") }}" href="{{ url }}">
   {{ body }}
diff --git a/templates/shortcodes/further.html b/templates/shortcodes/further.html
index 7f8b0ace18e0391113b2051adbf4de55f874674e..5c9a92e53bda5a9a0f5ff6b7a24e429fc2339549 100644
--- a/templates/shortcodes/further.html
+++ b/templates/shortcodes/further.html
@@ -5,7 +5,7 @@
       {% if further.link is matching("^[^:/]+://") -%}
         {% set link = further.link -%}
       {% else -%}
-        {% set link = get_url(path=further.link) -%}
+        {% set link = get_url(path=further.link, lang=lang) -%}
       {% endif -%}
       <div class="column is-one-third">
         <div class="card">
diff --git a/templates/shortcodes/hero_section.html b/templates/shortcodes/hero_section.html
index 2da93b043efb1bd6e5b868ba2a1d603deed5b3a5..f5008c847f17457760d8e84f33d9fc9e783c3dc8 100644
--- a/templates/shortcodes/hero_section.html
+++ b/templates/shortcodes/hero_section.html
@@ -9,7 +9,7 @@
         <h1 class="title is-1 mb-5">
           {% if page.extra.title.image -%}
             <figure>
-              <img src="{{ get_url(path=page.extra.title.image) }}" alt="{{ title | default(value=page.title) | safe }}" />
+              <img src="{{ get_url(path=page.extra.title.image, lang=lang) }}" alt="{{ title | default(value=page.title) | safe }}" />
             </figure>
           {% else -%}
             {{ title | default(value=page.title) | safe }}
diff --git a/templates/shortcodes/message.html b/templates/shortcodes/message.html
index d0153fdcfa2168b5ecae0b0ed9d1bd42937c3078..2bce8b2f2e9ac265280c24f875611fd025e36436 100644
--- a/templates/shortcodes/message.html
+++ b/templates/shortcodes/message.html
@@ -1,7 +1,7 @@
 <div class="message is-{{ color | default(value="info") }}">
   <div class="message-header">
     <p>{{ title }}</p>
-    <a class="button delete" href="{{ get_url(path="@/_index.md") }}"></a>
+    <a class="button delete" href="{{ get_url(path="@/_index.md", lang=lang) }}"></a>
   </div>
   <div class="message-body">
     {{ body }}
diff --git a/templates/shortcodes/teckids_contact.html b/templates/shortcodes/teckids_contact.html
index 482730ddd13ad98f38d10751d81c8074660d2b9c..2cc6e44e19356fa8db7db91b8d3ad40a22af5ed4 100644
--- a/templates/shortcodes/teckids_contact.html
+++ b/templates/shortcodes/teckids_contact.html
@@ -9,13 +9,13 @@
         <a class="button is-primary is-fullwidth" href="mailto:{{ mail|default(value="verein@teckids.org") }}">
           <div class="icon-text">
             <span class="icon"><i class="fa-solid fa-envelope-open-text"></i></span>
-            <span>E-Mail schreiben</span>
+            <span>{{ trans(key="write_email", lang=lang) }}</span>
           </div>
         </a>
         <a class="button is-link is-fullwidth" href="tel:{{ phone|default(value="+4922892934160") }}">
           <div class="icon-text">
             <span class="icon"><i class="fa-solid fa-phone"></i></span>
-            <span>Anrufen</span>
+            <span>{{ trans(key="call_us", lang=lang) }}</span>
           </div>
         </a>
       </div>
diff --git a/templates/shortcodes/teckids_event.html b/templates/shortcodes/teckids_event.html
index c388f437a6132ea4134440602a8b5dd764974762..3a8e22fff01cd9fb57e802be02f241699a21934c 100644
--- a/templates/shortcodes/teckids_event.html
+++ b/templates/shortcodes/teckids_event.html
@@ -30,18 +30,14 @@
           </div>
           <div class="message is-success">
             <div class="message-body">
-              Uns ist wichtig, dass alle Interessierten an unserer Freizeit teilnehmen können.
-              Uns ist bewusst, dass die Kosten für viele Familien sehr hoch sind, ganz egal
-              aus welchen Gründen. Sollte der Betrag zu hoch sein, schickt uns bitte einfach
-              eine E-Mail mit eurem Wunschbetrag. Die Gründe dafür müsst ihr nicht nennen.
+              {{ trans(key="event_cost_explanation", lang=lang) }}
             </div>
           </div>
           {% if event.fully_booked %}
             <meta property="remainingAttendeeCapacity" content="0"/>
             <div class="message is-danger">
               <div class="message-body">
-                Die Veranstaltung ist ausgebucht. Für weitere Anmeldungen oder Plätze auf der
-                Warteliste können uns Interessierte per E-Mail kontaktieren.
+                {{ trans(key="event_fully_booked", lang=lang) }}
               </div>
             </div>
           {% endif %}
@@ -56,17 +52,17 @@
             <a class="button is-primary is-fullwidth is-justify-content-start"
                href="https://ticdesk.teckids.org/app/paweljong/event/{{ slug }}">
               <span class="icon"><i class="fa-regular fa-paper-plane"></i></span>
-              <span>Alle Infos und Anmeldung</span>
+              <span>{{ trans(key="event_info_registration", lang=lang) }}</span>
             </a>
             <a class="button is-link is-fullwidth is-justify-content-start" href="mailto:{{ mail|default(value="
                verein@teckids.org") }}">
               <span class="icon"><i class="fa-regular fa-envelope-open-text"></i></span>
-              <span>E-Mail schreiben</span>
+              <span>{{ trans(key="write_email", lang=lang) }}</span>
             </a>
             <a class="button is-link is-fullwidth is-justify-content-start mb-0" href="tel:{{ phone|default(value="
                +4922892934160") }}">
               <span class="icon"><i class="fa-regular fa-phone"></i></span>
-              <span>Anrufen</span>
+              <span>{{ trans(key="call_us", lang=lang) }}</span>
             </a>
           </div>
         </div>
diff --git a/templates/shortcodes/teckids_related.html b/templates/shortcodes/teckids_related.html
index 1691c8202101217d6e03976a067b3000a3e0c859..9686819a77580c76438f29be7fe709861b33f6b7 100644
--- a/templates/shortcodes/teckids_related.html
+++ b/templates/shortcodes/teckids_related.html
@@ -14,8 +14,8 @@
           </div>
           <div class="media-content">
             <a href="https://wiki.teckids.org/{{page.extra.platforms.wiki}}">
-              <p class="title is-4">Wiki</p>
-              <p class="subtitle is-6">Informationen und Handreichungen im Teckids-Wiki</p>
+              <p class="title is-4">{{ trans(key="wiki", lang=lang) }}</p>
+              <p class="subtitle is-6">{{ trans(key="wiki", lang=lang) }}</p>
             </a>
           </div>
         </div>
@@ -29,8 +29,8 @@
           </div>
           <div class="media-content">
             <a href="https://forum.teckids.org/c/{{page.extra.platforms.forum}}">
-              <p class="title is-4">Forum</p>
-              <p class="subtitle is-6">Fragen und Diskussion im Teckids-Forum</p>
+              <p class="title is-4">{{ trans(key="forum", lang=lang) }}</p>
+              <p class="subtitle is-6">{{ trans(key="forum", lang=lang) }}</p>
             </a>
           </div>
         </div>
@@ -44,8 +44,8 @@
           </div>
           <div class="media-content">
             <a href="https://matrix.to/#/{{page.extra.platforms.chat}}">
-              <p class="title is-4">Chat</p>
-              <p class="subtitle is-6">Darüber reden im Chat</p>
+              <p class="title is-4">{{ trans(key="chat", lang=lang) }}</p>
+              <p class="subtitle is-6">{{ trans(key="chat", lang=lang) }}</p>
             </a>
           </div>
         </div>
@@ -58,8 +58,8 @@
         </div>
         <div class="media-content">
           <p class="is-subtitle is-6">
-            <a href="{{ get_url(path="@/gemeinschaft/offene-gemeinschaft/plattformen.md") }}">
-              Informationen und Hilfe zu unseren Plattformen
+            <a href="{{ get_url(path="@/gemeinschaft/offene-gemeinschaft/plattformen.md", lang=lang) }}">
+              {{ trans(key="help_platforms", lang=lang) }}
             </a>
           </p>
         </div>