angularjs - angular-translate:翻译动态值

标签 angularjs internationalization 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”。我怎么做?

编辑:

正如下面的 Partha Sarathi Ghosh 所建议的,我尝试过
<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>

使用这样的 Controller 代码:
function childTranslationData() {
    return {
        gender: vm.child.gender === 'boy' ? 'GENDER_BOY' : 'GENDER_GIRL',
        age: vm.child.age
    };
}

工作得很好!非常感谢!

最佳答案

尝试这个。它可能会解决您的问题。

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

或者你可以试试这个
'YOU_HAVE_A_CHILD': 'You have a {{ gender | translate }} that is {{ age }} years old.'

如果没有解决,则先从您的 Controller 翻译 child

关于angularjs - angular-translate:翻译动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223457/

相关文章:

javascript - AngularJS ToDO 列表编辑错误

ruby-on-rails - 如何在 Angular Translate Rails 中使用动态变量?

php - 搜索引擎中的多语言数据库编码

java - 在 Eclipse 应用程序中安装时,找不到 Eclipse plugin.xml 文件中的国际化字符串

angularjs - 将消息格式与 Angular 翻译结合使用时的变量替换

javascript - Angular 翻译 HTML 标签

javascript - 查询 Geofire 中该区域前 X 条记录?

angularjs - angular 2 observable.subscribe 在第二次调用之前不会执行

android - master details控件在新页面不显示内容

reactjs - React Native,如何在语言更改后更新 View