@genexus/web-standard-functions
Version:
GeneXus JavaScript standard functions library for web generators
78 lines • 2.72 kB
JavaScript
import { ConfigurationState } from "./configurationState";
import { getLanguage } from "../misc/getLanguage";
import { GeneXusSDNetwork } from "../gxcore/sd/network";
export class TranslationService {
static getInstance() {
if (!TranslationService.instance) {
TranslationService.instance = new TranslationService();
}
return TranslationService.instance;
}
constructor() {
this.translations = {};
this.images = {};
this.loadedTranslations = {};
this.loadedImages = {};
}
async loadTranslations(language, data) {
if (!this.loadedTranslations[language]) {
const msgTranslations = {};
data.Translations.forEach(t => (msgTranslations[t.M] = t.T));
this.translations[language] = msgTranslations;
this.loadedTranslations[language] = true;
}
}
async loadImages(language, theme, data) {
if (!this.loadedImages[language + theme]) {
const imgTranslations = {};
data.images.forEach(t => (imgTranslations[this.resolveImageKey(t.name, theme)] = `resources/${t.location}`));
this.images[language] = imgTranslations;
this.loadedImages[language + theme] = true;
}
}
translate(name, language = undefined) {
const lang = language !== undefined ? language : getLanguage();
let translation = name;
if (this.translations[lang] !== undefined) {
const msgTranslations = this.translations[lang];
if (msgTranslations[name] !== undefined) {
translation = msgTranslations[name];
}
}
return translation;
}
getImageSource(name, language, theme) {
const lang = language ? language : getLanguage();
let imageUrl = name;
if (this.images[lang] !== undefined) {
const imgTranslations = this.images[lang];
let key = this.resolveImageKey(name, theme);
if (imgTranslations[key] !== undefined) {
imageUrl = imgTranslations[key];
}
}
return this.getHostName() + imageUrl;
}
getHostName() {
let config = ConfigurationState.getInstance();
let serviceUrl = config.getDynStoredValue("SERVICE_URL");
if (serviceUrl) {
return GeneXusSDNetwork.applicationServerURL();
}
else {
return "";
}
}
resolveImageKey(name, theme) {
return `${name}_${theme}`;
}
}
export class TranslationsData {
}
export class TranslationsItemData {
}
export class ImagesData {
}
export class ImageData {
}
//# sourceMappingURL=translationService.js.map