mirror of
https://github.com/openstf/stf
synced 2025-10-05 19:42:01 +02:00
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
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
|
|
}
|