Skip to content

Commit 2156cac

Browse files
thorstenocombe
authored andcommitted
feat(TranslateService): Added support for Language Culture Name
Fixes #293
1 parent 3a70f02 commit 2156cac

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ In the html page:
220220
- `reloadLang(lang: string): Observable<string|Object>`: Calls resetLang and retrieves the translations object for the current loader
221221
- `resetLang(lang: string)`: Removes the current translations for this lang. /!\ You will have to call `use`, `reloadLang` or `getTranslation` again to be able to get translations
222222
- `getBrowserLang(): string | undefined`: Returns the current browser lang if available, or undefined otherwise
223+
- `getBrowserCultureLang(): string | undefined`: Returns the current browser culture language name (e.g. "de-DE" if available, or undefined otherwise
223224

224225
#### Write & use your own loader
225226
If you want to write your own loader, you need to create a class that implements `TranslateLoader`.

src/translate.service.ts

+21
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,11 @@ export class TranslateService {
361361
this.translations[lang] = undefined;
362362
}
363363

364+
/**
365+
* Returns the language code name from the browser, e.g. "de"
366+
*
367+
* @returns string
368+
*/
364369
public getBrowserLang(): string {
365370
if(typeof window === 'undefined' || typeof window.navigator === 'undefined') {
366371
return undefined;
@@ -379,4 +384,20 @@ export class TranslateService {
379384

380385
return browserLang;
381386
}
387+
388+
/**
389+
* Returns the culture language code name from the browser, e.g. "de-DE"
390+
*
391+
* @returns string
392+
*/
393+
public getBrowserCultureLang(): string {
394+
if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
395+
return undefined;
396+
}
397+
398+
let browserCultureLang: any = window.navigator.languages ? window.navigator.languages[0] : null;
399+
browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
400+
401+
return browserCultureLang;
402+
}
382403
}

tests/translate.service.spec.ts

+6
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,12 @@ describe('TranslateService', () => {
294294
expect(browserLang).toBeDefined();
295295
expect(typeof browserLang === 'string').toBeTruthy();
296296
});
297+
298+
it('should be able to get the browserCultureLang', () => {
299+
let browserCultureLand = translate.getBrowserCultureLang();
300+
expect(browserCultureLand).toBeDefined();
301+
expect(typeof browserCultureLand === 'string').toBeTruthy();
302+
});
297303
});
298304

299305
describe('MissingTranslationHandler', () => {

0 commit comments

Comments
 (0)