save and load language data to/from localstorage for faster load time
the second time around.
This commit is contained in:
parent
39a4d99aad
commit
170951164b
@ -1,7 +1,7 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
define(
|
define(
|
||||||
[ 'config', 'util/dom', 'util/object', 'util/string', 'util/addpublishers', 'lib/reqwest' ],
|
[ 'config', 'util/dom', 'util/object', 'util/string', 'util/addpublishers', 'lib/reqwest', 'lib/localforage.nopromises' ],
|
||||||
function ( config, domHelper, objectHelper, stringHelper, addPublishers, reqwest ) {
|
function ( config, domHelper, objectHelper, stringHelper, addPublishers, reqwest, localforage ) {
|
||||||
function LocalisationModel () {
|
function LocalisationModel () {
|
||||||
if ( ! ( this instanceof LocalisationModel ) ) {
|
if ( ! ( this instanceof LocalisationModel ) ) {
|
||||||
return new LocalisationModel();
|
return new LocalisationModel();
|
||||||
@ -20,15 +20,17 @@ define(
|
|||||||
|
|
||||||
var linkOptions = { links: { newTab: true } };
|
var linkOptions = { links: { newTab: true } };
|
||||||
|
|
||||||
function setLanguage ( newLanguage ) {
|
loadLanguageFromStorage();
|
||||||
if ( newLanguage !== currentLanguage && newLanguage in config.availableLanguages ) {
|
|
||||||
loadLanguage( newLanguage );
|
function setLanguage ( newLanguageName ) {
|
||||||
|
if ( newLanguageName !== currentLanguage && config.settings.language.options.indexOf( newLanguageName ) !== -1 ) {
|
||||||
|
loadLanguageFile( newLanguageName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function settingUpdated ( name, value ) {
|
function settingUpdated ( name, value ) {
|
||||||
if ( name === 'language' && value !== currentLanguage ) {
|
if ( name === 'language' && value !== currentLanguage ) {
|
||||||
loadLanguage( value );
|
setLanguage( value );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +46,7 @@ define(
|
|||||||
updateAllTexts();
|
updateAllTexts();
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadLanguage ( languageName ) {
|
function loadLanguageFile ( languageName ) {
|
||||||
languageWasLoaded = false;
|
languageWasLoaded = false;
|
||||||
|
|
||||||
reqwest( {
|
reqwest( {
|
||||||
@ -57,19 +59,34 @@ define(
|
|||||||
publishers.error.dispatch( 'I\'m really sorry. I failed to load the language file for ' + languageName + '. This is a serious error that makes the app very hard to use. Maybe you can try reloading?' );
|
publishers.error.dispatch( 'I\'m really sorry. I failed to load the language file for ' + languageName + '. This is a serious error that makes the app very hard to use. Maybe you can try reloading?' );
|
||||||
},
|
},
|
||||||
success: function ( res ) {
|
success: function ( res ) {
|
||||||
languageLoaded( languageName, res );
|
languageLoaded( res.lang, res );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
function languageLoaded ( newLanguageName, newTexts ) {
|
function loadLanguageFromStorage () {
|
||||||
|
localforage.getItem( config.keys.language, function ( err, loadedLanguage ) {
|
||||||
|
if ( ! err ) {
|
||||||
|
if ( loadedLanguage && loadedLanguage.lang ) {
|
||||||
|
languageLoaded( loadedLanguage.lang, loadedLanguage );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} )
|
||||||
|
}
|
||||||
|
|
||||||
|
function languageLoaded ( newLanguageName, newLanguage ) {
|
||||||
currentLanguage = newLanguageName;
|
currentLanguage = newLanguageName;
|
||||||
languageWasLoaded = true;
|
languageWasLoaded = true;
|
||||||
texts = newTexts;
|
texts = newLanguage;
|
||||||
|
saveLanguage( newLanguage );
|
||||||
resetAllTexts();
|
resetAllTexts();
|
||||||
updateAllTexts();
|
updateAllTexts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saveLanguage ( newLanguage ) {
|
||||||
|
localforage.setItem( config.keys.language, newLanguage );
|
||||||
|
}
|
||||||
|
|
||||||
function updateAllTexts () {
|
function updateAllTexts () {
|
||||||
if ( languageWasLoaded ) {
|
if ( languageWasLoaded ) {
|
||||||
cancelAnimationFrame( animationFrameId );
|
cancelAnimationFrame( animationFrameId );
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user