【问题标题】:Angular-Translate Partial loader isn't workingAngular-Translate 部分加载器不工作
【发布时间】:2015-01-14 21:28:31
【问题描述】:

我正在使用 AngularJS 翻译,如果我按照 pascalprecht 中的教程使用它,我的 Angular 应用程序失败并且它不显示任何内容(它不加载部分视图),所以我决定使用 angular-translate -partial-loader

我有一个应用菜单,我有一个 MenuCtrl 来显示选项,我想翻译这个菜单

这是我的代码

 angular.module('myapp'['ngAnimate','ngAria','ngCookies','ngMessages','ngResource','ngRoute','ngSanitize', 'ngTouch', 'pascalprecht.translate'])
.value('language', 'bra')
.run(function ($rootScope, $translate) 
{
  $rootScope.$on('$translatePartialLoaderStructureChanged', function () 
        {
          $translate.refresh();
        }
    );
})
.config(function($translateProvider, $translatePartialLoaderProvider) {
$translateProvider.useLoader('$translatePartialLoader', {
  urlTemplate: 'translations/{lang}/{part}.json'
});
$translateProvider.preferredLanguage("bra");
})
.config(function ($routeProvider) {
$routeProvider
  .when('/', {
    templateUrl: 'views/main.html',
    controller: 'MainCtrl'
  })
  .when('/about', {
    templateUrl: 'views/about.html',
    controller: 'AboutCtrl'
  })
  .otherwise({
    redirectTo: '/'
  });
});

angular.module('myapp')
.controller('MenuCtrl', function ($scope, $translatePartialLoader) {

       $translatePartialLoader.addPart('menu');

        $scope.lItems = [
                    {
                        title: "HOME",
                        class:'active',
                        href:'/',
                        visible: true
                    },
                    {
                        title: "CLASSROOMS",
                        class:'',
                        href:'#',
                        visible: true
                    },    
                    {
                        title: "EXPENSES",
                        class:'',
                        href:'#',
                        visible: true
                    },
                    {
                        title: "EARNINGS",
                        class:'',
                        href:'#',
                        visible: true
                    },
                    {
                        title: "STUDENTS",
                        class:'',
                        href:'#',
                        visible: true
                    }
                ];


 });

在 index.html 中

            <div id="navbar" class="navbar-collapse collapse" ng-controller="MenuCtrl">
                <ul class="nav navbar-nav" ng-repeat="lItem in lItems">
                    <li class="{{lItem.class}}"><a href="{{lItem.href}}">{{lItem.title |   translate}}</a></li>
                </ul>
            </div>

你能帮帮我吗?

谢谢!

【问题讨论】:

    标签: angularjs angular-translate


    【解决方案1】:

    我终于找到了解决办法。

    问题在于菜单超出了 ng-view 块,并且当应用加载时没有刷新正确的 html 部分。

    通过添加这个 $translatePartialLoaderProvider.addPart('menu');

     .config(function ($translateProvider, $translatePartialLoaderProvider) {
    
        $translatePartialLoaderProvider.addPart('menu');   
    
        $translateProvider.useLoader('$translatePartialLoader', {
         urlTemplate: 'translations/{lang}/{part}.json'
       });
       $translateProvider.preferredLanguage('bra');
    

    ....

    当应用程序加载时,菜单部分也被加载。

    【讨论】:

    • $translatePartialLoaderProvider 用于在用户需要时加载零件或组件,让我们说如果用户从不点击“联系人”部分,您不应该加载联系人页面的翻译。所以假设你有一个以前的登录页面,成功登录后你现在应该渲染你的菜单,现在在那个部分你需要使用 $translatePartialLoaderProvider。你知道我应该把 $translatePartialLoaderProvider.addPart('menu'); 放在哪里吗?因为配置在您的应用程序加载时运行,并且使用 addPart('menu') 消除了加载转换的概念
    • 这应该可以工作 angular.module('yourAppName').controller('YourCtrl', ['$scope', '$translate', '$translatePartialLoaderProvider, function($scope, $translate, $ translatePartialLoaderProvider) { $translatePartialLoaderProvider.addPart('menu'); }
    • $translatePartialLoaderProvider 在控制器内部不可用。 :( 我不知道如何为我的后端请求一个新的翻译表,因为我不能在控制器中这样做......
    • 嗨,你必须这样写: angular.module('yourApp').run(function ($rootScope, $translate) { $rootScope.$on('$translatePartialLoaderStructureChanged', function () { $translate.refresh(); }); 在你的控制器中: $translatePartialLoader.addPart('team'); 这里有一个关于这一点的教程。希望对你有帮助!!technpol.wordpress.com/2013/11/02/…
    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多