2015-04-29 2 views
8

Uso di AngularJS e angular-translate Sto cercando di inserire una data come parametro in un testo tradotto.AngularJS translate: Formato date dinamiche

Il compito fondamentale è documentata dal pacchetto tradurre:

<p>{{ 'MyText' | translate:{myDate:someControllerDate} }}</p> 

con questo in un JSON file localizzato:

(english)'MyText': 'This is the date: {{myDate}}.' 
(danish) 'MyText': 'Dette {{myDate}} er datoen.' 

Questo dà me:

(inglese) Questo è la data: 2015-04-29T00: 00: 00.

(danese) Dette 2015-04-29T00: 00: 00 er dateen.

Il problema: Vorrei formattare la data in base alla lingua (o di cultura, ma per ora la lingua sarà abbastanza buono).

Il risultato desiderato è:

(inglese) Questa è la data: 2015/04/29.

(danese) Dette 29-04-2015 er datoen.

speravo in una sintassi in questo senso:

(english)'MyText': 'This is the date: {{myDate:MM-dd-yyyy}}.' 
(danish) 'MyText': Dette {{myDate:dd-MM-yyyy}} er datoen.' 

O forse:

<p>{{ 'MyText' | translate:{{myDate:someControllerDate | translate:'MyDateFormat'}} }}</p> 

con

(english)'MyDateFormat': 'MM-dd-yyyy' 
(danish) 'MyDateFormat': 'dd-MM-yyyy' 

C'è un modo per ottenere il risultato desiderato, preferibilmente senza dover formattare la data all'interno del controller (mantenendo la logica e vista separata)?

+0

http: // momentjs.it/ –

+0

Puoi fare un esempio su come potrebbe essere usato con angular-translate? –

risposta

12

si Supponendo che hanno seguito angular-translate traduzioni definizioni:

//de  
"with_date": "German: {{date|date:'short'}}" 

//en  
"with_date": "English: {{date|date:'medium'}}" 

Poi all'interno di una vista che si può fare:

<h1>{{ 'with_date'|translate:{date:today} }}</h1> 

Dove today è definito controller cioè:

$scope.today = new Date(); 

Assumendo hai caricato angular-locale_* con il cor le impostazioni locali corrette saranno formattate in modo specifico per la lingua/il paese.

Ecco uno demo.

Detto questo meccanismo di localizzazione integrato in angolare (ngLocale) è molto limitata e quando si tratta di date che può compiere miracoli con moment.js

+0

Esattamente quello che stavo cercando. Grazie! –

+0

dai documenti: 'Il filtro datetime angolare utilizza le impostazioni del fuso orario del browser., Quindi questo non funzionerà se non si modifica anche il lang del browser con' $ translate.use ('en_US') ' – slackmart