2017-02-17 41 views
1

我的網站是德語,我使用momentangular-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 通緝的結果: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

德國時間不工作/去上午/下午。德國時間是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小時時間表示法正式併爲需要 精度喜歡在媒體上公佈的目的使用。在口語演講中,使用了12小時制的12時鐘。

注意口語語音!=技術正確輸出。


如果仍然魔杖使用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更新,沒有完成答案。 :)。順便說一句。你在使用'angular-translate'嗎? – lin

+0

@lin是的,我正在使用'angular-translate' –

2

你可能想meridiem定製:https://momentjs.com/docs/#/customization/am-pm/

只需添加另一個屬性de,這應該是一個功能。功能可以隨時返回靜態翻譯「失業救濟」這樣你就不會被從函數簽名需要參數hour, minute, isLowercase

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