Browse Source

fix cannot load language resource before page loaded

MaysWind 4 years ago
parent
commit
6f2c5646c2

+ 13 - 1
app/scripts/services/ariaNgLanguageLoader.js

@@ -1,7 +1,7 @@
 (function () {
     'use strict';
 
-    angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgStorageService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLocalizationService, ariaNgLogService, ariaNgStorageService) {
+    angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgStorageService', 'ariaNgNativeElectronService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLocalizationService, ariaNgLogService, ariaNgStorageService, ariaNgNativeElectronService) {
         var getKeyValuePair = function (line) {
             for (var i = 0; i < line.length; i++) {
                 if (i > 0 && line.charAt(i - 1) !== '\\' && line.charAt(i) === '=') {
@@ -129,6 +129,18 @@
 
             var languagePath = ariaNgConstants.languagePath + '/' + options.key + ariaNgConstants.languageFileExtension;
 
+            try {
+                var languageContent = ariaNgNativeElectronService.readPackageFile(languagePath);
+                ariaNgLogService.info('[ariaNgLanguageLoader] sync load language resource successfully, path=' + languagePath);
+
+                var languageObject = getLanguageObject(languageContent);
+                deferred.resolve(languageObject);
+
+                return deferred.promise;
+            } catch (ex) {
+                ariaNgLogService.error('[ariaNgLanguageLoader] cannot load language resource synchronously, path=' + languagePath, ex);
+            }
+
             $http({
                 url: languagePath,
                 method: 'GET'

+ 3 - 0
app/scripts/services/ariaNgNativeElectronService.js

@@ -113,6 +113,9 @@
             isLocalFSExists: function (fullpath) {
                 return localfs.isExists(fullpath);
             },
+            readPackageFile: function (path) {
+                return localfs.readPackageFile(path);
+            },
             openProjectLink: function () {
                 return shell.openExternal && shell.openExternal('https://github.com/mayswind/AriaNg-Native');
             },

+ 6 - 1
main/localfs.js

@@ -11,7 +11,12 @@ let isExists = function (fullPath) {
     return fs.existsSync(fullPath);
 };
 
+let readPackageFile = function (filePath) {
+    return fs.readFileSync(path.join(__dirname, '../app/', filePath), 'UTF-8');
+};
+
 module.exports = {
     getFullPath: getFullPath,
-    isExists: isExists
+    isExists: isExists,
+    readPackageFile: readPackageFile
 };