我正在尝试将翻译部分加载集成到我的应用中,但是翻译文件的初始加载(在更改状态时)闪烁。我按照建议使用translate-cloak,但仍能获得相同的效果。

注意闪烁仅在更改部分语言而不是语言时发生。

这是我的设置

配置

app.config(['$translateProvider', function($translateProvider){
  $translateProvider.useLoader('$translatePartialLoader', {
    urlTemplate: 'dist/locales/{lang}/{part}.json'
  });
  $translateProvider.preferredLanguage('en-US');
}])

Controller
app.controller('appCtrl', function($translate, $translatePartialLoader){
  $translatePartialLoader.addPart('app');
  $translate.refresh()
});

模板
<div translate="HEADLINE"></div>

布局
<html ng-app="app" >
  <head>
    <title>SportProphecy</title>
    <script src="/dist/js/vendors.min.js"></script>
    <script src="/dist/js/app.min.js"></script>
  </head>
  <body ui-view ng-cloak translate-cloak>
  </body>
</html>

我想念什么吗?我已经阅读了有关translate-cloak的所有文档。

PS:我尝试创建一个小提琴,但由于某种原因,未请求json文件。

最佳答案

Angular 翻译文档将其称为“未翻译内容的Flash”。您可能想 checkout here

基本上,您需要定义至少一种要同步加载的语言。因此,继续在app.config中添加首选语言的翻译(在您的情况下为“en”)

app.config(['$translateProvider', function($translateProvider){
  $translateProvider.useLoader('$translatePartialLoader', {
    urlTemplate: 'dist/locales/{lang}/{part}.json'
  });

  $translateProvider.preferredLanguage('en-US');

  $translateProvider.translations('en-US', {
    'HEADLINE': 'My Fancy App!'
  });
}])

关于javascript - 翻译斗篷不适用于部分加载程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26167295/

10-16 08:33