当我尝试更改语言环境值时,没有任何反应,甚至没有错误。
this.$log.log(moment.locale()); // returns 'en'
this.$log.log(moment.locale('fr')); // set to french but returns 'en'
this.$log.log(moment.locale()); // of course, still returns 'en' instead of 'fr'
我也从 Chrome 开发者工具控制台尝试过:
> moment.locale('fr')
-> "en"
您是否正在使用可能为您提供不同时刻实例的模块加载器?
import m from 'moment';
this.$log.log(m.locale());
this.$log.log(m.locale('fr'));
this.$log.log(m.locale());
this.$log.log(window.moment.locale());
this.$log.log(window.moment.locale('is'));
this.$log.log(window.moment.locale());
我在一个有角度的项目中,模块是用 JSPM 处理的。
我不明白你说的“这可能会给你一个不同的时刻”是什么意思
这 3 行是我尝试过的真实代码,以相同的方法使用相同的时刻。
如果我使用特定变量,我会得到相同的结果。
import * as moment from 'moment';
export function registerDateFormatService(appModule: angular.IModule) {
appModule.service('dateFormatService', DateFormatService);
}
export class DateFormatService {
constructor(private $log: ng.ILogService) {
}
public format(value: moment.Moment, displayFormat: string): string {
this.$log.log(value.locale());
this.$log.log(value.locale('fr'));
this.$log.log(value.locale());
return value.format(displayFormat);
}
}
结果是:
angular.js:13239 Moment {_isAMomentObject: true, _i: "2010-10-20 4:30", _f: "YYYY-MM-DD", _isUTC: false, _pf: Object…}_d: Wed Oct 20 2010 00:00:00 GMT+0200 (CEST)_f: "YYYY-MM-DD"_i: "2010-10-20 4:30"_isAMomentObject: true_isUTC: false_isValid: true_locale: Locale_abbr: "en"_ordinalParse: /\d{1,2}(th|st|nd|rd)/_ordinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ordinal: (number)__proto__: Locale_pf: Object__proto__: Moment
angular.js:13239 en
您要导入区域设置数据吗? 您使用的是哪个 .js 文件?
您的意思是在该行之后添加另一个导入:
从“时刻”导入 * 作为时刻;
或在模块 sens 中导入,这里使用 JSPM。
(我在 jspm 模块文件夹中有 moment.js 和很多看起来像 localexx.js 像 fr.js 的东西。)
通读文档的“在哪里使用它”部分,看看这些场景是否适用于您。 通常,您要么需要使用moment-with-locales.js
,要么需要单独加载区域设置数据。 大多数加载器不会自动获取语言文件,因此您可能需要单独导入它们。
基本上,如果您尝试切换到未加载的语言环境,moment 将恢复到en
语言环境。
另请参阅“在浏览器中加载语言环境” 。
我会用这个来试验我能做的。
我正在使用添加到 package.json 的简单行,然后由 jspm 通过 npm install 使用"moment": "github:moment/moment@^2.11.2"
然后我将它与单个导入一起使用:
import * as moment from 'moment';
我在此评论中写了它,以跟踪可能具有相同用法的未来用户。
我将发布我的实验结果。
谢谢
我补充说:
import 'moment/locale/fr';
并使用:
moment.locale('fr')
现在将语言环境正确设置为法语。
它不是动态的,但现在可以完成这项工作。
我想我可以关闭它并感谢所有回答的人。
希望这个问题对使用 TypeScript/Angular/Jspm 的人有所帮助。
也许将此添加到文档中。 我遇到了同样的问题,越来越多的人开始使用 jspm 而不是 Bower。
真高兴你做到了! 我在文档存储库中添加了一个问题。 随意在那里发送 PR。
像这样导入
导入'时刻/src/locale/fr-ca';
导入'时刻/src/locale/en-ca';
谢谢@younss ,你的方法对我
@younss你是我的救星! 现在是 2017 年 10 月 10 日,文档没有指定此更改! 从 2.18 时刻更新到 2.19.0 并且语言环境导入完全崩溃:(
使用反应。
再次感谢!
当我更新到 2.19.1 时遇到了同样的问题
也许这可以帮助:
消除 :
重新启动:
安装
我通常保持 import 'moment' 并在我的源中使用语言环境。 所以不需要像@younss那样导入。
使用 Vue.js。
这对我有用。
也许 pb 在 package-lock.json 文件中,它没有正确更新 moment 节点数据。 通过删除它并重新启动 npm install,它会创建一个新的 package-lock.json 文件,其中所有数据都已更新。
@younss ,谢谢,对我
这个解决方案对我有用..在这里
我补充说:
导入“时刻/语言环境/fr”;
这又变了吗?
我安装了:
npm i moment-with-locales-es6
npm i moment
我用一个函数创建了一个类:
import * as moment from 'moment';
import 'moment/locale/pt-br';
import 'moment/locale/fr-ca';
export class DatetimeFormatPipe
transform(date: string): string {
moment.locale('pt-BR');
console.log(moment.locale());
console.log('pt-BR', moment(date).toLocaleString());
moment.locale('fr-CA');
console.log(moment.locale());
console.log('fr-CA', moment(date).toLocaleString());
return "";
}
}
日志如下:
pt-br
pt-BR 2016 年 12 月 20 日星期二 10:45:12 GMT+0100
fr-ca
fr-CA 2016 年 12 月 20 日星期二 10:45:12 GMT+0100
像这样导入
导入'时刻/src/locale/fr-ca';
导入'时刻/src/locale/en-ca';
它对我有用,谢谢!
我用:
import moment from 'moment/dist/moment';
import fr from 'moment/dist/locale/fr';
moment.locale('fr', fr);
它有效。
其他解决方案对我不起作用。
import moment from 'moment/dist/moment';
import 'moment/dist/locale/ru';
moment.locale('ru');
唯一对我有用。 @ligne13感谢您的提示!
时刻 2.25.2
你好,
当使用'import 'moment/locale/fr';' 在我的 Node/Express 应用程序中,我收到此错误: “语法错误
我用谷歌搜索了这个,我尝试添加
如果我无法添加此导入,是否有另一种更改语言环境的方法?
谢谢
保罗
眼镜 :
你好,
当使用'import 'moment/locale/fr';' 在我的 Node/Express 应用程序中,我收到此错误: “语法错误
我用谷歌搜索了这个,我尝试添加
如果我无法添加此导入,是否有另一种更改语言环境的方法?
谢谢
保罗
眼镜 :
- 操作系统:Ubuntu 20.04 到 WSL2
- 节点:12.18.3
- 净资产管理:6.14.6
- 快递:4.16.1
- MomentJS:2.27
@pbrissaud
您还不能在 node.js 中使用“导入”。 我自己没有尝试过,但我认为这会奏效:
require('moment/locale/fr')
moment.locale('fr');
最有用的评论
我补充说:
import 'moment/locale/fr';
并使用:
moment.locale('fr')
现在将语言环境正确设置为法语。
它不是动态的,但现在可以完成这项工作。
我想我可以关闭它并感谢所有回答的人。
希望这个问题对使用 TypeScript/Angular/Jspm 的人有所帮助。