/* Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ // // dojo i18n! plugin // // We choose to include our own plugin in hopes of leveraging functionality already contained in dojo // and thereby reducing the size of the plugin compared to various loader implementations. Naturally, this // allows AMD loaders to be used without their plugins. // CAUTION, this module may return improper results if the AMD loader does not support toAbsMid and client // code passes relative plugin resource module ids. In that case, you should consider using the i18n! plugin // that comes with your loader. define(["dojo"], function(dojo) { var nlsRe= // regexp for reconstructing the master bundle name from parts of the regexp match // nlsRe.exec("foo/bar/baz/nls/en-ca/foo") gives: // ["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"] // nlsRe.exec("foo/bar/baz/nls/foo") gives: // ["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""] // so, if match[5] is blank, it means this is the top bundle definition. // courtesy of http://requirejs.org /(^.*(^|\/)nls(\/|$))([^\/]*)\/?([^\/]*)/, getAvailableLocales= function( root, locale, bundlePath, bundleName ){ // return a vector of module ids containing all available locales with respect to the target locale // For example, assuming: // * the root bundle indicates specific bundles for "fr" and "fr-ca", // * bundlePath is "myPackage/nls" // * bundleName is "myBundle" // Then a locale argument of "fr-ca" would return // ["myPackage/nls/myBundle", "myPackage/nls/fr/myBundle", "myPackage/nls/fr-ca/myBundle"] // Notice that bundles are returned least-specific to most-specific, starting with the root. for(var result= [bundlePath + bundleName], localeParts= locale.split("-"), current= "", i= 0; i