Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit 56cc1f5

Browse files
feat: init default browser language
1 parent 21fd77e commit 56cc1f5

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

studio/src/app/services/lang/lang.service.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,46 @@ export class LangService {
2222

2323
if (lang) {
2424
i18n.state.lang = lang;
25+
return;
2526
}
27+
28+
this.initDefaultLang();
2629
} catch (err) {
2730
console.warn(`Couldn't find lang. Proceeding with default`);
2831
}
2932
}
33+
34+
private initDefaultLang() {
35+
const browserLang: string | undefined = this.getBrowserLang();
36+
i18n.state.lang = /(es|en)/gi.test(browserLang) ? (browserLang as 'en' | 'es') : 'en';
37+
}
38+
39+
/**
40+
* From ngx-translate
41+
* https://github.com/ngx-translate/core/blob/efcb4f43a645d9ac630aae8e50b60cc883e675fd/projects/ngx-translate/core/src/lib/translate.service.ts
42+
* @private
43+
*/
44+
private getBrowserLang(): string | undefined {
45+
if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
46+
return undefined;
47+
}
48+
49+
let browserLang: string | null = window.navigator.languages ? window.navigator.languages[0] : null;
50+
// @ts-ignore
51+
browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
52+
53+
if (typeof browserLang === 'undefined') {
54+
return undefined;
55+
}
56+
57+
if (browserLang.indexOf('-') !== -1) {
58+
browserLang = browserLang.split('-')[0];
59+
}
60+
61+
if (browserLang.indexOf('_') !== -1) {
62+
browserLang = browserLang.split('_')[0];
63+
}
64+
65+
return browserLang;
66+
}
3067
}

0 commit comments

Comments
 (0)