2017-02-17 3 views
1

Мой сайт находится на немецком языке, и я использую moment и angular-moment для трансляции. Все работает нормально, кроме AM/PM. Мой кодУгловой момент для AM/PM на немецком языке

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

Результат: 16, Febr. 2017, 5:30:00 AM Wanted Результат: 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 на немецком языке, возможно ли это? Как?

+0

вы пробовали в том числе для немецкого языка? –

+0

есть. он включен и работает правильно. 'февраль' изменен, но' am/pm' не изменен. –

ответ

2

Немецкий время не работает/идет с AM/PM. Немецкое время в формате 24h. Также дата дня заканчивается . вместо ,. Наконец, правильный вывод будет: 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-часовой нотации используется официально и для целей, требующих точности как объявления в средствах массовой информации , В разговорной речи используется 1212 часовой номер часов.

Примечание разговорная речь! = Технический правильный выход.


Если вы еще палочка использовать 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> 
+0

'Uhr' здесь жестко закодирован. Что произойдет, если на моем сайте будет еще 2-3 разных языка? –

+0

@SRana обновлен, не был закончен с ответом. :). Btw. вы используете 'угловой-перевод'? – lin

+0

@lin Да, я использую 'angular-translate' –

2

Вы, вероятно, хотите meridiem настройки: https://momentjs.com/docs/#/customization/am-pm/

Просто добавьте еще одно свойство для de, которая должна быть функцией. Функция всегда может вернуть статический перевод «Uhr», так что вы не будете нуждаться в параметрах hour, minute, isLowercase из сигнатуры функции:

meridiem : function() { 
    return 'Uhr'; 
} 
Смежные вопросы