如何为moment.js全局设置语言

Non*_*one 4 momentjs

我得到的例子:1天前.我需要的是设置不同的语言,例如de.有什么建议怎么办?

moment(Date.now()).fromNow()
Run Code Online (Sandbox Code Playgroud)

我试过这个:

<script>
    var moment = moment();
    moment.locale('de');
</script>
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:

时刻不是一个功能

Vin*_*zoC 11

查看有关如何全局更改区域设置的官方文档.

请注意,您必须导入区域设置数据(例如moment-with-locales.min.js)

这是一个工作示例:

moment.locale('de');
console.log(moment(Date.now()).fromNow()); //vor ein paar Sekunden
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

您还可以仅使用给定区域设置的数据(例如de):

moment.locale('de');
console.log(moment(Date.now()).fromNow()); //vor ein paar Sekunden
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/de.js"></script>
Run Code Online (Sandbox Code Playgroud)

此外,您正在重新定义代码中的时刻,这是不正确的

var moment = moment();
Run Code Online (Sandbox Code Playgroud)

  • 对于 typescript 或 nodejs 应用程序,您应该在使用 `moment.locale('es')` 之前使用 `require('moment/locale/es')` (2认同)

Gap*_*sym 10

编辑:在当前版本的 moment.js 中,此解决方案仍然有效,但它会向控制台输出一条消息,指出您应该使用名为 updateLocale 的新方法。所以新的解决方案应该是这样的:

更新的解决方案

import moment from 'moment';
import localization from 'moment/locale/fr';

moment.updateLocale('fr', localization);
Run Code Online (Sandbox Code Playgroud)

以前的解决方案

您可以像这样全局更改 moment 语言环境:

import moment from 'moment';
import localization from 'moment/locale/fr';

moment.locale('fr', localization);
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你。

  • 这是我能够获得最新版本来处理本机反应的唯一方法,通过纱线安装时刻 (2认同)