var supportedLanguages = require('./../../../common/lang/langs.json') module.exports = function LanguageServiceFactory( SettingsService , gettextCatalog ) { var LanguageService = {} function detectLanguage() { return (navigator.language || navigator.userLanguage || 'en-US') .substring(0, 2) } function isSupported(lang) { return !!supportedLanguages[lang] } function onlySupported(lang, defaultValue) { return isSupported(lang) ? lang : defaultValue } LanguageService.settingKey = 'selectedLanguage' LanguageService.supportedLanguages = supportedLanguages LanguageService.defaultLanguage = 'en' LanguageService.detectedLanguage = onlySupported(detectLanguage(), LanguageService.defaultLanguage) SettingsService.sync( LanguageService , { target: LanguageService.settingKey , source: LanguageService.settingKey , defaultValue: LanguageService.detectedLanguage } , updateLanguage ) function updateLanguage() { gettextCatalog.currentLanguage = LanguageService.selectedLanguage } LanguageService.updateLanguage = updateLanguage return LanguageService }