angularjs - 使用AngularJS静态文件加载器时如何优雅地处理丢失的翻译文件?
问题描述
如果您的useStaticFilesLoader
定义中有多个规则,其中一个是丢失的文件夹,即使未使用包含在丢失文件中的翻译,角度翻译也会失败。
例如,我用prompts
错误的名称替换了实际的文件夹foo
名称。如果您恢复正确的文件夹名称,一切正常。
$translateProvider.useStaticFilesLoader({
files: [{
prefix: 'lang_',
suffix: '.json'
}, {
prefix: 'foo/lang_',
suffix: '.json'
}]
});
有没有办法忽略丢失的文件并继续使用其他文件?
解决方案
一种可能的解决方案是使用自定义加载器而不是标准静态加载器。
app.factory('translationLoader', function ($q, $http) {
return function (options) {
var deferred = $q.defer(),
translations;
$http.get('lang_' options.key + '.json')
.then(function (res) {
translations = res.data;
$http.get('subfolder/lang_' + options.key + '.json')
.then(function (res) {
translations = translations.concat(res.data);
}, function () {
deferred.resolve(translations);
})
.finally(function () {
deferred.resolve(translations);
});
}, function () {
deferred.reject(options.key);
});
return deferred.promise;
};
})
.config([
'$translateProvider',
function ($translateProvider) {
$translateProvider
.useSanitizeValueStrategy(null)
.useLoader('translationLoader');
}
]);
推荐阅读
- python - Tf.keras.Model 类~自变量性能
- java - RX java将可观察对象与一对多关系结合起来
- r - R scatter.smooth 函数 - 如何将 x 轴的标签从数字更改为分类变量?
- html - 如何在wordpress中添加下一个上一个?
- redirect - Spring Security 有没有办法从没有路径的 API 调用重定向?
- typescript - AWS CDK 自定义资源创建
- java - Spark-xml vs SAX Parser vs DOM parser,哪个更好?
- swift - 将全局快捷方式添加到 macCatalyst 应用程序
- entity-framework-core - EFCore DbConnection.CreateCommand 参数未通过
- stack - 栈和栈有什么区别
和堆栈 ? 有人能告诉我区别吗