如何改变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( WARNING : lang()
从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.js
和de.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_components
path的情况下链接这些库,在大多数情况下仍然可以正常工作。
您需要在脚本中添加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();