This LCID code is also the one returned by the following methods: Xrm.Page.context.getUserLcid and Xrm.Page.context.geOrgLcid (the language of the user and the base language of the organization).
Moment.js is a powerful library to manipulate dates in JavaScript and it has support for internationalization but accepts only a locale string ("en", "it", ...) and not the LCID value returned by the above methods. I created a small JavaScript library (crm_lang.js) that accepts the 45 LCID CRM codes in order to return their corresponding Moment.js locale strings. The library can be downloaded from Technet Gallery:
http://gallery.technet.microsoft.com/scriptcenter/Momentjs-and-Dynamics-CRM-8bd3a264
Moment.js is very useful when comes to manipulate dates (add or subtracts days) and more important for this sample to display the date in various formats:
var now = moment(); alert(now.format()); // "2015-03-03T08:02:17-05:00" (ISO 8601) alert(now.format("dddd, MMMM Do YYYY, h:mm:ss a")); // "Tuesday, March 3rd 2015, 3:25:50 pm"As I wrote before it supports internationalization, but it requires the locale string:
var now = moment(); now.locale("es"); // set the language to Spanish alert(now.format("LLLL")); // "martes, 3 de marzo de 2015 8:00"with the library I created, it's easier to set the right locale:
var now = moment(); var userLcid = Xrm.Page.context.getUserLcid(); //suppose is 1043 (Dutch) var userLocale = CRMLanguages.getMomentLocale(userLcid); now.locale(userLocale); // or now.locale(CRMLanguages.getMomentLocale(Xrm.Page.context.getUserLcid())); alert(now.format("LLL")); // "3 maart 2015 08:00"Moment.js constructor accepts a standard JavaScript date object, this makes easier to works with CRM form values:
var createdOn = Xrm.Page.getAttribute("createdon").getValue(); // get the date value var m_date = moment(createdOn); // create the Moment.js object m_date.locale(CRMLanguages.getMomentLocale(Xrm.Page.context.getUserLcid())); // set the language m_date.add(3, "days"); // we add 3 days to the createdon date alert(m_date.format("LLL")); // "2015年3月6日午前8時0分" //1041 JapaneseIt's also possible to return the date as a standard JS object, the method is toDate()
// following the previous code var threeDaysLater = m_date.toDate(); Xrm.Page.getAttribute("new_datecheck").setValue(threeDaysLater);As you can see Moment.js can be very useful, make sure you read the documentation http://momentjs.com/docs/ and if you need a multi language support you can use my library. LLAP!
0 comments:
Post a Comment