UNPKG

@genexus/web-standard-functions

Version:

GeneXus JavaScript standard functions library for web generators

78 lines 2.72 kB
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