Angular AM/PM 的德语瞬间翻译

Angular moment translation for AM/PM in german

我的网站是德语的,我使用 moment and angular-moment 进行翻译。除 AM/PM 外,一切正常。我的代码

<time>{{ messagedata.created*1000| amDateFormat: 'D, MMM YYYY, h:mm:ss A' }}</time>

结果:16, Febr. 2017, 5:30:00 AM 想要的结果:16, Febr. 2017, 5:30:00 Uhr

配置

app.run(function ($rootScope, $location, amMoment, moment) {
amMoment.changeLocale(LANGCODE);
moment.updateLocale('en', {
    relativeTime : {
        m:  "1 Minute",
        h:  "an Hour",
        d:  "1 Day",
        M:  "1 Month",
        y:  "1 Year",
    }
});
moment.updateLocale('de', {
    relativeTime : {
        m:  "1 Minute",
        d:  "1 Tag",
        M:  "1 Monat",
        y:  "1 Jahr",
    }
});

});

那么,我想把 AM/PM 改成德语,可以吗?怎么样?

德国时间 work/go 与 AM/PM 不同。德国时间采用 24 小时格式。此外,日期以 . 而不是 , 结尾。最后正确的输出是:16. Febr. 2017, 17:30:00 Uhr。这就是我们(德国人)所期望的正确日期格式:)

<time>{{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss' }} Uhr</time>

H, HH       24 hour time
h, or hh    12 hour time (use in conjunction with a or A)

24-hour time notation is used officially and for purposes that require precision like announcements in the media. In colloquial speech, a 12-hour clock is used.

注意口语!=技术正确输出。


如果您仍想使用 A 占位符,您可以创建一个自己的 meridiem 替换,例如:

// From 2.8.1 to 2.11.2
moment.locale('de', {
    meridiem : function () {
        return 'Uhr';
    }
});

这样,以下格式应该适合您:

<time>{{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss A' }}</time>

另一个解决方案可以用 angular-translate 来处理。只需在翻译文件中创建正确的 meridiem 翻译即可。这个解决方案看起来像:

<time>
    {{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss' }}
    <span translate="meridiem"></span>
</time>

您可能需要 meridiem 自定义:https://momentjs.com/docs/#/customization/am-pm/

再给de加一个属性,应该是一个函数。函数总是可以 return 静态翻译 'Uhr' 所以你不需要函数签名中的参数 hour, minute, isLowercase:

meridiem : function () {
    return 'Uhr';
}