web-dev-qa-db-ja.com

moment.jsの言語を変更するにはどうすればいいですか?

Moment.jsによって設定されている日付の言語を変更しようとしています。デフォルトは英語ですが、ドイツ語が欲しいです。これらは私が試したものです:

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

nANを与えている、動作しませんでした。

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

反応しなくても、うまくいきませんでした。

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

それでも英語を与える変化は、同様にうまくいきませんでした。

これはどのように可能ですか?

144
doniyor

あなたはmoment.lang(WARNINGlang()2.8.0の瞬間から廃止予定です。代わりにlocale()を使ってください)

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

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


V2.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を呼び出すと、そのインスタンスに設定され、そのインスタンスが返されます。

216
kalley

私も言語をインポートしなければなりませんでした:

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

それからあなたが通常するように瞬間を使ってください

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

最速の方法:Bowerでインストール

私はちょうどbowerを使ってmomentをインストールし、私のhtmlプロジェクトのjavascriptリソースとしてde.jsをリ​​ンクしました。

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_componentsパスなしでライブラリをリンクすることもできます。

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にこのフォーマットを追加しないのであれば、それが私が現在見ている唯一のものであるため、常にUSロケールを選択します。

10
Smart Coder

2017/2018年末:他人の回答には編集するには古すぎるコードがあります。

と必要

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

流星のユーザーのために:

瞬間ロケールはデフォルトではmeteorにインストールされていません。デフォルトのインストールでは 'en'ロケールしか取得できません。

それで、あなたは他の答えで正しく示されるようにコードを使います:

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

ただし、必要なロケールをインストールするまでは英語のままです。

瞬間の個々のロケールをmeteorに追加するための素晴らしい、きれいな方法があります(rzymekによって供給されます)。

次のコマンドを使って、momentパッケージを通常の流星形でインストールします。

meteor add rzymek:moment

それから、必要なロケールを追加してください。イタリア語

meteor add rzymek:moment-locale-it

あるいは、利用可能なすべてのロケールを本当に追加したい場合(ページに約30Kを追加します):

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
<!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や友達と一緒にwebpackを使っていたので( このジェネレータ が私のためにすべてを設定した)私は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

私にとっては、いくつか変更を加える必要があります(ver。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の読み込みを拒否しています。

編集:ファイルの名前を変更する必要はないことがわかった。私はただページでそれを呼び出すのを忘れたのでDjangoはそれをロードする必要があるとは思わないので、私のせいです。

2
WesternGun

Versionごとにmoment jsの言語を変更する

バージョン:2.8 +

moment.locale( 'hi');

バージョン:2.5.1

moment.lang( 'hi');

2
Anil Nankar

私はangular2-momentを使っていますが、使い方は似ているはずです。

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