I18n in angularjs

0

Ключ I18n:

"step1.download":"{{n0}} Download {{n1}} Some text."

В моем html:

<span translate=step1.download translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span>

В моем контроллере:

$scope.download = function(){
        alert("fun executed");
        };
$scope.info0="<button ng-click=download()>";
$scope.info1="</button>";

Я получаю сообщение об ошибке, что функция загрузки не определена, я думаю, потому что html разбирался перед угловой компиляцией, так что я могу решить эту проблему. Также приветствуются альтернативные решения.

Теги:
internationalization
angular-translate

2 ответа

0
Лучший ответ

В html используйте "translate-compile" следующим образом:

<span translate="step1.download" translate-compile translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span>

Работал с моим делом, это может зависеть от того, какой переводчик вы используете. Он будет работать, если вы используете "angular-translate.js".

1

две вещи:

  • Вы указываете директиву в директиве перевода. Не работает код, потому что ng-click будет помещен в DOM после углового анализа.
  • Не стоит помещать HTML как значение в директиву translate. Модуль предназначен для обработки текстовых значений, а не синтаксиса HTML.

Для вашей проблемы вы должны сделать что-то вроде этого:

{
    "step1.download":"Download",
    "step1.someText":"some text."
}

в вашем html:

<span>
    <button ng-click="download()">
        {{'step1.download'|translate}}
    </button> 
    {{'step1.someText'|translate}}
</span>
  • 0
    Спасибо за ответ, но я не могу разделить эти строки, поэтому вы можете сказать мне, как я могу добиться этого, добавив директиву.
  • 0
    Я не понимаю, почему нельзя разделить текст на две части. Для меня вы не можете делать то, что вы хотите, не разбивая строку.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню