Languages with deviceready

in deviceready i use globalization plugins for know mobile which language useing…

but the view working before deviceready trigger… another words i want get info from devicereadey before view working how do it…???

in my deviceready() this code:

var lang="";
var cLANGUAGE = “”;
navigator.globalization.getPreferredLanguage(function (locale) {
cLANGUAGE = locale.value.substr(0,2);
if((cLANGUAGE.toString() == “tr”) || (cLANGUAGE.toString() == “turkish”) || (cLANGUAGE.toString().indexOf(“tr”) !== -1 ))
{localStorage.setItem(“lang”,“tr”);}
else if ((cLANGUAGE.toString() == “ar”) || (cLANGUAGE.toString() == “arabic”) || (cLANGUAGE == “ar-AE”) || (cLANGUAGE.toString().indexOf(“ar”) !== -1 ))
{localStorage.setItem(“lang”,“ar”);
$$(‘body’).attr(‘class’,‘ar’);
}
else {
localStorage.setItem(“lang”,“en”);
}

		},
function () {cLANGUAGE = "en";
localStorage.setItem("lang","en");
}

);

the view is:

if(localStorage.getItem(“username”) == “is_logged_in”){
app.preloader.show();
setTimeout(function () {

    app.preloader.hide();
	
   
  }, 1000);
	var mainView= app.views.create('.view-main', {

url: ‘/category/’
});

  }else {

app.preloader.show();
setTimeout(function () {

    app.preloader.hide();
	
   
  }, 1000);


	 var mainView = app.views.create('.view-main', {

url: ‘/’
});

  1. Set option init on create instance Framework7 to false for prevent auto-initialization Framework7 app (and your views).
  2. In deviceready event. Simplify your code to navigator.globalization.getPreferredLanguage(function (locale) { $$(‘body’).addClass(locale); }); :wink: …and next set localStorage, add custom logic, create views e.t.c.
  3. After this, call app.init() of Framework7 instance for manual init Framework7 app.

Cordova globalization plugin is obsolete, use native HTML navigator.language and you won’t need any device ready for this

1 Like