Reload angular-translate-static-loader-files within app, without refresh in Ionic
我正在使用此Ionic应用程序,正在使用带有angular-translate的angular-translate-loader-static-files加载一堆语言.json文件。
一切正常,但是我试图弄清楚如何基本上"重新运行$ translateProvider",以便它可以重新加载所有静态文件,因为.json文件将定期从服务器更新。 。我还没有弄清楚这一点,即使尝试强制执行"页面重新加载"也不会导致静态文件重新加载。
我应该注意,我目前正在iOS上对此进行测试,并且我意识到目录结构将根据OS进行更改。
这是我的服务,该服务利用$ cordovaFile用新文本覆盖文件。现在,我只是使用一个简单的json字符串来确保我可以解决问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | (function() { 'use-strict'; angular.module('coursemill.services') .service('Translations', Translations); /** * Service: Check network connection */ function Translations($cordovaFile) { function updateLanguageFile(lang) { document.addEventListener("deviceready", function() { $cordovaFile.checkFile(cordova.file.applicationDirectory +"/www/languages/", lang +".json") .then(function (success) { // Update the language file $cordovaFile.writeFile(cordova.file.applicationDirectory +"/www/languages/", lang +".json", '{"COURSES_MENU_REQUIRED":"Required"}', true) .then(function (success) { // TO-DO: reload translation files }, function (error) {}); }, function (error) {}); }); } return { updateLanguageFile: updateLanguageFile } } })(); |
这是我的.config中的摘录:
1 2 3 4 5 | // Setup the language translations $translateProvider.useStaticFilesLoader({ prefix: 'languages/', suffix: '.json' }); |
这是我的控制器中的代码段:
1 | Translations.updateLanguageFile('en_US'); |
在运行此功能后打开文件时,文件的内容将被替换并完全按照我想要的方式进行操作,但是我也希望更新应用程序内的语言变量,并且它们不是。
有什么想法可以在这里做?
Doink,我需要在服务函数中使用$ translate.refresh()。所以现在看起来像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | (function() { 'use-strict'; angular.module('coursemill.services') .service('Translations', Translations); function Translations($cordovaFile, $translate) { function updateLanguageFile(lang) { document.addEventListener("deviceready", function() { $cordovaFile.checkFile(cordova.file.applicationDirectory +"/www/languages/", lang +".json") .then(function (success) { // Update the language file $cordovaFile.writeFile(cordova.file.applicationDirectory +"/www/languages/", lang +".json", '{"COURSES_MENU_REQUIRED":"Required"}', true) .then(function (success) { // Reload translation files $translate.refresh(); }, function (error) {}); }, function (error) {}); }); } return { updateLanguageFile: updateLanguageFile } } })(); |