|
|
@@ -1,7 +1,7 @@
|
|
|
(function () {
|
|
|
'use strict';
|
|
|
|
|
|
- angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLogService', 'ariaNgStorageService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLogService, ariaNgStorageService) {
|
|
|
+ angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgStorageService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLocalizationService, ariaNgLogService, ariaNgStorageService) {
|
|
|
var getKeyValuePair = function (line) {
|
|
|
for (var i = 0; i < line.length; i++) {
|
|
|
if (i > 0 && line.charAt(i - 1) !== '\\' && line.charAt(i) === '=') {
|
|
|
@@ -81,6 +81,33 @@
|
|
|
return langObj;
|
|
|
};
|
|
|
|
|
|
+ var isLanguageResourceEquals = function (langObj1, langObj2) {
|
|
|
+ if (!angular.isObject(langObj1) || !angular.isObject(langObj2)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (var key in langObj2) {
|
|
|
+ if (!langObj2.hasOwnProperty(key)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ var value = langObj2[key];
|
|
|
+
|
|
|
+ if (angular.isObject(value)) {
|
|
|
+ var result = isLanguageResourceEquals(langObj1[key], value);
|
|
|
+ if (!result) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (value !== langObj1[key]) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+
|
|
|
return function (options) {
|
|
|
var deferred = $q.defer();
|
|
|
|
|
|
@@ -106,7 +133,25 @@
|
|
|
method: 'GET'
|
|
|
}).then(function onSuccess(response) {
|
|
|
var languageObject = getLanguageObject(response.data);
|
|
|
+ var languageUpdated = false;
|
|
|
+
|
|
|
+ if (languageResource) {
|
|
|
+ languageUpdated = !isLanguageResourceEquals(languageResource, languageObject);
|
|
|
+ }
|
|
|
+
|
|
|
ariaNgStorageService.set(languageKey, languageObject);
|
|
|
+
|
|
|
+ if (languageUpdated) {
|
|
|
+ ariaNgLogService.info("[ariaNgLanguageLoader] load language resource successfully, and resource is updated");
|
|
|
+ ariaNgLocalizationService.notifyInPage('', 'Language resource has been updated, please reload the page for the changes to take effect.', {
|
|
|
+ delay: false,
|
|
|
+ type: 'info',
|
|
|
+ templateUrl: 'views/notification-reloadable.html'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ ariaNgLogService.info("[ariaNgLanguageLoader] load language resource successfully, but resource is not updated");
|
|
|
+ }
|
|
|
+
|
|
|
return deferred.resolve(languageObject);
|
|
|
}).catch(function onError(response) {
|
|
|
ariaNgLogService.warn('[ariaNgLanguageLoader] cannot get language resource');
|