角度翻译 - 格式日期
Posted
技术标签:
【中文标题】角度翻译 - 格式日期【英文标题】:Angular translate - format dates 【发布时间】:2016-05-06 17:18:34 【问题描述】:我正在使用 Angular translate 进行应用本地化。我想根据用户的语言环境动态更改日期格式。
如果语言环境是法语:格式是dd/mm/yyyy
如果语言环境是英语/美国:格式是mm/dd/yyyy
...依此类推,具体取决于语言环境的默认日期格式
我怎样才能(干净地)使用 Angular translate 来实现这一点?
【问题讨论】:
【参考方案1】:我终于结束了使用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']);
【讨论】:
【参考方案2】:也许我已经过时了,但我认为 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');
])
注意,请务必查看 repo 的自述文件以了解localeLocationPattern(string)
的使用情况@
【讨论】:
【参考方案3】:是的,有一个非常简单的方法可以做到这一点.. 不确定它是否干净,但可以清洁。
你可以使用 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
【讨论】:
以上是关于角度翻译 - 格式日期的主要内容,如果未能解决你的问题,请参考以下文章