it-swarm.dev

كيف يمكنني تغيير لغة اللحظة

أحاول تغيير لغة التاريخ التي يتم تعيينها بواسطة moment.js. الافتراضي هو اللغة الإنجليزية ، لكنني أريد اللغة الألمانية. هذه هي ما جربته:

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

يعطي NAN ، لم تنجح.

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

لا تتفاعل حتى ، لم تنجح كذلك.

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

لا تغيير ، لا يزال الإنجليزية ، لم تنجح كذلك.

كيف يكون هذا ممكنا؟

142
doniyor

أنت بحاجة إلى moment.lang (WARNING: lang() مهملة منذ لحظة 2.8.0 ، استخدم locale() بدلاً من ذلك):

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

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


اعتبارًا من الإصدار 1.8.1 ، moment.locale('de') تقوم بتعيين التعريب ، لكن لا تُرجع moment. بعض الأمثلة:

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'

في الخلاصة ، فإن استدعاء locale على moment العالمي يحدد الإعدادات المحلية لجميع الحالات moment المستقبلية ، لكنه لا يُرجع مثيل moment. استدعاء locale على مثيل ، يعينه لتلك الحالة AND ويعيد ذلك المثيل.

211
kalley

اضطررت لاستيراد اللغة أيضا:

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

ثم استخدم لحظة كما تفعل عادة

alert(moment(date).fromNow())
80
Agu Dondo

أسرع طريقة: التثبيت باستخدام Bower

لقد قمت للتو بتثبيت لحظة مع كوخ مرتبط ومرتبط de.js كمورد javascript في مشروع html.

bower install moment --save

يمكنك أيضًا تنزيل moment.js و de.js يدويًا.

ربط "de.js" في مشروعك

يؤدي ربط الرمز de.js في ملف مشروعي الرئيسي تلقائيًا إلى تغيير الإعدادات المحلية لجميع عمليات الوصول إلى فئة اللحظة وأساليبها.

لن يكون هناك لا حاجة بعد الآن للقيام ببعض moment.locale("de"). أو moment.lang("de"). في الكود المصدري.

ما عليك سوى ربط اللغة التي تريدها مثل هذا:

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

أو يمكنك ربط المكتبات دون مسار bower_components ، إذا قمت بتنزيل نمط 1990. js على طراز 1990ies من خلال النقر بزر الماوس الأيمن ، والذي لا يزال يعمل بشكل جيد في معظم السيناريوهات.

55
nottinhill

باستخدام momentjs 2.8+ ، قم بما يلي:

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

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

33
Nashenas

ستحتاج إلى إضافة moment.lang(navigator.language) في البرنامج النصي.

ويجب أيضًا إضافة لغة كل بلد تريد عرضه: على سبيل المثال ، GB أو FR ، تحتاج إلى إضافة تنسيق اللغة هذا في مكتبة moment.js. مثال على هذا التنسيق متاح في وثائق momentjs. إذا لم تقم بإضافة هذا التنسيق في moment.js ، فسيتم التقاط لغة الولايات المتحدة دائمًا لأن هذا هو التنسيق الوحيد الذي أراه حاليًا.

10
Smart Coder

في نهاية عام 2017/2018: تحتوي إجابات anothers على الكثير من الشفرات القديمة التي لا يمكن تعديلها ، لذا فإن إجابتي النظيفة البديلة هنا:

مع تتطلب

let moment = require('moment');
require('moment/locale/fr.js');

مع الواردات

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

استعمال:

moment.locale('fr');
moment().format('D MMM YY');  // Correct, set default global format 
// moment.locale('fr').format('D MMM YY') //Wrong old versions for global default format

مع المنطقة الزمنية

*تطلب:

require('moment-range');
require('moment-timezone');

*استيراد:

import 'moment-range';
import 'moment-timezone';

استخدام المناطق:

const newYork    = moment.tz("2014-06-01 12:00", "America/New_York");
const losAngeles = newYork.clone().tz("America/Los_Angeles");
const london     = newYork.clone().tz("Europe/London");

وظيفة لتنسيق التاريخ

