user3773717
user3773717

Reputation: 53

Angular-Translate: Translation does not show up on random browser refreshes

I have a separate language json file for each partial/controller. To avoid loading all the json files at once, I have added the addPart statement in the controller instead of the module config:

$translatePartialLoader.addPart('editName');

When I browse to the partial, I see that the json file is requested from the server only when needed. But when I keep refreshing the partial by clicking the function key F5, at random times, the json file is not requested from the server and the text displayed on the view is not translated. Not sure what I can do to fix this. Any help is greatly appreciated. Here is the code:

angular.module('pp')
    .controller('informationList', [
        '$scope', '$rootScope', '$location', '$translatePartialLoader', '$translate',
            function($scope, $rootScope, $location, $translatePartialLoader, $translate) {
                $translatePartialLoader.addPart('informationList');
                $translate.refresh();
            }
    ]);

Upvotes: 2

Views: 1956

Answers (2)

Yosh
Yosh

Reputation: 382

Could you just add a

$translateProvider.use('EN'); 

to the config - section just right below the "preferredLanguage('EN');" - line?

This should solve your problem.

It is in in fact currently needed to define that additional line - even though it might sound a bit like "duplication" :-).

Upvotes: 1

Rhionin
Rhionin

Reputation: 659

Your issue sounds similar to mine.

This (called from app config) works:

angular.module('myApp').config(function ($translateProvider, $translatePartialLoaderProvider) {
  $translateProvider.useLoader('$translatePartialLoader', {
    'urlTemplate': '{part}-{lang}.json'
  });
  $translateProvider.preferredLanguage('EN');

  $translatePartialLoaderProvider.addPart('headline');
  $translatePartialLoaderProvider.addPart('languages');
});

This (called from controller) does not:

angular.module('myApp').controller('Ctrl', ['$scope', '$translate', '$translatePartialLoader', function ($scope, $translate, $translatePartialLoader) {
  $translatePartialLoader.addPart('headline');
  $translatePartialLoader.addPart('languages');
  $translate.refresh();
}]);

Here is a plunker to demonstrate the problem. http://plnkr.co/edit/sZC2XST8BMZcMCYbgtxt?p=preview

Upvotes: 1

Related Questions