diff --git a/www/js/app.js b/www/js/app.js
index 1bccc7be946aa02c8dfa150b9bfacb8bd13464a3..5f7350ede101354bd1e9d2c72006ca36d8e58e8c 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -267,10 +267,12 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
     $animateProvider.classNameFilter( /\banimate-/ );
   })
 
+  // Configure cache (used by HTTP requests) default max age
   .config(function (CacheFactoryProvider) {
     angular.extend(CacheFactoryProvider.defaults, { maxAge: 60 * 1000 /*1min*/});
   })
 
+  // Configure screen size detection
   .config(function(screenmatchConfigProvider) {
     screenmatchConfigProvider.config.rules = 'bootstrap';
   })
@@ -280,6 +282,8 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
     // JS scrolling need for iOs (see http://blog.ionic.io/native-scrolling-in-ionic-a-tale-in-rhyme/)
     var enableJsScrolling = ionic.Platform.isIOS();
     $ionicConfigProvider.scrolling.jsScrolling(enableJsScrolling);
+
+    // Configure the view cache
     $ionicConfigProvider.views.maxCache(5);
   })
 
@@ -292,7 +296,7 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
   $rootScope.device = Device;
 
   // removeIf(device)
-  // Automatic redirection to large state (if exists)
+  // Automatic redirection to large state (if define)
   $rootScope.$on('$stateChangeStart', function (event, next, nextParams, fromState) {
     if (next.data.large && !UIUtils.screen.isSmall()) {
       var redirect = !$rootScope.tour && !event.currentScope.tour; // disabled for help tour
@@ -304,7 +308,7 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
   });
   // endRemoveIf(device)
 
-  // We use 'Device.ready()' instead of '$ionicPlatform.ready()', because it could be call many times
+  // We use 'Device.ready()' instead of '$ionicPlatform.ready()', because this one is callable many times
   Device.ready()
   .then(function() {
 
@@ -329,9 +333,8 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
       // UIUtils.disableEffects();
     }
   })
-  // Status bar
+  // Status bar style
   .then(function() {
-    ionic.Platform.fullScreen();
     if (window.StatusBar) {
       // org.apache.cordova.statusbar required
       StatusBar.styleDefault();
@@ -348,7 +351,7 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
     }
     catch(err) {
       moment.locale('en');
-      console.warn('[app] Unknown local for moment lib. Using default');
+      console.warn('[app] Unknown local for moment lib. Using default [en]');
     }
 
     // config numeral lib
@@ -357,7 +360,7 @@ angular.module('cesium', ['ionic', 'ionic-material', 'ngMessages', 'pascalprecht
     }
     catch(err) {
       numeral.language('en');
-      console.warn('[app] Unknown local for numeral lib. Using default');
+      console.warn('[app] Unknown local for numeral lib. Using default [en]');
     }
 
     // Set some translation need by filters
diff --git a/www/js/controllers/settings-controllers.js b/www/js/controllers/settings-controllers.js
index a653c3e60ccba3db2aae48b0957a4134e41b59c3..ff955b23013f0bd5a99f2c88f9580472ccf7eafd 100644
--- a/www/js/controllers/settings-controllers.js
+++ b/www/js/controllers/settings-controllers.js
@@ -39,7 +39,7 @@ function SettingsController($scope, $q, $ionicPopup, $timeout, $translate, csHtt
     $scope.loading = true; // to avoid the call of csWallet.store()
 
     // Fill locales
-    $scope.locales = angular.copy(UIUtils.locales);
+    $scope.locales = angular.copy(csSettings.locales);
     var locale = _.findWhere($scope.locales, {id: csSettings.defaultSettings.locale.id});
     angular.merge($scope.formData, csSettings.data);
     $scope.formData.locale = locale;
diff --git a/www/js/services/settings-services.js b/www/js/services/settings-services.js
index a1ee429dcf47f5a404ddcfdfcb3258620def8c83..0f5f8b540db13201848471c7f6396667bf8aaeb2 100644
--- a/www/js/services/settings-services.js
+++ b/www/js/services/settings-services.js
@@ -1,14 +1,40 @@
 
 angular.module('cesium.settings.services', ['ngResource', 'ngApi', 'cesium.config', 'cesium.device.services'])
 
-.factory('csSettings', function($q, Api, localStorage, $translate, csConfig, Device, $rootScope) {
+.factory('csSettings', function($q, Api, localStorage, $translate, csConfig, Device) {
   'ngInject';
 
     CSSettings = function(id) {
 
+      // Define app locales
+      var locales = [
+        {id:'en',    label:'English'},
+        {id:'en-GB', label:'English (UK)'},
+        {id:'fr-FR', label:'Français'},
+        {id:'nl-NL', label:'Nederlands'}
+      ];
+      var fallbackLocale = csConfig.fallbackLanguage ? fixLocale(csConfig.fallbackLanguage) : 'en';
+
+      // Convert browser locale to app locale (fix #140)
       function fixLocale (locale) {
-        // convert in app locale (fix #140)
-        return locale && locale.startsWith('fr') ? 'fr-FR' : 'en';
+        if (!locale) return fallbackLocale;
+
+        // exists in app locales: use it
+        if (_.findWhere(locales, {id: locale})) return locale;
+
+        // not exists: reiterate with the root(e.g. 'fr-XX' -> 'fr')
+        var localeParts = locale.split('-');
+        if (localeParts.length > 1) {
+          return fixLocale(localeParts[0]);
+        }
+
+        // If another locale exists with the same root: use it
+        var similarLocale = _.find(locales, function(l) {
+          return l.startsWith(locale);
+        });
+        if (similarLocale) return similarLocale;
+
+        return fallbackLocale;
       }
 
       var
@@ -172,7 +198,8 @@ angular.module('cesium.settings.services', ['ngResource', 'ngApi', 'cesium.confi
       restore: restore,
       defaultSettings: defaultSettings,
       // api extension
-      api: api
+      api: api,
+      locales: locales
     };
   };
 
diff --git a/www/js/services/utils-services.js b/www/js/services/utils-services.js
index 42a3fdf6c61bd460f5a1265dd517d60999482c83..b9e1c73fb753a586adfd3a3be6e471d788971112 100644
--- a/www/js/services/utils-services.js
+++ b/www/js/services/utils-services.js
@@ -623,13 +623,7 @@ angular.module('cesium.utils.services', ['ngResource'])
     image: {
       resizeFile: resizeImageFromFile,
       resizeSrc: resizeImageFromSrc
-    },
-    locales: [
-      {id:'en', label:'English'},
-      {id:'en-GB', label:'English (UK)'},
-      {id:'fr-FR', label:'Français'},
-      {id:'nl-NL', label:'Nederlands'}
-    ]
+    }
   };
 })