I am trying to Globalize. Below is my project configuration at present:
- At present I am not using the node environment, specifically not using either of npm or bower, rather using NuGet as package manager.
- Module system: AMD
- On application startup, using
require.js
.config()
to specify the paths to different external modules. - In the actual application (type)scripts, using,
import {...} from "...";
to load the dependencies
Just wondering if there is a way to use Globalize
and cldr
in my project, avoiding npm and bower?
EDIT
So this is how I did it in the end:
my require js config:
require.config({ baseUrl: baseUrl, paths: { /*requirejs plugins*/ 'json': baseUrl + "/Scripts/requirejs-plugins/json", 'text': baseUrl + "/Scripts/text", /*CLDR and Globalize*/ 'cldr': baseUrl + "/Scripts/cldr", 'cldr/event': baseUrl + "/Scripts/cldr/event", 'cldr/supplemental': baseUrl + "/Scripts/cldr/supplemental", 'cldr/unresolved': baseUrl + "/Scripts/cldr/unresolved", 'cldr-data': baseUrl + "/Content/cldr-data", 'Globalize': baseUrl + "/Scripts/globalize", 'Globalize.number': baseUrl + "/Scripts/globalize/number", 'Globalize.date': baseUrl + "/Scripts/globalize/date" }, shim: { 'cldr': { exports: "cldr" }, 'cldr/event': { deps: ["cldr"] }, 'cldr/supplement': { deps: ["cldr"] }, 'cldr/unresolved': { deps: ["cldr"] }, 'Globalize': { deps: [ "cldr", "json!cldr-data/supplemental/likelySubtags.json", "json!cldr-data/main/en/numbers.json", "json!cldr-data/main/en/ca-gregorian.json" ], exports: "Globalize" }, 'Globalize.number': { deps: [ "cldr", "Globalize", "cldr/event", "cldr/supplemental" ] }, 'Globalize.date': { deps: [ "cldr", "Globalize", "Globalize.number", "cldr/event", "cldr/supplemental" ] } } }); require(["cldr", "Globalize", "Globalize.number", "Globalize.date"], function() { });
Obviously I also need to change the
number.js
anddate.js
as follows:number.js
:...// AMD define([ "cldr", //"../globalize", "Globalize", "cldr/event", "cldr/supplemental" ], factory );...
date.js
:...// AMD define([ "cldr", /*"../globalize", "./number",*/ "Globalize", "Globalize.number", "cldr/event", "cldr/supplemental" ], factory );...
And finally used it like:
const Globalize = require("Globalize"); //Following dependencies can also be loaded by seperate http call to server, such as $.ajax const likelySubtags = require("json!cldr-data/supplemental/likelySubtags.json"); const enNumbers = require("json!cldr-data/main/en/numbers.json"); const enGregorianCal = require("json!cldr-data/main/en/ca-gregorian.json"); ... Globalize.load(likelySubtags); Globalize.load(enNumbers); Globalize.load(enGregorianCal); var globEn = Globalize("en"); var numFormatter = globEn.numberFormatter({ maximumFractionDigits:2}); console.log(".numberFormatter()(Math.PI)->", numFormatter(Math.PI)); var dateFormatter = globEn.dateFormatter({ skeleton: "GyMMMdhms" }); console.log("dateFormatter(new Date())->", dateFormatter(new Date()));
Still like to hear from you on this :)