Мы используем 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
};
}
работал отлично! Большое спасибо!