diff --git a/src/app/app.module.ts b/src/app/app.module.ts index cf4df2c7..13704a50 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -23,6 +23,8 @@ import {StatusBar} from '@ionic-native/status-bar/ngx'; import {IonicModule, IonicRouteStrategy} from '@ionic/angular'; import {TranslateLoader, TranslateModule} from '@ngx-translate/core'; import {TranslateHttpLoader} from '@ngx-translate/http-loader'; +import moment from 'moment'; +import 'moment/min/locales'; import {LoggerModule, NgxLoggerLevel} from 'ngx-logger'; import {environment} from '../environments/environment'; import {AppRoutingModule} from './app-routing.module'; @@ -36,6 +38,7 @@ import {StorageModule} from './modules/storage/storage.module'; import {ThingTranslateModule} from './translation/thing-translate.module'; import {fakeBackendProvider} from './_helpers/fake-backend.interceptor'; +moment.locale('de'); registerLocaleData(localeDe); /** diff --git a/src/app/modules/settings/item/settings-item.component.ts b/src/app/modules/settings/item/settings-item.component.ts index e22df041..d4b72ac0 100644 --- a/src/app/modules/settings/item/settings-item.component.ts +++ b/src/app/modules/settings/item/settings-item.component.ts @@ -12,17 +12,14 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Component, Input, OnInit} from '@angular/core'; +import {Component, Input} from '@angular/core'; import {AlertController} from '@ionic/angular'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import { - SCLanguage, SCLanguageCode, SCSetting, SCSettingValue, SCSettingValues, - SCThingTranslator, - SCTranslations, } from '@openstapps/core'; import {SettingsProvider} from '../settings.provider'; @@ -33,7 +30,7 @@ import {SettingsProvider} from '../settings.provider'; selector: 'stapps-settings-item', templateUrl: 'settings-item.html', }) -export class SettingsItemComponent implements OnInit { +export class SettingsItemComponent { /** * If set the setting will be shown as compact view @@ -44,26 +41,11 @@ export class SettingsItemComponent implements OnInit { * Flag for workaround for selected 'select option' not updating translation */ isVisible = true; - /** - * current language - */ - language: keyof SCTranslations; /** * The setting to handle */ @Input() setting: SCSetting; - /** - * Translated setting from SCThingTranslator - */ - // tslint:disable-next-line:no-any - translatedSetting: any; - - /** - * Core translator - */ - translator: SCThingTranslator; - /** * * @param alertCtrl AlertController @@ -73,13 +55,8 @@ export class SettingsItemComponent implements OnInit { constructor(private readonly alertCtrl: AlertController, private readonly translateService: TranslateService, private readonly settingsProvider: SettingsProvider) { - this.language = translateService.currentLang as keyof SCTranslations; - this.translator = new SCThingTranslator(this.language); - - translateService.onLangChange.subscribe((event: LangChangeEvent) => { + translateService.onLangChange.subscribe((_event: LangChangeEvent) => { this.isVisible = false; - this.language = event.lang as keyof SCTranslations; - this.translator.language = this.language; // TODO: Issue #53 check workaround for selected 'select option' not updating translation setTimeout(() => this.isVisible = true); }); @@ -109,13 +86,6 @@ export class SettingsItemComponent implements OnInit { await this.presentAlert(title, message); } - /** - * NgInit - */ - ngOnInit(): void { - this.translatedSetting = this.translator.translate(this.setting); - } - /** * Shows alert with given title and message and a 'ok' button * diff --git a/src/app/modules/settings/item/settings-item.html b/src/app/modules/settings/item/settings-item.html index d2d9f542..afba4e7d 100644 --- a/src/app/modules/settings/item/settings-item.html +++ b/src/app/modules/settings/item/settings-item.html @@ -1,12 +1,12 @@ - - - {{ translatedSetting.name | titlecase }} - - + + + {{ vals.name }} + + - {{ translatedSetting.description }} + {{ 'description' | thingTranslate: setting | titlecase }}
@@ -31,7 +31,7 @@ -
{{ translatedSetting.values[i] | titlecase }}
+
{{ ('values' | thingTranslate: setting)[i] | titlecase }}
{{ val }}
@@ -41,7 +41,7 @@ -
{{ translatedSetting.values[i] }}
+
{{ ('values' | thingTranslate: setting)[i] | titlecase }}
{{ val }}
diff --git a/src/app/modules/settings/page/settings-page.component.ts b/src/app/modules/settings/page/settings-page.component.ts index 080ad054..e66128df 100644 --- a/src/app/modules/settings/page/settings-page.component.ts +++ b/src/app/modules/settings/page/settings-page.component.ts @@ -14,8 +14,8 @@ */ import {ChangeDetectorRef, Component} from '@angular/core'; import {AlertController, ToastController} from '@ionic/angular'; -import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; -import {SCLanguage, SCSettingMeta, SCThingTranslator, SCTranslations} from '@openstapps/core'; +import {TranslateService} from '@ngx-translate/core'; +import {SCSettingMeta} from '@openstapps/core'; import {SettingsCache, SettingsProvider} from '../settings.provider'; /** * Settings page component @@ -29,12 +29,6 @@ export class SettingsPageComponent { * Order of the categories */ categoriesOrder: string[]; - /** - * Possible languages to be used for translation - * - * limit to languages that are available in StApps Core - */ - language: keyof SCTranslations; /** * Meta information about settings */ @@ -47,10 +41,6 @@ export class SettingsPageComponent { * Container to cache settings from provider */ settingsCache: SettingsCache; - /** - * Core translator - */ - translator: SCThingTranslator; /** * @@ -65,13 +55,6 @@ export class SettingsPageComponent { private readonly toastController: ToastController, private readonly translateService: TranslateService, private readonly changeDetectorRef: ChangeDetectorRef) { - this.language = translateService.currentLang as keyof SCTranslations; - this.translator = new SCThingTranslator(this.language); - - translateService.onLangChange.subscribe((event: LangChangeEvent) => { - this.language = event.lang as keyof SCTranslations; - this.translator = new SCThingTranslator(this.language); - }); this.settingsCache = {}; } diff --git a/src/app/modules/settings/page/settings-page.html b/src/app/modules/settings/page/settings-page.html index a6e732b1..c7b8ac04 100644 --- a/src/app/modules/settings/page/settings-page.html +++ b/src/app/modules/settings/page/settings-page.html @@ -12,7 +12,7 @@
-
{{ translator.translate(settingsCache[categoryKey]?.settings[objectKeys(settingsCache[categoryKey]?.settings)[0]]).categories[0] | titlecase}}
+
{{ 'categories[0]' | thingTranslate: settingsCache[categoryKey]?.settings[objectKeys(settingsCache[categoryKey]?.settings)[0]] | titlecase }}
diff --git a/src/app/modules/settings/settings.module.ts b/src/app/modules/settings/settings.module.ts index 1415146a..94cfa62d 100644 --- a/src/app/modules/settings/settings.module.ts +++ b/src/app/modules/settings/settings.module.ts @@ -20,6 +20,7 @@ import {Geolocation} from '@ionic-native/geolocation/ngx'; import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; +import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {ConfigProvider} from '../config/config.provider'; import {SettingsItemComponent} from './item/settings-item.component'; import {SettingsPageComponent} from './page/settings-page.component'; @@ -45,6 +46,7 @@ const settingsRoutes: Routes = [ FormsModule, IonicModule.forRoot(), TranslateModule.forChild(), + ThingTranslateModule.forChild(), RouterModule.forChild(settingsRoutes), ], providers: [ diff --git a/src/app/translation/thing-translate.module.ts b/src/app/translation/thing-translate.module.ts index 79e4feb7..4a4addc0 100644 --- a/src/app/translation/thing-translate.module.ts +++ b/src/app/translation/thing-translate.module.ts @@ -20,6 +20,7 @@ import {ThingPropertyNameTranslatePipe, ThingTranslatePipe} from './thing-transl import {ThingTranslateService} from './thing-translate.service'; +// tslint:disable: completed-docs export interface ThingTranslateModuleConfig { parser?: Provider; } diff --git a/src/app/translation/thing-translate.service.ts b/src/app/translation/thing-translate.service.ts index f4cf35ba..b3fd3728 100644 --- a/src/app/translation/thing-translate.service.ts +++ b/src/app/translation/thing-translate.service.ts @@ -16,6 +16,7 @@ import {Injectable, OnDestroy} from '@angular/core'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {SCLanguage, SCThings, SCThingTranslator, SCThingType, SCTranslations} from '@openstapps/core'; +import moment from 'moment'; import {Subscription} from 'rxjs'; import {isDefined, ThingTranslateParser} from './thing-translate.parser'; @@ -41,10 +42,12 @@ export class ThingTranslateService implements OnDestroy { public parser: ThingTranslateParser){ this.translator = new SCThingTranslator('de' ?? this.translateService.currentLang as keyof SCTranslations); + moment.updateLocale(this.translator.language); /** set the default language from configuration */ this.onLangChange = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => { this.translator.language = event.lang as keyof SCTranslations; + moment.updateLocale(event.lang); }); }