angular-translate: перевести динамическое значение

Мы используем angular-translate для перевода нашего приложения.

Обычные переводы с динамическими числовыми значениями не вызывают проблем, например

'LIVES_LEFT': 'You have {{ lives }} left.'

используется как

<p>{{ 'LIVES_LEFT' | translate:player }}</p>

Проблема возникает, когда динамическое значение представляет собой строку, которую необходимо перевести, например

'YOU_HAVE_A_CHILD': 'You have a {{ gender }} that is {{ age }} years old.'

Используется как

<p>{{ 'YOU_HAVE_A_CHILD' | translate:child }}</p>

gender в этом случае должно получиться "мальчик" или "девочка", если выбран английский язык, и, например, "Junge" или "Mädchen", если выбран немецкий язык. Как я могу это сделать?

ИЗМЕНИТЬ:

Как предложил Партха Сарати Гош ниже, я попробовал

<p>{{ 'YOU_HAVE_A_CHILD' | translate:(child | translate) }}</p>

Но я получаю синтаксическую ошибку от этого:

Error: [$parse:syntax] Syntax Error: Token 'Object' is unexpected, expecting []] at column 9 of the expression [[object Object]] starting at [Object]].

Однако,

{
    'YOU_HAVE_A_CHILD': 'You have a {{ gender | translate }} that is {{ age }} years old.',
    'GENDER_BOY': 'boy',
    'GENDER_GIRL': 'girl'
}

используется как

<p>{{ 'YOU_HAVE_A_CHILD' | translate:vm.childTranslationData() }}</p>

с таким кодом контроллера:

function childTranslationData() {
    return {
        gender: vm.child.gender === 'boy' ? 'GENDER_BOY' : 'GENDER_GIRL',
        age: vm.child.age
    };
}

работал отлично! Большое спасибо!


person Tobbe    schedule 05.02.2016    source источник


Ответы (1)


Попробуй это. Это может решить вашу проблему.

{{ 'YOU_HAVE_A_CHILD' | translate:(child | translate) }}

Или вы можете попробовать это

'YOU_HAVE_A_CHILD': 'You have a {{ gender | translate }} that is {{ age }} years old.'

Если не решает, сначала переведите дочерний элемент с вашего контроллера.

person Partha Sarathi Ghosh    schedule 05.02.2016