@@ -24,6 +24,7 @@ angular.module('mm.core')
2424. factory ( '$mmLang' , function ( $translate , $translatePartialLoader , $mmConfig , $cordovaGlobalization , $q , mmCoreConfigConstants ) {
2525
2626 var self = { } ,
27+ fallbackLanguage = 'en' ,
2728 currentLanguage ; // Save current language in a variable to speed up the get function.
2829
2930 /**
@@ -33,11 +34,19 @@ angular.module('mm.core')
3334 * @ngdoc method
3435 * @name $mmLang#registerLanguageFolder
3536 * @param {String } path Path of the folder to use.
36- * @return {Promise } Promise resolved when file is loaded.
37+ * @return {Promise } Promise resolved when all the language files to be used are loaded.
3738 */
3839 self . registerLanguageFolder = function ( path ) {
3940 $translatePartialLoader . addPart ( path ) ;
40- return $translate . refresh ( ) ;
41+ // We refresh the languages one by one because if we refresh all of them at once and 1 file isn't found
42+ // then no language will be loaded. This way if 1 language file is missing only that language won't be refreshed.
43+ var promises = [ ] ;
44+ promises . push ( $translate . refresh ( currentLanguage ) ) ;
45+ if ( currentLanguage !== fallbackLanguage ) {
46+ // Refresh fallback language.
47+ promises . push ( $translate . refresh ( fallbackLanguage ) ) ;
48+ }
49+ return $q . all ( promises ) ;
4150 } ;
4251
4352 /**
@@ -73,11 +82,11 @@ angular.module('mm.core')
7382 return language ;
7483 } , function ( ) {
7584 // Error getting locale. Use default language.
76- return mmCoreConfigConstants . default_lang || 'en' ;
85+ return mmCoreConfigConstants . default_lang || fallbackLanguage ;
7786 } ) ;
7887 } catch ( err ) {
7988 // Error getting locale. Use default language.
80- return mmCoreConfigConstants . default_lang || 'en' ;
89+ return mmCoreConfigConstants . default_lang || fallbackLanguage ;
8190 }
8291 } ) . then ( function ( language ) {
8392 currentLanguage = language ; // Save it for later.
0 commit comments