Globalize.format不适用于其他语言环境或日期格式

时间:2014-02-26 16:51:01

标签: javascript jquery datetime localization javascript-globalize

我对现代Javascript(我大约十年前一直使用它)相对较新,并且遇到了globalize.js的问题。

这是我与全球化有关的内容

<script src ="{% static "js/jquery-2.1.0.min.js" %}" type="text/javascript"></script>
<script src ="{% static "js/node_modules/globalize/dist/globalize.min.js" %}" type="text/javascript"></script>
<script>
    $.get( "{% static "json/en/ca-gregorian.json" %}", Globalize.load );
    $.get( "{% static "json/de/ca-gregorian.json" %}", Globalize.load );
    $.get( "{% static "json/supplemental/likelySubtags.json" %}", Globalize.load );
    $.get( "{% static "json/supplemental/timeData.json" %}", Globalize.load );
    $.get( "{% static "json/supplemental/weekData.json" %}", Globalize.load );
    console.log("short:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "short" }));
    console.log("medium:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "medium" }));
    console.log("long:" + Globalize.format( new Date( 2010, 10, 30, 17, 55 ), { datetime: "long" }, "de" ));
</script>

这是输出:

short:11/30/2010 5:55:00 PM (index):21
medium:11/30/2010 5:55:00 PM (index):22
Uncaught TypeError: Cannot read property 'calendar' of null 

正如您所看到的,我遇到了两个问题 - {datetime:}参数似乎根本不会影响输出。更重要的是,我无法弄清楚为什么它不能将日期翻译成其他语言。我错过了一个包含?其问题列表中的其他主题指向这是我需要的所有内容,以便本地化日期。

2 个答案:

答案 0 :(得分:0)

我建议你改用它:

new Date().toLocaleDateString('de', { year: 'numeric', month: 'long', day: 'numeric' })

甚至:

new Date().toLocaleDateString(Globalize.culture().name, { year: 'numeric', month: 'long', day: 'numeric' })

Globalize.culture().name假设您已手动或通过为每个文件导入globalize.culture.{culture}[.min].js文件为全局化添加了可能的文化,例如globalize.culture.fr.min.js

答案 1 :(得分:0)

关注使用Globalize 1.x的示例:

还有一个使用$.get调用来动态加载CLDR数据的示例globalize.js: dynamic loading

如果您有任何问题,请告诉我。