如何改变moment.js的语言

我正在尝试改变由moment.js设置的date的语言。 默认的是英文,但我想用德文。 这些是我试过的:

var now = moment().format('LLL').lang('de'); 

给南,没有工作。

 var now = moment('de').format('LLL'); 

没有反应,甚至没有工作。

 var now = moment().format('LLL','de'); 

没有改变,仍然是英语,没有工作。

这怎么可能?

你需要moment.lang( WARNINGlang()2.8.0被弃用,改用locale() ):

 moment.lang("de").format('LLL'); 

http://momentjs.com/docs/#/i18n/


从v2.8.1开始, moment.locale('de')设置本地化,但不会返回。 一些例子:

 var march = moment('2017-03') console.log(march.format('MMMM')) // 'March' moment.locale('de') // returns the new locale, in this case 'de' console.log(march.format('MMMM')) // 'March' still, since the instance was before the locale was set var deMarch = moment('2017-03') console.log(deMarch.format('MMMM')) // 'März' // You can, however, change just the locale of a specific moment march.locale('es') console.log(march.format('MMMM')) // 'Marzo' 

总而言之,在全局moment调用locale设置为所有未来moment设置区域,但不返回moment 。 在实例上调用locale ,集合是针对该实例的,并返回该实例。

最快的方法:与鲍尔一起安装

我只是安装了de.js和链接de.js作为JavaScript资源在我的HTML项目。

bower install moment --save

您也可以手动下载moment.jsde.js

在项目中链接“de.js”

在我的主项目文件中链接de.js自动更改所有对moment类及其方法的访问的语言环境。

不再需要做一点时间了moment.locale("de"). 或者moment.lang("de"). 在源代码中。

只需链接您所需的区域设置,如下所示:

 <script src="/bower_components/moment/moment.js"></script> <script src="/bower_components/moment/locale/de.js"></script> 

或者,如果您通过右键单击下载了moment.js 1990ies-style,则可以在没有bower_componentspath的情况下链接这些库,在大多数情况下仍然可以正常工作。

随着时间的推移2.8以上,做到以下几点:

 moment.locale("de").format('LLL'); 

http://momentjs.com/docs/#/i18n/

您需要在脚本中添加moment.lang(navigator.language)

还必须添加要显示的每个国家区域设置:例如对于GB或FR,您需要在moment.js库中添加该区域设置格式。 这个格式的例子在momentjs文档中可用。 如果你不在moment.js中添加这个格式,那么总是会select美国的语言环境,因为这是我目前看到的唯一一个。

对于气象用户:

在meteor默认情况下不会安装时间区域设置,只有默认安装的“en”区域设置。

所以你使用的代码正确显示在其他答案:

 moment.locale('it').format('LLL'); 

但在安装所需的语言环境之前,它将保持英语。

有一个很好的,干净的方式来添加meteor时刻的个别区域(由rzymek提供)。

按照通常的meteor方式安装时间包:

 meteor add rzymek:moment 

然后,只需添加您需要的语言环境,例如意大利语:

 meteor add rzymek:moment-locale-it 

或者,如果您真的想要添加所有可用的语言环境(为您的页面添加大约30k):

 meteor add rzymek:moment-locales 

我不得不导入语言:

 import moment from 'moment' import 'moment/locale/es' // without this line it didn't work moment.locale('es') 

然后像你平时那样使用时刻

 alert(moment(date).fromNow()) 

当我使用webpack与gulp和朋友( 这个发生器为我设置了一切),我不得不改变bower.json文件。 我必须覆盖当前包的默认导入,并select所有语言附带的文件:

 "overrides": { "moment": { "main": [ "min/moment-with-locales.min.js" ] } } 

这是我完整的bower.json文件:

 { "name": "html5", "version": "0.0.0", "dependencies": { "angular-animate": "~1.4.2", "angular-cookies": "~1.4.2", "angular-touch": "~1.4.2", "angular-sanitize": "~1.4.2", "angular-messages": "~1.4.2", "angular-ui-router": "~0.2.15", "bootstrap-sass": "~3.3.5", "angular-bootstrap": "~0.13.4", "malarkey": "yuanqing/malarkey#~1.3.1", "angular-toastr": "~1.5.0", "moment": "~2.10.6", "animate.css": "~3.4.0", "angular": "~1.4.2", "lodash": "^4.13.1", "angular-moment": "^0.10.3", "angularLocalStorage": "ngStorage#^0.3.2", "ngstorage": "^0.3.10" }, "devDependencies": { "angular-mocks": "~1.4.2" }, "overrides": { "bootstrap-sass": { "main": [ "assets/stylesheets/_bootstrap.scss", "assets/fonts/bootstrap/glyphicons-halflings-regular.eot", "assets/fonts/bootstrap/glyphicons-halflings-regular.svg", "assets/fonts/bootstrap/glyphicons-halflings-regular.ttf", "assets/fonts/bootstrap/glyphicons-halflings-regular.woff", "assets/fonts/bootstrap/glyphicons-halflings-regular.woff2" ] }, "moment": { "main": [ "min/moment-with-locales.min.js" ] } }, "resolutions": { "angular": "~1.4.2" } } 

随着时刻2.18.1:

  moment.locale("de"); var m = moment().format("LLL") 
 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MomentJS</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> <script type="text/javascript" src="moment.js"></script> <script type="text/javascript" src="locale/ne.js"></script> </head> <body> <script> jQuery(document).ready(function($) { moment.locale('en'); // default the locale to English var localLocale = moment(); moment.locale('ne'); // change the global locale to Nepalese var ne1 = localLocale.format('LLLL'); var ne2 = moment().format('LLLL'); $('.ne1').text(ne1); $('.ne2').text(ne2); }); </script> <p class="ne1"></p> <p class="ne2"></p> </body> </html> 

演示

我正在使用angular2-moment,但使用必须相似。

 import { MomentModule } from "angular2-moment"; import moment = require("moment"); export class AppModule { constructor() { moment.locale('ru'); } } 

根据版本更改当前的js语言

版本:2.8+

moment.locale( '喜');

版本:2.5.1

moment.lang( '喜');

哎哟漏掉了笔。 我会解决这个问题: var moment = function(x) { return moment(x).locale('de'); } var moment = function(x) { return moment(x).locale('de'); }其他方式似乎并没有在条件下(对我来说)坚持/持有。

对于时间2.12+ ,请执行以下操作:

 moment.updateLocale('de'); 

另外请注意,您必须使用moment.updateLocale(localeName, config)来更改现有的语言环境。 moment.defineLocale(localeName, config)只能用于创build新的语言环境。

正常工作: return moment(status.created_at).locale('es').fromNow();