Angular 一次性绑定有时翻译不翻译

Angular Translate not translating sometimes with one-time binding

我正在使用 Angular 1.x,它是 Angular 翻译模块。最近,我将所有翻译绑定从双向转换为一次性。一切正常,直到有一天,然而,我注意到有时如果我开始刷新页面,翻译实际上并没有被翻译。

示例:

{{ ::'MyTranslationKey' | translate }}

90% 的结果是正确的。而在另外10%中,渲染结果是:

MyTranslationKey

这是什么原因,我该如何解决?

编辑:

这不会发生在 ng-if、ng-repeat 或指令中的元素 - 例如当它们在子范围内时。

默认情况下,angular-translate 为没有翻译的键放置一个空字符串。 翻译在 10% 的情况下不起作用的原因是您在页面呈现后收到带有翻译的文件。当您收到翻译文件时,由于一次性数据绑定,翻译指令的新值不适用; 在这种情况下,你可以把所有的内容放在ng-if里面,有数据接收条件,ng-if='loaded'.

尝试:

<element translate>
    {{::'MyTranslationKey'}}
</element>

此外,使用 translate 属性而不是过滤器可以获得更好的性能(根据 Angular 翻译的创建者 Pascal Precht 的说法)。