angular-translate-loader-pluggable icon indicating copy to clipboard operation
angular-translate-loader-pluggable copied to clipboard

non-blocking errors

Open cyrilchapon opened this issue 7 years ago • 3 comments

Hey.

I'm using both staticFile and url loader through pluggable loader. When url is not reachable, the promise rejects and the whole process blocks, which can be annoying.

How to handle this ?

cyrilchapon avatar May 03 '17 12:05 cyrilchapon

:thinking: hmm...do you maybe have some small project which repros this issue? Or a plunker example?

juristr avatar May 03 '17 13:05 juristr

Sure

  .config(function($translateProvider, translatePluggableLoaderProvider, translationErrorHandlerLogAndResolveProvider, imagineNetworkWebAppConfig) {
    $translateProvider.useSanitizeValueStrategy('sanitizeParameters');

    $translateProvider.useLoader('translatePluggableLoader');

    $translateProvider.registerAvailableLanguageKeys(
      ['en','fr'], {
        'en*': 'en',
        'fr*': 'fr'
      }
    );

    translatePluggableLoaderProvider.useLoader('$translateStaticFilesLoader', {
      files: [{
        prefix: 'languages/',
        suffix: '.json'
      }, {
        prefix: 'bower_components/imagine-module-quality/dist/languages/',
        suffix: '.json'
      },
      {
        prefix: 'bower_components/imagine-module-map-table/dist/languages/',
        suffix: '.json'
      }]
    });

    translatePluggableLoaderProvider.useLoader('$translateUrlLoader', {
      url: new URI(imagineNetworkWebAppConfig.api.url)
        .segment('referential')
        .segment('i18n')
        .toString()
    });

    $translateProvider.fallbackLanguage('en');
    $translateProvider.preferredLanguage('en');
  })

cyrilchapon avatar May 03 '17 13:05 cyrilchapon

The point is remove language files are from a microservice, on which one must be fault tolerant.

The whole usual "loading" process of $translate is, roughly : "if that doesn't work, reject, log something on the console, and the filter won't work", but it doesn't break the app.

With pluggable loader, it broke the $digest cycle apparently

Submitted a PR

cyrilchapon avatar May 03 '17 13:05 cyrilchapon