Совет при использовании углового перевода должен предпочесть директиву над фильтром. Теперь в некоторых местах мне нужно динамически строить ключи перевода, например
<span translate>{{'Prefix' + vm.foo}}</span>
Это работает в Chrome и Firefox, но создает "недопустимый аргумент" где-то глубоко в угловых источниках в IE. Вот трассировка стека одной такой ошибки:
Error: Invalid argument.
at interpolateFnWatchAction (http://localhost:53559/bower_components/angular/angular.js:8020:17)
at interpolateFnWatcher (http://localhost:53559/bower_components/angular/angular.js:10177:17)
at watchGroupAction (http://localhost:53559/bower_components/angular/angular.js:13915:13)
at Scope.prototype.$digest (http://localhost:53559/bower_components/angular/angular.js:14243:23)
at Scope.prototype.$apply (http://localhost:53559/bower_components/angular/angular.js:14506:13)
at done (http://localhost:53559/bower_components/angular/angular.js:9659:36)
at completeRequest (http://localhost:53559/bower_components/angular/angular.js:9849:7)
at requestLoaded (http://localhost:53559/bower_components/angular/angular.js:9790:9) undefined
Интересно, что ошибка исходит из самого углового, а не из углового перевода.
Конечно, обходным путем является использование
<span>{{'Prefix' + vm.foo | translate}}</span>
Но мой вопрос: это ошибка или ожидаемое поведение? Если да, то почему это зависит от браузера?
РЕДАКТИРОВАТЬ
Мы используем угловое v1.3.14 и угловое преобразование v2.6.1.
Как указано в комментарии @Yosh, эта проблема является известной ошибкой, см. Https://github.com/angular-translate/angular-translate/issues/925.
Обходным путем является использование трансляционного фильтра вместо директивы.