const ISOtoDate = function (dateString, format='') {

 // if date is not string use conversion:
 // value.toLocaleDateString() +' '+ value.toLocaleTimeString();

  if ( !dateString ) {
    return '';
  }

  if (format ) {
    return moment(dateString).format(format);
  } else  {
    return moment(dateString);  // It will use default global format
  }  
};
7
stackdave

لمستخدمي النيازك:

لحظة لم يتم تثبيت الإعدادات المحلية في النيزك بشكل افتراضي ، يمكنك فقط الحصول على الإعدادات المحلية "en" مع التثبيت الافتراضي.

لذلك تستخدم الكود كما هو موضح بشكل صحيح في الإجابات الأخرى:

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

لكنه سيبقى باللغة الإنجليزية حتى تقوم بتثبيت الإعدادات المحلية التي تحتاجها.

هناك طريقة لطيفة ونظيفة لإضافة لغات فردية لـ لحظية في النيزك (يتم توفيره بواسطة rzymek ).

تثبيت لحظة الحزمة بالطريقة النيزك المعتادة مع:

meteor add rzymek:moment

ثم أضف اللغات التي تحتاج إليها ، على سبيل المثال للإيطالية:

meteor add rzymek:moment-locale-it

أو إذا كنت تريد حقًا إضافة جميع اللغات المتاحة (يضيف حوالي 30 ألفًا إلى صفحتك):

meteor add rzymek:moment-locales
6
mwarren

مع اللحظة 2.18.1 وما بعدها:

  moment.locale("de");
  var m = moment().format("LLL")
3
apadana

تعمل بشكل جيد مثل هذا: return moment(status.created_at).locale('es').fromNow();

2
Claudio Scheuermann
<!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>

عرض توضيحي

2
Ram Pukar

عندما كنت أستخدم حزمة الويب مع gulp والأصدقاء ( هذا المولد أقوم بإعداد كل شيء بالنسبة لي) كان علي إجراء تغيير على ملف bower.json. اضطررت لتجاوز الاستيراد الافتراضي لحزمة اللحظة واختيار الملف الذي يأتي مع جميع اللغات:

"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
GameScripting

بالنسبة لي ، هناك بعض التغييرات التي يجب إجراؤها (الإصدار 2.20)

  1. قمت بتعيين الإعدادات المحلية مع moment.locale('de') ، ويمكنك إنشاء كائن جديد يمثل تاريخ الآن بواسطة moment() (لاحظ القوس) ثم format('LLL') عليه. القوس مهم.

إذن هذا يعنى:

moment.locale('de');
var now = moment();
now.format('LLL');
  1. تذكر أيضًا استخدام moment-with-locale.js. يحتوي الملف على جميع معلومات الإعدادات المحلية وله حجم ملف أكبر. تنزيل المجلد locale ليس كافيًا. إذا لزم الأمر ، قم بتغيير الاسم ليكون moment.js. Django يرفض فقط تحميل moment-with-locale.js في حالتي.

تحرير: اتضح أن إعادة تسمية الملف ليست ضرورية. لقد نسيت أن أستدعيه في الصفحة حتى لا يعتقد جانغو أن التحميل ضروري ، لذلك خطأي.

2
WesternGun

تغيير لغة لحظة شبيبة وفقا للنسخة

الإصدار: 2.8+

moment.locale ( 'مرحبا')؛

الإصدار: 2.5.1

moment.lang ( 'مرحبا')؛

2
Anil Nankar

أنا أستخدم اللحظة الزاوية ، لكن يجب أن يكون الاستخدام مشابهاً.

import { MomentModule } from "angular2-moment";
import moment = require("moment");

export class AppModule {

  constructor() {
    moment.locale('ru');
  }
}
2
Dmitry

لـ momentjs 2.12+ ، قم بما يلي:

moment.updateLocale('de');

لاحظ أيضًا أنه يجب عليك استخدام moment.updateLocale(localeName, config) لتغيير الإعدادات المحلية الحالية. يجب استخدام moment.defineLocale(localeName, config) لإنشاء لغة جديدة فقط.

1
Francisco Costa

يصيح زلة القلم. سأقوم بحل هذا: var moment = function(x) { return moment(x).locale('de'); }- الطرق الأخرى لا تبدو حقًا في الانتظار/الانتظار في ظل ظروف (بالنسبة لي).

0
Rob Jens