2015-04-29 3 views
8

Использование AngularJS и angular-translate Я пытаюсь вставить дату в качестве параметра в переведенный текст.AngularJS translate: Форматировать динамические даты

Основная задача задокументированы перевод пакета:

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

с этим в локализованной JSON-файл:

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

Это дает мне:

(английский) Это это дата: 2015-04-29T00: 00: 00.

(датский) Dette 2015-04-29T00: 00: 00 er datoen.

Проблема: Я хотел бы, чтобы отформатировать дату, чтобы соответствовать языку (или культуры, но сейчас язык будет достаточно хорошо).

Желаемый результат:

(английский) Это дата: 04-29-2015.

(датский) Dette 29-04-2015 er datoen.

Я надеялся на синтаксисе вдоль этих линий:

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

Или, может быть:

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

с

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

Есть ли способ, чтобы достичь желаемого результата, предпочтительно без необходимости форматирования даты внутри контроллера (сохранение логики и вид разделен)?

+0

HTTP: // momentjs.com/ –

+0

Можете ли вы привести пример того, как его можно использовать с угловым переводом? –

ответ

12

Если у вас есть следующие angular-translate переводы определений:

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

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

Тогда внутри зрения вы можете сделать:

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

Где today определяется в контроллере, а именно:

$scope.today = new Date(); 

Предполагая вы загрузили angular-locale_* с cor rect locale, даты будут отформатированы на языке/стране.

Вот demo.

Сказав, что механизм локализации, встроенный в угловой (ngLocale) очень ограничено, и когда дело доходит до даты вы можете совершить чудеса с moment.js

+0

Именно то, что я искал. Спасибо! –

+0

из документов: 'Угловой фильтр даты и времени использует настройки часового пояса браузера. ', Поэтому это не сработает, если вы также не измените браузер lang на' $ translate.use (' en_US ') ' – slackmart

Смежные вопросы