98 lines
2.8 KiB
JavaScript
Executable File
98 lines
2.8 KiB
JavaScript
Executable File
/*!
|
|
* angular-translate - v2.6.1 - 2015-03-01
|
|
* http://github.com/angular-translate/angular-translate
|
|
* Copyright (c) 2015 ; Licensed MIT
|
|
*/
|
|
angular.module('pascalprecht.translate')
|
|
|
|
/**
|
|
* @ngdoc object
|
|
* @name pascalprecht.translate.$translateLocalStorage
|
|
* @requires $window
|
|
* @requires $translateCookieStorage
|
|
*
|
|
* @description
|
|
* Abstraction layer for localStorage. This service is used when telling angular-translate
|
|
* to use localStorage as storage.
|
|
*
|
|
*/
|
|
.factory('$translateLocalStorage', ['$window', '$translateCookieStorage', function ($window, $translateCookieStorage) {
|
|
|
|
// Setup adapter
|
|
var localStorageAdapter = (function(){
|
|
var langKey;
|
|
return {
|
|
/**
|
|
* @ngdoc function
|
|
* @name pascalprecht.translate.$translateLocalStorage#get
|
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
|
*
|
|
* @description
|
|
* Returns an item from localStorage by given name.
|
|
*
|
|
* @param {string} name Item name
|
|
* @return {string} Value of item name
|
|
*/
|
|
get: function (name) {
|
|
if(!langKey) {
|
|
langKey = $window.localStorage.getItem(name);
|
|
}
|
|
|
|
return langKey;
|
|
},
|
|
/**
|
|
* @ngdoc function
|
|
* @name pascalprecht.translate.$translateLocalStorage#set
|
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
|
*
|
|
* @description
|
|
* Sets an item in localStorage by given name.
|
|
*
|
|
* @deprecated use #put
|
|
*
|
|
* @param {string} name Item name
|
|
* @param {string} value Item value
|
|
*/
|
|
set: function (name, value) {
|
|
langKey=value;
|
|
$window.localStorage.setItem(name, value);
|
|
},
|
|
/**
|
|
* @ngdoc function
|
|
* @name pascalprecht.translate.$translateLocalStorage#put
|
|
* @methodOf pascalprecht.translate.$translateLocalStorage
|
|
*
|
|
* @description
|
|
* Sets an item in localStorage by given name.
|
|
*
|
|
* @param {string} name Item name
|
|
* @param {string} value Item value
|
|
*/
|
|
put: function (name, value) {
|
|
langKey=value;
|
|
$window.localStorage.setItem(name, value);
|
|
}
|
|
};
|
|
}());
|
|
|
|
var hasLocalStorageSupport = 'localStorage' in $window;
|
|
if (hasLocalStorageSupport) {
|
|
var testKey = 'pascalprecht.translate.storageTest';
|
|
try {
|
|
// this check have to be wrapped within a try/catch because on
|
|
// a SecurityError: Dom Exception 18 on iOS
|
|
if ($window.localStorage !== null) {
|
|
$window.localStorage.setItem(testKey, 'foo');
|
|
$window.localStorage.removeItem(testKey);
|
|
hasLocalStorageSupport = true;
|
|
} else {
|
|
hasLocalStorageSupport = false;
|
|
}
|
|
} catch (e){
|
|
hasLocalStorageSupport = false;
|
|
}
|
|
}
|
|
var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage;
|
|
return $translateLocalStorage;
|
|
}]);
|