diff --git a/apps/files_external/settings.php b/apps/files_external/settings.php
index e49eba06731b39c0a22400cf10bd0d384db3212d..dec329e82a2bba16d1e644e8f7d78f71be9f2ae5 100644
--- a/apps/files_external/settings.php
+++ b/apps/files_external/settings.php
@@ -25,8 +25,8 @@ OC_Util::checkAdminUser();
 OCP\Util::addScript('files_external', 'settings');
 OCP\Util::addStyle('files_external', 'settings');
 
-OCP\Util::addScript('core', 'select2/select2');
-OCP\Util::addStyle('core', 'select2/select2');
+\OC_Util::addVendorScript('select2/select2');
+\OC_Util::addVendorStyle('select2/select2');
 
 $backends = OC_Mount_Config::getBackends();
 $personal_backends = array();
diff --git a/bower.json b/bower.json
index 986b88eed470b6c7bb4a5c453205ea595eec0a85..a62348b743aa564dee687a8f06185cb48ae66225 100644
--- a/bower.json
+++ b/bower.json
@@ -16,6 +16,7 @@
     "handlebars": "1.3.0",
     "jquery": "~1.10.0",
     "moment": "~2.8.3",
+    "select2": "3.4.8",
     "underscore": "1.6.0"
   }
 }
