3

我使用过滤器编写了一个简单的 i18n 本地化函数,但应用过滤器时存在延迟。在应用过滤器和交换文本之前,用户将短暂看到“{{'formTitle' |i18n}}”。有没有办法解决?

这是代码示例,它非常简单且相当常见:

<label for="person_title">{{'formTitle' | i18n}}</label>
angular.module('localization')
.value('localizedTexts', {
    'formTitle': 'Titre '
});

angular.module('localization', [])
.filter('i18n', ['localizedTexts', function (localizedTexts) {
return function (text) {
    if (localizedTexts.hasOwnProperty(text)) {
        return localizedTexts[text];
    }
    return text;
};
4

2 回答 2

4

考虑使用ng-cloak. 引用自AngularJS 文档

当浏览器加载此 css 规则时,所有使用 ng-cloak 指令标记的 html 元素(包括它们的子元素)都将被隐藏。当 Angular 在模板编译期间遇到这个指令时,它会删除 ngCloak 元素属性,这使得编译后的元素可见。

为获得最佳效果,必须在 html 文件的 head 部分加载 angular.js 脚本;或者,css 规则(如上)必须包含在应用程序的外部样式表中。

于 2013-06-07T14:31:14.347 回答
0

您也可能对角度翻译感兴趣 - http://pascalprecht.github.io/angular-translate/

于 2013-07-31T15:01:09.723 回答