mirror of
https://github.com/sensebox/blockly-app
synced 2025-04-25 22:00:32 +02:00
allow language override via settings
This commit is contained in:
parent
9a5ab01c63
commit
5143932cc0
5 changed files with 36 additions and 4 deletions
|
@ -6,6 +6,7 @@ import { TranslateService } from '@ngx-translate/core';
|
|||
|
||||
import { COLORS, DEFAULT_LANG } from '../constants';
|
||||
import { BlocklyPage } from '../pages/blockly/blockly';
|
||||
import { StorageProvider, SETTINGS } from '../providers/storage/storage';
|
||||
|
||||
@Component({
|
||||
templateUrl: 'app.html'
|
||||
|
@ -43,12 +44,16 @@ export class openSenseApp {
|
|||
|
||||
constructor(
|
||||
public translate: TranslateService,
|
||||
private storage: StorageProvider,
|
||||
platform: Platform,
|
||||
statusBar: StatusBar,
|
||||
splashScreen: SplashScreen,
|
||||
) {
|
||||
this.translate.addLangs(['en', 'de']);
|
||||
this.translate.setDefaultLang(DEFAULT_LANG)
|
||||
this.translate.use(this.getPreferredLanguage())
|
||||
const lang = this.getPreferredLanguage()
|
||||
this.translate.use(lang)
|
||||
this.storage.get(SETTINGS).language = lang
|
||||
|
||||
platform.ready()
|
||||
.then(() => {
|
||||
|
@ -73,7 +78,7 @@ export class openSenseApp {
|
|||
|
||||
private getPreferredLanguage () {
|
||||
const langsAvailable = this.translate.getLangs()
|
||||
const lang = this.translate.getBrowserLang()
|
||||
const lang = this.storage.get(SETTINGS).language || this.translate.getBrowserLang()
|
||||
return langsAvailable.indexOf(lang) === -1 ? DEFAULT_LANG : lang
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Einstellungen",
|
||||
"LANGUAGE": {
|
||||
"TITLE": "Sprache"
|
||||
},
|
||||
"LOG_OPTIN": {
|
||||
"TITLE": "Sende uns automatisch Fehler-Berichte zu",
|
||||
"TEXT": "Das hilft uns beim Beheben von Fehlern.<br/>Keine persönlichen Daten außer deinem Sketch werden übertragen."
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "Settings",
|
||||
"LANGUAGE": {
|
||||
"TITLE": "Language"
|
||||
},
|
||||
"LOG_OPTIN": {
|
||||
"TITLE": "Automatically send error reports to us",
|
||||
"TEXT": "These reports help us in troubleshooting issues.<br/>No personal information is collected, except for your Sketch."
|
||||
|
|
|
@ -9,6 +9,20 @@
|
|||
|
||||
<ion-content padding>
|
||||
<ion-list>
|
||||
<ion-item>
|
||||
<ion-icon name="text" item-start></ion-icon>
|
||||
<ion-label>
|
||||
<h2 style="color: black;" translate>SETTINGS.LANGUAGE.TITLE</h2>
|
||||
</ion-label>
|
||||
<ion-select
|
||||
interface="popover"
|
||||
(ngModelChange)="onSettingsChange('language', $event)"
|
||||
[ngModel]="settings.language"
|
||||
>
|
||||
<ion-option *ngFor="let lang of translate.langs" value="{{lang}}">{{ lang }}</ion-option>
|
||||
</ion-select>
|
||||
</ion-item>
|
||||
|
||||
<ion-item>
|
||||
<ion-icon name="megaphone" item-start></ion-icon>
|
||||
<ion-label>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { IonicPage } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
|
||||
import { StorageProvider, SETTINGS } from '../../providers/storage/storage';
|
||||
|
||||
|
@ -10,14 +11,20 @@ import { StorageProvider, SETTINGS } from '../../providers/storage/storage';
|
|||
templateUrl: 'settings.html',
|
||||
})
|
||||
export class SettingsPage {
|
||||
settings = {}
|
||||
settings = {} as any
|
||||
|
||||
constructor(private storage: StorageProvider) {
|
||||
constructor(
|
||||
public translate: TranslateService,
|
||||
private storage: StorageProvider,
|
||||
) {
|
||||
this.settings = this.storage.get(SETTINGS)
|
||||
this.settings.language = this.translate.currentLang
|
||||
}
|
||||
|
||||
onSettingsChange (name, value) {
|
||||
this.settings[name] = value
|
||||
this.storage.set(SETTINGS, this.settings)
|
||||
if (name === 'language')
|
||||
this.translate.use(value)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue