Angular 翻译 - 格式化日期

Angular translate - format dates

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

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

也许我过时了,但我认为 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)

的用法

是的,有一个非常简单的方法.. 不确定是否干净,但可以弄干净。

你可以使用 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

我终于结束了使用moment.js and Angular 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>

并在您的应用中添加 angular 时刻模块:

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