var supportedLanguages = require('./../../../../common/lang/langs.json') module.exports = function LanguageServiceFactory(SettingsService, gettextCatalog) { // TODO: make this LanguageProvider so it can be used on config 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.setCurrentLanguage(LanguageService.selectedLanguage) } LanguageService.updateLanguage = updateLanguage return LanguageService }