我正在研究这个Ionic应用程序,我正在使用angular-translate-loader-static-files和angular-translate来加载一堆语言.json文件。
一切都运行良好,但我正在试图弄清楚如何基本上“重新运行$ translateProvider”,以便它可以重新加载所有静态文件,因为.json文件将定期从服务器更新。我还没想到这一点,甚至试图强制“页面重新加载”也不会导致静态文件重新加载。
我应该注意到我目前正在iOS中对此进行测试,并且我意识到目录结构将根据操作系统进行更改。
这是我的服务,利用$ cordovaFile用新文本覆盖文件。现在我只是使用一个简单的json字符串来确保我可以解决问题:
(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:
的摘录// Setup the language translations
$translateProvider.useStaticFilesLoader({
prefix: 'languages/',
suffix: '.json'
});
以下是我的控制器的片段:
Translations.updateLanguageFile('en_US');
当我在运行此函数后打开文件时,文件的内容会被替换,并且正在完全按照我的要求进行操作,但我希望我的应用程序中的语言变量也会更新,并且不是。
关于在这里可以做些什么的任何想法?
答案 0 :(得分:1)
Doink,我需要在我的服务函数中使用$ translate.refresh()。所以现在它看起来像这样:
(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
}
}
})();