devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
47 lines (46 loc) • 1.83 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\localization\localizationService.js)
* Version: 24.2.6
* Build date: Mar 18, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { DxDeferred, findFirstItemMatchesCondition } from '@devexpress/analytics-core/analytics-internal';
import * as $ from 'jquery';
class TranslationFactory {
constructor() {
this._services = {};
}
getFirstRegistered() {
return findFirstItemMatchesCondition(Object.keys(this._services), (serviseKey) => this._services[serviseKey].onRequest !== undefined);
}
getTranslations(texts, destinationLanguage) {
const $deferred = new DxDeferred();
DxDeferred.when(Object.keys(this._services).map((serviceName) => this.translate(serviceName, texts, destinationLanguage))).done((results) => {
$deferred.resolve([].concat(results));
});
return $deferred;
}
translate(name, texts, destinationLanguage) {
if (!this._services[name])
return;
const $deferred = new DxDeferred();
$.ajax(this._services[name].onRequest(texts, destinationLanguage)).done((result) => {
$deferred.resolve({ name, texts: this._services[name].onResponse(result) });
}).fail(() => $deferred.reject());
return $deferred.promise();
}
register(name, service) {
this._services[name] = service;
}
unregister(name) {
delete this._services[name];
}
}
export const _translationFactory = new TranslationFactory();
export function registerTranslationService(name, service) {
_translationFactory.register(name, service);
}
export function unregisterTranslationService(name) {
_translationFactory.unregister(name);
}