如何使用两种语言运行momentJs或重复片刻()?

时间:2014-05-21 12:07:11

标签: javascript momentjs

我需要两个具有略微不同语言设置的momentJs实例并尝试使用according to the documentation

var moment2 = moment();
moment2.lang('en', { ... });

时刻2中的时刻(“2014-05-22”)功能在哪里?

我需要这样的东西:

moment2("2014-05-22").calendar();

2 个答案:

答案 0 :(得分:1)

moment.lang提供特定于实例的配置,因此您不要将其设置为相对于工厂函数,而是设置为单个时刻实例。

我认为你应该这样做:

var local = moment('2014-05-22');
local.lang('fr', { calendar : {
  lastDay : '[new]',
  sameDay : '[new]',
  nextDay : '[new]',
  lastWeek : '[new]',
  nextWeek : '[new]',
  sameElse : '[new]'
}});
console.log(local.calendar());

结果:

"vendredi à 00:00"

这是法国人,但它应该是" new"。

更新

上面的代码不起作用,因为momentjs不允许修补现有语言来定义您自己的日历。你必须设置一种新语言。他们真的需要在文档中指出这一点。 See this issue on github

答案 1 :(得分:0)

我有一个真正有效的解决方案。它会在每个calendar()调用上覆盖momentJs的全局语言设置。

moment.lang('de');

// internationalisation objects for momentJs calendar view WITHOUT time:
var momentShort = {
    'de': {
        calendar : {
            sameDay: "[heute]",
            sameElse: "L",
            nextDay: '[morgen]',
            nextWeek: 'dddd',
            lastDay: '[gestern]',
            lastWeek: '[letzten] dddd'
        }
    },
    'en' : {
        calendar : {
            sameDay : '[today]',
            nextDay : '[tomorrow]',
            nextWeek : 'dddd',
            lastDay : '[yesterday]',
            lastWeek : '[last] dddd',
            sameElse : 'L'
        }
    }
};

// internationalisation objects for momentJs calendar view WITH time:
var momentFull = {
    'de': {
        calendar : {
            sameDay: "[heute um] LT",
            sameElse: "L",
            nextDay: '[morgen um] LT',
            nextWeek: 'dddd [um] LT',
            lastDay: '[gestern um] LT',
            lastWeek: '[letzten] dddd [um] LT'
        },
    },
    'en' : {
        calendar : {
            sameDay : '[today at] LT',
            nextDay : '[tomorrow at] LT',
            nextWeek : 'dddd [at] LT',
            lastDay : '[yesterday at] LT',
            lastWeek : '[last] dddd [at] LT',
            sameElse : 'L'
        }
    }
};


moment.lang(moment.lang(), momentShort[moment.lang()]);
var cal = moment("2014-05-23");
console.log( cal.calendar() );


moment.lang(moment.lang(), momentLong[moment.lang()]);
var cal = moment("2014-05-23");
console.log( cal.calendar() );