2016-03-02 2 views
0

Я использую angular-translate для i18n в приложении AngularJS.Угловой-перевод с использованием в контроллере

Код:

angular 
    .module('Test') 
    .controller('AlertsCtrl', ['$translate', '$scope', AlertsCtrl]); 

function AlertsCtrl($translate, $scope) { 
    // Api: http://angular-translate.github.io/docs/#/guide/03_using-translate-service 
    $translate('ALERT_MSG_1', 'ALERT_MSG_2').then(function (line) { 
     $scope.alerts = [{ 
      type: 'success', 
      msg: line['ALERT_MSG_1'] // Dosn't work 
     }, { 
      type: 'danger', 
      msg: line['ALERT_MSG_2'] // Dosn't work 
     }]; 
     console.log("In"); 
    }); 

    console.log("--- " + $translate.instant('ALERT_MSG_2')); // Works 

    $scope.addAlert = function() { 
     $scope.alerts.push({ 
      msg: 'Another alert!' 
     }); 
    }; 

    $scope.closeAlert = function (index) { 
     $scope.alerts.splice(index, 1); 
    }; 
} 

Проблема:

линия [ 'ALERT_MSG_1'] и линия [ 'ALERT_MSG_2'] dosnt вернуть что-нибудь. Зачем?

Как это можно решить?

ответ

0

вы должны использовать массив, который вы хотите перевести на несколько строк. то есть

$translate(['ALERT_MSG_1', 'ALERT_MSG_2']).then(function (line) { 
    $scope.alerts = [{ 
     type: 'success', 
     msg: line['ALERT_MSG_1'] // Dosn't work 
    }, { 
     type: 'danger', 
     msg: line['ALERT_MSG_2'] // Dosn't work 
    }]; 
    console.log("In"); 
}); 
Смежные вопросы