)|(<\/div>)/g, '')
+ .replace(/([\n\r]+ ?)+/g, '\n')
+ .replace(/[\t ]+/g, ' ');
+
+ return {
+ namespace: namespace,
+ translations: translations,
+ };
+ });
+ return fallbackCache[namespace];
+}
+
+function initDict(language) {
+ return getAdminNamespaces().then(function (namespaces) {
+ return Promise.all(namespaces.map(function (namespace) {
+ return loadLanguage(language, namespace).then(function (translations) {
+ return { namespace: namespace, translations: translations };
+ }).then(function (params) {
+ var namespace = params.namespace;
+ var translations = params.translations;
+
+ var str = Object.keys(translations).map(function (key) {
+ return translations[key];
+ }).join('\n');
+
+ return {
+ namespace: namespace,
+ translations: str
+ };
+ })
+ // TODO: Use translator to get title for admin route?
+ .catch(function () {
+ return fallback(namespace);
+ })
+ .catch(function () {
+ return { namespace: namespace, translations: '' };
+ })
+ .then(function (params) {
+ params.translations = params.translations.replace(/\{[^\{\}]*\}/g, '');
+ return params;
+ });
+ }));
+ });
+}
+
+var cache = {};
+
+function getDict(language, term) {
+ cache[language] = cache[language] || initDict(language);
+ return cache[language];
+}
+
+module.exports.getDict = getDict;
diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js
index c3220ed094..9817099ef5 100644
--- a/src/socket.io/admin.js
+++ b/src/socket.io/admin.js
@@ -15,6 +15,7 @@ var emailer = require('../emailer');
var db = require('../database');
var analytics = require('../analytics');
var index = require('./index');
+var getAdminSearchDict = require('../admin/search').getDict;
var SocketAdmin = {
user: require('./admin/user'),
@@ -277,5 +278,18 @@ SocketAdmin.deleteAllEvents = function (socket, data, callback) {
events.deleteAll(callback);
};
+SocketAdmin.getSearchDict = function (socket, data, callback) {
+ user.getSettings(socket.uid, function (err, settings) {
+ if (err) {
+ return callback(err);
+ }
+ var lang = settings.userLang || meta.config.defaultLang || 'en_GB';
+ getAdminSearchDict(lang)
+ .then(function (results) {
+ callback(null, results);
+ }, callback);
+ });
+};
+
module.exports = SocketAdmin;
diff --git a/src/views/admin/appearance/themes.tpl b/src/views/admin/appearance/themes.tpl
index e67c6a2755..8203c84e8b 100644
--- a/src/views/admin/appearance/themes.tpl
+++ b/src/views/admin/appearance/themes.tpl
@@ -1,6 +1,6 @@
- Checking for installed themes...
+ [[admin/appearance/themes:checking-for-installed]]
diff --git a/src/views/admin/partials/menu.tpl b/src/views/admin/partials/menu.tpl
index 0fea719e46..9bc0c48d7e 100644
--- a/src/views/admin/partials/menu.tpl
+++ b/src/views/admin/partials/menu.tpl
@@ -149,7 +149,23 @@
diff --git a/src/views/admin/partials/theme_list.tpl b/src/views/admin/partials/theme_list.tpl
index 1517eb5c9e..066f43cdd8 100644
--- a/src/views/admin/partials/theme_list.tpl
+++ b/src/views/admin/partials/theme_list.tpl
@@ -10,13 +10,13 @@
- Homepage
+ [[admin/appearance/themes:homepage]]