add langs from framadate 1 in selector component

This commit is contained in:
Tykayn 2022-02-03 12:26:04 +01:00 committed by tykayn
parent 819e99f75e
commit 902c50d8cb
9 changed files with 20 additions and 23 deletions

View File

@ -1,12 +1,13 @@
module.exports = { module.exports = {
parser: '@typescript-eslint/parser', parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'], plugins: ['@typescript-eslint', 'json'],
extends: [ extends: [
'eslint:recommended', 'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended', 'plugin:prettier/recommended',
'prettier/@typescript-eslint', 'prettier/@typescript-eslint',
'plugin:json/recommended',
], ],
parserOptions: { parserOptions: {
ecmaVersion: 2018, ecmaVersion: 2018,

View File

@ -6,15 +6,12 @@ import { environment } from '../environments/environment';
import { Theme } from './core/enums/theme.enum'; import { Theme } from './core/enums/theme.enum';
import { LanguageService } from './core/services/language.service'; import { LanguageService } from './core/services/language.service';
import { ThemeService } from './core/services/theme.service'; import { ThemeService } from './core/services/theme.service';
import { NavigationEnd, Route, Router, RouterOutlet } from '@angular/router'; import { NavigationEnd, Route, Router } from '@angular/router';
import { slideInAnimation } from './shared/animations/main'; import { slideInAnimation } from './shared/animations/main';
import { FramaKeyboardShortcuts } from './shared/shortcuts/main'; import { FramaKeyboardShortcuts } from './shared/shortcuts/main';
import { ShortcutEventOutput, ShortcutInput } from 'ng-keyboard-shortcuts'; import { ShortcutEventOutput, ShortcutInput } from 'ng-keyboard-shortcuts';
import { PollService } from './core/services/poll.service'; import { PollService } from './core/services/poll.service';
import { Poll } from './core/models/poll.model';
import { PollDTO } from './core/models/poll.DTO.model';
import { PrimeNGConfig } from 'primeng/api'; import { PrimeNGConfig } from 'primeng/api';
import { Language } from './core/enums/language.enum';
import { ApiService } from './core/services/api.service'; import { ApiService } from './core/services/api.service';
import { DOCUMENT } from '@angular/common'; import { DOCUMENT } from '@angular/common';

View File

@ -2,7 +2,7 @@
* liste des fichiers JSON de traduction des textes dans l'appli à charger par ngx-translate et prposer aux utilisateurs et utilisatrices de Framdate. * liste des fichiers JSON de traduction des textes dans l'appli à charger par ngx-translate et prposer aux utilisateurs et utilisatrices de Framdate.
* Cette enum est utilisé dans le composant de sélection de langue. * Cette enum est utilisé dans le composant de sélection de langue.
*/ */
export enum Language { export enum LanguageEnum {
FR = 'fr', FR = 'fr',
BR = 'br', BR = 'br',
CA = 'ca', CA = 'ca',

View File

@ -72,7 +72,7 @@ export class ApiService {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
// mode: 'no-cors', // mode: 'no-cors',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Accept,Accept-Language,Content-Language,Content-Type', 'Access-Control-Allow-Headers': 'Accept,Accept-LanguageEnum,Content-LanguageEnum,Content-Type',
}; };
const headersAxios = { const headersAxios = {
headers: headerDict, headers: headerDict,

View File

@ -1,10 +1,8 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { TranslateService, LangChangeEvent } from '@ngx-translate/core'; import { LangChangeEvent, TranslateService } from '@ngx-translate/core';
import { Language } from '../enums/language.enum'; import { LanguageEnum } from '../enums/language.enum';
import { StorageService } from './storage.service'; import { StorageService } from './storage.service';
import { type } from 'os';
import { isString } from 'util';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
@ -12,11 +10,11 @@ import { isString } from 'util';
export class LanguageService { export class LanguageService {
constructor(private translate: TranslateService, private storageService: StorageService) {} constructor(private translate: TranslateService, private storageService: StorageService) {}
public getLangage(): Language { public getLangage(): LanguageEnum {
return this.translate.currentLang as Language; return this.translate.currentLang as LanguageEnum;
} }
public setLanguage(language: Language): void { public setLanguage(language: LanguageEnum): void {
this.translate.use(language.toString()); this.translate.use(language.toString());
} }
@ -27,11 +25,11 @@ export class LanguageService {
public configureAndInitTranslations(): void { public configureAndInitTranslations(): void {
// always save in storage the currentLang used // always save in storage the currentLang used
this.translate.onLangChange.subscribe((event: LangChangeEvent) => { this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
this.storageService.language = event.lang as Language; this.storageService.language = event.lang as LanguageEnum;
}); });
// set all languages available // set all languages available
this.translate.addLangs(Object.keys(Language)); this.translate.addLangs(Object.keys(LanguageEnum));
// set language // set language
this.setLanguageOnInit(); this.setLanguageOnInit();
@ -54,7 +52,7 @@ export class LanguageService {
// set default language // set default language
if (!this.translate.currentLang) { if (!this.translate.currentLang) {
this.setLanguage(Language.FR); this.setLanguage(LanguageEnum.FR);
} }
} }
@ -64,8 +62,9 @@ export class LanguageService {
this.setLanguage(this.storageService.language); this.setLanguage(this.storageService.language);
} }
} }
private setLanguageFromBrowser(): void { private setLanguageFromBrowser(): void {
const currentBrowserLanguage: Language = this.translate.getBrowserLang().toUpperCase() as Language; const currentBrowserLanguage: LanguageEnum = this.translate.getBrowserLang().toUpperCase() as LanguageEnum;
console.log('currentBrowserLanguage', currentBrowserLanguage); console.log('currentBrowserLanguage', currentBrowserLanguage);
if (this.translate.getLangs().includes(currentBrowserLanguage)) { if (this.translate.getLangs().includes(currentBrowserLanguage)) {
this.setLanguage(currentBrowserLanguage); this.setLanguage(currentBrowserLanguage);

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { LocalStorage } from 'ngx-webstorage'; import { LocalStorage } from 'ngx-webstorage';
import { Language } from '../enums/language.enum'; import { LanguageEnum } from '../enums/language.enum';
import { Theme } from '../enums/theme.enum'; import { Theme } from '../enums/theme.enum';
import { Stack } from '../models/stack.model'; import { Stack } from '../models/stack.model';
import { Choice } from '../models/choice.model'; import { Choice } from '../models/choice.model';
@ -28,7 +28,7 @@ export class StorageService {
public theme: Theme; public theme: Theme;
@LocalStorage() @LocalStorage()
public language: Language; public language: LanguageEnum;
@LocalStorage() @LocalStorage()
public userPolls: Poll[] = []; public userPolls: Poll[] = [];

View File

@ -17,7 +17,6 @@
</span> </span>
</button> </button>
</label> </label>
({{ availableLanguages.length }} availableLanguages)
<select class="is-hidden" id="lang_selector" (change)="setLang()" [(ngModel)]="currentLang"> <select class="is-hidden" id="lang_selector" (change)="setLang()" [(ngModel)]="currentLang">
<option *ngFor="let language of availableLanguages" value="{{ language }}"> <option *ngFor="let language of availableLanguages" value="{{ language }}">
<!-- {{ language }} - --> <!-- {{ language }} - -->

View File

@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Language } from '../../../../core/enums/language.enum'; import { LanguageEnum } from '../../../../core/enums/language.enum';
import { LanguageService } from '../../../../core/services/language.service'; import { LanguageService } from '../../../../core/services/language.service';
import { StorageService } from '../../../../core/services/storage.service'; import { StorageService } from '../../../../core/services/storage.service';
@ -10,7 +10,7 @@ import { StorageService } from '../../../../core/services/storage.service';
styleUrls: ['./language-selector.component.scss'], styleUrls: ['./language-selector.component.scss'],
}) })
export class LanguageSelectorComponent implements OnInit { export class LanguageSelectorComponent implements OnInit {
public currentLang: Language; public currentLang: LanguageEnum;
public availableLanguages: any = ['FR', 'EN', 'ES']; public availableLanguages: any = ['FR', 'EN', 'ES'];
language: string; language: string;

View File

@ -34,6 +34,7 @@ export const environment = {
expiresDaysDelay: 30, expiresDaysDelay: 30,
frontDomain: productionBaseUrl, frontDomain: productionBaseUrl,
interval_days_default: 7, interval_days_default: 7,
description_max_chars: 900,
maxCountOfAnswers: 300, maxCountOfAnswers: 300,
production: true, production: true,
showDemoWarning: false, showDemoWarning: false,