mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
Do not use disabled or non-existing languages from language cookie
This commit is contained in:
@@ -62,25 +62,33 @@ describe('LocaleService test suite', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('getCurrentLanguageCode', () => {
|
describe('getCurrentLanguageCode', () => {
|
||||||
it('should return language saved on cookie', () => {
|
beforeEach(() => {
|
||||||
|
spyOn(translateService, 'getLangs').and.returnValue(langList);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the language saved on cookie if it\'s a valid & active language', () => {
|
||||||
spyOnGet.and.returnValue('de');
|
spyOnGet.and.returnValue('de');
|
||||||
expect(service.getCurrentLanguageCode()).toBe('de');
|
expect(service.getCurrentLanguageCode()).toBe('de');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('', () => {
|
it('should return the default language if the cookie language is disabled', () => {
|
||||||
beforeEach(() => {
|
spyOnGet.and.returnValue('disabled');
|
||||||
spyOn(translateService, 'getLangs').and.returnValue(langList);
|
expect(service.getCurrentLanguageCode()).toBe('en');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return language from browser setting', () => {
|
it('should return the default language if the cookie language does not exist', () => {
|
||||||
spyOn(translateService, 'getBrowserLang').and.returnValue('it');
|
spyOnGet.and.returnValue('does-not-exist');
|
||||||
expect(service.getCurrentLanguageCode()).toBe('it');
|
expect(service.getCurrentLanguageCode()).toBe('en');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return default language from config', () => {
|
it('should return language from browser setting', () => {
|
||||||
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
|
spyOn(translateService, 'getBrowserLang').and.returnValue('it');
|
||||||
expect(service.getCurrentLanguageCode()).toBe('en');
|
expect(service.getCurrentLanguageCode()).toBe('it');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should return default language from config', () => {
|
||||||
|
spyOn(translateService, 'getBrowserLang').and.returnValue('fr');
|
||||||
|
expect(service.getCurrentLanguageCode()).toBe('en');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@ import { map, mergeMap, take } from 'rxjs/operators';
|
|||||||
import { NativeWindowRef, NativeWindowService } from '../services/window.service';
|
import { NativeWindowRef, NativeWindowService } from '../services/window.service';
|
||||||
import { RouteService } from '../services/route.service';
|
import { RouteService } from '../services/route.service';
|
||||||
import { DOCUMENT } from '@angular/common';
|
import { DOCUMENT } from '@angular/common';
|
||||||
|
import { LangConfig } from '../../../config/lang-config.interface';
|
||||||
|
|
||||||
export const LANG_COOKIE = 'dsLanguage';
|
export const LANG_COOKIE = 'dsLanguage';
|
||||||
|
|
||||||
@@ -52,8 +53,7 @@ export class LocaleService {
|
|||||||
getCurrentLanguageCode(): string {
|
getCurrentLanguageCode(): string {
|
||||||
// Attempt to get the language from a cookie
|
// Attempt to get the language from a cookie
|
||||||
let lang = this.getLanguageCodeFromCookie();
|
let lang = this.getLanguageCodeFromCookie();
|
||||||
if (isEmpty(lang)) {
|
if (isEmpty(lang) || environment.languages.find((langConfig: LangConfig) => langConfig.code === lang && langConfig.active) === undefined) {
|
||||||
// Cookie not found
|
|
||||||
// Attempt to get the browser language from the user
|
// Attempt to get the browser language from the user
|
||||||
if (this.translate.getLangs().includes(this.translate.getBrowserLang())) {
|
if (this.translate.getLangs().includes(this.translate.getBrowserLang())) {
|
||||||
lang = this.translate.getBrowserLang();
|
lang = this.translate.getBrowserLang();
|
||||||
|
@@ -178,6 +178,10 @@ export const environment: AppConfig = {
|
|||||||
code: 'lv',
|
code: 'lv',
|
||||||
label: 'Latviešu',
|
label: 'Latviešu',
|
||||||
active: true,
|
active: true,
|
||||||
|
}, {
|
||||||
|
code: 'disabled',
|
||||||
|
label: 'Disabled',
|
||||||
|
active: false,
|
||||||
}],
|
}],
|
||||||
|
|
||||||
// Browse-By Pages
|
// Browse-By Pages
|
||||||
|
Reference in New Issue
Block a user