我正在使用Angular翻译来进行应用本地化。我想根据用户的语言环境动态更改日期格式。
dd/mm/yyyy
mm/dd/yyyy
如何使用Angular翻译(干净利落)实现这一目标?
答案 0 :(得分:2)
我最终使用moment.js和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>
在你的应用中添加角度矩模块:
var myapp = angular.module('myapp', ['angularMoment']);
答案 1 :(得分:1)
也许我已经过时了,但我不认为angular-translate与本地化有任何关系。所以这是我的解决方案(但它非常干净)
bower install angular-i18n
<script src="/bower_components/angular-i18n/angular-locale_YOUR-LOCALE.js"></script>
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