Updated Branches: refs/heads/master f87eed5b7 -> 8f34dc192
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_<locale>.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 <[email protected]> Reviewed by: Brian Federle <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cd056f45 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cd056f45 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cd056f45 Branch: refs/heads/master Commit: cd056f4572130edb8edc315e626c6fab718730c5 Parents: f87eed5 Author: Brian Federle <[email protected]> Authored: Tue Aug 13 15:14:53 2013 -0700 Committer: Brian Federle <[email protected]> Committed: Tue Aug 13 15:32:08 2013 -0700 ---------------------------------------------------------------------- ui/scripts/plugins.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cd056f45/ui/scripts/plugins.js ---------------------------------------------------------------------- diff --git a/ui/scripts/plugins.js b/ui/scripts/plugins.js index 96ed229..50da509 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) {
