【问题标题】:angular-translate: Translate dynamic valueangular-translate:翻译动态值
【发布时间】:2016-05-15 09:20:39
【问题描述】:

我们正在使用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>

控制器代码如下:

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

效果很好!非常感谢!

【问题讨论】:

    标签: angularjs internationalization angular-translate


    【解决方案1】:

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

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

    或者你可以试试这个

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

    如果没有解决,那么先从你的控制器翻译孩子

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多