12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * Plugin to load a single locale. For example, load!en returns
- * an Object like { currencies: ..., numbers: ..., "ca-gregorian": ... }.
- * Used by locales! plugin.
- */
- define([
- "./calendars",
- "./common",
- "require",
- "module",
- "requirejs-text/text" // just so builder knows we will be using that module
- ], function (calendars, common, require, module) {
- return {
- id: module.id,
- load: function (locale, callerRequire, onload, loaderConfig) {
- // Compute dependencies to require().
- // For specified locale, load JSON files for its "currencies", "numbers" data.
- var jsonElements = ["currencies", "numbers"];
- var calendarsToLoad = [];
- var region = common._getRegion(locale);
- var supportedCalendars = common._getSupportedCalendars(region);
- supportedCalendars.forEach(function (calendar) {
- var calendarName = "ca-" + (calendar === "gregory" ? "gregorian" : calendar);
- // Add json data
- jsonElements.push(calendarName);
- // Add calendar module
- if (calendar !== "gregory") {
- calendarsToLoad.push(calendar);
- }
- });
- var dependencies;
- // Check if there is a layer
- var config = module.config();
- if (config[locale]) {
- dependencies = jsonElements = [config._layerMid + "_" + locale];
- } else {
- dependencies = jsonElements.map(function (element) {
- return "requirejs-text/text!../cldr/" + locale + "/" + element + ".json";
- });
- }
- var calendarDependencies = calendarsToLoad.map(function (calendar) {
- return "../calendars/" + calendars.dependencies[calendar].calendar;
- });
- dependencies = dependencies.concat(calendarDependencies);
- // Load all the JSON files requested, and any non-gregorian calendars
- // that are required. Return the locale data in a hash
- require(dependencies, function () {
- var dataAsArray = arguments, dataAsHash = {};
- jsonElements.forEach(function (element, idx) {
- if (config[locale]) {
- dataAsHash = dataAsArray[0];
- } else {
- dataAsHash[element] = JSON.parse(dataAsArray[idx]);
- }
- });
- calendarsToLoad.forEach(function (cal, idx) {
- calendars.calendarMap[cal] = dataAsArray[idx + jsonElements.length];
- });
- if (loaderConfig.isBuild) {
- dataAsHash.calendars = calendarsToLoad.map(function (calendar) {
- return calendars.dependencies[calendar].calendar;
- });
- }
- onload(dataAsHash);
- });
- }
- };
- });
|