fallbackLanguage broken after upgrade to 2.9
See original GitHub issueSubject of the issue
After upgrading from angular 1.4 to 1.5 and angular-translate from 2.8 to 2.9, language switching to “fallbackLanguage” stopped working.
Your environment
- version of angular-translate: 2.9.2
- version of angular: 1.5.0
- which browser and its version: Firefox, Chrome
Steps to reproduce
In our application, language switching stopped working in a strange way. Switching among all languages works, but we cannot switch to ‘en’. After some investigation, we found that dropping
$translateProvider.fallbackLanguage(‘en’);
fixes the switching problems. Here is a part of our code:
.config(function ($translateProvider) {
$translateProvider.useLocalStorage();
$translateProvider.useSanitizeValueStrategy('sanitizeParameters');
$translateProvider.useMessageFormatInterpolation();
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
$translateProvider.uniformLanguageTag('bcp47');
$translateProvider.determinePreferredLanguage();
$translateProvider.registerAvailableLanguageKeys(['en', 'cs', 'pl'], {
// en
'en-AU': 'en', 'en-BZ': 'en', 'en-CA': 'en', 'en-CB': 'en', 'en-GB': 'en', 'en-IE': 'en', 'en-JM': 'en',
'en-NZ': 'en', 'en-PH': 'en', 'en-TT': 'en', 'en-US': 'en', 'en-ZA': 'en', 'en-ZW': 'en',
// cs
'cs-CZ': 'cs',
//pl
'pl-PL': 'pl'
});
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'modules/{part}/{lang}.json',
loadFailureHandler: 'SITranslationErrorHandler'
});
$translateProvider.useLoaderCache(true);
})
.run(function ($rootScope, $stateParams, $translate, $translatePartialLoader){
$rootScope.$on('$stateChangeSuccess', function () {
if ($stateParams.lang !== undefined){
$rootScope.activeLang = $stateParams.lang;
$translate.use($stateParams.lang);
$translatePartialLoader.addPart('translation');
$translate.refresh();
}
});
});
Another way how to fix switching (but without dropping fallback language) is to move fallback language to .run() block:
$translate.fallbackLanguage(‘en’);
and change useLocalStorage to useCookieStorage. Just one of these changes was not sufficient.
Expected behaviour
Language switching should be working - language should be switched.
Actual behaviour
Language switching is working except that switch to “fallbackLanguage” is ignored.
Issue Analytics
- State:
- Created 8 years ago
- Comments:11 (8 by maintainers)
Published 2.10.0 few minutes ago, including the PR by @tspaeth .
Confirming that 2.10.0 fixes the bug, thanks to all who worked on the solution.