From f421d135a6b0f1daf4dfd92282af04fac52a0d2e Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Sun, 20 Aug 2023 16:13:21 +0200 Subject: [PATCH] Translations are working on the client side again --- imports/i18n/tap.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) 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) {