我正在使用angular-translate翻译我的网站并且它有效。但现在,我想在出现问题时显示错误对话框(api请求)。为此,我创建了一个服务来显示一个带有两个参数title和错误消息的模态。
错误信息的一部分是静态的,因此我可以使用angular-translate直接翻译它。
这是我的服务(errorModal.service.js):
(function () {
'use strict';
angular
.module('app.core.project')
.factory('errorDialog', ['$mdDialog', '$document', '$translatePartialLoader', '$translate', errorDialog]);
/** @ngInject */
function errorDialog($mdDialog, $document, $translatePartialLoaderProvider, $translate)
{
var service = {
displayError : displayError
};
// path to i18n folder : /app/core-project/services/i18n/{lang}.json but it can't be used...
$translatePartialLoaderProvider.addPart('/app/core-project/services/');
return service;
function displayError(title, errorMessage, clickOutsideToClose)
{
// error_modal.message isn't translated
var message = $translate.instant('error_modal.message') + errorMessage;
console.log(message); // show "error_modal.message"
$mdDialog.show(
$mdDialog.alert()
.parent(angular.element($document.body))
.clickOutsideToClose(clickOutsideToClose)
.title(title)
.htmlContent(message)
.ariaLabel(title)
.ok('OK')
);
}
}
})();
如何在此服务的特定路径中使用i18n文件?
非常感谢你的帮助!
答案 0 :(得分:0)
我找到了解决方案。我刚刚将translatePartialLoader提供程序添加到我的配置中,指定了找到翻译的文件夹。
(function ()
{
'use strict';
angular
.module('app.core.project')
.config(config);
/** @ngInject */
function config($translatePartialLoaderProvider)
{
// Put your custom configurations here
$translatePartialLoaderProvider.addPart('app/core-project/services');
}
})();
和我的errorModal.service.js
(function () {
'use strict';
angular
.module('app.core.project')
.factory('errorDialog', ['$mdDialog', '$document', '$translate', errorDialog]);
/** @ngInject */
function errorDialog($mdDialog, $document, $translate)
{
var service = {
displayError : displayError
};
return service;
function displayError(statusCode, errorMessage)
{
var clickOutsideToClose = false;
var title = $translate.instant('core_project.dialog.error.status_code', { statusCode: statusCode });
var message = $translate.instant('core_project.dialog.error.message', { message: errorMessage });
$mdDialog.show(
$mdDialog.alert()
.parent(angular.element($document.body))
.clickOutsideToClose(clickOutsideToClose)
.title(title)
.htmlContent(message)
.ariaLabel(title)
.ok('OK')
);
}
}
})();