角度翻译 - 格式日期

时间:2016-01-29 03:57:25

标签: angularjs localization date-formatting angular-translate

我正在使用Angular翻译来进行应用本地化。我想根据用户的语言环境动态更改日期格式。

  • 如果语言环境是法语:格式为dd/mm/yyyy
  • 如果区域设置为英语/美国:格式为mm/dd/yyyy
  • ...依此类推,具体取决于区域设置的默认日期格式

如何使用Angular翻译(干净利落)实现这一目标?

3 个答案:

答案 0 :(得分:2)

我最终使用moment.jsAngular moment结束了。 可以使用以下内容将日期格式化为语言环境默认值:

<td>{{user.lastLogin | amDateFormat:'l LT'}}</td>

要更改时刻区域设置,请使用以下命令:

amMoment.changeLocale(language);

请勿忘记导入您希望支持的语言的片段语言环境文件:

<script src="assets/global/plugins/moment.min.js"></script>
<script src="jslib/angular-moment.min.js"></script>
<script src="jslib/moment/de.js"></script>
<script src="jslib/moment/es.js"></script>
<script src="jslib/moment/fr.js"></script>
<script src="jslib/moment/it.js"></script>
<script src="jslib/moment/pl.js"></script>
<script src="jslib/moment/ru.js"></script>
<script src="jslib/moment/zh-cn.js"></script>

在你的应用中添加角度矩模块:

var myapp = angular.module('myapp', ['angularMoment']);

答案 1 :(得分:1)

也许我已经过时了,但我不认为angular-translate与本地化有任何关系。所以这是我的解决方案(但它非常干净)

如果您每页重新加载一次,则使用angular-i18n就足够了。安装js文件并将其放入HTML

bower install angular-i18n

<script src="/bower_components/angular-i18n/angular-locale_YOUR-LOCALE.js"></script>

如果要动态加载angular-dynamic-locale

bower install angular-dynamic-locale

<script src="myPath/tmhDynamicLocale.js"></script>

你的js:

angular.module('myApp', ['tmh.dynamicLocale', ...])

angular.module('myApp').controller('myController', [..., 'tmhDynamicLocale',
    function… {
        tmhDynamicLocale.set('en');
    }
])

请注意,请务必查看回购首页的自述文件,了解localeLocationPattern(string)的使用情况

答案 2 :(得分:1)

是的,有一种非常简单的方法可以做到这一点.. 不确定它是否干净但可以清洁。

你可以使用angular-translate提供的interpolation,问题是你不能在插值字符串中使用function,但你可以做一些很酷的事情。 在您插入的对象内传递一个函数,并在插值时调用该函数

说你需要输入date

{{ 'date' | translate:{date:"28/01/2016"} }}
//instead of this
{{ 'date' | translate:'{date:"28/01/2016",func: func}' }}//func comes from scope.

并在$translateProvider.translations

$translateProvider.translations('en',{
   'date': "{{func(date)}}"
});

这是plnkr