情况:
我正在为我的应用程序使用angular-translate,它运行正常。
唯一缺少的是翻译日期对象。 在应用程序中,有一个日程表还显示了日期的名称(' EEEE')。
这些名字是英文的,我不知道如何用其他语言翻译它们。
代码:
这是在“EEEE':
中显示日期对象的简单视图<span class="day">{{ day | date : 'EEEE'}}</span>
结果类似于
周三 - 周四 - 等..
这是我在应用程序其他部分使用angular-translate的示例:
<span class="input-label" ng-bind-html="'EMAIL' | translate"></span>
<span class="input-label" ng-bind-html="'PASSWORD' | translate"></span>
问题:
我如何翻译日期对象?
有一种简单的方法可以做到吗?
非常感谢!
答案 0 :(得分:2)
您可以将moment.js与翻译结合使用。还有angular version。
首先,您需要将文件添加到html文件中:
<script src="moment/moment.js"></script>
<script src="moment/locale/fr.js"></script>
<script src="moment/locale/de.js"></script>
<script src="angular-moment.js"></script>
然后你需要配置语言环境:
angular.module('core', ['angularMoment']).config(config);
config.$inject = ['moment'];
function config(moment) {
moment.changeLocale('fr');
}
然后你就可以使用角度矩了:
<span>{{day |amDateFormat:'dddd'}}</span>
答案 1 :(得分:1)
你可以用(例如法语):
<span>{{date.toLocaleDateString("fr-FR",{weekday: "long"})}}</span>
答案 2 :(得分:1)
Angular有一个名为ngLocale的模块(点击源代码链接)。
如果您提供相关的区域设置文件,它将自动翻译内置Angular过滤器中的所有内容,例如日期,货币,时间等。
我使用angular-translate和tmhDynamicLocale结合使用。
我使用此块配置动态区域设置:
function appConfigBlock(tmhDynamicLocaleProvider) {
//this needs to point to wherever you put angulars locale files.
tmhDynamicLocaleProvider.localeLocationPattern('common/thirdparty/locale/angular-locale-{{locale}}.js');
}
并使用此块检测更改
function appRunBlock($rootScope, tmhDynamicLocale, $translate){
$rootScope.$on('$translateChangeSuccess', function () {
tmhDynamicLocale.set($translate.use());
});
}
答案 3 :(得分:1)
我尝试了角度瞬间。有许多令人敬畏的日期格式,但没有找到如何实际翻译日期格式&#39; EEEE&#39;。 我看了两天可能的解决方案,但没有找到任何实际解决方案。
我需要一个快速的解决方案,所以我做了一个指令。 这是一个麻烦的解决方案,但至少目前是有效的。 期待更好的解决方案。
如果你有任何我会检查你的答案是否正确。
以下是带注释的代码:
观点:
<div translate-date-object>
<span class="day">{{ day | date : 'EEEE'}}</span>
</div>
指令:
.directive('translateDateObject', function($timeout) {
return {
controller: function ($scope) {
return {};
},
requires: 'translateDateObject',
link: function(scope, element, attrs, thisController) {
$timeout(function() {
thisController.html = element[0].innerHTML;
// CLEAN THE STRING TO GET A CLEAN NAME DAY
var content_temp1 = thisController.html.replace('<span class="day ng-binding">','');
var content_temp2 = content_temp1.replace('</span>','').toLowerCase();
var day_name = '';
for (var i = 0, len = content_temp2.length; i < len; i++)
{
// CHECK IF IS A CHAR
if (content_temp2[i].match(/[a-z]/i))
{
day_name += content_temp2[i];
}
}
// CHECK THE ACTIVE LANGUAGE
if (localStorage['language_code'] == 'tr')
{
// ASSIGN A DIFFERENT TRANSLATION FOR EACH DAY
switch(day_name)
{
case 'monday':
element.html('<span class="day">Pazartesi</span>');
break;
case 'tuesday':
element.html('<span class="day">Salı</span>');
break;
case 'wednesday':
element.html('<span class="day">Çarsamba</span>');
break;
case 'thursday':
element.html('<span class="day">Persembe</span>');
break;
case 'friday':
element.html('<span class="day">Cuma</span>');
break;
case 'saturday':
element.html('<span class="day">Cumartesi</span>');
break;
case 'sunday':
element.html('<span class="day">Pazar</span>');
break;
}
}
});
}
}
});