diff --git a/content/contributors/_index.md b/content/contributors/_index.md
index 962a64a..864f3d0 100644
--- a/content/contributors/_index.md
+++ b/content/contributors/_index.md
@@ -15,5 +15,3 @@ as:
- [Scientific Advisory Board]({{< relref "/roles/sab-member" >}})
- [Equal Opportunity Committee]({{< relref "/roles/eoc-member" >}})
- [Citizen Advisory Board]({{< relref "/roles/cab-member" >}})
-
-The following individuals are contributing to this effort.
diff --git a/i18n/de.toml b/i18n/de.toml
new file mode 100644
index 0000000..3acb629
--- /dev/null
+++ b/i18n/de.toml
@@ -0,0 +1,4 @@
+contributors = "Beitragende"
+contributors_long = "Die folgenden Personen leisten einen Beitrag zu diesem Projekt."
+past_contributors = "ehemalige Beitragende"
+past_contributors_long = "Die folgenden Personen haben früher zu diesem Projekt beigetragen."
diff --git a/i18n/en.toml b/i18n/en.toml
new file mode 100644
index 0000000..5171260
--- /dev/null
+++ b/i18n/en.toml
@@ -0,0 +1,4 @@
+contributors = "contributors"
+contributors_long = "The following individuals are contributing to this effort."
+past_contributors = "past contributors"
+past_contributors_long = "The following individuals contributed to this effort previously."
diff --git a/layouts/_default/project.html b/layouts/_default/project.html
new file mode 100644
index 0000000..33fa16e
--- /dev/null
+++ b/layouts/_default/project.html
@@ -0,0 +1,62 @@
+{{ define "main" }}
+
+ {{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }}
+ {{ partial "breadcrumbs.html" . }}
+ {{ end }}
+
+
+ {{ if .Content }}
+
+
+ {{ .Content | emojify }}
+
+
+ {{ end }}
+
+
+ {{ $cc := slice }}
+ {{ $pc := slice }}
+ {{ range .Params.current_contributors }}{{ with $.Site.GetPage . }}{{ $cc = $cc | append . }}{{ end }}{{ end }}
+ {{ range .Params.past_contributors }}{{ with $.Site.GetPage . }}{{ $pc = $pc | append . }}{{ end }}{{ end }}
+ {{ if $cc }}
+ {{ T "contributors" | title }}
+
+ {{ range $cc.ByParam "sortkey" }}
+ {{ partial "article-link.html" . }}
+ {{ end }}
+ {{ end }}
+ {{ if $pc }}
+ {{ T "past_contributors" | title }}
+
+ {{ range $pc.ByParam "sortkey" }}
+ {{ partial "article-link.html" . }}
+ {{ end }}
+ {{ end }}
+
+
+
+ {{ $taxPages := where .Pages "Section" "ne" "contributors" }}
+ {{ if $taxPages }}
+
+ {{ $groupedPages := $taxPages.GroupBy "Type" }}
+ {{ range (.Paginate $groupedPages).PageGroups }}
+
+ {{ .Key | title }}
+
+
+
+ {{ range .Pages.ByParam "sortkey" }}
+ {{ partial "article-link.html" . }}
+ {{ end }}
+
+ {{ end }}
+
+ {{ else }}
+
+
+ {{ i18n "list.no_articles" | emojify }}
+
+
+ {{ end }}
+
+{{ end }}
diff --git a/layouts/contributors/taxonomy.html b/layouts/contributors/taxonomy.html
new file mode 100644
index 0000000..4b5a340
--- /dev/null
+++ b/layouts/contributors/taxonomy.html
@@ -0,0 +1,72 @@
+{{ define "main" }}
+
+ {{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }}
+ {{ partial "breadcrumbs.html" . }}
+ {{ end }}
+
+
+ {{ if .Content }}
+
+
+ {{ .Content | emojify }}
+
+
+ {{ end }}
+ {{ $showInactive := false }}
+
+
+ {{ T "contributors_long" }}
+
+
+
+ {{ range .Data.Terms }}
+ {{ if (and (isset .Page.Params "active") (not .Page.Params.active)) }}
+ {{/* explicit active=false -> skip & show later */}}
+ {{ $showInactive = true }}
+ {{ else }}
+
+
+ {{ .Page.Title }}
+ {{ if $.Site.Params.taxonomy.showTermCount | default true }}
+ ·
+
+ {{ .Count }}
+
+ {{ end }}
+
+
+ {{ end }}
+ {{ end }}
+
+
+ {{ if $showInactive }}
+
+
+ {{ T "past_contributors_long" }}
+
+
+
+ {{ range .Data.Terms }}
+ {{ if (and (isset .Page.Params "active") (not .Page.Params.active)) }}
+
+
+ {{ .Page.Title }}
+ {{ if $.Site.Params.taxonomy.showTermCount | default true }}
+ ·
+
+ {{ .Count }}
+
+ {{ end }}
+
+
+ {{ end }}
+ {{ end }}
+
+ {{ end }}
+{{ end }}