عندما أحاول تغيير القيمة المحلية ، لا يحدث شيء ، ولا حتى الخطأ.
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.
لا أفهم ما تقصده بعبارة "قد يمنحك ذلك حالة مختلفة من اللحظة"
الثلاثة أسطر هي رمز حقيقي جربته ، باستخدام نفس اللحظة وبنفس الطريقة.
أحصل على نفس النتيجة إذا استخدمت متغيرًا معينًا.
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 الذي تستخدمه؟
هل تقصد إضافة استيراد آخر بعد السطر:
استيراد * كلحظة من "لحظة" ؛
أو الاستيراد في وحدة الاستشعار ، هنا مع JSPM.
(لديّ moment.js والكثير مما يشبه localexx.js مثل fr.js في حالتي في مجلد وحدات jspm.)
اقرأ قسم "مكان استخدامه" في المستندات وتحقق مما إذا كان أي من هذه السيناريوهات ينطبق عليك. بشكل عام ، تحتاج إما إلى استخدام moment-with-locales.js
، أو تحميل بيانات اللغة بشكل منفصل. لن تلتقط معظم برامج التحميل ملف اللغة تلقائيًا ، لذلك قد تحتاج إلى استيرادها بشكل منفصل.
بشكل أساسي ، إذا حاولت التبديل إلى لغة لم يتم تحميلها ، فستعود اللحظة إلى الإعدادات المحلية en
.
راجع أيضًا "تحميل المواقع في المتصفح" .
سأجرب ما يمكنني فعله مع هذا.
أنا أستخدم سطرًا بسيطًا مضافًا إلى package.json مع ثم يتم استخدامه بواسطة jspm من خلال تثبيت npm
"moment": "github:moment/moment@^2.11.2"
ثم أستخدمه مع استيراد واحد:
import * as moment from 'moment';
لقد كتبته في هذا التعليق لتتبع المستخدمين في المستقبل الذين قد يكون لديهم نفس الاستخدام.
سوف أنشر نتيجة تجاربي.
شكرا
أضفت:
import 'moment/locale/fr';
وباستخدام:
moment.locale('fr')
يقوم الآن بتعيين الإعدادات المحلية إلى الفرنسية بشكل صحيح.
إنها ليست ديناميكية ولكنها ستؤدي المهمة في الوقت الحالي.
يمكنني إغلاقها على ما أعتقد وأشكر جميع الأشخاص الذين أجابوا.
آمل أن تساعد هذه المشكلة الأشخاص الذين يستخدمون TypeScript / Angular / Jspm.
ربما أضف هذا إلى الوثائق. واجهت نفس المشكلة وبدأ المزيد والمزيد من الأشخاص في استخدام jspm بدلاً من Bower.
سعيد لأنك عملت! لقد أضفت مشكلة إلى مستودع المستندات. لا تتردد في إرسال العلاقات العامة هناك.
استيراد من هذا القبيل
استيراد "moment / src / locale / fr-ca" ؛
استيراد "moment / src / locale / en-ca" ؛
شكرا younss ، طريقتك عملت معي. أنا أستخدم Ionic 2 RC 2.
younss أنت
باستخدام React.
شكرا لك مرة أخرى!
واجهت نفس المشكلة عندما قمت بالتحديث إلى 2.19.1
ربما هذا يمكن أن يساعد:
يزيل :
إعادة الإطلاق:
تثبيت npm
أستمر في الاستيراد "لحظة" بشكل طبيعي وأستخدم اللغة في مصادري. لذلك لا داعي للاستيراد كما فعل younss .
باستخدام VueJS.
هذا عمل معي.
ربما يكون pb في ملف package-lock.json الذي لا يقوم بتحديث بيانات العقدة اللحظية بشكل صحيح. بإزالته وإعادة تشغيل npm ، قم بتثبيته ، قم بإنشاء ملف package-lock.json جديد مع تحديث جميع البيانات.
younss ، شكرًا ، يعمل معي ، أنا أستخدم أداة تجميع الطرود
هذا الحل نجح معي .. هنا
أضفت:
استيراد "لحظة / لغة / فرنسي" ؛
هل تغير هذا مرة أخرى؟
أنا ركبت:
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 الثلاثاء 20 ديسمبر 2016 10:45:12 GMT + 0100
الاب كاليفورنيا
fr-CA الثلاثاء 20 ديسمبر 2016 10:45:12 GMT + 0100
استيراد من هذا القبيل
استيراد "moment / src / locale / fr-ca" ؛
استيراد "moment / 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 الخاص بي ، تلقيت هذا الخطأ: "SyntaxError: لا يمكن استخدام عبارة الاستيراد خارج وحدة نمطية" .
لقد بحثت في Google عن هذا وأحاول إضافة العقدة ولكن الآن تطبيقي في حالة من الفوضى.
إذا لم أتمكن من إضافة هذا الاستيراد ، فهل هناك طريقة أخرى لتغيير اللغة؟
شكرا
بول
المواصفات:
أهلا،
عند استخدام "import" moment / locale / fr "؛" في تطبيق Node / Express الخاص بي ، تلقيت هذا الخطأ: "SyntaxError: لا يمكن استخدام عبارة الاستيراد خارج وحدة نمطية" .
لقد بحثت في Google عن هذا وأحاول إضافة العقدة ولكن الآن تطبيقي في حالة من الفوضى.
إذا لم أتمكن من إضافة هذا الاستيراد ، فهل هناك طريقة أخرى لتغيير اللغة؟
شكرا
بول
المواصفات:
- نظام التشغيل: Ubuntu 20.04 حتى WSL2
- العقدة: 12.18.3
- NPM: 6.14.6
- صريح: 4.16.1
- لحظة JS: 2.27.2
تضمين التغريدة
لا يمكنك استخدام "استيراد" في node.js حتى الآن. لم أجربها بنفسي ، لكني أعتقد أن هذا سينجح:
require('moment/locale/fr')
moment.locale('fr');
التعليق الأكثر فائدة
أضفت:
import 'moment/locale/fr';
وباستخدام:
moment.locale('fr')
يقوم الآن بتعيين الإعدادات المحلية إلى الفرنسية بشكل صحيح.
إنها ليست ديناميكية ولكنها ستؤدي المهمة في الوقت الحالي.
يمكنني إغلاقها على ما أعتقد وأشكر جميع الأشخاص الذين أجابوا.
آمل أن تساعد هذه المشكلة الأشخاص الذين يستخدمون TypeScript / Angular / Jspm.