diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js
index 81bb3bef8f4b325864f9e94e1d9e37f0bdd36c79..8194b57860ef2e23fb4e7a406909f0fcb43336f0 100644
--- a/app/assets/config/manifest.js
+++ b/app/assets/config/manifest.js
@@ -3,8 +3,6 @@
 //= link_tree ../fonts
 //= link_directory ../stylesheets .css
 //= link_directory ../javascripts .js
+//= link_directory ../stylesheets/admin .css
+//= link_directory ../javascripts/admin .js
 //= link vue.js
-//= link admin/appstack.css
-//= link admin/pure.css
-//= link admin/appstack.js
-//= link admin/pure.js
diff --git a/app/assets/javascripts/admin/communication/init.js b/app/assets/javascripts/admin/communication/init.js
index 7d114c0b6b8bc7f6d8ddb0fceef848600696dc56..45d6ce61db4a77a57dacbd9e1f13169b7113f53b 100644
--- a/app/assets/javascripts/admin/communication/init.js
+++ b/app/assets/javascripts/admin/communication/init.js
@@ -1,6 +1,5 @@
 //= require_self
-//= require ./menu_items
 //= require ./preview
-//= require ./websites
+//= require ./websites/init
 
 window.osuny.communication = {};
diff --git a/app/assets/javascripts/admin/communication/websites.js b/app/assets/javascripts/admin/communication/websites/form.js
similarity index 94%
rename from app/assets/javascripts/admin/communication/websites.js
rename to app/assets/javascripts/admin/communication/websites/form.js
index 9f223d1c278c60f89cd2164ffa964d75723e55cf..84fe2ad08f2321b88ddda543eccc79b2bde6f54e 100644
--- a/app/assets/javascripts/admin/communication/websites.js
+++ b/app/assets/javascripts/admin/communication/websites/form.js
@@ -1,4 +1,4 @@
-window.osuny.communication.websites = {
+window.osuny.communication.websites.form = {
     init: function () {
         'use strict';
         this.languagesCheckboxes = document.querySelectorAll('.js-languages input[type="checkbox"]');
@@ -48,6 +48,6 @@ window.osuny.communication.websites = {
 window.addEventListener('DOMContentLoaded', function () {
     'use strict';
     if (window.osuny.isInControllerForm('websites')) {
-        window.osuny.communication.websites.init();
+        window.osuny.communication.websites.form.init();
     }
 });
diff --git a/app/assets/javascripts/admin/communication/websites/init.js b/app/assets/javascripts/admin/communication/websites/init.js
new file mode 100644
index 0000000000000000000000000000000000000000..3eaee3747f8b9a534f26b2613a2c2915297cb6b5
--- /dev/null
+++ b/app/assets/javascripts/admin/communication/websites/init.js
@@ -0,0 +1,6 @@
+//= require_self
+//= require ./form
+//= require ./lang_switch
+//= require ./menu_items
+
+window.osuny.communication.websites = {};
diff --git a/app/assets/javascripts/admin/communication/websites/lang_switch.js b/app/assets/javascripts/admin/communication/websites/lang_switch.js
new file mode 100644
index 0000000000000000000000000000000000000000..390243899da76c997cf7a9317e38886db33775ae
--- /dev/null
+++ b/app/assets/javascripts/admin/communication/websites/lang_switch.js
@@ -0,0 +1,26 @@
+window.osuny.communication.websites.langSwitch = {
+    init: function () {
+        'use strict';
+        this.select = document.querySelector('#js-website-lang-switch');
+        if (this.select) {
+            this.select.addEventListener('change', this.onChange.bind(this));
+        }
+    },
+
+    onChange: function () {
+        'use strict';
+        document.location.href = this.select.selectedOptions[0].value;
+    },
+
+    invoke: function () {
+        'use strict';
+        return {
+            init: this.init.bind(this)
+        };
+    }
+}.invoke();
+
+window.addEventListener('DOMContentLoaded', function () {
+    'use strict';
+    window.osuny.communication.websites.langSwitch.init();
+});
diff --git a/app/assets/javascripts/admin/communication/menu_items.js b/app/assets/javascripts/admin/communication/websites/menu_items.js
similarity index 95%
rename from app/assets/javascripts/admin/communication/menu_items.js
rename to app/assets/javascripts/admin/communication/websites/menu_items.js
index a4bfdc477aca48a94c296f5aaae215baad7ceff1..afe1adb1bc025a27d2a25209e8a13c4bf5d36147 100644
--- a/app/assets/javascripts/admin/communication/menu_items.js
+++ b/app/assets/javascripts/admin/communication/websites/menu_items.js
@@ -1,5 +1,5 @@
 /* global $ */
-window.osuny.communication.menuItems = {
+window.osuny.communication.websites.menuItems = {
     init: function () {
         'use strict';
         var i,
@@ -74,6 +74,6 @@ window.osuny.communication.menuItems = {
 window.addEventListener('DOMContentLoaded', function () {
     'use strict';
     if (window.osuny.isInControllerForm('items')) {
-        window.osuny.communication.menuItems.init();
+        window.osuny.communication.websites.menuItems.init();
     }
 });
diff --git a/app/views/admin/communication/websites/_sidebar.html.erb b/app/views/admin/communication/websites/_sidebar.html.erb
index 9572cc2609e83687f686f7a48862f1eafbec2508..ebd838a964c77d1885ece044b7f398625327ad18 100644
--- a/app/views/admin/communication/websites/_sidebar.html.erb
+++ b/app/views/admin/communication/websites/_sidebar.html.erb
@@ -9,7 +9,7 @@
         icon: Icon::COMMUNICATION_WEBSITE_HOME,
         ability: can?(:read, @website)
       }
-      
+
       navigation << {
         title: Communication::Website::Post.model_name.human(count: 2),
         path: admin_communication_website_posts_path(website_id: @website),
@@ -59,16 +59,19 @@
       <% end %>
     </ul>
     <% if @website.languages.many? %>
-      <select class="form-control form-select my-5"  onchange="if (this.value) window.location.href=this.value">
-        <% @website.languages.each do |language| %>
-          <%
-          label = language_name(language.iso_code)
-          path = url_for request.params.merge(lang: language.iso_code)
-          selected = current_website_language == language
-          %>
-          <option value="<%= path %>"<% if selected %> selected="selected"<% end %>><%= label %></option>
-        <% end %>
-      </select>
+      <%
+      languages_options = @website.languages.map { |language|
+        [
+          language_name(language.iso_code),
+          url_for(request.params.merge(lang: language.iso_code))
+        ]
+      }
+      selected_option = url_for(request.params.merge(lang: current_website_language.iso_code))
+      %>
+      <%= select_tag  nil,
+                      options_for_select(languages_options, selected_option),
+                      class: "form-control form-select my-5",
+                      id: "js-website-lang-switch" %>
     <% end %>
   </div>
   <div class="col-lg-9">