diff --git a/metager/app/Localization.php b/metager/app/Localization.php
index f1a3e08dfd7139d9b22987a994a147710873b60e..ba8e306f816c020203d735de0580f07bcf5bc45a 100644
--- a/metager/app/Localization.php
+++ b/metager/app/Localization.php
@@ -70,4 +70,28 @@ class Localization
         }
         return $current_region;
     }
+
+    /**
+     * Returns the supported Locales grouped by language and sorted by native name within the group
+     */
+    public static function getLanguageSelectorLocales()
+    {
+        $locales = [];
+
+        foreach (LaravelLocalization::getSupportedLocales() as $locale => $locale_details) {
+            if (\preg_match("/^([a-zA-Z]+)-/", $locale, $matches)) {
+                $locales[$matches[1]][$locale] = $locale_details["native"];
+            }
+        }
+
+        // Sort languages
+        \ksort($locales);
+
+        // Sort locales in the languages
+        foreach ($locales as $language => &$tmp_locales) {
+            ksort($tmp_locales);
+        }
+
+        return $locales;
+    }
 }
diff --git a/metager/config/laravellocalization.php b/metager/config/laravellocalization.php
index ee42f932a447f7aea7c9527164191e2300373002..bdab54ba764659396acc54dcfeb0c4aa4bc7c666 100644
--- a/metager/config/laravellocalization.php
+++ b/metager/config/laravellocalization.php
@@ -44,11 +44,11 @@ return [
         //'guz'         => ['name' => 'Ekegusii',               'script' => 'Latn', 'native' => 'Ekegusii', 'regional' => ''],
         //'en'          => ['name' => 'English',                'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'],
         //'en-AU'       => ['name' => 'Australian English',     'script' => 'Latn', 'native' => 'Australian English', 'regional' => 'en_AU'],
-        'en-UK'       => ['name' => 'English (UK)',        'script' => 'Latn', 'native' => 'English (UK)', 'regional' => 'en_UK'],
+        'en-UK'       => ['name' => 'English (UK)',        'script' => 'Latn', 'native' => 'English (United Kingdom)', 'regional' => 'en_UK'],
         //'en-CA'       => ['name' => 'Canadian English',       'script' => 'Latn', 'native' => 'Canadian English', 'regional' => 'en_CA'],
-        'en-US'       => ['name' => 'English (US)',           'script' => 'Latn', 'native' => 'English (US)', 'regional' => 'en_US'],
-        'en-IE'       => ['name' => 'English (Ireland)',           'script' => 'Latn', 'native' => 'English (IE)', 'regional' => 'en_IE'],
-        'es-ES'          => ['name' => 'Spanish (Spain)',                'script' => 'Latn', 'native' => 'Español (ES)', 'regional' => 'es_ES'],
+        'en-US'       => ['name' => 'English (US)',           'script' => 'Latn', 'native' => 'English (USA)', 'regional' => 'en_US'],
+        'en-IE'       => ['name' => 'English (Ireland)',           'script' => 'Latn', 'native' => 'English (Ireland)', 'regional' => 'en_IE'],
+        'es-ES'          => ['name' => 'Spanish (Spain)',                'script' => 'Latn', 'native' => 'Español (España)', 'regional' => 'es_ES'],
         //'eo'          => ['name' => 'Esperanto',              'script' => 'Latn', 'native' => 'esperanto', 'regional' => ''],
         //'eu'          => ['name' => 'Basque',                 'script' => 'Latn', 'native' => 'euskara', 'regional' => 'eu_ES'],
         //'ewo'         => ['name' => 'Ewondo',                 'script' => 'Latn', 'native' => 'ewondo', 'regional' => ''],
diff --git a/metager/lang/de/lang-selector.php b/metager/lang/de/lang-selector.php
new file mode 100644
index 0000000000000000000000000000000000000000..8342aba67edc96d93ed9e9875b4da43a7c10e1bd
--- /dev/null
+++ b/metager/lang/de/lang-selector.php
@@ -0,0 +1,13 @@
+<?php
+
+return [
+    "h1.1" => "Sprachauswahl",
+
+    "p.1" => "Nachfolgend finden Sie eine Liste aller derzeit von der MetaGer-Suche unterstützten Sprachen/Regionen. Ihre Suchergebnisse werden für die ausgewählte Region optimiert. Wir arbeiten daran auch in weiteren Regionen verfügbar zu sein.",
+
+    "lang" => [
+        "de" => "Deutsch",
+        "en" => "Englisch",
+        "es" => "Spanisch"
+    ],
+];
diff --git a/metager/lang/en/lang-selector.php b/metager/lang/en/lang-selector.php
new file mode 100644
index 0000000000000000000000000000000000000000..42381e1ec474ebc1d754b8c49d8f893e59e88ab1
--- /dev/null
+++ b/metager/lang/en/lang-selector.php
@@ -0,0 +1,9 @@
+<?php
+
+return [
+    "lang" => [
+        "de" => "German",
+        "en" => "English",
+        "es" => "Spanish",
+    ],
+];
diff --git a/metager/resources/less/metager/pages/lang-selector.less b/metager/resources/less/metager/pages/lang-selector.less
new file mode 100644
index 0000000000000000000000000000000000000000..a159a9c9de2a58322c3eee947b5e28628209c3a5
--- /dev/null
+++ b/metager/resources/less/metager/pages/lang-selector.less
@@ -0,0 +1,3 @@
+a.active {
+    text-decoration: underline;
+}
\ No newline at end of file
diff --git a/metager/resources/views/index.blade.php b/metager/resources/views/index.blade.php
index 1c3be273d659a50cc04f2106cbfc2c10faa27edb..63c84f21d3c86cf3d8e0537b28135b8a053f85c1 100644
--- a/metager/resources/views/index.blade.php
+++ b/metager/resources/views/index.blade.php
@@ -9,7 +9,7 @@
         <a class="logo" href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/") }}">
           <img src="/img/metager.svg" alt="MetaGer" />
         </a>
-        <a class="lang" href="#">
+        <a class="lang" href="{{ LaravelLocalization::getLocalizedURL(null, route("lang-selector")) }}">
           <span>{{ App\Localization::getRegion() }}</span>
         </a>
       </h1>
diff --git a/metager/resources/views/lang-selector.blade.php b/metager/resources/views/lang-selector.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..80bdb400a81b8d5abc76aed12716be097a96c82f
--- /dev/null
+++ b/metager/resources/views/lang-selector.blade.php
@@ -0,0 +1,18 @@
+@extends('layouts.subPages', ['page' => 'key'])
+
+@section('title', $title )
+
+@section('content')
+<h1>{{ __("lang-selector.h1.1") }}</h1>
+<p>{{ __("lang-selector.p.1") }}</p>
+<div id="languages">
+    @foreach(App\Localization::getLanguageSelectorLocales() as $language => $locales)
+    <h2>{{ trans("lang-selector.lang.$language", [], $language) }}</h2>
+    <ul>
+        @foreach($locales as $locale => $locale_native)
+        <li><a @if(LaravelLocalization::getCurrentLocale() === $locale)class="active" @endif rel="alternate" hreflang="{{ LaravelLocalization::getSupportedLocales()[$locale]["regional"] }}" href="{{ LaravelLocalization::getLocalizedURL($locale) }}">{{ $locale_native }}</a></li>
+        @endforeach
+    </ul>
+    @endforeach
+</div>
+@endsection
\ No newline at end of file
diff --git a/metager/resources/views/layouts/researchandtabs.blade.php b/metager/resources/views/layouts/researchandtabs.blade.php
index 73c8646aedf70e3c756c0b4de65a7bd6113d011e..09637e9dc793404531cebda211ccff7e9ddad426 100644
--- a/metager/resources/views/layouts/researchandtabs.blade.php
+++ b/metager/resources/views/layouts/researchandtabs.blade.php
@@ -9,7 +9,7 @@
 				<a class="screen-small" href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/") }}" @if(!empty($metager) && $metager->isFramed())target="_top" @endif>
 					<h1><img src="/img/metager-schloss-orange.svg" alt="MetaGer" /></h1>
 				</a>
-				<a class="lang" href="#">
+				<a class="lang" href="{{ LaravelLocalization::getLocalizedURL(null, route("lang-selector")) }}">
 					<span>{{ App\Localization::getRegion() }}</span>
 				</a>
 			</div>
diff --git a/metager/resources/views/layouts/subPages.blade.php b/metager/resources/views/layouts/subPages.blade.php
index cfb7ab4052d192df686577bc662692e4e7f31dcb..6e17e95cb9d3419a4e0ef0370cb92d9443cc4392 100644
--- a/metager/resources/views/layouts/subPages.blade.php
+++ b/metager/resources/views/layouts/subPages.blade.php
@@ -5,7 +5,7 @@
 		<a class="navbar-brand" href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/") }}">
 			<h1><img src="/img/metager.svg" alt="MetaGer" /></h1>
 		</a>
-		<a class="lang" href="#">
+		<a class="lang" href="{{ LaravelLocalization::getLocalizedURL(null, route("lang-selector")) }}">
           <span>{{ App\Localization::getRegion() }}</span>
         </a>
 	</div>
diff --git a/metager/routes/web.php b/metager/routes/web.php
index ee88c1676e77c8b97a0aa70f7a7eaf70d7ca6bd1..5f7d87c508b65ce36bea38c026b225f9d39c55a1 100644
--- a/metager/routes/web.php
+++ b/metager/routes/web.php
@@ -303,6 +303,11 @@ Route::get('MG20', function () {
 Route::get('databund', function () {
     return redirect('https://metager.de/klassik/databund');
 });
+Route::get("lang", function () {
+    return view('lang-selector')
+        ->with("title", trans("titles.lang-selector"))
+        ->with('css', [mix('css/lang-selector.css')]);
+})->name("lang-selector");
 Route::get('languages', 'LanguageController@createOverview');
 Route::get('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@createSynopticEditPage');
 Route::post('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@processSynopticPageInput');
diff --git a/metager/webpack.mix.js b/metager/webpack.mix.js
index ff2773147fc2cfad2ee38d969432f1a09bbddf85..02496b4aeade17e0a1d8d36d0b410d60085035f7 100644
--- a/metager/webpack.mix.js
+++ b/metager/webpack.mix.js
@@ -26,6 +26,7 @@ mix
   .less("resources/less/metager/pages/key.less", "public/css/key.css")
   .less("resources/less/metager/pages/key-dark.less", "public/css/key-dark.css")
   .less("resources/less/utility.less", "public/css/utility.css")
+  .less("resources/less/metager/pages/lang-selector.less", "public/css/lang-selector.css")
   .less("resources/less/metager/pages/plugin-page.less", "public/css/plugin-page.css")
   .less("resources/less/metager/pages/count/style-dark.less", "public/css/count/dark.css")
   .less("resources/less/metager/pages/count/style.less", "public/css/count/style.css")