angular-translate-loader-pluggable
angular-translate-loader-pluggable copied to clipboard
non-blocking errors
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 ?
:thinking: hmm...do you maybe have some small project which repros this issue? Or a plunker example?
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');
})
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