AngularJS翻译:格式化动态日期

时间:2015-04-29 08:05:09

标签: angularjs date angular-translate

使用AngularJS和angular-translate我试图在翻译文本中插入日期作为参数。

翻译包记录了基本任务:

public class MyClass
{
    public string MyProperty {
        get{_db.GetValue('myFiled');}
        set{_db.SetValue('myField', value)}}
}

在本地化的json文件中使用它:

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

这给了我:

(英文)这是日期:2015-04-29T00:00:00。

(丹麦语)Dette 2015-04-29T00:00:00 er datoen。

问题: 我想格式化日期以匹配语言(或文化,但现在语言将足够好)。

期望的结果是:

(英文)这是日期:2015年4月29日。

(丹麦语)Dette 29-04-2015 er datoen。

我希望在这些方面有一个语法:

(english)'MyText': 'This is the date: {{myDate}}.'
(danish) 'MyText': 'Dette {{myDate}} 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>

有没有办法达到理想的结果,最好不必格式化控制器内的日期(保持逻辑和视图分开)?

1 个答案:

答案 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_*,则日期将采用特定语言/国家/地区的格式设置。

这是demo

已经说过内置于angular(ngLocale)的本地化机制是非常有限的,当涉及到日期时,你可以用moment.js

来创造奇迹