From cd056f4572130edb8edc315e626c6fab718730c5 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 13 Aug 2013 15:14:53 -0700 Subject: [PATCH] UI plugin framework: Support plugin internationalization Allows UI plugins to contribute their own internationalized strings to the global js dictionary. Each plugin would define a dictionary.js and several dictionary_.js files. As each plugin is loaded, the appropriate plugin dictionary is loaded into the global js dictionary (with the global dictionary taking precedence in the event of a conflict). Original author: Chris Suich Reviewed by: Brian Federle --- ui/scripts/plugins.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ui/scripts/plugins.js b/ui/scripts/plugins.js index 96ed229f77a..50da509eaa8 100644 --- a/ui/scripts/plugins.js +++ b/ui/scripts/plugins.js @@ -84,6 +84,13 @@ var css = basePath + id + '.css'; var configJS = type == 'plugins' ? basePath + 'config' : null; + var pluginDictionary; + var locale; + if (type == 'plugins') { + pluginDictionary = basePath + 'dictionary'; + locale = $.cookie('lang'); + } + if (configJS) { // Load config metadata require([configJS]); @@ -100,6 +107,29 @@ }) ); + if (pluginDictionary) { + // Callback for extending the dictionary with new entries + var addToDictionary = function() { + var additions = cloudStack[type][id].dictionary; + $.extend(dictionary, additions); + }; + + // Only add a suffix if the locale is defined and not english/US + var suffix = ''; + if (locale && (locale != '' && locale != 'en' & locale != 'en_US')) + suffix = '_'+locale; + + // Attempt to load the locale's dictionary + require([pluginDictionary+suffix], addToDictionary, function() { + // If the load failed and there was no suffix, don't try again + if (!suffix) + return; + + // Otherwise try to load the default dictionary + require([pluginDictionary], addToDictionary); + }); + } + loadedPlugins = loadedPlugins + 1; if (loadedPlugins === pluginTotal) {