+
diff --git a/client/src/app/menu/language-chooser.component.scss b/client/src/app/menu/language-chooser.component.scss
new file mode 100644
index 000000000..4574f78c6
--- /dev/null
+++ b/client/src/app/menu/language-chooser.component.scss
@@ -0,0 +1,15 @@
+@import '_variables';
+@import '_mixins';
+
+.modal-title {
+ text-align: center;
+}
+
+.modal-body {
+ text-align: center;
+
+ a {
+ font-size: 16px;
+ margin-top: 10px;
+ }
+}
\ No newline at end of file
diff --git a/client/src/app/menu/language-chooser.component.ts b/client/src/app/menu/language-chooser.component.ts
new file mode 100644
index 000000000..3de6a129d
--- /dev/null
+++ b/client/src/app/menu/language-chooser.component.ts
@@ -0,0 +1,32 @@
+import { Component, ViewChild } from '@angular/core'
+import { ModalDirective } from 'ngx-bootstrap/modal'
+import { I18N_LOCALES } from '../../../../shared'
+
+@Component({
+ selector: 'my-language-chooser',
+ templateUrl: './language-chooser.component.html',
+ styleUrls: [ './language-chooser.component.scss' ]
+})
+export class LanguageChooserComponent {
+ @ViewChild('modal') modal: ModalDirective
+
+ languages: { [ id: string ]: string }[] = []
+
+ constructor () {
+ this.languages = Object.keys(I18N_LOCALES)
+ .map(k => ({ id: k, label: I18N_LOCALES[k] }))
+ }
+
+ show () {
+ this.modal.show()
+ }
+
+ hide () {
+ this.modal.hide()
+ }
+
+ buildLanguageLink (lang: { id: string }) {
+ return window.location.origin + '/' + lang.id
+ }
+
+}
diff --git a/client/src/app/menu/menu.component.html b/client/src/app/menu/menu.component.html
index 8e3b295f7..784b5cd85 100644
--- a/client/src/app/menu/menu.component.html
+++ b/client/src/app/menu/menu.component.html
@@ -1,70 +1,82 @@
-
+
+
+