fix: setting of default language

This commit is contained in:
Rainer Killinger
2021-02-23 11:35:39 +01:00
parent 350185b0d3
commit ccf8b1a5cc
6 changed files with 16 additions and 14 deletions

View File

@@ -55,7 +55,7 @@
"@ngx-translate/http-loader": "4.0.0", "@ngx-translate/http-loader": "4.0.0",
"@openstapps/api": "0.25.0", "@openstapps/api": "0.25.0",
"@openstapps/configuration": "0.25.0", "@openstapps/configuration": "0.25.0",
"@openstapps/core": "0.36.0", "@openstapps/core": "0.42.0",
"cordova-android": "9.0.0", "cordova-android": "9.0.0",
"cordova-browser": "6.0.0", "cordova-browser": "6.0.0",
"cordova-ios": "6.2.0", "cordova-ios": "6.2.0",

View File

@@ -66,10 +66,9 @@ export class AppComponent {
private readonly configProvider: ConfigProvider, private readonly configProvider: ConfigProvider,
private readonly logger: NGXLogger) { private readonly logger: NGXLogger) {
initLogger(logger); initLogger(logger);
this.initializeApp();
// this language will be used as a fallback when a translation isn't found in the current language // this language will be used as a fallback when a translation isn't found in the current language
translateService.setDefaultLang('en'); this.translateService.setDefaultLang('en');
this.initializeApp();
} }
/** /**
@@ -106,6 +105,9 @@ export class AppComponent {
try { try {
// set language from settings // set language from settings
if (this.configProvider.firstSession) {
await this.settingsProvider.setSettingValue('profile', 'language', this.translateService.getBrowserLang());
}
const languageCode = (await this.settingsProvider.getValue('profile', 'language')) as string; const languageCode = (await this.settingsProvider.getValue('profile', 'language')) as string;
this.thingTranslateService.translator.language = languageCode as SCLanguageCode; this.thingTranslateService.translator.language = languageCode as SCLanguageCode;
this.translateService.use(languageCode); this.translateService.use(languageCode);

View File

@@ -38,7 +38,6 @@ import {StorageModule} from './modules/storage/storage.module';
import {ThingTranslateModule} from './translation/thing-translate.module'; import {ThingTranslateModule} from './translation/thing-translate.module';
import {fakeBackendProvider} from './_helpers/fake-backend.interceptor'; import {fakeBackendProvider} from './_helpers/fake-backend.interceptor';
moment.locale('de');
registerLocaleData(localeDe); registerLocaleData(localeDe);
/** /**

View File

@@ -48,11 +48,14 @@ export class ConfigProvider {
* App configuration as IndexResponse * App configuration as IndexResponse
*/ */
config: SCIndexResponse; config: SCIndexResponse;
/**
* First session indicator
*/
firstSession = true;
/** /**
* Initialised status flag of config provider * Initialised status flag of config provider
*/ */
initialised = false; initialised = false;
/** /**
* Version of the @openstapps/core package that app is using * Version of the @openstapps/core package that app is using
*/ */
@@ -117,6 +120,7 @@ export class ConfigProvider {
// load saved configuration // load saved configuration
try { try {
this.config = await this.loadLocal(); this.config = await this.loadLocal();
this.firstSession = false;
this.initialised = true; this.initialised = true;
this.logger.log(`initialised configuration from storage`); this.logger.log(`initialised configuration from storage`);
if (this.config.backend.SCVersion !== this.scVersion) { if (this.config.backend.SCVersion !== this.scVersion) {

View File

@@ -14,7 +14,7 @@
*/ */
import {Injectable} from '@angular/core'; import {Injectable} from '@angular/core';
import {Client} from '@openstapps/api/lib/client'; import {Client} from '@openstapps/api/lib/client';
import {SCSearchQuery, SCSearchResponse, SCThingOriginType, SCThings, SCThingType} from '@openstapps/core'; import {SCSearchRequest, SCSearchResponse, SCThingOriginType, SCThings, SCThingType} from '@openstapps/core';
import {SCSaveableThing} from '@openstapps/core'; import {SCSaveableThing} from '@openstapps/core';
import {environment} from '../../../environments/environment'; import {environment} from '../../../environments/environment';
import {StorageProvider} from '../storage/storage.provider'; import {StorageProvider} from '../storage/storage.provider';
@@ -169,7 +169,7 @@ export class DataProvider {
* *
* @param query - query to send to the backend * @param query - query to send to the backend
*/ */
async search(query: SCSearchQuery): Promise<SCSearchResponse> { async search(query: SCSearchRequest): Promise<SCSearchResponse> {
return (this.client.search(query)); return (this.client.search(query));
} }

View File

@@ -15,7 +15,7 @@
import {Injectable, OnDestroy} from '@angular/core'; import {Injectable, OnDestroy} from '@angular/core';
import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
import {SCLanguage, SCThings, SCThingTranslator, SCThingType, SCTranslations} from '@openstapps/core'; import {SCLanguage, SCLanguageCode, SCThings, SCThingTranslator, SCThingType, SCTranslations} from '@openstapps/core';
import moment from 'moment'; import moment from 'moment';
import {Subscription} from 'rxjs'; import {Subscription} from 'rxjs';
import {isDefined, ThingTranslateParser} from './thing-translate.parser'; import {isDefined, ThingTranslateParser} from './thing-translate.parser';
@@ -40,14 +40,11 @@ export class ThingTranslateService implements OnDestroy {
*/ */
constructor(private readonly translateService: TranslateService, constructor(private readonly translateService: TranslateService,
public parser: ThingTranslateParser){ public parser: ThingTranslateParser){
this.translator = new SCThingTranslator(this.translateService.getBrowserLang() as SCLanguageCode ?? 'en');
this.translator = new SCThingTranslator('de' ?? this.translateService.currentLang as keyof SCTranslations<SCLanguage>);
moment.updateLocale(this.translator.language);
/** set the default language from configuration */ /** set the default language from configuration */
this.onLangChange = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => { this.onLangChange = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {
this.translator.language = event.lang as keyof SCTranslations<SCLanguage>; this.translator.language = event.lang as keyof SCTranslations<SCLanguage>;
moment.updateLocale(event.lang); moment.locale(event.lang);
}); });
} }