diff --git a/imports/i18n/tap.js b/imports/i18n/tap.js index 3062e4a35..db865d35e 100644 --- a/imports/i18n/tap.js +++ b/imports/i18n/tap.js @@ -1,3 +1,4 @@ +import { ReactiveCache } from '/imports/reactiveCache'; import { Meteor } from 'meteor/meteor'; import { ReactiveVar } from 'meteor/reactive-var'; import Translation from '/models/translation'; @@ -44,14 +45,28 @@ export const TAPi18n = { getLanguage() { return this.current.get(); }, + loadTranslation(language) { + return new Promise((resolve, reject) => { + if (Meteor.isClient) { + const translationSubscription = Meteor.subscribe('translation', {language: language}, 0, { + onReady() { + resolve(translationSubscription); + }, + onError(error) { + reject(error); + } + }); + } else { + resolve(); + } + }); + }, async loadLanguage(language) { if (language in languages && 'load' in languages[language]) { let data = await languages[language].load(); let custom_translations = []; - if (Meteor.isClient) { - await Meteor.subscribe('translation', {language: language}, 0); - } + await this.loadTranslation(language); custom_translations = ReactiveCache.getTranslations({language: language}, {fields: { text: true, translationText: true }}); if (custom_translations && custom_translations.length > 0) {