Какой из этих двух лучше?
<span translate="key">Key</span>
или
<span>{{'key' | translate}}</span>
Они оба хороши и работают нормально, но в первом случае я должен заполнить содержимое элемента.
Использование атрибута лучше по производительности, особенно если вы собираетесь использовать переводы для элементов, которые будут внутри ngRepeats. Это связано с тем, что фильтр работает внутри.
Каждый раз, когда есть цикл дайджеста, angularjs перезагружает все выражения, содержащие фильтры. Это связано с тем, что угловой не может знать, изменился ли фильтр или нет. Это означает, что даже если ключ перевода не изменился, но какое-то другое значение в области имеет, угловой будет просматривать каждый перевод и переводить его снова, просто чтобы прийти к выводу, что все они остаются неизменными.
Атрибуты умнее, потому что разработчик директивы имеет явный контроль над тем, когда он должен повторно отображать и какой наблюдатель должен быть создан.
Изменить: И насколько я знаю, нет необходимости заполнять контент в первом прецеденте. Вы можете просто оставить его пустым.
<p translate="TRANSLATION_ID"></p>
. Обратите внимание, что вы должны заменить TRANSLATION_ID фактическим ключом вашего перевода.