diff --git a/core/js/select2/README.md b/core/js/select2/README.md
deleted file mode 100644
index 406fe79dc9578ba50eea26c7da0b3d917d443f90..0000000000000000000000000000000000000000
--- a/core/js/select2/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-Select2
-=======
-
-Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
-
-To get started, checkout examples and documentation at http://ivaynberg.github.com/select2
-
-Use cases
----------
-
-* Enhancing native selects with search.
-* Enhancing native selects with a better multi-select interface.
-* Loading data from JavaScript: easily load items via ajax and have them searchable.
-* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.
-* Tagging: ability to add new items on the fly.
-* Working with large, remote datasets: ability to partially load a dataset based on the search term.
-* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.
-* Templating: support for custom rendering of results and selections.
-
-Browser compatibility
----------------------
-* IE 8+
-* Chrome 8+
-* Firefox 10+
-* Safari 3+
-* Opera 10.6+
- 
-Usage
------
-You can source Select2 directly from a [CDN like JSDliver](http://www.jsdelivr.com/#!select2), [download it from this GitHub repo](https://github.com/ivaynberg/select2/tags), or use one of the integrations below.
-
-Integrations
-------------
-
-* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))
-* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)
-* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org))
-* [Django](https://github.com/applegrew/django-select2)
-* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)
-* [Symfony2](https://github.com/avocode/FormExtensions)
-* [Bootstrap 2](https://github.com/t0m/select2-bootstrap-css) and [Bootstrap 3](https://github.com/t0m/select2-bootstrap-css/tree/bootstrap3) (CSS skins)
-* [Meteor](https://github.com/nate-strauser/meteor-select2) (modern reactive JavaScript framework; + [Bootstrap 3 skin](https://github.com/esperadomedia/meteor-select2-bootstrap3-css/))
-* [Yii 2.x](http://demos.krajee.com/widgets#select2)
-* [Yii 1.x](https://github.com/tonybolzan/yii-select2)
-
-Internationalization (i18n)
----------------------------
-
-Select2 supports multiple languages by simply including the right
-language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.).
-
-Missing a language? Just copy `select2_locale_en.js.template`, translate
-it, and make a pull request back to Select2 here on GitHub.
-
-Bug tracker
------------
-
-Have a bug? Please create an issue here on GitHub!
-
-https://github.com/ivaynberg/select2/issues
-
-Mailing list
-------------
-
-Have a question? Ask on our mailing list!
-
-select2@googlegroups.com
-
-https://groups.google.com/d/forum/select2
-
-
-Copyright and license
----------------------
-
-Copyright 2012 Igor Vaynberg
-
-This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
-General Public License version 2 (the "GPL License"). You may choose either license to govern your
-use of this software only upon the condition that you accept all of the terms of either the Apache
-License or the GPL License.
-
-You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:
-
-http://www.apache.org/licenses/LICENSE-2.0
-http://www.gnu.org/licenses/gpl-2.0.html
-
-Unless required by applicable law or agreed to in writing, software distributed under the Apache License
-or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
-either express or implied. See the Apache License and the GPL License for the specific language governing
-permissions and limitations under the Apache License and the GPL License.
diff --git a/core/js/select2/bower.json b/core/js/select2/bower.json
deleted file mode 100644
index 80e8596e8062fcde0334f34f98dafd96389fb63e..0000000000000000000000000000000000000000
--- a/core/js/select2/bower.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "name": "select2",
-    "version": "3.4.8",
-    "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"],
-    "dependencies": {
-        "jquery": ">= 1.7.1"
-    }
-}
diff --git a/core/js/select2/component.json b/core/js/select2/component.json
deleted file mode 100644
index ad7abf9d9fac867adcb320e1f93b42f714e1e024..0000000000000000000000000000000000000000
--- a/core/js/select2/component.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "name": "select2",
-  "repo": "ivaynberg/select2",
-  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
-  "version": "3.4.8",
-  "demo": "http://ivaynberg.github.io/select2/",
-  "keywords": [
-    "jquery"
-  ],
-  "main": "select2.js",
-  "styles": [
-    "select2.css",
-    "select2-bootstrap.css"
-  ],
-  "scripts": [
-    "select2.js",
-    "select2_locale_ar.js",
-    "select2_locale_bg.js",
-    "select2_locale_ca.js",
-    "select2_locale_cs.js",
-    "select2_locale_da.js",
-    "select2_locale_de.js",
-    "select2_locale_el.js",
-    "select2_locale_es.js",
-    "select2_locale_et.js",
-    "select2_locale_eu.js",
-    "select2_locale_fa.js",
-    "select2_locale_fi.js",
-    "select2_locale_fr.js",
-    "select2_locale_gl.js",
-    "select2_locale_he.js",
-    "select2_locale_hr.js",
-    "select2_locale_hu.js",
-    "select2_locale_id.js",
-    "select2_locale_is.js",
-    "select2_locale_it.js",
-    "select2_locale_ja.js",
-    "select2_locale_ka.js",
-    "select2_locale_ko.js",
-    "select2_locale_lt.js",
-    "select2_locale_lv.js",
-    "select2_locale_mk.js",
-    "select2_locale_ms.js",
-    "select2_locale_nl.js",
-    "select2_locale_no.js",
-    "select2_locale_pl.js",
-    "select2_locale_pt-BR.js",
-    "select2_locale_pt-PT.js",
-    "select2_locale_ro.js",
-    "select2_locale_ru.js",
-    "select2_locale_sk.js",
-    "select2_locale_sv.js",
-    "select2_locale_th.js",
-    "select2_locale_tr.js",
-    "select2_locale_uk.js",
-    "select2_locale_vi.js",
-    "select2_locale_zh-CN.js",
-    "select2_locale_zh-TW.js"
-  ],
-  "images": [
-    "select2-spinner.gif",
-    "select2.png",
-    "select2x2.png"
-  ],
-  "license": "MIT"
-}
diff --git a/core/js/select2/composer.json b/core/js/select2/composer.json
deleted file mode 100644
index c50fadba855bfcce5263c09848f1cd4dbb29d251..0000000000000000000000000000000000000000
--- a/core/js/select2/composer.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name":
-  "ivaynberg/select2",
-  "description": "Select2 is a jQuery based replacement for select boxes.",
-  "version": "3.4.8",
-  "type": "component",
-  "homepage": "http://ivaynberg.github.io/select2/",
-  "license": "Apache-2.0",
-  "require": {
-    "robloach/component-installer": "*",
-    "components/jquery": ">=1.7.1"
-  },
-  "extra": {
-    "component": {
-      "scripts": [
-        "select2.js"
-      ],
-      "files": [
-        "select2.js",
-        "select2_locale_*.js",
-        "select2.css",
-        "select2-bootstrap.css",
-        "select2-spinner.gif",
-        "select2.png",
-        "select2x2.png"
-      ]
-    }
-  }
-}
diff --git a/core/js/select2/package.json b/core/js/select2/package.json
deleted file mode 100644
index 75ad84acaf839365a01341a7cda46d131718f901..0000000000000000000000000000000000000000
--- a/core/js/select2/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name" : "Select2",
-  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
-  "homepage": "http://ivaynberg.github.io/select2",
-  "author": "Igor Vaynberg",
-  "repository": {"type": "git", "url": "git://github.com/ivaynberg/select2.git"},
-  "main": "select2.js",
-  "version": "3.4.8",
-  "jspm": {
-    "main": "select2",
-    "files": ["select2.js", "select2.png", "select2.css", "select2-spinner.gif"],
-    "shim": {
-        "select2": {
-            "imports": ["jquery", "./select2.css!"],
-            "exports": "$"
-        }
-    },
-    "buildConfig": { "uglify": true }
-  }
-}
diff --git a/core/js/select2/release.sh b/core/js/select2/release.sh
deleted file mode 100755
index 0d2e279ead4e3c11f0732207e42169012daf6de0..0000000000000000000000000000000000000000
--- a/core/js/select2/release.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash
-set -e
-
-echo -n "Enter the version for this release: "
-
-read ver
-
-if [ ! $ver ]; then
-	echo "Invalid version."
-	exit
-fi
-
-name="select2"
-js="$name.js"
-mini="$name.min.js"
-css="$name.css"
-release="$name-$ver"
-tag="$ver"
-branch="build-$ver"
-curbranch=`git branch | grep "*" | sed "s/* //"`
-timestamp=$(date)
-tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g"
-remote="github"
-
-echo "Pulling from origin"
-
-git pull
-
-echo "Updating Version Identifiers"
-
-sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i -- bower.json select2.jquery.json component.json composer.json package.json
-
-git add bower.json
-git add select2.jquery.json
-git add component.json
-git add composer.json
-git add package.json
-
-git commit -m "modified version identifiers in descriptors for release $ver"
-git push
-
-git branch "$branch"
-git checkout "$branch"
-
-echo "Tokenizing..."
-
-find . -name "$js" | xargs -I{} sed -e "$tokens" -i -- {}
-find . -name "$css" | xargs -I{} sed -e "$tokens" -i -- {}
-
-sed -e "s/latest/$ver/g" -i -- bower.json
-
-git add "$js"
-git add "$css"
-
-echo "Minifying..."
-
-echo "/*" > "$mini"
-cat LICENSE | sed "$tokens" >> "$mini"
-echo "*/" >> "$mini"
-
-curl -s \
-	--data-urlencode "js_code@$js" \
-	http://marijnhaverbeke.nl/uglifyjs \
-	>> "$mini"
-
-git add "$mini"
-
-git commit -m "release $ver"
-
-echo "Tagging..."
-git tag -a "$tag" -m "tagged version $ver"
-git push "$remote" --tags
-
-echo "Cleaning Up..."
-
-git checkout "$curbranch"
-git branch -D "$branch"
-
-echo "Done"
diff --git a/core/js/select2/select2-bootstrap.css b/core/js/select2/select2-bootstrap.css
deleted file mode 100644
index 3b83f0a2297833158d2a3503c1c63ec4bd0bf1e5..0000000000000000000000000000000000000000
--- a/core/js/select2/select2-bootstrap.css
+++ /dev/null
@@ -1,87 +0,0 @@
-.form-control .select2-choice {
-    border: 0;
-    border-radius: 2px;
-}
-
-.form-control .select2-choice .select2-arrow {
-    border-radius: 0 2px 2px 0;   
-}
-
-.form-control.select2-container {
-    height: auto !important;
-    padding: 0;
-}
-
-.form-control.select2-container.select2-dropdown-open {
-    border-color: #5897FB;
-    border-radius: 3px 3px 0 0;
-}
-
-.form-control .select2-container.select2-dropdown-open .select2-choices {
-    border-radius: 3px 3px 0 0;
-}
-
-.form-control.select2-container .select2-choices {
-    border: 0 !important;
-    border-radius: 3px;
-}
-
-.control-group.warning .select2-container .select2-choice,
-.control-group.warning .select2-container .select2-choices,
-.control-group.warning .select2-container-active .select2-choice,
-.control-group.warning .select2-container-active .select2-choices,
-.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.warning .select2-container-multi.select2-container-active .select2-choices {
-    border: 1px solid #C09853 !important;
-}
-
-.control-group.warning .select2-container .select2-choice div {
-    border-left: 1px solid #C09853 !important;
-    background: #FCF8E3 !important;
-}
-
-.control-group.error .select2-container .select2-choice,
-.control-group.error .select2-container .select2-choices,
-.control-group.error .select2-container-active .select2-choice,
-.control-group.error .select2-container-active .select2-choices,
-.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.error .select2-container-multi.select2-container-active .select2-choices {
-    border: 1px solid #B94A48 !important;
-}
-
-.control-group.error .select2-container .select2-choice div {
-    border-left: 1px solid #B94A48 !important;
-    background: #F2DEDE !important;
-}
-
-.control-group.info .select2-container .select2-choice,
-.control-group.info .select2-container .select2-choices,
-.control-group.info .select2-container-active .select2-choice,
-.control-group.info .select2-container-active .select2-choices,
-.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.info .select2-container-multi.select2-container-active .select2-choices {
-    border: 1px solid #3A87AD !important;
-}
-
-.control-group.info .select2-container .select2-choice div {
-    border-left: 1px solid #3A87AD !important;
-    background: #D9EDF7 !important;
-}
-
-.control-group.success .select2-container .select2-choice,
-.control-group.success .select2-container .select2-choices,
-.control-group.success .select2-container-active .select2-choice,
-.control-group.success .select2-container-active .select2-choices,
-.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.success .select2-container-multi.select2-container-active .select2-choices {
-    border: 1px solid #468847 !important;
-}
-
-.control-group.success .select2-container .select2-choice div {
-    border-left: 1px solid #468847 !important;
-    background: #DFF0D8 !important;
-}
diff --git a/core/js/select2/select2.jquery.json b/core/js/select2/select2.jquery.json
deleted file mode 100644
index e9119279f11871b4bb7e490775694b51cc917397..0000000000000000000000000000000000000000
--- a/core/js/select2/select2.jquery.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "select2",
-    "title": "Select2",
-    "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
-    "keywords": [
-        "select",
-        "autocomplete",
-        "typeahead",
-        "dropdown",
-        "multiselect",
-        "tag",
-        "tagging"
-    ],
-    "version": "3.4.8",
-    "author": {
-        "name": "Igor Vaynberg",
-        "url": "https://github.com/ivaynberg"
-    },
-    "licenses": [
-        {
-            "type": "Apache",
-            "url": "http://www.apache.org/licenses/LICENSE-2.0"
-        },
-        {
-            "type": "GPL v2",
-            "url": "http://www.gnu.org/licenses/gpl-2.0.html"
-        }
-    ],
-    "bugs": "https://github.com/ivaynberg/select2/issues",
-    "homepage": "http://ivaynberg.github.com/select2",
-    "docs": "http://ivaynberg.github.com/select2/",
-    "download": "https://github.com/ivaynberg/select2/tags",
-    "dependencies": {
-        "jquery": ">=1.7.1"
-    }
-}
diff --git a/core/js/select2/select2_locale_ar.js b/core/js/select2/select2_locale_ar.js
deleted file mode 100644
index acb33a2f6ad9bf6adacdb41536130ae158dc8ce3..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ar.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Arabic translation.
- *
- * Author: Adel KEDJOUR <adel@kedjour.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "لم يتم العثور على مطابقات"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حرف واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرفين على الأكثر" : "الرجاء إدخال " + n + " على الأكثر"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حرف واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرفين على الأقل" : "الرجاء إدخال " + n + " على الأقل "; },
-        formatSelectionTooBig: function (limit) { if (n == 1){ return "يمكنك أن تختار إختيار واحد فقط"; } return n == 2 ? "يمكنك أن تختار إختيارين فقط" : "يمكنك أن تختار " + n + " إختيارات فقط"; },
-        formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; },
-        formatSearching: function () { return "البحث…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_bg.js b/core/js/select2/select2_locale_bg.js
deleted file mode 100644
index 585d28a2b0be56082bbe88327acdc8ff02e08f4d..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_bg.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Select2 Bulgarian translation.
- * 
- * @author  Lubomir Vikev <lubomirvikev@gmail.com>
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Няма намерени съвпадения"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n > 1 ? "а" : ""); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n > 1 ? "а" : ""); },
-        formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); },
-        formatLoadMore: function (pageNumber) { return "Зареждат се още…"; },
-        formatSearching: function () { return "Търсене…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_ca.js b/core/js/select2/select2_locale_ca.js
deleted file mode 100644
index 7e19d3ce9663013ae4bd67051ad2cf1c9fde7ac5..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ca.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Catalan translation.
- * 
- * Author: David Planella <david.planella@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "No s'ha trobat cap coincidència"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; },
-        formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; },
-        formatSearching: function () { return "S'està cercant…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_cs.js b/core/js/select2/select2_locale_cs.js
deleted file mode 100644
index 376b54a1352ed1e2dfcb4e96cd2449cce674fb4c..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_cs.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Select2 Czech translation.
- * 
- * Author: Michal Marek <ahoj@michal-marek.cz>
- * Author - sklonovani: David Vallner <david@vallner.net>
- */
-(function ($) {
-    "use strict";
-    // use text for the numbers 2 through 4
-    var smallNumbers = {
-        2: function(masc) { return (masc ? "dva" : "dvě"); },
-        3: function() { return "tři"; },
-        4: function() { return "čtyři"; }
-    }
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nenalezeny žádné položky"; },
-        formatInputTooShort: function (input, min) {
-            var n = min - input.length;
-            if (n == 1) {
-                return "Prosím zadejte ještě jeden znak";
-            } else if (n <= 4) {
-                return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky";
-            } else {
-                return "Prosím zadejte ještě dalších "+n+" znaků";
-            }
-        },
-        formatInputTooLong: function (input, max) {
-            var n = input.length - max;
-            if (n == 1) {
-                return "Prosím zadejte o jeden znak méně";
-            } else if (n <= 4) {
-                return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně";
-            } else {
-                return "Prosím zadejte o "+n+" znaků méně";
-            }
-        },
-        formatSelectionTooBig: function (limit) {
-            if (limit == 1) {
-                return "Můžete zvolit jen jednu položku";
-            } else if (limit <= 4) {
-                return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky";
-            } else {
-                return "Můžete zvolit maximálně "+limit+" položek";
-            }
-        },
-        formatLoadMore: function (pageNumber) { return "Načítají se další výsledky…"; },
-        formatSearching: function () { return "Vyhledávání…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_da.js b/core/js/select2/select2_locale_da.js
deleted file mode 100644
index dbce3e1748db927f84a847a0ce722b1388235843..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_da.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Danish translation.
- *
- * Author: Anders Jenbo <anders@jenbo.dk>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Ingen resultater fundet"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; },
-        formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); },
-        formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; },
-        formatSearching: function () { return "Søger…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_de.js b/core/js/select2/select2_locale_de.js
deleted file mode 100644
index 93b18e81f85b4eb1be653a490894a7da14b8313a..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_de.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 German translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; },
-        formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; },
-        formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; },
-        formatSearching: function () { return "Suche…"; }
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/core/js/select2/select2_locale_el.js b/core/js/select2/select2_locale_el.js
deleted file mode 100644
index e94b02cbc5fddb736315e6e70d61e1ed6c33f6e7..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_el.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Greek translation.
- * 
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n > 1 ? "υς" : "") + " χαρακτήρ" + (n > 1 ? "ες" : "α"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n > 1 ? "ες" : "α"); },
-        formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); },
-        formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων…"; },
-        formatSearching: function () { return "Αναζήτηση…"; }
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/core/js/select2/select2_locale_en.js.template b/core/js/select2/select2_locale_en.js.template
deleted file mode 100644
index f66bcc844db607989fa1bd19a475f1e8e0060077..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_en.js.template
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Select2 <Language> translation.
- * 
- * Author: Your Name <your@email>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; },
-        formatNoMatches: function () { return "No matches found"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); },
-        formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Loading more results…"; },
-        formatSearching: function () { return "Searching…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_es.js b/core/js/select2/select2_locale_es.js
deleted file mode 100644
index f2b581791eb55dcb25ee05daeeef2663322e9a72..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_es.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Spanish translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "No se encontraron resultados"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); },
-        formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; },
-        formatSearching: function () { return "Buscando…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_et.js b/core/js/select2/select2_locale_et.js
deleted file mode 100644
index a4045d22df7f15643cdc7675c0cdc76da1af1d88..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_et.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Estonian translation.
- *
- * Author: Kuldar Kalvik <kuldar@kalvik.ee>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Tulemused puuduvad"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; },
-        formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; },
-        formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; },
-        formatSearching: function () { return "Otsin.."; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_eu.js b/core/js/select2/select2_locale_eu.js
deleted file mode 100644
index 1da1a709481f7493e0a6f64886de30577d527025..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_eu.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Select2 Basque translation.
- *
- * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () {
-          return "Ez da bat datorrenik aurkitu";
-        },
-        formatInputTooShort: function (input, min) {
-          var n = min - input.length;
-          if (n === 1) {
-            return "Idatzi karaktere bat gehiago";
-          } else {
-            return "Idatzi " + n + " karaktere gehiago";
-          }
-        },
-        formatInputTooLong: function (input, max) {
-          var n = input.length - max;
-          if (n === 1) {
-            return "Idatzi karaktere bat gutxiago";
-          } else {
-            return "Idatzi " + n + " karaktere gutxiago";
-          }
-        },
-        formatSelectionTooBig: function (limit) {
-          if (limit === 1 ) {
-            return "Elementu bakarra hauta dezakezu";
-          } else {
-            return limit + " elementu hauta ditzakezu soilik";
-          }
-        },
-        formatLoadMore: function (pageNumber) {
-          return "Emaitza gehiago kargatzen…";
-        },
-        formatSearching: function () {
-          return "Bilatzen…";
-        }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_fa.js b/core/js/select2/select2_locale_fa.js
deleted file mode 100644
index a9e95af4dba0d68f5a3a8480671d7c86e66b164c..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_fa.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * Select2 Persian translation.
- * 
- * Author: Ali Choopan <choopan@arsh.co>
- * Author: Ebrahim Byagowi <ebrahim@gnu.org>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید."; },
-        formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "لطفاً " + n + " نویسه بیشتر وارد نمایید"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "لطفاً " + n + " نویسه را حذف کنید."; },
-        formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; },
-        formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; },
-        formatSearching: function () { return "در حال جستجو…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_fi.js b/core/js/select2/select2_locale_fi.js
deleted file mode 100644
index 9bed310f71718802586f7717cb99d4a8d780e2d6..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_fi.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Select2 Finnish translation
- */
-(function ($) {
-    "use strict";
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () {
-            return "Ei tuloksia";
-        },
-        formatInputTooShort: function (input, min) {
-            var n = min - input.length;
-            return "Ole hyvä ja anna " + n + " merkkiä lisää";
-        },
-        formatInputTooLong: function (input, max) {
-            var n = input.length - max;
-            return "Ole hyvä ja anna " + n + " merkkiä vähemmän";
-        },
-        formatSelectionTooBig: function (limit) {
-            return "Voit valita ainoastaan " + limit + " kpl";
-        },
-        formatLoadMore: function (pageNumber) {
-            return "Ladataan lisää tuloksia…";
-        },
-        formatSearching: function () {
-            return "Etsitään…";
-        }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_fr.js b/core/js/select2/select2_locale_fr.js
deleted file mode 100644
index 9afda2abdcdb1d04b782d981d49eb704619d3092..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_fr.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Select2 French translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatMatches: function (matches) { return matches + " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer."; },
-        formatNoMatches: function () { return "Aucun résultat trouvé"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1 ? "" : "s") + " de plus"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1 ? "" : "s"); },
-        formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; },
-        formatSearching: function () { return "Recherche en cours…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_gl.js b/core/js/select2/select2_locale_gl.js
deleted file mode 100644
index 80326320bf0380b19e74cc1289b26fddcb887a94..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_gl.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Select2 Galician translation
- * 
- * Author: Leandro Regueiro <leandro.regueiro@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () {
-            return "Non se atoparon resultados";
-        },
-        formatInputTooShort: function (input, min) {
-            var n = min - input.length;
-            if (n === 1) {
-                return "Engada un carácter";
-            } else {
-                return "Engada " + n + " caracteres";
-            }
-        },
-        formatInputTooLong: function (input, max) {
-            var n = input.length - max;
-            if (n === 1) {
-                return "Elimine un carácter";
-            } else {
-                return "Elimine " + n + " caracteres";
-            }
-        },
-        formatSelectionTooBig: function (limit) {
-            if (limit === 1 ) {
-                return "Só pode seleccionar un elemento";
-            } else {
-                return "Só pode seleccionar " + limit + " elementos";
-            }
-        },
-        formatLoadMore: function (pageNumber) {
-            return "Cargando máis resultados…";
-        },
-        formatSearching: function () {
-            return "Buscando…";
-        }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_he.js b/core/js/select2/select2_locale_he.js
deleted file mode 100644
index 003854108045a1a517aabf6e6ce69331d63d6fe8..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_he.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-* Select2 Hebrew translation.
-*
-* Author: Yakir Sitbon <http://www.yakirs.net/>
-*/
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "לא נמצאו התאמות"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; },
-        formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; },
-        formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות…"; },
-        formatSearching: function () { return "מחפש…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_hr.js b/core/js/select2/select2_locale_hr.js
deleted file mode 100644
index c29372524b65dbbc08d4d7658d7fad24bf34796e..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_hr.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Select2 Croatian translation.
- *
- * @author  Edi Modrić <edi.modric@gmail.com>
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nema rezultata"; },
-        formatInputTooShort: function (input, min) { return "Unesite još" + character(min - input.length); },
-        formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; },
-        formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; },
-        formatLoadMore: function (pageNumber) { return "Učitavanje rezultata…"; },
-        formatSearching: function () { return "Pretraga…"; }
-    });
-
-    function character (n) {
-        return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova");
-    }
-})(jQuery);
diff --git a/core/js/select2/select2_locale_hu.js b/core/js/select2/select2_locale_hu.js
deleted file mode 100644
index a8c308819285b48dc803a42a67eeb2ba3b2bd723..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_hu.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Hungarian translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nincs találat."; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; },
-        formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; },
-        formatLoadMore: function (pageNumber) { return "Töltés…"; },
-        formatSearching: function () { return "Keresés…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_id.js b/core/js/select2/select2_locale_id.js
deleted file mode 100644
index 547454079ba7ad88e705ad78aa6eb1d19647aecd..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_id.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Indonesian translation.
- * 
- * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Tidak ada data yang sesuai"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); },
-        formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Mengambil data…"; },
-        formatSearching: function () { return "Mencari…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_is.js b/core/js/select2/select2_locale_is.js
deleted file mode 100644
index aecc6cd71940c7be561be0980dcb37cfddd17cec..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_is.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Icelandic translation.
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Ekkert fannst"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); },
-        formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; },
-        formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; },
-        formatSearching: function () { return "Leita…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_it.js b/core/js/select2/select2_locale_it.js
deleted file mode 100644
index d4e24de70000c211dc6e6e1a5169c4bef5fe910b..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_it.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Italian translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nessuna corrispondenza trovata"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; },
-        formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); },
-        formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; },
-        formatSearching: function () { return "Ricerca…"; }
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/core/js/select2/select2_locale_ja.js b/core/js/select2/select2_locale_ja.js
deleted file mode 100644
index 81106e78a80848ad0ff2747f30697caac7d6abc7..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ja.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Japanese translation.
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "該当なし"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; },
-        formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; },
-        formatLoadMore: function (pageNumber) { return "読込中・・・"; },
-        formatSearching: function () { return "検索中・・・"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_ka.js b/core/js/select2/select2_locale_ka.js
deleted file mode 100644
index 366cc2d9c4d909472c54cbfb3d9a197916e9e860..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ka.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Georgian (Kartuli) translation.
- * 
- * Author: Dimitri Kurashvili dimakura@gmail.com
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "ვერ მოიძებნა"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხოვთ შეიყვანოთ კიდევ " + n + " სიმბოლო"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხოვთ წაშალოთ " + n + " სიმბოლო"; },
-        formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიათ მხოლოდ " + limit + " ჩანაწერის მონიშვნა"; },
-        formatLoadMore: function (pageNumber) { return "შედეგის ჩატვირთვა…"; },
-        formatSearching: function () { return "ძებნა…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_ko.js b/core/js/select2/select2_locale_ko.js
deleted file mode 100644
index 1a84d21eae66a17d9e7b32af3070035a3bf9b7fc..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ko.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Korean translation.
- * 
- * @author  Swen Mun <longfinfunnel@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "결과 없음"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; },
-        formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; },
-        formatLoadMore: function (pageNumber) { return "불러오는 중…"; },
-        formatSearching: function () { return "검색 중…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_lt.js b/core/js/select2/select2_locale_lt.js
deleted file mode 100644
index 2e2f950b00dd3193d07d1369afd9c9e282038547..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_lt.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Select2 Lithuanian translation.
- * 
- * @author  CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Atitikmenų nerasta"; },
-        formatInputTooShort: function (input, min) { return "Įrašykite dar" + character(min - input.length); },
-        formatInputTooLong: function (input, max) { return "Pašalinkite" + character(input.length - max); },
-        formatSelectionTooBig: function (limit) {
-        	return "Jūs galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "ą");
-        },
-        formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; },
-        formatSearching: function () { return "Ieškoma…"; }
-    });
-
-    function character (n) {
-        return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į");
-    }
-})(jQuery);
diff --git a/core/js/select2/select2_locale_lv.js b/core/js/select2/select2_locale_lv.js
deleted file mode 100644
index b300ec770f450f784025434b3b4b02b169b0a81f..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_lv.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Latvian translation.
- *
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Sakritību nav"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazāk"; },
-        formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); },
-        formatLoadMore: function (pageNumber) { return "Datu ielāde…"; },
-        formatSearching: function () { return "Meklēšana…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_mk.js b/core/js/select2/select2_locale_mk.js
deleted file mode 100644
index 513562c51bfb30f2d4416ba104a27b8b6f5f8bed..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_mk.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Macedonian translation.
- * 
- * Author: Marko Aleksic <psybaron@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Нема пронајдено совпаѓања"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); },
-        formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); },
-        formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; },
-        formatSearching: function () { return "Пребарување…"; }
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/core/js/select2/select2_locale_ms.js b/core/js/select2/select2_locale_ms.js
deleted file mode 100644
index 262042aab15c4fa811b63adefb2e1b4ae365e736..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ms.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Malay translation.
- * 
- * Author: Kepoweran <kepoweran@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Tiada padanan yang ditemui"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; },
-        formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; },
-        formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; },
-        formatSearching: function () { return "Mencari…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_nl.js b/core/js/select2/select2_locale_nl.js
deleted file mode 100644
index 5b5c4156ce18fd451b1198a6222fbc2cf9f6b12e..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_nl.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Dutch translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Geen resultaten gevonden"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; },
-        formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; },
-        formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; },
-        formatSearching: function () { return "Zoeken…"; }
-    });
-})(jQuery);
\ No newline at end of file
diff --git a/core/js/select2/select2_locale_no.js b/core/js/select2/select2_locale_no.js
deleted file mode 100644
index ab61c082a02fb9d9f7b51097d71f466fb07ad7fe..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_no.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Select2 Norwegian translation.
- *
- * Author: Torgeir Veimo <torgeir.veimo@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Ingen treff"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; },
-        formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; },
-        formatLoadMore: function (pageNumber) { return "Laster flere resultater…"; },
-        formatSearching: function () { return "Søker…"; }
-    });
-})(jQuery);
-
diff --git a/core/js/select2/select2_locale_pl.js b/core/js/select2/select2_locale_pl.js
deleted file mode 100644
index 75054e76578de024ecedb7ad986f7fa8b746428f..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_pl.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Select2 Polish translation.
- * 
- * @author  Jan Kondratowicz <jan@kondratowicz.pl>
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Brak wyników"; },
-        formatInputTooShort: function (input, min) { return "Wpisz jeszcze" + character(min - input.length, "znak", "i"); },
-        formatInputTooLong: function (input, max) { return "Wpisana fraza jest za długa o" + character(input.length - max, "znak", "i"); },
-        formatSelectionTooBig: function (limit) { return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); },
-        formatLoadMore: function (pageNumber) { return "Ładowanie wyników…"; },
-        formatSearching: function () { return "Szukanie…"; }
-    });
-
-    function character (n, word, pluralSuffix) {
-        return " " + n + " " + word + (n == 1 ? "" : n%10 < 5 && n%10 > 1 && (n%100 < 5 || n%100 > 20) ? pluralSuffix : "ów");
-    }
-})(jQuery);
diff --git a/core/js/select2/select2_locale_pt-BR.js b/core/js/select2/select2_locale_pt-BR.js
deleted file mode 100644
index ac4969acfbb554609abb3b8251a185fe717a4b46..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_pt-BR.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Brazilian Portuguese translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nenhum resultado encontrado"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Digite mais " + n + " caracter" + (n == 1? "" : "es"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); },
-        formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; },
-        formatSearching: function () { return "Buscando…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_pt-PT.js b/core/js/select2/select2_locale_pt-PT.js
deleted file mode 100644
index cced7cf3ec1c55b87be0f69c7a338ba82b66a113..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_pt-PT.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Portuguese (Portugal) translation
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nenhum resultado encontrado"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); },
-        formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; },
-        formatSearching: function () { return "A pesquisar…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_ro.js b/core/js/select2/select2_locale_ro.js
deleted file mode 100644
index 87eca4cf7405a86fcbe8d74cd3717cf7eb06a7fa..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ro.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Select2 Romanian translation.
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nu a fost găsit nimic"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); },
-        formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); },
-        formatLoadMore: function (pageNumber) { return "Se încarcă…"; },
-        formatSearching: function () { return "Căutare…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_rs.js b/core/js/select2/select2_locale_rs.js
deleted file mode 100644
index 300c01bc5e517fa474b06b83c503aac69c0202c7..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_rs.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Serbian translation.
- *
- * @author  Limon Monte <limon.monte@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Ništa nije pronađeno"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar još " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Obrišite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11	 ? "" : "a"); },
-        formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11	 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); },
-        formatLoadMore: function (pageNumber) { return "Preuzimanje još rezultata…"; },
-        formatSearching: function () { return "Pretraga…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_ru.js b/core/js/select2/select2_locale_ru.js
deleted file mode 100644
index 0f45ce0dddf5555351ee21bb6acd827fded1426f..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_ru.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Select2 Russian translation.
- *
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Совпадений не найдено"; },
-        formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще" + character(min - input.length); },
-        formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; },
-        formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); },
-        formatLoadMore: function (pageNumber) { return "Загрузка данных…"; },
-        formatSearching: function () { return "Поиск…"; }
-    });
-
-    function character (n) {
-        return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов");
-    }
-})(jQuery);
diff --git a/core/js/select2/select2_locale_sk.js b/core/js/select2/select2_locale_sk.js
deleted file mode 100644
index 772f304aca999ab8b5d7ca1456a5a57bec5368f5..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_sk.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Select2 Slovak translation.
- *
- * Author: David Vallner <david@vallner.net>
- */
-(function ($) {
-    "use strict";
-    // use text for the numbers 2 through 4
-    var smallNumbers = {
-        2: function(masc) { return (masc ? "dva" : "dve"); },
-        3: function() { return "tri"; },
-        4: function() { return "štyri"; }
-    }
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Nenašli sa žiadne položky"; },
-        formatInputTooShort: function (input, min) {
-            var n = min - input.length;
-            if (n == 1) {
-                return "Prosím zadajte ešte jeden znak";
-            } else if (n <= 4) {
-                return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky";
-            } else {
-                return "Prosím zadajte ešte ďalších "+n+" znakov";
-            }
-        },
-        formatInputTooLong: function (input, max) {
-            var n = input.length - max;
-            if (n == 1) {
-                return "Prosím zadajte o jeden znak menej";
-            } else if (n <= 4) {
-                return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej";
-            } else {
-                return "Prosím zadajte o "+n+" znakov menej";
-            }
-        },
-        formatSelectionTooBig: function (limit) {
-            if (limit == 1) {
-                return "Môžete zvoliť len jednu položku";
-            } else if (limit <= 4) {
-                return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky";
-            } else {
-                return "Môžete zvoliť najviac "+limit+" položiek";
-            }
-        },
-        formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky…"; },
-        formatSearching: function () { return "Vyhľadávanie…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_sv.js b/core/js/select2/select2_locale_sv.js
deleted file mode 100644
index d611189a593d4e1a77c36765da67d9c4c20a6dd6..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_sv.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Swedish translation.
- *
- * Author: Jens Rantil <jens.rantil@telavox.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Inga träffar"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; },
-        formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; },
-        formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; },
-        formatSearching: function () { return "Söker…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_th.js b/core/js/select2/select2_locale_th.js
deleted file mode 100644
index df59bdac36de196973cef4d3045aa013daf45d20..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_th.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Thai translation.
- *
- * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "ไม่พบข้อมูล"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; },
-        formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; },
-        formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม…"; },
-        formatSearching: function () { return "กำลังค้นข้อมูล…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_tr.js b/core/js/select2/select2_locale_tr.js
deleted file mode 100644
index f834dad2b892081577424b85a54f2e1e0c3501cb..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_tr.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Select2 Turkish translation.
- * 
- * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Sonuç bulunamadı"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; },
-        formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; },
-        formatLoadMore: function (pageNumber) { return "Daha fazla…"; },
-        formatSearching: function () { return "Aranıyor…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_uk.js b/core/js/select2/select2_locale_uk.js
deleted file mode 100644
index 8d31a056080bae63097722869825ccf2cd664f32..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_uk.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Select2 Ukrainian translation.
- * 
- * @author  bigmihail <bigmihail@bigmir.net>
- * @author  Uriy Efremochkin <efremochkin@uriy.me>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatMatches: function (matches) { return character(matches, "результат") + " знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації."; },
-        formatNoMatches: function () { return "Нічого не знайдено"; },
-        formatInputTooShort: function (input, min) { return "Введіть буль ласка ще " + character(min - input.length, "символ"); },
-        formatInputTooLong: function (input, max) { return "Введіть буль ласка на " + character(input.length - max, "символ") + " менше"; },
-        formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише " + character(limit, "елемент"); },
-        formatLoadMore: function (pageNumber) { return "Завантаження даних…"; },
-        formatSearching: function () { return "Пошук…"; }
-    });
-
-    function character (n, word) {
-        return n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів");
-    }
-})(jQuery);
diff --git a/core/js/select2/select2_locale_vi.js b/core/js/select2/select2_locale_vi.js
deleted file mode 100644
index 5dbc275361fae4582385d159f0c52df9b01104d7..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_vi.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Select2 Vietnamese translation.
- * 
- * Author: Long Nguyen <olragon@gmail.com>
- */
-(function ($) {
-    "use strict";
-
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "Không tìm thấy kết quả"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); },
-        formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); },
-        formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả…"; },
-        formatSearching: function () { return "Đang tìm…"; }
-    });
-})(jQuery);
-
diff --git a/core/js/select2/select2_locale_zh-CN.js b/core/js/select2/select2_locale_zh-CN.js
deleted file mode 100644
index 6add3c525182b317521ff2d057cd4c07c577418b..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_zh-CN.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Select2 Chinese translation
- */
-(function ($) {
-    "use strict";
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "没有找到匹配项"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";},
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";},
-        formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; },
-        formatLoadMore: function (pageNumber) { return "加载结果中…"; },
-        formatSearching: function () { return "搜索中…"; }
-    });
-})(jQuery);
diff --git a/core/js/select2/select2_locale_zh-TW.js b/core/js/select2/select2_locale_zh-TW.js
deleted file mode 100644
index f072381faaead8b727e371ea50796eeee30b208c..0000000000000000000000000000000000000000
--- a/core/js/select2/select2_locale_zh-TW.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Select2 Traditional Chinese translation
- */
-(function ($) {
-    "use strict";
-    $.extend($.fn.select2.defaults, {
-        formatNoMatches: function () { return "沒有找到相符的項目"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";},
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";},
-        formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; },
-        formatLoadMore: function (pageNumber) { return "載入中…"; },
-        formatSearching: function () { return "搜尋中…"; }
-    });
-})(jQuery);
diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore
index 0c14c5a59b7370f848cdc444060132ca30b4c0e5..c15b973a80ebbf954f3d66ff941005df88976bfa 100644
--- a/core/vendor/.gitignore
+++ b/core/vendor/.gitignore
@@ -23,3 +23,12 @@ jquery/**
 # handlebars
 handlebars/**
 !handlebars/handlebars.js
+
+# select2
+select2/**
+!select2/select2.js
+!select2/select2.css
+!select2/select2.png
+!select2/select2x2.png
+!select2/select2-spinner.gif
+!select2/LICENSE
diff --git a/core/js/select2/LICENSE b/core/vendor/select2/LICENSE
similarity index 100%
rename from core/js/select2/LICENSE
rename to core/vendor/select2/LICENSE
diff --git a/core/css/select2/select2-spinner.gif b/core/vendor/select2/select2-spinner.gif
similarity index 100%
rename from core/css/select2/select2-spinner.gif
rename to core/vendor/select2/select2-spinner.gif
diff --git a/core/css/select2/select2.css b/core/vendor/select2/select2.css
similarity index 100%
rename from core/css/select2/select2.css
rename to core/vendor/select2/select2.css
diff --git a/core/js/select2/select2.js b/core/vendor/select2/select2.js
similarity index 100%
rename from core/js/select2/select2.js
rename to core/vendor/select2/select2.js
diff --git a/core/css/select2/select2.png b/core/vendor/select2/select2.png
similarity index 100%
rename from core/css/select2/select2.png
rename to core/vendor/select2/select2.png
diff --git a/core/css/select2/select2x2.png b/core/vendor/select2/select2x2.png
similarity index 100%
rename from core/css/select2/select2x2.png
rename to core/vendor/select2/select2x2.png
diff --git a/settings/apps.php b/settings/apps.php
index c1e3e51bd7910808f0c34cf03fddb8cd34460984..99d4d99975b5d0341f204c85d36c4146fdd68f84 100644
--- a/settings/apps.php
+++ b/settings/apps.php
@@ -28,8 +28,8 @@ OC_Util::checkAdminUser();
 \OC_Util::addVendorScript('handlebars/handlebars');
 \OCP\Util::addScript("settings", "settings");
 \OCP\Util::addStyle("settings", "settings");
-\OCP\Util::addScript('core', 'select2/select2');
-\OCP\Util::addStyle('core', 'select2/select2');
+\OC_Util::addVendorScript('select2/select2');
+\OC_Util::addVendorStyle('select2/select2');
 \OCP\Util::addScript("settings", "apps");
 \OC_App::setActiveNavigationEntry( "core_apps" );
 
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index bcf57e12a89e173292dbdb3b9d0a7d1f986d6233..0033845c74ec8802e1ab0973233475d827d443a6 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -14,8 +14,8 @@ script('settings', 'settings');
 script( "settings", "admin" );
 script( "settings", "log" );
 script( 'core', 'multiselect' );
-script('core', 'select2/select2');
-style('core', 'select2/select2');
+vendor_script('select2/select2');
+vendor_style('select2/select2');
 script('core', 'setupchecks');
 
 $levels = array('Debug', 'Info', 'Warning', 'Error', 'Fatal');