使用 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。
问题: 我想格式化日期以匹配语言(或文化,但目前语言就足够了)。
期望的结果是:
(英语)这是日期:2015 年 4 月 29 日。
(丹麦语)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'
有没有办法实现所需的结果,最好不需要在 Controller 内格式化日期(保持逻辑和 View 分离)?
最佳答案
假设您有以下 angular-translate
翻译定义:
//de
"with_date": "German: {{date|date:'short'}}"
//en
"with_date": "English: {{date|date:'medium'}}"
然后在 View 中您可以执行以下操作:
<h1>{{ 'with_date'|translate:{date:today} }}</h1>
其中 today
在 Controller 中定义,即:
$scope.today = new Date();
假设您已加载 angular-locale_*
如果区域设置正确,日期将以特定于语言/国家/地区的方式进行格式化。
这是一个demo .
话虽如此, Angular ( ngLocale
)内置的本地化机制非常有限,当涉及到日期时,您可以使用 moment.js 创造奇迹。
关于AngularJS 翻译 : Format dynamic dates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29937780/