【问题标题】:AngularJS translate: Format dynamic datesAngularJS 翻译:格式化动态日期
【发布时间】:2015-04-29 08:05:08
【问题描述】:

使用 AngularJS 和 angular-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'

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

【问题讨论】:

  • 你能举个例子说明它如何与 angular-translate 一起使用吗?

标签: angularjs date angular-translate


【解决方案1】:

假设您有以下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 创造奇迹

【讨论】:

  • 正是我想要的。谢谢!
  • 来自文档:The Angular datetime filter uses the time zone settings of the browser.,因此除非您还使用 $translate.use('en_US') 更改浏览器语言,否则这将不起作用
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 2016-03-29
  • 2014-04-20
  • 2017-12-10
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多