From 6235d506e226fd952fd43ce83b2ba9a4decb4f15 Mon Sep 17 00:00:00 2001 From: Pratiksha Khandagale Date: Wed, 10 Jul 2024 13:01:52 +0530 Subject: [PATCH] Language translation issue fixed --- .../langauge-select.component.ts | 3 + .../langauge-select/language.service.ts | 15 +++ src/app/tabs/tabs.page.html | 12 ++- src/app/tabs/tabs.page.ts | 31 +++++- src/assets/appConfig/garhwal-school.json | 8 +- src/assets/appConfig/hummingbird-school.json | 9 +- src/assets/appConfig/localhost.json | 94 ++++++++++--------- 7 files changed, 118 insertions(+), 54 deletions(-) create mode 100644 src/app/components/langauge-select/language.service.ts diff --git a/src/app/components/langauge-select/langauge-select.component.ts b/src/app/components/langauge-select/langauge-select.component.ts index 59e58faa..935f264e 100644 --- a/src/app/components/langauge-select/langauge-select.component.ts +++ b/src/app/components/langauge-select/langauge-select.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { ModalController, NavParams } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; import { StorageService } from 'src/app/services'; +import { LanguageService } from './language.service'; @Component({ selector: 'app-langauge-select', @@ -14,6 +15,7 @@ export class LangaugeSelectComponent implements OnInit { constructor(private translateService: TranslateService, private navParams: NavParams, private modalCtrl: ModalController, + private languageService: LanguageService, private storage: StorageService) { } async ngOnInit() { @@ -34,6 +36,7 @@ export class LangaugeSelectComponent implements OnInit { this.translateService.use(val); // } this.selectedLanguage = val; + this.languageService.setLanguage(val) this.dismissModal(); } diff --git a/src/app/components/langauge-select/language.service.ts b/src/app/components/langauge-select/language.service.ts new file mode 100644 index 00000000..c27dd4d4 --- /dev/null +++ b/src/app/components/langauge-select/language.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class LanguageService { + private languageSubject = new BehaviorSubject(localStorage.getItem('DJPData.lang') || 'en'); + currentLanguage$ = this.languageSubject.asObservable(); + + setLanguage(language: string) { + localStorage.setItem('DJPData.lang', language); + this.languageSubject.next(language); + } +} diff --git a/src/app/tabs/tabs.page.html b/src/app/tabs/tabs.page.html index 6be2f479..85c46324 100644 --- a/src/app/tabs/tabs.page.html +++ b/src/app/tabs/tabs.page.html @@ -8,17 +8,23 @@ - {{ configVariables?.kathaSakhiBotName }} + {{ configVariables?.[language]?.kathaSakhiBotName }} + {{'Katha Sakhi' | translate }} + - {{ configVariables?.parentTaraBotName }} + {{ configVariables?.[language]?.parentTaraBotName }} + {{'Parent Tara' | translate }} + - {{ configVariables?.teacherTaraBotName }} + {{ configVariables?.[language]?.teacherTaraBotName }} + {{'Teacher Tara' | translate }} + diff --git a/src/app/tabs/tabs.page.ts b/src/app/tabs/tabs.page.ts index b9158e68..648c0796 100644 --- a/src/app/tabs/tabs.page.ts +++ b/src/app/tabs/tabs.page.ts @@ -1,4 +1,4 @@ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, OnInit } from '@angular/core'; import { IonTabs, ModalController, Platform } from '@ionic/angular'; import { OnTabViewWillEnter } from './on-tabs-view-will-enter'; import { Router } from '@angular/router'; @@ -7,21 +7,29 @@ import { TelemetryGeneratorService } from '../services/telemetry/telemetry.gener import { AppExitComponent } from '../components/app-exit/app-exit.component'; import { App } from '@capacitor/app'; import { ConfigVariables } from "../config"; +import { LanguageService } from '../components/langauge-select/language.service'; +import { StorageService } from 'src/app/services'; @Component({ selector: 'app-tabs', templateUrl: 'tabs.page.html', styleUrls: ['tabs.page.scss'] }) -export class TabsPage implements OnTabViewWillEnter{ +export class TabsPage implements OnTabViewWillEnter, OnInit{ subscription: any; optModalOpen = false; configVariables: any; + languageSubscription: any; + isTitleChanged : boolean = false; + language: string = ''; + @ViewChild('tabRef', { static: false }) tabRef!: IonTabs; constructor(private platform: Platform, private router: Router, private tabService: TabsService, private telemetry: TelemetryGeneratorService, + private languageService: LanguageService, + private storage : StorageService, private modalCtrl: ModalController) { ConfigVariables.then(config => { console.log('Configuration:', config); @@ -36,6 +44,25 @@ export class TabsPage implements OnTabViewWillEnter{ this.tabService.show(); } + async ngOnInit() { + this.language = await this.storage.getData('lang') || 'en'; + this.isTitleChanged = this.configVariables.titleCode.includes(this.language); + console.log(`Loading data for language: ${this.language}`); + + this.languageSubscription = this.languageService.currentLanguage$.subscribe( + (language) => { + this.loadTabData(language); + } + ); + } + + loadTabData(language: string) { + this.language = language; + this.isTitleChanged = this.configVariables.titleCode.includes(language); + console.log(`Loading data for language: ${language}`); + // Example data loading logic: + } + // Prevent back naviagtion ionViewDidEnter() { this.tabService.show() diff --git a/src/assets/appConfig/garhwal-school.json b/src/assets/appConfig/garhwal-school.json index 273c1e4c..e2834cc6 100644 --- a/src/assets/appConfig/garhwal-school.json +++ b/src/assets/appConfig/garhwal-school.json @@ -59,9 +59,11 @@ "default": true } ], - "kathaSakhiBotName": "Story GEMS", - "parentTaraBotName": "Parent GEMS", - "teacherTaraBotName": "Teacher GEMS", + "en": { + "kathaSakhiBotName": "Story GEMS", + "parentTaraBotName": "Parent GEMS", + "teacherTaraBotName": "Teacher GEMS" + }, "footerText": "Developed with ❤️ by Tekdi Technologies ", "headerColor": "brown", "headerFontSize": "16", diff --git a/src/assets/appConfig/hummingbird-school.json b/src/assets/appConfig/hummingbird-school.json index e20414e5..4233b6df 100644 --- a/src/assets/appConfig/hummingbird-school.json +++ b/src/assets/appConfig/hummingbird-school.json @@ -69,9 +69,12 @@ "default": true } ], - "kathaSakhiBotName": "Story Baideo", - "parentTaraBotName": "Parent Bondhu", - "teacherTaraBotName": "Teacher Bondhu", + "en": { + "kathaSakhiBotName": "Story Baideo", + "parentTaraBotName": "Parent Bondhu", + "teacherTaraBotName": "Teacher Bondhu" + }, + "footerText": "Developed with ❤️ by Tekdi Technologies ", "headerColor": "brown", "headerFontSize": "16", diff --git a/src/assets/appConfig/localhost.json b/src/assets/appConfig/localhost.json index 273c1e4c..f2028b21 100644 --- a/src/assets/appConfig/localhost.json +++ b/src/assets/appConfig/localhost.json @@ -7,46 +7,48 @@ "key": "agegroup", "value": "3-6" }, - "headerFilters": [{ - "defaultFilter": { - "id": "All", - "label": "All", - "query": "", - "filters": "All" - }, - "additionalFilters": [ - { - "id": "Stories", - "label": "Stories", - "query": "Stories", - "filters": "Stories" - }, - { - "id": "Activities", - "label": "Activities", - "query": "Activities", - "filters": "Activities" - }, - { - "id": "Songs", - "label": "Songs", - "query": "Songs", - "filters": "Songs" - }, - { - "id": "Audio Books", - "label": "Audio Books", - "query": "Audio Books", - "filters": "Audio Books" + "headerFilters": [ + { + "defaultFilter": { + "id": "All", + "label": "All", + "query": "", + "filters": "All" }, - { - "id": "Handbooks", - "label": "Handbooks", - "query": "Handbooks", - "filters": "Handbooks" - } - ] - }], + "additionalFilters": [ + { + "id": "Stories", + "label": "Stories", + "query": "Stories", + "filters": "Stories" + }, + { + "id": "Activities", + "label": "Activities", + "query": "Activities", + "filters": "Activities" + }, + { + "id": "Songs", + "label": "Songs", + "query": "Songs", + "filters": "Songs" + }, + { + "id": "Audio Books", + "label": "Audio Books", + "query": "Audio Books", + "filters": "Audio Books" + }, + { + "id": "Handbooks", + "label": "Handbooks", + "query": "Handbooks", + "filters": "Handbooks" + } + ] + } + ], "languages": [ { "id": "en", @@ -59,12 +61,18 @@ "default": true } ], - "kathaSakhiBotName": "Story GEMS", - "parentTaraBotName": "Parent GEMS", - "teacherTaraBotName": "Teacher GEMS", + + "titleCode": [ + "en" + ], + "en": { + "kathaSakhiBotName": "Story GEMS", + "parentTaraBotName": "Parent GEMS", + "teacherTaraBotName": "Teacher GEMS" + }, "footerText": "Developed with ❤️ by Tekdi Technologies ", "headerColor": "brown", "headerFontSize": "16", "footerColor": "brown", "footerFontSize": "16" -} +} \ No newline at end of file