angular-translate(PascalPrecht)如何避免在翻译之前加载文本标签

Rob*_*ber 12 angularjs angular-translate

我有一个AngularJS应用程序.对于文本翻译我使用angular-translate.它工作得很好,但是当我请求第一页时,在加载翻译之前有几秒钟,页面会显示标签.

我已经阅读了一些关于它的帖子http://angular-translate.github.io/docs/#/guide/12_asynchronous-loading#asynchronous-loading_fouc---flash-of-untranslated-content但仍然无效.

这是我的翻译模块:

i18n.js:

'use strict';

/* i18n module */

angular.module('myApp.i18n', ['pascalprecht.translate'])
    .config(['$translateProvider', function ($translateProvider) {

        $translateProvider.preferredLanguage('en');

        //$translateProvider.addInterpolation('$translateMessageFormatInterpolation');


        $translateProvider.useStaticFilesLoader({
          prefix: 'languages/locale-',
          suffix: '.json'
        });
}]);
Run Code Online (Sandbox Code Playgroud)

包含在我的app.js主文件中:

'use strict';


// Declare app level module which depends on filters, and services

    angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers', 'myApp.i18n', 'myApp.properties', 'angularSpinner', 'ngCookies', 'ngSanitize', 'angularCharts', 'ngProgress', 'angularMoment', 'tmh.dynamicLocale'])
      .config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider, $routeParams) {
Run Code Online (Sandbox Code Playgroud)

Pas*_*cht 11

ng-cloak用于防止角度闪烁,您所谈论的闪烁是由初始角度引导完成后执行的异步请求引起的.您应该使用translate-cloak指令,该指令负责在元素上应用和删除类,只要有异步加载器在运行即可.

  • 出现{{'WELCOME'| 翻译}}标签将由ng-cloak修复,这是由角度不能很快处理HTML标签引起的.翻译斗篷将在翻译表加载之前修复WELCOME(标签而不是正确的语言标签)的出现. (3认同)

Yos*_*osh 3

您的配置与文档中的配置之间存在微小但重要的差异:

$translateProvider.translations('en', {
    'HELLO_TEXT': 'Hello World!'
});
Run Code Online (Sandbox Code Playgroud)

此翻译与应用程序同步加载,而不是异步加载。如果你尝试这个 - 它应该有效。

一种完全不同的方法是将 ng-cloak 附加到闪烁的按键上,甚至做类似的事情

<body ng-cloak>
Run Code Online (Sandbox Code Playgroud)

那也应该有效。请注意性能和应用程序配置,因为实现静态文本会消除应用程序内的灵活性,这是一种权衡...

  • `ng-cloak` 用于防止角度闪烁,您所说的闪烁是由执行的异步请求引起的,*在*初始角度引导完成之后。您应该使用“translate-cloak”指令,只要异步加载器正在运行,它就会负责在元素上应用和删除类。 (2认同)