我正在使用Globalize.js通过以下方式为de-CH加载CLDR:
$.when(
$.get('/json/cldr/likelySubtags.json'),
$.get('/json/cldr/timeData.json'),
$.get('/json/cldr/de-ch/numbers.json'),
$.get('/json/cldr/de-ch/ca-gregorian.json')
)
.fail(function (xhr, status, error) {
console.log("Problem loading globalization data: status: " + status + ", error: " + error);
})
.then(function () {
// Normalize $.get results, we only need the JSON, not the request statuses.
return [].slice.apply(arguments, [0]).map(function (result) {
return result[0];
});
})
.then(Globalize.load)
.then(function () {
try {
// Globalization is loaded
Globalize.locale('de-ch');
console.log("after locale");
console.log(Globalize.parseDate("5/20/2018"));
console.log(Globalize.parseDate("20.05.2018"));
} catch (ex3) {
console.log(ex3);
}
});
浏览器显示四个.json文件已正确加载。我还可以通过在第一个.then调用中添加断点来确认这一点。但是,当调用parseDate时,我仍然会收到此异常:
Error: E_MISSING_BUNDLE: {"locale":"de-ch"}
at createError (cldr.js:328)
at validate (cldr.js:344)
at Cldr.main (cldr.js:654)
at dateExpandPattern (date.js:109)
at Function.Globalize.dateParser.Globalize.dateParser (date.js:1788)
at Function.Globalize.parseDate.Globalize.parseDate (date.js:1837)
at my.js:210
当我在date.js:109检查错误时,它将调用:
result = cldr.main([
"dates/calendars/gregorian/dateTimeFormats/availableFormats",
skeleton
]);
所以它正在寻找main->“ dates / calendars / gregorian / dateTimeFormats / availableFormats”,该文件可以在de-CH的.json文件中找到。
上面的示例(以及函数和行号)使用globalize 1.0.0。我将程序包更新为1.4.0,并将.json文件更新为最新文件,并且仅更改了堆栈跟踪中的函数名称和行号,效果完全相同。
有什么问题吗?
答案 0 :(得分:0)
我发现了问题:Globalize.locale('de-CH')工作时,Globalize.locale('de-ch')失败了,因此语言环境名称的大小写很重要。